v8/test/mjsunit/regress/regress-9383.js
Dan Elphick fc68d1e51a [interpreter] Fix order of bytecode generated for adding getters/setters
Makes the order of the generated calls to the Runtime function
DefineAccessorPropertyUnchecked fixed regardless of hashseed so that
recompilation for lazy source positions always generates the same
result.

Moves AccessorTable from src/ast/ast.h to bytecode-generator.cc since
that's the only place that uses it.

Bug: v8:9383, v8:8510
Change-Id: I89e0aad1683a793714bfb48eca1b00abe20cad0a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1669689
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62303}
2019-06-20 18:41:42 +00:00

51 lines
884 B
JavaScript

// Copyright 2019 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --throws --cache=code --enable-lazy-source-positions
// Test ensures that the getters and setters are added in the same order in the
// generated bytecode regardless of the isolate's hash seed. This gets tested
// because of the use of the code cache.
var c = {
get b() {
},
get getter() {
},
set a(n) {
},
set a(n) {
},
set setter1(n) {
},
set setter2(n) {
},
set setter3(n) {
},
set setter4(n) {
},
set setter5(n) {
},
set setter6(n) {
},
set setter7(n) {
},
set setter8(n) {
},
set setter9(n) {
},
set setter10(n) {
},
set setter11(n) {
},
set setter12(n) {
},
set setter12(n) {
},
};
for (x in c) {
print(x);
}
throw new Error();