diff options
author | Refael Ackermann <refack@gmail.com> | 2019-05-28 08:46:21 -0400 |
---|---|---|
committer | Refael Ackermann <refack@gmail.com> | 2019-06-01 09:55:12 -0400 |
commit | ed74896b1fae1c163b3906163f3bf46326618ddb (patch) | |
tree | 7fb05c5a19808e0c5cd95837528e9005999cf540 /deps/v8/test/cctest/interpreter | |
parent | 2a850cd0664a4eee51f44d0bb8c2f7a3fe444154 (diff) | |
download | android-node-v8-ed74896b1fae1c163b3906163f3bf46326618ddb.tar.gz android-node-v8-ed74896b1fae1c163b3906163f3bf46326618ddb.tar.bz2 android-node-v8-ed74896b1fae1c163b3906163f3bf46326618ddb.zip |
deps: update V8 to 7.5.288.22
PR-URL: https://github.com/nodejs/node/pull/27375
Reviewed-By: Michaƫl Zasso <targos@protonmail.com>
Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'deps/v8/test/cctest/interpreter')
20 files changed, 249 insertions, 151 deletions
diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden index e5c7177efc..488f7a7ebd 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden @@ -714,7 +714,7 @@ bytecodes: [ /* 113 S> */ B(PopContext), R(3), B(Jump), U8(10), /* 126 S> */ B(LdaCurrentContextSlot), U8(4), - B(Inc), U8(1), + B(Inc), U8(0), /* 127 E> */ B(StaCurrentContextSlot), U8(4), B(PopContext), R(3), B(JumpLoop), U8(41), I8(0), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden index 664aa35ea6..b06520351b 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/CallLookupSlot.golden @@ -24,7 +24,7 @@ bytecodes: [ /* 30 E> */ B(StackCheck), /* 34 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 36 E> */ B(StaLookupSlot), U8(2), U8(0), - /* 52 S> */ B(LdaLookupGlobalSlot), U8(3), U8(1), U8(1), + /* 52 S> */ B(LdaLookupGlobalSlot), U8(3), U8(0), U8(1), B(Star), R(2), B(LdaConstant), U8(4), B(Star), R(3), @@ -39,10 +39,10 @@ bytecodes: [ B(Mov), R(closure), R(6), B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6), B(Star), R(2), - /* 52 E> */ B(CallUndefinedReceiver1), R(2), R(3), U8(3), - /* 62 S> */ B(LdaLookupGlobalSlot), U8(2), U8(5), U8(1), + /* 52 E> */ B(CallUndefinedReceiver1), R(2), R(3), U8(2), + /* 62 S> */ B(LdaLookupGlobalSlot), U8(2), U8(4), U8(1), B(Star), R(2), - /* 69 E> */ B(CallUndefinedReceiver0), R(2), U8(7), + /* 69 E> */ B(CallUndefinedReceiver0), R(2), U8(6), /* 73 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden index f79bb9457a..be635a2ed0 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ClassDeclarations.golden @@ -120,11 +120,11 @@ bytecodes: [ /* 106 S> */ B(LdaImmutableContextSlot), R(3), U8(5), U8(0), B(ToName), R(10), B(LdaConstant), U8(7), - B(TestEqualStrict), R(10), U8(2), + B(TestEqualStrict), R(10), U8(0), B(Mov), R(4), R(6), B(JumpIfFalse), U8(7), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), - B(CreateClosure), U8(8), U8(3), U8(2), + B(CreateClosure), U8(8), U8(2), U8(2), B(Star), R(11), B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(7), B(Star), R(5), @@ -178,7 +178,7 @@ bytecodes: [ B(PopContext), R(3), B(Mov), R(1), R(0), /* 87 S> */ B(Ldar), R(0), - /* 94 E> */ B(Construct), R(0), R(0), U8(0), U8(1), + /* 94 E> */ B(Construct), R(0), R(0), U8(0), U8(0), /* 102 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden index b5d9f60681..c4b600629c 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/CompoundExpressions.golden @@ -111,7 +111,7 @@ bytecodes: [ /* 42 E> */ B(StaCurrentContextSlot), U8(4), /* 45 S> */ B(CreateClosure), U8(1), U8(0), U8(2), /* 75 S> */ B(LdaCurrentContextSlot), U8(4), - B(BitwiseOrSmi), I8(24), U8(1), + B(BitwiseOrSmi), I8(24), U8(0), /* 77 E> */ B(StaCurrentContextSlot), U8(4), B(LdaUndefined), /* 84 S> */ B(Return), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden index 3de7ba3367..2161a38a50 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ContextVariables.golden @@ -87,7 +87,7 @@ bytecodes: [ /* 30 E> */ B(StackCheck), /* 41 S> */ B(CreateClosure), U8(1), U8(0), U8(2), B(Star), R(1), - /* 64 E> */ B(CallUndefinedReceiver0), R(1), U8(1), + /* 64 E> */ B(CallUndefinedReceiver0), R(1), U8(0), /* 68 S> */ B(LdaCurrentContextSlot), U8(4), /* 77 S> */ B(Return), ] diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/CountOperators.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/CountOperators.golden index 38af7fc364..8fdd8d4a18 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/CountOperators.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/CountOperators.golden @@ -217,7 +217,7 @@ bytecodes: [ /* 53 S> */ B(CreateClosure), U8(1), U8(0), U8(2), B(Star), R(0), /* 78 S> */ B(LdaCurrentContextSlot), U8(4), - B(Inc), U8(1), + B(Inc), U8(0), /* 87 E> */ B(StaCurrentContextSlot), U8(4), /* 89 S> */ B(Return), ] @@ -244,9 +244,9 @@ bytecodes: [ /* 53 S> */ B(CreateClosure), U8(1), U8(0), U8(2), B(Star), R(0), /* 78 S> */ B(LdaCurrentContextSlot), U8(4), - B(ToNumeric), U8(1), + B(ToNumeric), U8(0), B(Star), R(2), - B(Dec), U8(1), + B(Dec), U8(0), /* 86 E> */ B(StaCurrentContextSlot), U8(4), B(Ldar), R(2), /* 89 S> */ B(Return), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/DeclareGlobals.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/DeclareGlobals.golden index 3dafb7f5c2..ed7249dbe2 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/DeclareGlobals.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/DeclareGlobals.golden @@ -105,7 +105,7 @@ bytecodes: [ /* 0 E> */ B(StackCheck), /* 16 S> */ B(LdaGlobal), U8(1), U8(0), B(Star), R(1), - /* 16 E> */ B(CallUndefinedReceiver0), R(1), U8(3), + /* 16 E> */ B(CallUndefinedReceiver0), R(1), U8(2), B(Star), R(0), /* 21 S> */ B(Return), ] diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/Delete.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/Delete.golden index 06de86b362..4af18ededd 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/Delete.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/Delete.golden @@ -105,7 +105,7 @@ bytecodes: [ /* 30 E> */ B(StackCheck), /* 56 S> */ B(CreateObjectLiteral), U8(1), U8(0), U8(41), /* 56 E> */ B(StaCurrentContextSlot), U8(4), - /* 64 S> */ B(CreateClosure), U8(2), U8(1), U8(2), + /* 64 S> */ B(CreateClosure), U8(2), U8(0), U8(2), /* 93 S> */ B(LdaImmutableCurrentContextSlot), U8(4), B(Star), R(1), B(LdaSmi), I8(1), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden index 2672e0688e..f85f09c1f7 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden @@ -294,9 +294,9 @@ bytecodes: [ B(StaCurrentContextSlot), U8(4), /* 29 S> */ B(Ldar), R(0), /* 29 E> */ B(StaCurrentContextSlot), U8(4), - /* 41 S> */ B(CreateClosure), U8(5), U8(12), U8(2), + /* 41 S> */ B(CreateClosure), U8(5), U8(0), U8(2), B(Star), R(12), - /* 67 E> */ B(CallUndefinedReceiver0), R(12), U8(13), + /* 67 E> */ B(CallUndefinedReceiver0), R(12), U8(12), B(PopContext), R(11), B(Mov), R(0), R(10), B(JumpLoop), U8(60), I8(0), @@ -312,7 +312,7 @@ bytecodes: [ B(Star), R(9), B(Ldar), R(6), B(JumpIfToBooleanTrue), U8(60), - B(LdaNamedProperty), R(3), U8(6), U8(15), + B(LdaNamedProperty), R(3), U8(6), U8(14), B(Star), R(12), B(JumpIfUndefined), U8(52), B(JumpIfNull), U8(50), @@ -325,7 +325,7 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kNewTypeError), R(13), U8(2), B(Throw), B(Mov), R(context), R(13), - B(CallProperty0), R(12), R(3), U8(17), + B(CallProperty0), R(12), R(3), U8(16), B(JumpIfJSReceiver), U8(21), B(Star), R(14), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(14), U8(1), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/FunctionLiterals.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/FunctionLiterals.golden index 98fa04dad6..0416d1815a 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/FunctionLiterals.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/FunctionLiterals.golden @@ -34,7 +34,7 @@ bytecodes: [ /* 30 E> */ B(StackCheck), /* 34 S> */ B(CreateClosure), U8(0), U8(0), U8(2), B(Star), R(0), - /* 56 E> */ B(CallUndefinedReceiver0), R(0), U8(1), + /* 56 E> */ B(CallUndefinedReceiver0), R(0), U8(0), /* 58 S> */ B(Return), ] constant pool: [ @@ -56,7 +56,7 @@ bytecodes: [ B(Star), R(0), B(LdaSmi), I8(1), B(Star), R(1), - /* 67 E> */ B(CallUndefinedReceiver1), R(0), R(1), U8(1), + /* 67 E> */ B(CallUndefinedReceiver1), R(0), R(1), U8(0), /* 70 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/NewAndSpread.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/NewAndSpread.golden index 18fd7989c5..ed15f99fc9 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/NewAndSpread.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/NewAndSpread.golden @@ -29,10 +29,10 @@ bytecodes: [ B(Mov), R(5), R(1), B(PopContext), R(2), B(Mov), R(1), R(0), - /* 89 S> */ B(CreateArrayLiteral), U8(3), U8(1), U8(37), + /* 89 S> */ B(CreateArrayLiteral), U8(3), U8(0), U8(37), B(Star), R(3), B(Ldar), R(0), - /* 89 E> */ B(ConstructWithSpread), R(0), R(3), U8(1), U8(2), + /* 89 E> */ B(ConstructWithSpread), R(0), R(3), U8(1), U8(1), B(LdaUndefined), /* 110 S> */ B(Return), ] @@ -71,10 +71,10 @@ bytecodes: [ B(Mov), R(1), R(0), /* 89 S> */ B(LdaZero), B(Star), R(3), - B(CreateArrayLiteral), U8(3), U8(1), U8(37), + B(CreateArrayLiteral), U8(3), U8(0), U8(37), B(Star), R(4), B(Ldar), R(0), - /* 89 E> */ B(ConstructWithSpread), R(0), R(3), U8(2), U8(2), + /* 89 E> */ B(ConstructWithSpread), R(0), R(3), U8(2), U8(1), B(LdaUndefined), /* 113 S> */ B(Return), ] @@ -111,35 +111,35 @@ bytecodes: [ B(Mov), R(5), R(1), B(PopContext), R(2), B(Mov), R(1), R(0), - /* 89 S> */ B(CreateArrayLiteral), U8(3), U8(1), U8(37), + /* 89 S> */ B(CreateArrayLiteral), U8(3), U8(0), U8(37), B(Star), R(4), B(LdaConstant), U8(4), B(Star), R(3), - /* 101 S> */ B(CreateArrayLiteral), U8(5), U8(2), U8(37), + /* 101 S> */ B(CreateArrayLiteral), U8(5), U8(1), U8(37), B(Star), R(7), - B(LdaNamedProperty), R(7), U8(6), U8(3), + B(LdaNamedProperty), R(7), U8(6), U8(2), B(Star), R(8), - B(CallProperty0), R(8), R(7), U8(5), + B(CallProperty0), R(8), R(7), U8(4), B(Mov), R(5), R(2), B(JumpIfJSReceiver), U8(7), B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0), B(Star), R(6), - B(LdaNamedProperty), R(6), U8(7), U8(7), + B(LdaNamedProperty), R(6), U8(7), U8(6), B(Star), R(5), - B(CallProperty0), R(5), R(6), U8(16), + B(CallProperty0), R(5), R(6), U8(15), B(Star), R(9), B(JumpIfJSReceiver), U8(7), B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1), - B(LdaNamedProperty), R(9), U8(8), U8(18), + B(LdaNamedProperty), R(9), U8(8), U8(17), B(JumpIfToBooleanTrue), U8(19), - B(LdaNamedProperty), R(9), U8(9), U8(9), - B(StaInArrayLiteral), R(4), R(3), U8(14), + B(LdaNamedProperty), R(9), U8(9), U8(8), + B(StaInArrayLiteral), R(4), R(3), U8(13), B(Ldar), R(3), - B(Inc), U8(13), + B(Inc), U8(12), B(Star), R(3), B(JumpLoop), U8(33), I8(0), B(LdaSmi), I8(4), - B(StaInArrayLiteral), R(4), R(3), U8(14), + B(StaInArrayLiteral), R(4), R(3), U8(13), B(Mov), R(4), R(3), B(CallJSRuntime), U8(%reflect_construct), R(2), U8(2), B(LdaUndefined), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/ObjectLiterals.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/ObjectLiterals.golden index be6ef0138b..82c47ff88d 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/ObjectLiterals.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/ObjectLiterals.golden @@ -102,8 +102,8 @@ bytecodes: [ /* 30 E> */ B(StackCheck), /* 34 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), B(Star), R(0), - /* 49 E> */ B(CreateClosure), U8(1), U8(1), U8(2), - B(StaNamedOwnProperty), R(0), U8(2), U8(2), + /* 49 E> */ B(CreateClosure), U8(1), U8(0), U8(2), + B(StaNamedOwnProperty), R(0), U8(2), U8(1), B(Ldar), R(0), /* 66 S> */ B(Return), ] @@ -126,8 +126,8 @@ bytecodes: [ /* 30 E> */ B(StackCheck), /* 34 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), B(Star), R(0), - /* 43 E> */ B(CreateClosure), U8(1), U8(1), U8(2), - B(StaNamedOwnProperty), R(0), U8(2), U8(2), + /* 43 E> */ B(CreateClosure), U8(1), U8(0), U8(2), + B(StaNamedOwnProperty), R(0), U8(2), U8(1), B(Ldar), R(0), /* 67 S> */ B(Return), ] @@ -152,7 +152,7 @@ bytecodes: [ B(Star), R(0), B(LdaConstant), U8(1), B(Star), R(2), - B(CreateClosure), U8(2), U8(1), U8(2), + B(CreateClosure), U8(2), U8(0), U8(2), B(Star), R(3), B(LdaNull), B(Star), R(4), @@ -184,9 +184,9 @@ bytecodes: [ B(Star), R(0), B(LdaConstant), U8(1), B(Star), R(2), - B(CreateClosure), U8(2), U8(1), U8(2), + B(CreateClosure), U8(2), U8(0), U8(2), B(Star), R(3), - B(CreateClosure), U8(3), U8(2), U8(2), + B(CreateClosure), U8(3), U8(1), U8(2), B(Star), R(4), B(LdaZero), B(Star), R(5), @@ -219,7 +219,7 @@ bytecodes: [ B(Star), R(2), B(LdaNull), B(Star), R(3), - B(CreateClosure), U8(2), U8(1), U8(2), + B(CreateClosure), U8(2), U8(0), U8(2), B(Star), R(4), B(LdaZero), B(Star), R(5), @@ -388,7 +388,7 @@ bytecodes: [ /* 64 E> */ B(StaDataPropertyInLiteral), R(1), R(2), U8(0), U8(1), B(LdaConstant), U8(3), B(Star), R(3), - /* 71 E> */ B(CreateClosure), U8(4), U8(3), U8(2), + /* 71 E> */ B(CreateClosure), U8(4), U8(0), U8(2), B(Star), R(4), B(LdaZero), B(Star), R(5), @@ -396,7 +396,7 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineGetterPropertyUnchecked), R(2), U8(4), B(LdaConstant), U8(3), B(Star), R(3), - /* 84 E> */ B(CreateClosure), U8(5), U8(4), U8(2), + /* 84 E> */ B(CreateClosure), U8(5), U8(1), U8(2), B(Star), R(4), B(LdaZero), B(Star), R(5), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateClassFields.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateClassFields.golden index 5afcdde7f6..c7f5101dd7 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateClassFields.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateClassFields.golden @@ -25,14 +25,12 @@ snippet: " " frame size: 10 parameter count: 1 -bytecode array length: 143 +bytecode array length: 137 bytecodes: [ /* 30 E> */ B(StackCheck), B(CreateBlockContext), U8(0), B(PushContext), R(4), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), - B(LdaTheHole), B(Star), R(8), B(CreateClosure), U8(2), U8(0), U8(2), B(Star), R(5), @@ -50,16 +48,14 @@ bytecodes: [ B(Mov), R(7), R(3), B(CreateClosure), U8(4), U8(1), U8(2), B(Star), R(7), - B(StaNamedProperty), R(5), U8(5), U8(2), + B(StaNamedProperty), R(5), U8(5), U8(0), B(PopContext), R(4), B(Mov), R(3), R(0), /* 38 E> */ B(CreateBlockContext), U8(6), B(PushContext), R(4), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), - B(LdaTheHole), B(Star), R(8), - B(CreateClosure), U8(8), U8(4), U8(2), + B(CreateClosure), U8(8), U8(2), U8(2), B(Star), R(5), B(LdaConstant), U8(7), B(Star), R(6), @@ -73,15 +69,15 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(6), U8(3), B(Star), R(6), B(Mov), R(7), R(2), - B(CreateClosure), U8(9), U8(5), U8(2), + B(CreateClosure), U8(9), U8(3), U8(2), B(Star), R(7), - B(StaNamedProperty), R(5), U8(5), U8(6), + B(StaNamedProperty), R(5), U8(5), U8(2), B(PopContext), R(4), B(Mov), R(2), R(1), /* 136 S> */ B(Ldar), R(3), - /* 136 E> */ B(Construct), R(3), R(0), U8(0), U8(8), + /* 136 E> */ B(Construct), R(3), R(0), U8(0), U8(4), /* 145 S> */ B(Ldar), R(2), - /* 145 E> */ B(Construct), R(2), R(0), U8(0), U8(10), + /* 145 E> */ B(Construct), R(2), R(0), U8(0), U8(6), B(LdaUndefined), /* 154 S> */ B(Return), ] @@ -137,14 +133,12 @@ snippet: " " frame size: 15 parameter count: 1 -bytecode array length: 289 +bytecode array length: 277 bytecodes: [ /* 30 E> */ B(StackCheck), B(CreateBlockContext), U8(0), B(PushContext), R(6), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), - B(LdaTheHole), B(Star), R(14), B(CreateClosure), U8(3), U8(0), U8(2), B(Star), R(11), @@ -170,25 +164,21 @@ bytecodes: [ B(Mov), R(9), R(5), B(CreateClosure), U8(6), U8(2), U8(2), B(Star), R(9), - B(StaNamedProperty), R(7), U8(7), U8(3), + B(StaNamedProperty), R(7), U8(7), U8(0), B(PopContext), R(6), B(Mov), R(5), R(0), /* 38 E> */ B(CreateBlockContext), U8(8), B(PushContext), R(6), B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), - B(LdaTheHole), - B(StaCurrentContextSlot), U8(5), - B(LdaTheHole), B(Star), R(14), - B(CreateClosure), U8(11), U8(5), U8(2), + B(CreateClosure), U8(11), U8(3), U8(2), B(Star), R(11), B(LdaConstant), U8(10), B(Star), R(12), B(Mov), R(11), R(13), B(CallRuntime), U16(Runtime::kDefineClass), R(12), U8(3), B(Star), R(12), - B(CreateClosure), U8(12), U8(6), U8(2), + B(CreateClosure), U8(12), U8(4), U8(2), B(Star), R(7), B(LdaConstant), U8(9), B(Star), R(8), @@ -204,25 +194,23 @@ bytecodes: [ B(Star), R(11), B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(11), U8(1), B(StaCurrentContextSlot), U8(5), - B(CreateClosure), U8(14), U8(7), U8(2), + B(CreateClosure), U8(14), U8(5), U8(2), B(Star), R(11), - B(CreateClosure), U8(15), U8(8), U8(2), + B(CreateClosure), U8(15), U8(6), U8(2), B(Star), R(12), B(Mov), R(7), R(9), B(Mov), R(13), R(10), B(CallRuntime), U16(Runtime::kDefineClass), R(8), U8(5), B(Star), R(8), B(Mov), R(9), R(4), - B(CreateClosure), U8(16), U8(9), U8(2), + B(CreateClosure), U8(16), U8(7), U8(2), B(Star), R(9), - B(StaNamedProperty), R(7), U8(7), U8(10), + B(StaNamedProperty), R(7), U8(7), U8(2), B(PopContext), R(6), B(Mov), R(4), R(1), /* 140 E> */ B(CreateBlockContext), U8(17), B(PushContext), R(6), - B(LdaTheHole), - B(StaCurrentContextSlot), U8(4), - /* 356 E> */ B(CreateClosure), U8(19), U8(12), U8(2), + /* 356 E> */ B(CreateClosure), U8(19), U8(8), U8(2), B(Star), R(7), B(LdaConstant), U8(18), B(Star), R(8), @@ -237,17 +225,17 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(8), U8(3), B(Star), R(8), B(Mov), R(9), R(3), - B(CreateClosure), U8(20), U8(13), U8(2), + B(CreateClosure), U8(20), U8(9), U8(2), B(Star), R(9), - B(StaNamedProperty), R(7), U8(7), U8(14), + B(StaNamedProperty), R(7), U8(7), U8(4), B(PopContext), R(6), B(Mov), R(3), R(2), /* 430 S> */ B(Ldar), R(5), - /* 430 E> */ B(Construct), R(5), R(0), U8(0), U8(16), + /* 430 E> */ B(Construct), R(5), R(0), U8(0), U8(6), /* 439 S> */ B(Ldar), R(4), - /* 439 E> */ B(Construct), R(4), R(0), U8(0), U8(18), + /* 439 E> */ B(Construct), R(4), R(0), U8(0), U8(8), /* 448 S> */ B(Ldar), R(3), - /* 448 E> */ B(Construct), R(3), R(0), U8(0), U8(20), + /* 448 E> */ B(Construct), R(3), R(0), U8(0), U8(10), B(LdaUndefined), /* 458 S> */ B(Return), ] diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/PublicClassFields.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/PublicClassFields.golden index 23cce9fbab..6671c1fb06 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/PublicClassFields.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/PublicClassFields.golden @@ -46,7 +46,7 @@ bytecodes: [ B(Mov), R(7), R(3), B(CreateClosure), U8(4), U8(1), U8(2), B(Star), R(7), - B(StaNamedProperty), R(5), U8(5), U8(2), + B(StaNamedProperty), R(5), U8(5), U8(0), B(PopContext), R(4), B(Mov), R(3), R(0), /* 38 E> */ B(CreateBlockContext), U8(6), @@ -55,7 +55,7 @@ bytecodes: [ B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(Star), R(8), - B(CreateClosure), U8(8), U8(4), U8(2), + B(CreateClosure), U8(8), U8(2), U8(2), B(Star), R(5), B(LdaConstant), U8(7), B(Star), R(6), @@ -66,15 +66,15 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(6), U8(4), B(Star), R(6), B(Mov), R(7), R(2), - B(CreateClosure), U8(9), U8(5), U8(2), + B(CreateClosure), U8(9), U8(3), U8(2), B(Star), R(7), - B(StaNamedProperty), R(5), U8(5), U8(6), + B(StaNamedProperty), R(5), U8(5), U8(2), B(PopContext), R(4), B(Mov), R(2), R(1), /* 120 S> */ B(Ldar), R(3), - /* 120 E> */ B(Construct), R(3), R(0), U8(0), U8(8), + /* 120 E> */ B(Construct), R(3), R(0), U8(0), U8(4), /* 129 S> */ B(Ldar), R(2), - /* 129 E> */ B(Construct), R(2), R(0), U8(0), U8(10), + /* 129 E> */ B(Construct), R(2), R(0), U8(0), U8(6), B(LdaUndefined), /* 138 S> */ B(Return), ] @@ -155,7 +155,7 @@ bytecodes: [ B(Mov), R(9), R(5), B(CreateClosure), U8(6), U8(2), U8(2), B(Star), R(9), - B(StaNamedProperty), R(7), U8(7), U8(3), + B(StaNamedProperty), R(7), U8(7), U8(0), B(PopContext), R(6), B(Mov), R(5), R(0), /* 38 E> */ B(CreateBlockContext), U8(8), @@ -164,37 +164,37 @@ bytecodes: [ B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(Star), R(14), - B(CreateClosure), U8(11), U8(5), U8(2), + B(CreateClosure), U8(11), U8(3), U8(2), B(Star), R(11), B(LdaConstant), U8(10), B(Star), R(12), B(Mov), R(11), R(13), B(CallRuntime), U16(Runtime::kDefineClass), R(12), U8(3), B(Star), R(12), - B(CreateClosure), U8(12), U8(6), U8(2), + B(CreateClosure), U8(12), U8(4), U8(2), B(Star), R(7), B(LdaConstant), U8(9), B(Star), R(8), /* 133 S> */ B(LdaConstant), U8(5), B(StaCurrentContextSlot), U8(4), B(Star), R(11), - B(CreateClosure), U8(13), U8(7), U8(2), + B(CreateClosure), U8(13), U8(5), U8(2), B(Star), R(12), B(Mov), R(7), R(9), B(Mov), R(13), R(10), B(CallRuntime), U16(Runtime::kDefineClass), R(8), U8(5), B(Star), R(8), B(Mov), R(9), R(4), - B(CreateClosure), U8(14), U8(8), U8(2), + B(CreateClosure), U8(14), U8(6), U8(2), B(Star), R(9), - B(StaNamedProperty), R(7), U8(7), U8(9), + B(StaNamedProperty), R(7), U8(7), U8(2), B(PopContext), R(6), B(Mov), R(4), R(1), /* 90 E> */ B(CreateBlockContext), U8(15), B(PushContext), R(6), B(LdaTheHole), B(StaCurrentContextSlot), U8(4), - /* 236 E> */ B(CreateClosure), U8(17), U8(11), U8(2), + /* 236 E> */ B(CreateClosure), U8(17), U8(7), U8(2), B(Star), R(7), B(LdaConstant), U8(16), B(Star), R(8), @@ -206,17 +206,17 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(8), U8(4), B(Star), R(8), B(Mov), R(9), R(3), - B(CreateClosure), U8(18), U8(12), U8(2), + B(CreateClosure), U8(18), U8(8), U8(2), B(Star), R(9), - B(StaNamedProperty), R(7), U8(7), U8(13), + B(StaNamedProperty), R(7), U8(7), U8(4), B(PopContext), R(6), B(Mov), R(3), R(2), /* 329 S> */ B(Ldar), R(5), - /* 329 E> */ B(Construct), R(5), R(0), U8(0), U8(15), + /* 329 E> */ B(Construct), R(5), R(0), U8(0), U8(6), /* 338 S> */ B(Ldar), R(4), - /* 338 E> */ B(Construct), R(4), R(0), U8(0), U8(17), + /* 338 E> */ B(Construct), R(4), R(0), U8(0), U8(8), /* 347 S> */ B(Ldar), R(3), - /* 347 E> */ B(Construct), R(3), R(0), U8(0), U8(19), + /* 347 E> */ B(Construct), R(3), R(0), U8(0), U8(10), B(LdaUndefined), /* 356 S> */ B(Return), ] diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden index d72bb35fee..9cb5a6b01c 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden @@ -186,16 +186,16 @@ bytecodes: [ B(TestEqual), R(2), U8(3), B(JumpIfFalse), U8(22), /* 17 E> */ B(StackCheck), - /* 48 S> */ B(CreateClosure), U8(1), U8(4), U8(2), + /* 48 S> */ B(CreateClosure), U8(1), U8(0), U8(2), B(Star), R(5), - /* 74 E> */ B(CallUndefinedReceiver0), R(5), U8(5), + /* 74 E> */ B(CallUndefinedReceiver0), R(5), U8(4), B(LdaZero), B(Star), R(2), B(LdaCurrentContextSlot), U8(4), B(Star), R(0), B(JumpLoop), U8(24), I8(1), B(LdaSmi), I8(1), - /* 78 E> */ B(TestEqual), R(2), U8(7), + /* 78 E> */ B(TestEqual), R(2), U8(6), B(JumpIfFalse), U8(6), B(PopContext), R(4), B(Jump), U8(7), diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/StaticClassFields.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/StaticClassFields.golden index 93ba673a0e..752e4cdc6f 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/StaticClassFields.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/StaticClassFields.golden @@ -50,7 +50,7 @@ bytecodes: [ /* 92 S> */ B(LdaConstant), U8(4), B(Star), R(10), B(LdaConstant), U8(5), - B(TestEqualStrict), R(10), U8(1), + B(TestEqualStrict), R(10), U8(0), B(Mov), R(5), R(7), B(JumpIfFalse), U8(7), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), @@ -59,12 +59,12 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(6), U8(5), B(Star), R(6), B(Mov), R(5), R(3), - B(CreateClosure), U8(6), U8(2), U8(2), + B(CreateClosure), U8(6), U8(1), U8(2), B(Star), R(7), - B(StaNamedProperty), R(5), U8(7), U8(3), - B(CreateClosure), U8(8), U8(5), U8(2), + B(StaNamedProperty), R(5), U8(7), U8(1), + B(CreateClosure), U8(8), U8(2), U8(2), B(Star), R(9), - B(CallProperty0), R(9), R(3), U8(6), + B(CallProperty0), R(9), R(3), U8(3), B(PopContext), R(4), B(Mov), R(3), R(0), /* 38 E> */ B(CreateBlockContext), U8(9), @@ -75,7 +75,7 @@ bytecodes: [ B(StaCurrentContextSlot), U8(5), B(LdaTheHole), B(Star), R(8), - B(CreateClosure), U8(11), U8(8), U8(2), + B(CreateClosure), U8(11), U8(3), U8(2), B(Star), R(5), B(LdaConstant), U8(10), B(Star), R(6), @@ -85,7 +85,7 @@ bytecodes: [ /* 176 S> */ B(LdaConstant), U8(4), B(Star), R(10), B(LdaConstant), U8(5), - B(TestEqualStrict), R(10), U8(1), + B(TestEqualStrict), R(10), U8(0), B(Mov), R(5), R(7), B(JumpIfFalse), U8(7), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), @@ -94,18 +94,18 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(6), U8(5), B(Star), R(6), B(Mov), R(5), R(2), - B(CreateClosure), U8(12), U8(9), U8(2), + B(CreateClosure), U8(12), U8(4), U8(2), B(Star), R(7), - B(StaNamedProperty), R(5), U8(7), U8(10), - B(CreateClosure), U8(13), U8(12), U8(2), + B(StaNamedProperty), R(5), U8(7), U8(5), + B(CreateClosure), U8(13), U8(5), U8(2), B(Star), R(9), - B(CallProperty0), R(9), R(2), U8(13), + B(CallProperty0), R(9), R(2), U8(7), B(PopContext), R(4), B(Mov), R(2), R(1), /* 197 S> */ B(Ldar), R(0), - /* 197 E> */ B(Construct), R(0), R(0), U8(0), U8(15), + /* 197 E> */ B(Construct), R(0), R(0), U8(0), U8(9), /* 206 S> */ B(Ldar), R(2), - /* 206 E> */ B(Construct), R(2), R(0), U8(0), U8(17), + /* 206 E> */ B(Construct), R(2), R(0), U8(0), U8(11), B(LdaUndefined), /* 215 S> */ B(Return), ] @@ -194,7 +194,7 @@ bytecodes: [ /* 109 S> */ B(LdaConstant), U8(6), B(Star), R(12), B(LdaConstant), U8(7), - B(TestEqualStrict), R(12), U8(2), + B(TestEqualStrict), R(12), U8(0), B(Mov), R(13), R(10), B(Mov), R(7), R(9), B(JumpIfFalse), U8(7), @@ -204,12 +204,12 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(8), U8(5), B(Star), R(8), B(Mov), R(7), R(5), - B(CreateClosure), U8(8), U8(3), U8(2), + B(CreateClosure), U8(8), U8(2), U8(2), B(Star), R(9), - B(StaNamedProperty), R(7), U8(9), U8(4), - B(CreateClosure), U8(10), U8(6), U8(2), + B(StaNamedProperty), R(7), U8(9), U8(1), + B(CreateClosure), U8(10), U8(3), U8(2), B(Star), R(11), - B(CallProperty0), R(11), R(5), U8(7), + B(CallProperty0), R(11), R(5), U8(3), B(PopContext), R(6), B(Mov), R(5), R(0), /* 38 E> */ B(CreateBlockContext), U8(11), @@ -220,14 +220,14 @@ bytecodes: [ B(StaCurrentContextSlot), U8(5), B(LdaTheHole), B(Star), R(14), - B(CreateClosure), U8(14), U8(9), U8(2), + B(CreateClosure), U8(14), U8(4), U8(2), B(Star), R(11), B(LdaConstant), U8(13), B(Star), R(12), B(Mov), R(11), R(13), B(CallRuntime), U16(Runtime::kDefineClass), R(12), U8(3), B(Star), R(12), - B(CreateClosure), U8(15), U8(10), U8(2), + B(CreateClosure), U8(15), U8(5), U8(2), B(Star), R(7), B(LdaConstant), U8(12), B(Star), R(8), @@ -237,24 +237,24 @@ bytecodes: [ /* 210 S> */ B(LdaConstant), U8(6), B(Star), R(12), B(LdaConstant), U8(7), - B(TestEqualStrict), R(12), U8(2), + B(TestEqualStrict), R(12), U8(0), B(Mov), R(7), R(9), B(Mov), R(13), R(10), B(JumpIfFalse), U8(7), B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0), B(Ldar), R(12), B(StaCurrentContextSlot), U8(5), - B(CreateClosure), U8(16), U8(11), U8(2), + B(CreateClosure), U8(16), U8(6), U8(2), B(Star), R(13), B(CallRuntime), U16(Runtime::kDefineClass), R(8), U8(6), B(Star), R(8), B(Mov), R(7), R(4), - B(CreateClosure), U8(17), U8(12), U8(2), + B(CreateClosure), U8(17), U8(7), U8(2), B(Star), R(9), - B(StaNamedProperty), R(7), U8(9), U8(13), - B(CreateClosure), U8(18), U8(15), U8(2), + B(StaNamedProperty), R(7), U8(9), U8(5), + B(CreateClosure), U8(18), U8(8), U8(2), B(Star), R(11), - B(CallProperty0), R(11), R(4), U8(16), + B(CallProperty0), R(11), R(4), U8(7), B(PopContext), R(6), B(Mov), R(4), R(1), /* 122 E> */ B(CreateBlockContext), U8(19), @@ -263,7 +263,7 @@ bytecodes: [ B(StaCurrentContextSlot), U8(4), B(LdaTheHole), B(StaCurrentContextSlot), U8(5), - /* 313 E> */ B(CreateClosure), U8(21), U8(18), U8(2), + /* 313 E> */ B(CreateClosure), U8(21), U8(9), U8(2), B(Star), R(7), B(LdaConstant), U8(20), B(Star), R(8), @@ -273,7 +273,7 @@ bytecodes: [ /* 378 S> */ B(LdaConstant), U8(6), B(Star), R(12), B(LdaConstant), U8(7), - B(TestEqualStrict), R(12), U8(2), + B(TestEqualStrict), R(12), U8(0), B(Mov), R(4), R(10), B(Mov), R(7), R(9), B(JumpIfFalse), U8(7), @@ -283,22 +283,22 @@ bytecodes: [ B(CallRuntime), U16(Runtime::kDefineClass), R(8), U8(5), B(Star), R(8), B(Mov), R(7), R(3), - B(CreateClosure), U8(22), U8(19), U8(2), + B(CreateClosure), U8(22), U8(10), U8(2), B(Star), R(9), - B(StaNamedProperty), R(7), U8(9), U8(20), - B(CreateClosure), U8(23), U8(22), U8(2), + B(StaNamedProperty), R(7), U8(9), U8(9), + B(CreateClosure), U8(23), U8(11), U8(2), B(Star), R(11), B(Ldar), R(3), - B(StaNamedProperty), R(11), U8(24), U8(23), - B(CallProperty0), R(11), R(3), U8(25), + B(StaNamedProperty), R(11), U8(24), U8(11), + B(CallProperty0), R(11), R(3), U8(13), B(PopContext), R(6), B(Mov), R(3), R(2), /* 456 S> */ B(Ldar), R(0), - /* 456 E> */ B(Construct), R(0), R(0), U8(0), U8(27), + /* 456 E> */ B(Construct), R(0), R(0), U8(0), U8(15), /* 465 S> */ B(Ldar), R(1), - /* 465 E> */ B(Construct), R(1), R(0), U8(0), U8(29), + /* 465 E> */ B(Construct), R(1), R(0), U8(0), U8(17), /* 474 S> */ B(Ldar), R(3), - /* 474 E> */ B(Construct), R(3), R(0), U8(0), U8(31), + /* 474 E> */ B(Construct), R(3), R(0), U8(0), U8(19), B(LdaUndefined), /* 483 S> */ B(Return), ] diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/StringConcat.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/StringConcat.golden index 8b619917d7..7279eb9f68 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/StringConcat.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/StringConcat.golden @@ -181,14 +181,14 @@ bytecodes: [ B(Star), R(1), /* 80 S> */ B(LdaConstant), U8(1), B(Star), R(3), - /* 98 E> */ B(CallUndefinedReceiver2), R(2), R(0), R(1), U8(1), - /* 96 E> */ B(Add), R(3), U8(3), + /* 98 E> */ B(CallUndefinedReceiver2), R(2), R(0), R(1), U8(0), + /* 96 E> */ B(Add), R(3), U8(2), B(Star), R(3), B(Ldar), R(0), - /* 108 E> */ B(Add), R(3), U8(4), + /* 108 E> */ B(Add), R(3), U8(3), B(Star), R(3), B(Ldar), R(1), - /* 112 E> */ B(Add), R(3), U8(5), + /* 112 E> */ B(Add), R(3), U8(4), /* 116 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/TemplateLiterals.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/TemplateLiterals.golden index 6cfcf42472..e78c81cfe2 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/TemplateLiterals.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/TemplateLiterals.golden @@ -200,17 +200,17 @@ bytecodes: [ B(Star), R(1), /* 80 S> */ B(LdaConstant), U8(1), B(Star), R(3), - /* 96 E> */ B(CallUndefinedReceiver2), R(2), R(0), R(1), U8(2), + /* 96 E> */ B(CallUndefinedReceiver2), R(2), R(0), R(1), U8(1), B(ToString), - B(Add), R(3), U8(1), + B(Add), R(3), U8(0), B(Star), R(3), B(Ldar), R(0), /* 108 E> */ B(ToString), - B(Add), R(3), U8(1), + B(Add), R(3), U8(0), B(Star), R(3), B(Ldar), R(1), /* 112 E> */ B(ToString), - B(Add), R(3), U8(1), + B(Add), R(3), U8(0), /* 116 S> */ B(Return), ] constant pool: [ diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/TopLevelObjectLiterals.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/TopLevelObjectLiterals.golden index 5fc0eef86d..30d304e0a2 100644 --- a/deps/v8/test/cctest/interpreter/bytecode_expectations/TopLevelObjectLiterals.golden +++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/TopLevelObjectLiterals.golden @@ -23,10 +23,10 @@ bytecodes: [ /* 0 E> */ B(StackCheck), /* 8 S> */ B(CreateObjectLiteral), U8(1), U8(2), U8(41), B(Star), R(1), - /* 16 E> */ B(CreateClosure), U8(2), U8(3), U8(0), - B(StaNamedOwnProperty), R(1), U8(3), U8(4), + /* 16 E> */ B(CreateClosure), U8(2), U8(0), U8(0), + B(StaNamedOwnProperty), R(1), U8(3), U8(3), B(Ldar), R(1), - /* 8 E> */ B(StaGlobal), U8(4), U8(6), + /* 8 E> */ B(StaGlobal), U8(4), U8(5), B(LdaUndefined), /* 34 S> */ B(Return), ] diff --git a/deps/v8/test/cctest/interpreter/test-interpreter.cc b/deps/v8/test/cctest/interpreter/test-interpreter.cc index 3483e7967a..ba247dde50 100644 --- a/deps/v8/test/cctest/interpreter/test-interpreter.cc +++ b/deps/v8/test/cctest/interpreter/test-interpreter.cc @@ -5086,15 +5086,125 @@ TEST(InterpreterCollectSourcePositions) { Handle<SharedFunctionInfo> sfi = handle(function->shared(), isolate); Handle<BytecodeArray> bytecode_array = handle(sfi->GetBytecodeArray(), isolate); + CHECK(!bytecode_array->HasSourcePositionTable()); + + Compiler::CollectSourcePositions(isolate, sfi); + ByteArray source_position_table = bytecode_array->SourcePositionTable(); - CHECK_EQ(source_position_table->length(), 0); + CHECK(bytecode_array->HasSourcePositionTable()); + CHECK_GT(source_position_table->length(), 0); +} + +TEST(InterpreterCollectSourcePositions_StackOverflow) { + FLAG_enable_lazy_source_positions = true; + HandleAndZoneScope handles; + Isolate* isolate = handles.main_isolate(); + const char* source = + "(function () {\n" + " return 1;\n" + "})"; + + Handle<JSFunction> function = Handle<JSFunction>::cast(v8::Utils::OpenHandle( + *v8::Local<v8::Function>::Cast(CompileRun(source)))); + + Handle<SharedFunctionInfo> sfi = handle(function->shared(), isolate); + Handle<BytecodeArray> bytecode_array = + handle(sfi->GetBytecodeArray(), isolate); + CHECK(!bytecode_array->HasSourcePositionTable()); + + // Make the stack limit the same as the current position so recompilation + // overflows. + uint64_t previous_limit = isolate->stack_guard()->real_climit(); + isolate->stack_guard()->SetStackLimit(GetCurrentStackPosition()); Compiler::CollectSourcePositions(isolate, sfi); + // Stack overflowed so source position table can be returned but is empty. + ByteArray source_position_table = bytecode_array->SourcePositionTable(); + CHECK(!bytecode_array->HasSourcePositionTable()); + CHECK_EQ(source_position_table->length(), 0); + // Reset the stack limit and try again. + isolate->stack_guard()->SetStackLimit(previous_limit); + Compiler::CollectSourcePositions(isolate, sfi); source_position_table = bytecode_array->SourcePositionTable(); + CHECK(bytecode_array->HasSourcePositionTable()); CHECK_GT(source_position_table->length(), 0); } +// TODO(v8:8510): When an exception is thrown, the top frame still has its +// source positions collected. Re-enable this test when that is fixed. +DISABLED_TEST(InterpreterCollectSourcePositions_ThrowFrom1stFrame) { + FLAG_enable_lazy_source_positions = true; + HandleAndZoneScope handles; + Isolate* isolate = handles.main_isolate(); + + const char* source = + R"javascript( + (function () { + throw new Error(); + }); + )javascript"; + + Handle<JSFunction> function = Handle<JSFunction>::cast(v8::Utils::OpenHandle( + *v8::Local<v8::Function>::Cast(CompileRun(source)))); + + Handle<SharedFunctionInfo> sfi = handle(function->shared(), isolate); + // This is the bytecode for the top-level iife. + Handle<BytecodeArray> bytecode_array = + handle(sfi->GetBytecodeArray(), isolate); + CHECK(!bytecode_array->HasSourcePositionTable()); + + { + v8::TryCatch try_catch(CcTest::isolate()); + MaybeHandle<Object> result = Execution::Call( + isolate, function, ReadOnlyRoots(isolate).undefined_value_handle(), 0, + nullptr); + CHECK(result.is_null()); + CHECK(try_catch.HasCaught()); + } + + // The exception was caught but source positions were not retrieved from it so + // there should be no source position table. + CHECK(!bytecode_array->HasSourcePositionTable()); +} + +TEST(InterpreterCollectSourcePositions_ThrowFrom2ndFrame) { + FLAG_enable_lazy_source_positions = true; + HandleAndZoneScope handles; + Isolate* isolate = handles.main_isolate(); + + const char* source = + R"javascript( + (function () { + (function () { + throw new Error(); + })(); + }); + )javascript"; + + Handle<JSFunction> function = Handle<JSFunction>::cast(v8::Utils::OpenHandle( + *v8::Local<v8::Function>::Cast(CompileRun(source)))); + + Handle<SharedFunctionInfo> sfi = handle(function->shared(), isolate); + // This is the bytecode for the top-level iife. + Handle<BytecodeArray> bytecode_array = + handle(sfi->GetBytecodeArray(), isolate); + CHECK(!bytecode_array->HasSourcePositionTable()); + + { + v8::TryCatch try_catch(CcTest::isolate()); + MaybeHandle<Object> result = Execution::Call( + isolate, function, ReadOnlyRoots(isolate).undefined_value_handle(), 0, + nullptr); + CHECK(result.is_null()); + CHECK(try_catch.HasCaught()); + } + + // The exception was caught but source positions were not retrieved from it so + // there should be no source position table. + CHECK(!bytecode_array->HasSourcePositionTable()); +} + namespace { void CheckStringEqual(const char* expected_ptr, Handle<Object> actual_handle) { @@ -5130,8 +5240,7 @@ TEST(InterpreterCollectSourcePositions_GenerateStackTrace) { Handle<SharedFunctionInfo> sfi = handle(function->shared(), isolate); Handle<BytecodeArray> bytecode_array = handle(sfi->GetBytecodeArray(), isolate); - ByteArray source_position_table = bytecode_array->SourcePositionTable(); - CHECK_EQ(source_position_table->length(), 0); + CHECK(!bytecode_array->HasSourcePositionTable()); { Handle<Object> result = @@ -5142,7 +5251,8 @@ TEST(InterpreterCollectSourcePositions_GenerateStackTrace) { CheckStringEqual("Error\n at <anonymous>:4:17", result); } - source_position_table = bytecode_array->SourcePositionTable(); + CHECK(bytecode_array->HasSourcePositionTable()); + ByteArray source_position_table = bytecode_array->SourcePositionTable(); CHECK_GT(source_position_table->length(), 0); } |