7e5b8feed3
Collect type feedback in the bytecode handler for 'new' bytecode. The earlier cl (https://codereview.chromium.org/2153433002/) was reverted because that implementation did not collect allocation site feedback. This regressed delta blue by an order of magnitude. This implementation includes collection of allocation site feedback. Reland of https://codereview.chromium.org/2190293003/ with a bug fix. BUG=v8:4280, v8:4780 LOG=N Review-Url: https://codereview.chromium.org/2225923003 Cr-Commit-Position: refs/heads/master@{#39120}
204 lines
5.6 KiB
Plaintext
204 lines
5.6 KiB
Plaintext
#
|
|
# Autogenerated by generate-bytecode-expectations.
|
|
#
|
|
|
|
---
|
|
pool type: mixed
|
|
execute: yes
|
|
wrap: no
|
|
test function name: test
|
|
|
|
---
|
|
snippet: "
|
|
var test;
|
|
(function() {
|
|
class A {
|
|
method() { return 2; }
|
|
}
|
|
class B extends A {
|
|
method() { return super.method() + 1; }
|
|
}
|
|
test = new B().method;
|
|
test();
|
|
})();
|
|
"
|
|
frame size: 6
|
|
parameter count: 1
|
|
bytecode array length: 36
|
|
bytecodes: [
|
|
B(Mov), R(closure), R(0),
|
|
/* 99 E> */ B(StackCheck),
|
|
/* 104 S> */ B(LdaConstant), U8(0),
|
|
/* 111 E> */ B(LdrKeyedProperty), R(closure), U8(3), R(4),
|
|
B(LdaConstant), U8(1),
|
|
B(Star), R(5),
|
|
B(Mov), R(this), R(3),
|
|
B(CallRuntime), U16(Runtime::kLoadFromSuper), R(3), U8(3),
|
|
B(Star), R(1),
|
|
/* 117 E> */ B(Call), R(1), R(this), U8(1), U8(1),
|
|
B(Star), R(3),
|
|
B(AddSmi), U8(1), R(3), U8(7),
|
|
/* 131 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
InstanceType::SYMBOL_TYPE,
|
|
InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
var test;
|
|
(function() {
|
|
class A {
|
|
get x() { return 1; }
|
|
set x(val) { return; }
|
|
}
|
|
class B extends A {
|
|
method() { super.x = 2; return super.x; }
|
|
}
|
|
test = new B().method;
|
|
test();
|
|
})();
|
|
"
|
|
frame size: 5
|
|
parameter count: 1
|
|
bytecode array length: 45
|
|
bytecodes: [
|
|
B(Mov), R(closure), R(0),
|
|
/* 125 E> */ B(StackCheck),
|
|
/* 130 S> */ B(LdaConstant), U8(0),
|
|
/* 130 E> */ B(LdrKeyedProperty), R(closure), U8(1), R(2),
|
|
B(LdaConstant), U8(1),
|
|
B(Star), R(3),
|
|
B(LdaSmi), U8(2),
|
|
B(Star), R(4),
|
|
B(Mov), R(this), R(1),
|
|
/* 138 E> */ B(CallRuntime), U16(Runtime::kStoreToSuper_Strict), R(1), U8(4),
|
|
/* 143 S> */ B(LdaConstant), U8(0),
|
|
/* 150 E> */ B(LdrKeyedProperty), R(closure), U8(3), R(2),
|
|
B(LdaConstant), U8(1),
|
|
B(Star), R(3),
|
|
B(Mov), R(this), R(1),
|
|
B(CallRuntime), U16(Runtime::kLoadFromSuper), R(1), U8(3),
|
|
/* 159 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
InstanceType::SYMBOL_TYPE,
|
|
InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
var test;
|
|
(function() {
|
|
class A {
|
|
constructor(x) { this.x_ = x; }
|
|
}
|
|
class B extends A {
|
|
constructor() { super(1); this.y_ = 2; }
|
|
}
|
|
test = new B().constructor;
|
|
})();
|
|
"
|
|
frame size: 4
|
|
parameter count: 1
|
|
bytecode array length: 80
|
|
bytecodes: [
|
|
B(Mov), R(closure), R(1),
|
|
B(Mov), R(new_target), R(0),
|
|
/* 113 E> */ B(StackCheck),
|
|
/* 118 S> */ B(CallRuntime), U16(Runtime::k_GetSuperConstructor), R(closure), U8(1),
|
|
B(Star), R(2),
|
|
B(LdaSmi), U8(1),
|
|
B(Star), R(3),
|
|
B(Ldar), R(new_target),
|
|
/* 118 E> */ B(New), R(2), R(3), U8(1), U8(0),
|
|
B(Star), R(2),
|
|
B(Ldar), R(this),
|
|
B(JumpIfNotHole), U8(4),
|
|
B(Jump), U8(11),
|
|
B(LdaConstant), U8(0),
|
|
B(Star), R(3),
|
|
/* 118 E> */ B(CallRuntime), U16(Runtime::kThrowReferenceError), R(3), U8(1),
|
|
B(Mov), R(2), R(this),
|
|
/* 128 S> */ B(Ldar), R(this),
|
|
B(JumpIfNotHole), U8(11),
|
|
B(LdaConstant), U8(0),
|
|
B(Star), R(2),
|
|
B(CallRuntime), U16(Runtime::kThrowReferenceError), R(2), U8(1),
|
|
B(Star), R(2),
|
|
B(LdaSmi), U8(2),
|
|
/* 136 E> */ B(StaNamedPropertyStrict), R(2), U8(1), U8(4),
|
|
B(Ldar), R(this),
|
|
B(JumpIfNotHole), U8(11),
|
|
B(LdaConstant), U8(0),
|
|
B(Star), R(2),
|
|
B(CallRuntime), U16(Runtime::kThrowReferenceError), R(2), U8(1),
|
|
/* 141 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
|
InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
var test;
|
|
(function() {
|
|
class A {
|
|
constructor() { this.x_ = 1; }
|
|
}
|
|
class B extends A {
|
|
constructor() { super(); this.y_ = 2; }
|
|
}
|
|
test = new B().constructor;
|
|
})();
|
|
"
|
|
frame size: 4
|
|
parameter count: 1
|
|
bytecode array length: 76
|
|
bytecodes: [
|
|
B(Mov), R(closure), R(1),
|
|
B(Mov), R(new_target), R(0),
|
|
/* 112 E> */ B(StackCheck),
|
|
/* 117 S> */ B(CallRuntime), U16(Runtime::k_GetSuperConstructor), R(closure), U8(1),
|
|
B(Star), R(2),
|
|
B(Ldar), R(new_target),
|
|
/* 117 E> */ B(New), R(2), R(0), U8(0), U8(0),
|
|
B(Star), R(2),
|
|
B(Ldar), R(this),
|
|
B(JumpIfNotHole), U8(4),
|
|
B(Jump), U8(11),
|
|
B(LdaConstant), U8(0),
|
|
B(Star), R(3),
|
|
/* 117 E> */ B(CallRuntime), U16(Runtime::kThrowReferenceError), R(3), U8(1),
|
|
B(Mov), R(2), R(this),
|
|
/* 126 S> */ B(Ldar), R(this),
|
|
B(JumpIfNotHole), U8(11),
|
|
B(LdaConstant), U8(0),
|
|
B(Star), R(2),
|
|
B(CallRuntime), U16(Runtime::kThrowReferenceError), R(2), U8(1),
|
|
B(Star), R(2),
|
|
B(LdaSmi), U8(2),
|
|
/* 134 E> */ B(StaNamedPropertyStrict), R(2), U8(1), U8(4),
|
|
B(Ldar), R(this),
|
|
B(JumpIfNotHole), U8(11),
|
|
B(LdaConstant), U8(0),
|
|
B(Star), R(2),
|
|
B(CallRuntime), U16(Runtime::kThrowReferenceError), R(2), U8(1),
|
|
/* 139 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
|
InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
|
|
]
|
|
handlers: [
|
|
]
|
|
|