308788b306
Consistently collect CallIC feedback in fullcodegen and Ignition, even for possibly direct eval calls, that were treated specially so far, for no apparent reason. With the upcoming SharedFunctionInfo based CallIC feedback, we might be able to even inline certain direct eval calls, if they manage to hit the eval cache. More importantly, this patch simplifies the collection and dealing with CallIC feedback (and as a side effect fixes an inconsistency with feedback for super constructor calls). R=mvstanton@chromium.org, mythria@chromium.org BUG=v8:2206,v8:4280,v8:5267 Review-Url: https://codereview.chromium.org/2426693002 Cr-Commit-Position: refs/heads/master@{#40397}
246 lines
7.6 KiB
Plaintext
246 lines
7.6 KiB
Plaintext
#
|
|
# Autogenerated by generate-bytecode-expectations.
|
|
#
|
|
|
|
---
|
|
wrap: yes
|
|
test function name: f
|
|
|
|
---
|
|
snippet: "
|
|
eval('var x = 10;'); return x;
|
|
"
|
|
frame size: 10
|
|
parameter count: 1
|
|
bytecode array length: 73
|
|
bytecodes: [
|
|
B(CreateFunctionContext), U8(3),
|
|
B(PushContext), R(0),
|
|
B(Ldar), R(this),
|
|
B(StaContextSlot), R(context), U8(4), U8(0),
|
|
B(CreateMappedArguments),
|
|
B(StaContextSlot), R(context), U8(6), U8(0),
|
|
B(Ldar), R(new_target),
|
|
B(StaContextSlot), R(context), U8(5), U8(0),
|
|
/* 10 E> */ B(StackCheck),
|
|
/* 14 S> */ B(LdaConstant), U8(0),
|
|
B(Star), R(4),
|
|
B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlotForCall), R(4), U8(1), R(1),
|
|
B(LdaConstant), U8(1),
|
|
B(Star), R(3),
|
|
B(LdaZero),
|
|
B(Star), R(7),
|
|
B(LdaSmi), U8(10),
|
|
B(Star), R(8),
|
|
B(LdaSmi), U8(14),
|
|
B(Star), R(9),
|
|
B(Mov), R(1), R(4),
|
|
B(Mov), R(3), R(5),
|
|
B(Mov), R(closure), R(6),
|
|
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6),
|
|
B(Star), R(1),
|
|
/* 14 E> */ B(Call), R(1), R(2), U8(2), U8(2),
|
|
/* 35 S> */ B(LdaLookupGlobalSlot), U8(2), U8(6), U8(1),
|
|
/* 45 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["eval"],
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["var x = 10;"],
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
eval('var x = 10;'); return typeof x;
|
|
"
|
|
frame size: 10
|
|
parameter count: 1
|
|
bytecode array length: 74
|
|
bytecodes: [
|
|
B(CreateFunctionContext), U8(3),
|
|
B(PushContext), R(0),
|
|
B(Ldar), R(this),
|
|
B(StaContextSlot), R(context), U8(4), U8(0),
|
|
B(CreateMappedArguments),
|
|
B(StaContextSlot), R(context), U8(6), U8(0),
|
|
B(Ldar), R(new_target),
|
|
B(StaContextSlot), R(context), U8(5), U8(0),
|
|
/* 10 E> */ B(StackCheck),
|
|
/* 14 S> */ B(LdaConstant), U8(0),
|
|
B(Star), R(4),
|
|
B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlotForCall), R(4), U8(1), R(1),
|
|
B(LdaConstant), U8(1),
|
|
B(Star), R(3),
|
|
B(LdaZero),
|
|
B(Star), R(7),
|
|
B(LdaSmi), U8(10),
|
|
B(Star), R(8),
|
|
B(LdaSmi), U8(14),
|
|
B(Star), R(9),
|
|
B(Mov), R(1), R(4),
|
|
B(Mov), R(3), R(5),
|
|
B(Mov), R(closure), R(6),
|
|
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6),
|
|
B(Star), R(1),
|
|
/* 14 E> */ B(Call), R(1), R(2), U8(2), U8(2),
|
|
/* 35 S> */ B(LdaLookupGlobalSlotInsideTypeof), U8(2), U8(6), U8(1),
|
|
B(TypeOf),
|
|
/* 52 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["eval"],
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["var x = 10;"],
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
x = 20; return eval('');
|
|
"
|
|
frame size: 10
|
|
parameter count: 1
|
|
bytecode array length: 73
|
|
bytecodes: [
|
|
B(CreateFunctionContext), U8(3),
|
|
B(PushContext), R(0),
|
|
B(Ldar), R(this),
|
|
B(StaContextSlot), R(context), U8(4), U8(0),
|
|
B(CreateMappedArguments),
|
|
B(StaContextSlot), R(context), U8(6), U8(0),
|
|
B(Ldar), R(new_target),
|
|
B(StaContextSlot), R(context), U8(5), U8(0),
|
|
/* 10 E> */ B(StackCheck),
|
|
/* 14 S> */ B(LdaSmi), U8(20),
|
|
/* 16 E> */ B(StaLookupSlotSloppy), U8(0),
|
|
/* 22 S> */ B(LdaConstant), U8(1),
|
|
B(Star), R(4),
|
|
B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlotForCall), R(4), U8(1), R(1),
|
|
B(LdaConstant), U8(2),
|
|
B(Star), R(3),
|
|
B(LdaZero),
|
|
B(Star), R(7),
|
|
B(LdaSmi), U8(10),
|
|
B(Star), R(8),
|
|
B(LdaSmi), U8(29),
|
|
B(Star), R(9),
|
|
B(Mov), R(1), R(4),
|
|
B(Mov), R(3), R(5),
|
|
B(Mov), R(closure), R(6),
|
|
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6),
|
|
B(Star), R(1),
|
|
/* 29 E> */ B(Call), R(1), R(2), U8(2), U8(2),
|
|
/* 39 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["eval"],
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
var x = 20;
|
|
f = function(){
|
|
eval('var x = 10');
|
|
return x;
|
|
}
|
|
f();
|
|
"
|
|
frame size: 10
|
|
parameter count: 1
|
|
bytecode array length: 73
|
|
bytecodes: [
|
|
B(CreateFunctionContext), U8(3),
|
|
B(PushContext), R(0),
|
|
B(Ldar), R(this),
|
|
B(StaContextSlot), R(context), U8(4), U8(0),
|
|
B(CreateMappedArguments),
|
|
B(StaContextSlot), R(context), U8(6), U8(0),
|
|
B(Ldar), R(new_target),
|
|
B(StaContextSlot), R(context), U8(5), U8(0),
|
|
/* 38 E> */ B(StackCheck),
|
|
/* 44 S> */ B(LdaConstant), U8(0),
|
|
B(Star), R(4),
|
|
B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlotForCall), R(4), U8(1), R(1),
|
|
B(LdaConstant), U8(1),
|
|
B(Star), R(3),
|
|
B(LdaZero),
|
|
B(Star), R(7),
|
|
B(LdaSmi), U8(38),
|
|
B(Star), R(8),
|
|
B(LdaSmi), U8(44),
|
|
B(Star), R(9),
|
|
B(Mov), R(1), R(4),
|
|
B(Mov), R(3), R(5),
|
|
B(Mov), R(closure), R(6),
|
|
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6),
|
|
B(Star), R(1),
|
|
/* 44 E> */ B(Call), R(1), R(2), U8(2), U8(2),
|
|
/* 66 S> */ B(LdaLookupContextSlot), U8(2), U8(6), U8(1),
|
|
/* 76 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["eval"],
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["var x = 10"],
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
x = 20;
|
|
f = function(){
|
|
eval('var x = 10');
|
|
return x;
|
|
}
|
|
f();
|
|
"
|
|
frame size: 10
|
|
parameter count: 1
|
|
bytecode array length: 73
|
|
bytecodes: [
|
|
B(CreateFunctionContext), U8(3),
|
|
B(PushContext), R(0),
|
|
B(Ldar), R(this),
|
|
B(StaContextSlot), R(context), U8(4), U8(0),
|
|
B(CreateMappedArguments),
|
|
B(StaContextSlot), R(context), U8(6), U8(0),
|
|
B(Ldar), R(new_target),
|
|
B(StaContextSlot), R(context), U8(5), U8(0),
|
|
/* 34 E> */ B(StackCheck),
|
|
/* 40 S> */ B(LdaConstant), U8(0),
|
|
B(Star), R(4),
|
|
B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlotForCall), R(4), U8(1), R(1),
|
|
B(LdaConstant), U8(1),
|
|
B(Star), R(3),
|
|
B(LdaZero),
|
|
B(Star), R(7),
|
|
B(LdaSmi), U8(34),
|
|
B(Star), R(8),
|
|
B(LdaSmi), U8(40),
|
|
B(Star), R(9),
|
|
B(Mov), R(1), R(4),
|
|
B(Mov), R(3), R(5),
|
|
B(Mov), R(closure), R(6),
|
|
B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), U8(6),
|
|
B(Star), R(1),
|
|
/* 40 E> */ B(Call), R(1), R(2), U8(2), U8(2),
|
|
/* 62 S> */ B(LdaLookupGlobalSlot), U8(2), U8(6), U8(1),
|
|
/* 72 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["eval"],
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["var x = 10"],
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
|
|
]
|
|
handlers: [
|
|
]
|
|
|