ac0a2df30e
BytecodeGenerator previously assumed that any UNALLOCATED variable must be a global object property, but that's incorrect for global lexical variables declared in a different script. This patch fixes the behavior by always falling back to the runtime to deal with deleting UNALLOCATED variables. This is sub-optimal, but should be correct, and it's unclear if speed is important for this case. Bug: v8:6733 Change-Id: I83c2a0b6e30e5e5f4c79bfe14ebf196529816c71 Reviewed-on: https://chromium-review.googlesource.com/627636 Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#47554}
23 lines
564 B
JavaScript
23 lines
564 B
JavaScript
// Copyright 2017 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.
|
|
|
|
let x;
|
|
Realm.eval(Realm.current(), "let y");
|
|
assertFalse(delete x);
|
|
assertFalse(delete y);
|
|
assertFalse(eval("delete x"));
|
|
assertFalse(eval("delete y"));
|
|
|
|
(function() {
|
|
let z;
|
|
assertFalse(delete x);
|
|
assertFalse(delete y);
|
|
assertFalse(delete z);
|
|
assertFalse(eval("delete x"));
|
|
assertFalse(eval("delete y"));
|
|
assertFalse(eval("delete z"));
|
|
})();
|
|
|
|
assertFalse(eval("let z; delete z"));
|