df12eb194e
This patch implements the access of private accessors by loading the referenced component from the AccessorPair associated with private name variables. It also makes the error messages for invalid kind of private accessor access more specific. Bug: v8:8330 Design doc: https://docs.google.com/document/d/10W4begYfs7lmldSqBoQBBt_BKamgT8igqxF9u50RGrI/edit Change-Id: I6d441cffb85f8d9cd0417ec9b6ae20f3e34ef418 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1695205 Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Joyee Cheung <joyee@igalia.com> Cr-Commit-Position: refs/heads/master@{#63474}
105 lines
2.3 KiB
Plaintext
105 lines
2.3 KiB
Plaintext
#
|
|
# Autogenerated by generate-bytecode-expectations.
|
|
#
|
|
|
|
---
|
|
wrap: no
|
|
test function name: test
|
|
private methods: yes
|
|
|
|
---
|
|
snippet: "
|
|
class A {
|
|
#a() { return 1; }
|
|
constructor() { return this.#a(); }
|
|
}
|
|
|
|
var test = A;
|
|
new A;
|
|
"
|
|
frame size: 3
|
|
parameter count: 1
|
|
bytecode array length: 28
|
|
bytecodes: [
|
|
/* 44 E> */ B(StackCheck),
|
|
B(LdaCurrentContextSlot), U8(5),
|
|
B(Star), R(1),
|
|
B(Mov), R(this), R(0),
|
|
B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2),
|
|
/* 49 S> */ B(LdaCurrentContextSlot), U8(5),
|
|
/* 61 E> */ B(LdaKeyedProperty), R(this), U8(0),
|
|
B(LdaCurrentContextSlot), U8(4),
|
|
B(Star), R(2),
|
|
/* 63 E> */ B(CallAnyReceiver), R(2), R(this), U8(1), U8(2),
|
|
/* 66 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
class B {
|
|
#b() { return 1; }
|
|
constructor() { this.#b = 1; }
|
|
}
|
|
|
|
var test = B;
|
|
new test;
|
|
"
|
|
frame size: 4
|
|
parameter count: 1
|
|
bytecode array length: 29
|
|
bytecodes: [
|
|
/* 44 E> */ B(StackCheck),
|
|
B(LdaCurrentContextSlot), U8(5),
|
|
B(Star), R(1),
|
|
B(Mov), R(this), R(0),
|
|
B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2),
|
|
/* 49 S> */ B(Wide), B(LdaSmi), I16(261),
|
|
B(Star), R(2),
|
|
B(LdaConstant), U8(0),
|
|
B(Star), R(3),
|
|
/* 57 E> */ B(CallRuntime), U16(Runtime::kNewTypeError), R(2), U8(2),
|
|
B(Throw),
|
|
]
|
|
constant pool: [
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["#b"],
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
class C {
|
|
#c() { return 1; }
|
|
constructor() { this.#c++; }
|
|
}
|
|
|
|
var test = C;
|
|
new test;
|
|
"
|
|
frame size: 4
|
|
parameter count: 1
|
|
bytecode array length: 29
|
|
bytecodes: [
|
|
/* 44 E> */ B(StackCheck),
|
|
B(LdaCurrentContextSlot), U8(5),
|
|
B(Star), R(1),
|
|
B(Mov), R(this), R(0),
|
|
B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(2),
|
|
/* 49 S> */ B(Wide), B(LdaSmi), I16(261),
|
|
B(Star), R(2),
|
|
B(LdaConstant), U8(0),
|
|
B(Star), R(3),
|
|
B(CallRuntime), U16(Runtime::kNewTypeError), R(2), U8(2),
|
|
B(Throw),
|
|
]
|
|
constant pool: [
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["#c"],
|
|
]
|
|
handlers: [
|
|
]
|
|
|