154bb50c22
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}
36 lines
761 B
JavaScript
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());
|
|
})();
|