v8/test/mjsunit/regress-930045.js
Jaroslav Sevcik 154bb50c22 Fix map updater for non-extensible maps with private symbols.
Bailout from map update if there are private symbol transitions on
non-extensible maps.

Bug: chromium:930045
Change-Id: I02fbea0ec0afde07cded688c06122d8f2bb25921
Reviewed-on: https://chromium-review.googlesource.com/c/1460949
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59480}
2019-02-09 09:09:02 +00:00

36 lines
761 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: --harmony-private-fields
(function CaptureStackTracePrivateSymbol() {
var o = {};
Object.preventExtensions(o);
try { Error.captureStackTrace(o); } catch (e) {}
try { Error.captureStackTrace(o); } catch (e) {}
})();
(function PrivateFieldAfterPreventExtensions() {
class C {
constructor() {
this.x = 1;
Object.preventExtensions(this);
}
}
class D extends C {
#i = 42;
set(i) { this.#i = i; }
get(i) { return this.#i; }
}
let d = new D();
d.x = 0.1;
assertEquals(42, d.get());
d.set(43);
assertEquals(43, d.get());
})();