v8/test/cctest/interpreter/bytecode_expectations/PrivateClassFields.golden
Mythri 4e321413d8 Allocate feedback cells in an array decoupled from other slots
This is a pre-work for allocating feedback vectors lazily. Feedback cells
are required to share the feedback vectors across the different closures
of the same function. Currently, they are held in the CreateClosureSlot
in the feedback vector. With lazy feedback vector allocation, we may not
have a feedback vector. However, we still need a place to store the
feedback cells, so if feedback vector is allocated in future it can still
be shared across closures.

Here is the detailed design doc:
https://docs.google.com/document/d/1m2PTNChrlJqw9MiwK_xEJfqbFHAgEHmgGqmIN49PaBY/edit

BUG=v8:8394

Change-Id: Ib406d862b2809b1293bfecdcfcf8dea3127cb1c7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1503753
Commit-Queue: Mythri Alle <mythria@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60147}
2019-03-11 11:20:21 +00:00

280 lines
8.6 KiB
Plaintext

#
# Autogenerated by generate-bytecode-expectations.
#
---
wrap: yes
private fields: yes
---
snippet: "
{
class A {
#a;
constructor() {
this.#a = 1;
}
}
class B {
#a = 1;
}
new A;
new B;
}
"
frame size: 10
parameter count: 1
bytecode array length: 143
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),
B(LdaConstant), U8(1),
B(Star), R(6),
B(LdaConstant), U8(3),
B(Star), R(9),
B(LdaConstant), U8(3),
B(Star), R(9),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(9), U8(1),
B(StaCurrentContextSlot), U8(4),
B(Mov), R(5), R(7),
B(CallRuntime), U16(Runtime::kDefineClass), R(6), U8(3),
B(Star), R(6),
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(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(2), U8(2),
B(Star), R(5),
B(LdaConstant), U8(7),
B(Star), R(6),
B(LdaConstant), U8(3),
B(Star), R(9),
B(LdaConstant), U8(3),
B(Star), R(9),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(9), U8(1),
B(StaCurrentContextSlot), U8(4),
B(Mov), R(5), R(7),
B(CallRuntime), U16(Runtime::kDefineClass), R(6), U8(3),
B(Star), R(6),
B(Mov), R(7), R(2),
B(CreateClosure), U8(9), U8(3), U8(2),
B(Star), R(7),
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(4),
/* 145 S> */ B(Ldar), R(2),
/* 145 E> */ B(Construct), R(2), R(0), U8(0), U8(6),
B(LdaUndefined),
/* 154 S> */ B(Return),
]
constant pool: [
SCOPE_INFO_TYPE,
FIXED_ARRAY_TYPE,
SHARED_FUNCTION_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["#a"],
SHARED_FUNCTION_INFO_TYPE,
SYMBOL_TYPE,
SCOPE_INFO_TYPE,
FIXED_ARRAY_TYPE,
SHARED_FUNCTION_INFO_TYPE,
SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]
---
snippet: "
{
class A extends class {} {
#a;
constructor() {
super();
this.#a = 1;
}
}
class B extends class {} {
#a = 1;
#b = this.#a;
foo() { return this.#a; }
bar(v) { this.#b = v; }
constructor() {
super();
this.foo();
this.bar(3);
}
}
class C extends B {
#a = 2;
constructor() {
(() => super())();
}
}
new A;
new B;
new C;
};
"
frame size: 15
parameter count: 1
bytecode array length: 289
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),
B(LdaConstant), U8(2),
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(4), U8(1), U8(2),
B(Star), R(7),
B(LdaConstant), U8(1),
B(Star), R(8),
B(LdaConstant), U8(5),
B(Star), R(11),
B(LdaConstant), U8(5),
B(Star), R(11),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(11), U8(1),
B(StaCurrentContextSlot), U8(4),
B(Mov), R(7), R(9),
B(Mov), R(13), R(10),
B(CallRuntime), U16(Runtime::kDefineClass), R(8), U8(3),
B(Star), R(8),
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(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(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(4), U8(2),
B(Star), R(7),
B(LdaConstant), U8(9),
B(Star), R(8),
B(LdaConstant), U8(5),
B(Star), R(11),
B(LdaConstant), U8(5),
B(Star), R(11),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(11), U8(1),
B(StaCurrentContextSlot), U8(4),
B(LdaConstant), U8(13),
B(Star), R(11),
B(LdaConstant), U8(13),
B(Star), R(11),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(11), U8(1),
B(StaCurrentContextSlot), U8(5),
B(CreateClosure), U8(14), U8(5), U8(2),
B(Star), R(11),
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(7), U8(2),
B(Star), R(9),
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(8), U8(2),
B(Star), R(7),
B(LdaConstant), U8(18),
B(Star), R(8),
B(LdaConstant), U8(5),
B(Star), R(11),
B(LdaConstant), U8(5),
B(Star), R(11),
B(CallRuntime), U16(Runtime::kCreatePrivateNameSymbol), R(11), U8(1),
B(StaCurrentContextSlot), U8(4),
B(Mov), R(7), R(9),
B(Mov), R(4), R(10),
B(CallRuntime), U16(Runtime::kDefineClass), R(8), U8(3),
B(Star), R(8),
B(Mov), R(9), R(3),
B(CreateClosure), U8(20), U8(9), U8(2),
B(Star), R(9),
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(6),
/* 439 S> */ B(Ldar), R(4),
/* 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(10),
B(LdaUndefined),
/* 458 S> */ B(Return),
]
constant pool: [
SCOPE_INFO_TYPE,
FIXED_ARRAY_TYPE,
FIXED_ARRAY_TYPE,
SHARED_FUNCTION_INFO_TYPE,
SHARED_FUNCTION_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["#a"],
SHARED_FUNCTION_INFO_TYPE,
SYMBOL_TYPE,
SCOPE_INFO_TYPE,
FIXED_ARRAY_TYPE,
FIXED_ARRAY_TYPE,
SHARED_FUNCTION_INFO_TYPE,
SHARED_FUNCTION_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["#b"],
SHARED_FUNCTION_INFO_TYPE,
SHARED_FUNCTION_INFO_TYPE,
SHARED_FUNCTION_INFO_TYPE,
SCOPE_INFO_TYPE,
FIXED_ARRAY_TYPE,
SHARED_FUNCTION_INFO_TYPE,
SHARED_FUNCTION_INFO_TYPE,
]
handlers: [
]