81736c7161
Add a feedback vector slot for computed property names in object and class literals. Introduce new slot kind for storing computed property names. Change StaDataPropertyInLiteral to use the accumulator (again), so we don't exceed Bytecodes::kMaxOperands. We assume that most computed property names are symbols. Therefore we should see performance improvements, even if we deal with monomorphic ICs only. This CL only collects feedback but does not use it in Reduce() yet. BUG=v8:5624 Review-Url: https://codereview.chromium.org/2587393006 Cr-Commit-Position: refs/heads/master@{#42082}
289 lines
8.7 KiB
Plaintext
289 lines
8.7 KiB
Plaintext
#
|
|
# Autogenerated by generate-bytecode-expectations.
|
|
#
|
|
|
|
---
|
|
wrap: yes
|
|
|
|
---
|
|
snippet: "
|
|
class Person {
|
|
constructor(name) { this.name = name; }
|
|
speak() { console.log(this.name + ' is speaking.'); }
|
|
}
|
|
"
|
|
frame size: 9
|
|
parameter count: 1
|
|
bytecode array length: 73
|
|
bytecodes: [
|
|
B(LdaTheHole),
|
|
B(Star), R(2),
|
|
/* 30 E> */ B(StackCheck),
|
|
B(LdaTheHole),
|
|
B(Star), R(0),
|
|
/* 34 S> */ B(CreateClosure), U8(0), U8(2),
|
|
B(Star), R(3),
|
|
B(LdaTheHole),
|
|
B(Star), R(4),
|
|
B(LdaSmi), U8(34),
|
|
B(Star), R(6),
|
|
B(Wide), B(LdaSmi), U16(148),
|
|
B(Star), R(7),
|
|
B(Mov), R(3), R(5),
|
|
B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4),
|
|
B(Star), R(4),
|
|
B(LdaConstant), U8(1),
|
|
B(ToName), R(6),
|
|
B(CreateClosure), U8(2), U8(2),
|
|
B(Star), R(7),
|
|
B(LdaSmi), U8(2),
|
|
B(Star), R(8),
|
|
B(Ldar), R(7),
|
|
B(StaDataPropertyInLiteral), R(4), R(6), U8(1), U8(2),
|
|
B(CallRuntime), U16(Runtime::kInstallClassNameAccessor), R(3), U8(1),
|
|
B(CallRuntime), U16(Runtime::kToFastProperties), R(3), U8(1),
|
|
B(Star), R(0),
|
|
B(Star), R(1),
|
|
B(Star), R(2),
|
|
B(LdaUndefined),
|
|
/* 149 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["speak"],
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
class person {
|
|
constructor(name) { this.name = name; }
|
|
speak() { console.log(this.name + ' is speaking.'); }
|
|
}
|
|
"
|
|
frame size: 9
|
|
parameter count: 1
|
|
bytecode array length: 73
|
|
bytecodes: [
|
|
B(LdaTheHole),
|
|
B(Star), R(2),
|
|
/* 30 E> */ B(StackCheck),
|
|
B(LdaTheHole),
|
|
B(Star), R(0),
|
|
/* 34 S> */ B(CreateClosure), U8(0), U8(2),
|
|
B(Star), R(3),
|
|
B(LdaTheHole),
|
|
B(Star), R(4),
|
|
B(LdaSmi), U8(34),
|
|
B(Star), R(6),
|
|
B(Wide), B(LdaSmi), U16(148),
|
|
B(Star), R(7),
|
|
B(Mov), R(3), R(5),
|
|
B(CallRuntime), U16(Runtime::kDefineClass), R(4), U8(4),
|
|
B(Star), R(4),
|
|
B(LdaConstant), U8(1),
|
|
B(ToName), R(6),
|
|
B(CreateClosure), U8(2), U8(2),
|
|
B(Star), R(7),
|
|
B(LdaSmi), U8(2),
|
|
B(Star), R(8),
|
|
B(Ldar), R(7),
|
|
B(StaDataPropertyInLiteral), R(4), R(6), U8(1), U8(2),
|
|
B(CallRuntime), U16(Runtime::kInstallClassNameAccessor), R(3), U8(1),
|
|
B(CallRuntime), U16(Runtime::kToFastProperties), R(3), U8(1),
|
|
B(Star), R(0),
|
|
B(Star), R(1),
|
|
B(Star), R(2),
|
|
B(LdaUndefined),
|
|
/* 149 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["speak"],
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
var n0 = 'a';
|
|
var n1 = 'b';
|
|
class N {
|
|
[n0]() { return n0; }
|
|
static [n1]() { return n1; }
|
|
}
|
|
"
|
|
frame size: 10
|
|
parameter count: 1
|
|
bytecode array length: 114
|
|
bytecodes: [
|
|
B(CreateFunctionContext), U8(2),
|
|
B(PushContext), R(3),
|
|
B(LdaTheHole),
|
|
B(Star), R(2),
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 43 S> */ B(LdaConstant), U8(0),
|
|
/* 43 E> */ B(StaCurrentContextSlot), U8(4),
|
|
/* 57 S> */ B(LdaConstant), U8(1),
|
|
/* 57 E> */ B(StaCurrentContextSlot), U8(5),
|
|
B(LdaTheHole),
|
|
B(Star), R(0),
|
|
/* 62 S> */ B(CreateClosure), U8(2), U8(2),
|
|
B(Star), R(4),
|
|
B(LdaTheHole),
|
|
B(Star), R(5),
|
|
B(LdaSmi), U8(62),
|
|
B(Star), R(7),
|
|
B(Wide), B(LdaSmi), U16(128),
|
|
B(Star), R(8),
|
|
B(Mov), R(4), R(6),
|
|
B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(4),
|
|
B(Star), R(5),
|
|
B(LdaCurrentContextSlot), U8(4),
|
|
/* 75 E> */ B(ToName), R(7),
|
|
B(CreateClosure), U8(3), U8(2),
|
|
B(Star), R(8),
|
|
B(LdaSmi), U8(2),
|
|
B(Star), R(9),
|
|
B(Ldar), R(8),
|
|
B(StaDataPropertyInLiteral), R(5), R(7), U8(3), U8(2),
|
|
B(LdaCurrentContextSlot), U8(5),
|
|
/* 106 E> */ B(ToName), R(7),
|
|
B(LdaConstant), U8(4),
|
|
B(TestEqualStrict), R(7), U8(0),
|
|
B(Mov), R(4), R(6),
|
|
B(JumpIfToBooleanFalse), U8(7),
|
|
B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), R(0), U8(0),
|
|
B(CreateClosure), U8(5), U8(2),
|
|
B(Star), R(8),
|
|
B(StaDataPropertyInLiteral), R(6), R(7), U8(3), U8(4),
|
|
B(CallRuntime), U16(Runtime::kInstallClassNameAccessorWithCheck), R(4), U8(1),
|
|
B(CallRuntime), U16(Runtime::kToFastProperties), R(4), U8(1),
|
|
B(Star), R(0),
|
|
B(Star), R(1),
|
|
B(Star), R(2),
|
|
B(LdaUndefined),
|
|
/* 129 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["a"],
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["b"],
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["prototype"],
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
var count = 0;
|
|
class C { constructor() { count++; }}
|
|
return new C();
|
|
"
|
|
frame size: 9
|
|
parameter count: 1
|
|
bytecode array length: 63
|
|
bytecodes: [
|
|
B(CreateFunctionContext), U8(1),
|
|
B(PushContext), R(3),
|
|
B(LdaTheHole),
|
|
B(Star), R(2),
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 46 S> */ B(LdaZero),
|
|
/* 46 E> */ B(StaCurrentContextSlot), U8(4),
|
|
B(LdaTheHole),
|
|
B(Star), R(0),
|
|
/* 49 S> */ B(CreateClosure), U8(0), U8(2),
|
|
B(Star), R(4),
|
|
B(LdaTheHole),
|
|
B(Star), R(5),
|
|
B(LdaSmi), U8(49),
|
|
B(Star), R(7),
|
|
B(LdaSmi), U8(86),
|
|
B(Star), R(8),
|
|
B(Mov), R(4), R(6),
|
|
B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(4),
|
|
B(Star), R(5),
|
|
B(CallRuntime), U16(Runtime::kInstallClassNameAccessor), R(4), U8(1),
|
|
B(CallRuntime), U16(Runtime::kToFastProperties), R(4), U8(1),
|
|
B(Star), R(0),
|
|
B(Star), R(1),
|
|
B(Star), R(2),
|
|
/* 87 S> */ B(Nop),
|
|
/* 94 E> */ B(New), R(2), R(0), U8(0), U8(2),
|
|
/* 103 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
(class {})
|
|
class E { static name () {}}
|
|
"
|
|
frame size: 10
|
|
parameter count: 1
|
|
bytecode array length: 99
|
|
bytecodes: [
|
|
B(LdaTheHole),
|
|
B(Star), R(3),
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 35 S> */ B(CreateClosure), U8(0), U8(2),
|
|
B(Star), R(4),
|
|
B(LdaTheHole),
|
|
B(Star), R(5),
|
|
B(LdaSmi), U8(35),
|
|
B(Star), R(7),
|
|
B(LdaSmi), U8(43),
|
|
B(Star), R(8),
|
|
B(Mov), R(4), R(6),
|
|
B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(4),
|
|
B(Star), R(5),
|
|
B(CallRuntime), U16(Runtime::kToFastProperties), R(4), U8(1),
|
|
B(Star), R(1),
|
|
B(LdaTheHole),
|
|
B(Star), R(0),
|
|
/* 45 S> */ B(CreateClosure), U8(1), U8(2),
|
|
B(Star), R(4),
|
|
B(LdaTheHole),
|
|
B(Star), R(5),
|
|
B(LdaSmi), U8(45),
|
|
B(Star), R(7),
|
|
B(LdaSmi), U8(73),
|
|
B(Star), R(8),
|
|
B(Mov), R(4), R(6),
|
|
B(CallRuntime), U16(Runtime::kDefineClass), R(5), U8(4),
|
|
B(Star), R(5),
|
|
B(LdaConstant), U8(2),
|
|
B(ToName), R(7),
|
|
B(CreateClosure), U8(3), U8(2),
|
|
B(Star), R(8),
|
|
B(LdaSmi), U8(2),
|
|
B(Star), R(9),
|
|
B(Ldar), R(8),
|
|
B(StaDataPropertyInLiteral), R(6), R(7), U8(1), U8(2),
|
|
B(CallRuntime), U16(Runtime::kToFastProperties), R(4), U8(1),
|
|
B(Star), R(0),
|
|
B(Star), R(2),
|
|
B(Star), R(3),
|
|
B(LdaUndefined),
|
|
/* 74 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["name"],
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
]
|
|
handlers: [
|
|
]
|
|
|