[weakrefs] Remove --no-harmony-weak-refs flag

Bug: v8:8179
Change-Id: I7f699073807d1874d0c10a4f1641de6bfb0efe6f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2741582
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#73871}
This commit is contained in:
Antoine du Hamel 2021-03-07 16:00:51 +01:00 committed by Commit Bot
parent 67a52e8215
commit d59db06bf5
46 changed files with 101 additions and 158 deletions

View File

@ -259,8 +259,6 @@ DEFINE_BOOL(use_strict, false, "enforce strict mode")
DEFINE_BOOL(harmony, false, "enable all completed harmony features")
DEFINE_BOOL(harmony_shipping, true, "enable all shipped harmony features")
// Enabling FinalizationRegistry#cleanupSome also enables weak refs
DEFINE_IMPLICATION(harmony_weak_refs_with_cleanup_some, harmony_weak_refs)
// Update bootstrapper.cc whenever adding a new feature flag.
@ -299,7 +297,6 @@ DEFINE_IMPLICATION(harmony_weak_refs_with_cleanup_some, harmony_weak_refs)
#define HARMONY_SHIPPING_BASE(V) \
V(harmony_sharedarraybuffer, "harmony sharedarraybuffer") \
V(harmony_atomics, "harmony atomics") \
V(harmony_weak_refs, "harmony weak references") \
V(harmony_regexp_match_indices, "harmony regexp match indices") \
V(harmony_private_brand_checks, "harmony private brand checks") \
V(harmony_top_level_await, "harmony top level await")

View File

@ -6277,8 +6277,6 @@ MaybeHandle<JSFinalizationRegistry> Heap::DequeueDirtyJSFinalizationRegistry() {
}
void Heap::RemoveDirtyFinalizationRegistriesOnContext(NativeContext context) {
if (!FLAG_harmony_weak_refs) return;
DisallowGarbageCollection no_gc;
Isolate* isolate = this->isolate();
@ -6308,7 +6306,6 @@ void Heap::RemoveDirtyFinalizationRegistriesOnContext(NativeContext context) {
}
void Heap::KeepDuringJob(Handle<JSReceiver> target) {
DCHECK(FLAG_harmony_weak_refs);
DCHECK(weak_refs_keep_during_job().IsUndefined() ||
weak_refs_keep_during_job().IsOrderedHashSet());
Handle<OrderedHashSet> table;

View File

@ -2483,9 +2483,6 @@ void MarkCompactCollector::ClearWeakReferences() {
}
void MarkCompactCollector::ClearJSWeakRefs() {
if (!FLAG_harmony_weak_refs) {
return;
}
JSWeakRef weak_ref;
while (weak_objects_.js_weak_refs.Pop(kMainThreadTask, &weak_ref)) {
HeapObject target = HeapObject::cast(weak_ref.target());

View File

@ -115,19 +115,17 @@ void WeakObjects::UpdateWeakObjectsInCode(
void WeakObjects::UpdateJSWeakRefs(
WeakObjectWorklist<JSWeakRef>& js_weak_refs) {
if (FLAG_harmony_weak_refs) {
js_weak_refs.Update(
[](JSWeakRef js_weak_ref_in, JSWeakRef* js_weak_ref_out) -> bool {
JSWeakRef forwarded = ForwardingAddress(js_weak_ref_in);
js_weak_refs.Update(
[](JSWeakRef js_weak_ref_in, JSWeakRef* js_weak_ref_out) -> bool {
JSWeakRef forwarded = ForwardingAddress(js_weak_ref_in);
if (!forwarded.is_null()) {
*js_weak_ref_out = forwarded;
return true;
}
if (!forwarded.is_null()) {
*js_weak_ref_out = forwarded;
return true;
}
return false;
});
}
return false;
});
}
void WeakObjects::UpdateWeakCells(WeakObjectWorklist<WeakCell>& weak_cells) {

View File

@ -3871,6 +3871,61 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
native_context()->set_bound_function_with_constructor_map(*map);
}
{ // -- F i n a l i z a t i o n R e g i s t r y
Handle<JSFunction> finalization_registry_fun = InstallFunction(
isolate_, global, factory->FinalizationRegistry_string(),
JS_FINALIZATION_REGISTRY_TYPE, JSFinalizationRegistry::kHeaderSize, 0,
factory->the_hole_value(), Builtins::kFinalizationRegistryConstructor);
InstallWithIntrinsicDefaultProto(
isolate_, finalization_registry_fun,
Context::JS_FINALIZATION_REGISTRY_FUNCTION_INDEX);
finalization_registry_fun->shared().DontAdaptArguments();
finalization_registry_fun->shared().set_length(1);
Handle<JSObject> finalization_registry_prototype(
JSObject::cast(finalization_registry_fun->instance_prototype()),
isolate());
InstallToStringTag(isolate_, finalization_registry_prototype,
factory->FinalizationRegistry_string());
SimpleInstallFunction(isolate_, finalization_registry_prototype, "register",
Builtins::kFinalizationRegistryRegister, 2, false);
SimpleInstallFunction(isolate_, finalization_registry_prototype,
"unregister",
Builtins::kFinalizationRegistryUnregister, 1, false);
// The cleanupSome function is created but not exposed, as it is used
// internally by InvokeFinalizationRegistryCleanupFromTask.
//
// It is exposed by FLAG_harmony_weak_refs_with_cleanup_some.
Handle<JSFunction> cleanup_some_fun = SimpleCreateFunction(
isolate_, factory->InternalizeUtf8String("cleanupSome"),
Builtins::kFinalizationRegistryPrototypeCleanupSome, 0, false);
native_context()->set_finalization_registry_cleanup_some(*cleanup_some_fun);
}
{ // -- W e a k R e f
Handle<JSFunction> weak_ref_fun = InstallFunction(
isolate_, global, "WeakRef", JS_WEAK_REF_TYPE, JSWeakRef::kHeaderSize,
0, factory->the_hole_value(), Builtins::kWeakRefConstructor);
InstallWithIntrinsicDefaultProto(isolate_, weak_ref_fun,
Context::JS_WEAK_REF_FUNCTION_INDEX);
weak_ref_fun->shared().DontAdaptArguments();
weak_ref_fun->shared().set_length(1);
Handle<JSObject> weak_ref_prototype(
JSObject::cast(weak_ref_fun->instance_prototype()), isolate());
InstallToStringTag(isolate_, weak_ref_prototype, factory->WeakRef_string());
SimpleInstallFunction(isolate_, weak_ref_prototype, "deref",
Builtins::kWeakRefDeref, 0, true);
}
{ // --- sloppy arguments map
Handle<String> arguments_string = factory->Arguments_string();
Handle<JSFunction> function = CreateFunctionForBuiltinWithPrototype(
@ -4363,75 +4418,8 @@ void Genesis::InitializeGlobal_harmony_atomics() {
InstallToStringTag(isolate_, isolate()->atomics_object(), "Atomics");
}
void Genesis::InitializeGlobal_harmony_weak_refs() {
if (!FLAG_harmony_weak_refs) return;
Factory* factory = isolate()->factory();
Handle<JSGlobalObject> global(native_context()->global_object(), isolate());
{
// Create %FinalizationRegistry%
Handle<JSFunction> finalization_registry_fun = InstallFunction(
isolate(), global, factory->FinalizationRegistry_string(),
JS_FINALIZATION_REGISTRY_TYPE, JSFinalizationRegistry::kHeaderSize, 0,
factory->the_hole_value(), Builtins::kFinalizationRegistryConstructor);
InstallWithIntrinsicDefaultProto(
isolate(), finalization_registry_fun,
Context::JS_FINALIZATION_REGISTRY_FUNCTION_INDEX);
finalization_registry_fun->shared().DontAdaptArguments();
finalization_registry_fun->shared().set_length(1);
Handle<JSObject> finalization_registry_prototype(
JSObject::cast(finalization_registry_fun->instance_prototype()),
isolate());
InstallToStringTag(isolate(), finalization_registry_prototype,
factory->FinalizationRegistry_string());
SimpleInstallFunction(isolate(), finalization_registry_prototype,
"register", Builtins::kFinalizationRegistryRegister,
2, false);
SimpleInstallFunction(isolate(), finalization_registry_prototype,
"unregister",
Builtins::kFinalizationRegistryUnregister, 1, false);
// The cleanupSome function is created but not exposed, as it is used
// internally by InvokeFinalizationRegistryCleanupFromTask.
//
// It is exposed by FLAG_harmony_weak_refs_with_cleanup_some.
Handle<JSFunction> cleanup_some_fun = SimpleCreateFunction(
isolate(), factory->InternalizeUtf8String("cleanupSome"),
Builtins::kFinalizationRegistryPrototypeCleanupSome, 0, false);
native_context()->set_finalization_registry_cleanup_some(*cleanup_some_fun);
}
{
// Create %WeakRef%
Handle<JSFunction> weak_ref_fun = InstallFunction(
isolate(), global, factory->WeakRef_string(), JS_WEAK_REF_TYPE,
JSWeakRef::kHeaderSize, 0, factory->the_hole_value(),
Builtins::kWeakRefConstructor);
InstallWithIntrinsicDefaultProto(isolate(), weak_ref_fun,
Context::JS_WEAK_REF_FUNCTION_INDEX);
weak_ref_fun->shared().DontAdaptArguments();
weak_ref_fun->shared().set_length(1);
Handle<JSObject> weak_ref_prototype(
JSObject::cast(weak_ref_fun->instance_prototype()), isolate());
InstallToStringTag(isolate(), weak_ref_prototype,
factory->WeakRef_string());
SimpleInstallFunction(isolate(), weak_ref_prototype, "deref",
Builtins::kWeakRefDeref, 0, true);
}
}
void Genesis::InitializeGlobal_harmony_weak_refs_with_cleanup_some() {
if (!FLAG_harmony_weak_refs_with_cleanup_some) return;
DCHECK(FLAG_harmony_weak_refs);
Handle<JSFunction> finalization_registry_fun =
isolate()->js_finalization_registry_fun();

View File

@ -209,7 +209,6 @@ Handle<JSWeakRef> MakeWeakRefAndKeepDuringJob(Isolate* isolate) {
} // namespace
TEST(TestRegister) {
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
Isolate* isolate = CcTest::i_isolate();
@ -247,7 +246,6 @@ TEST(TestRegister) {
}
TEST(TestRegisterWithKey) {
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
Isolate* isolate = CcTest::i_isolate();
@ -300,7 +298,6 @@ TEST(TestRegisterWithKey) {
}
TEST(TestWeakCellNullify1) {
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
Isolate* isolate = CcTest::i_isolate();
@ -335,7 +332,6 @@ TEST(TestWeakCellNullify1) {
}
TEST(TestWeakCellNullify2) {
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
Isolate* isolate = CcTest::i_isolate();
@ -369,7 +365,6 @@ TEST(TestWeakCellNullify2) {
}
TEST(TestJSFinalizationRegistryPopClearedCellHoldings1) {
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
Isolate* isolate = CcTest::i_isolate();
@ -425,7 +420,6 @@ TEST(TestJSFinalizationRegistryPopClearedCellHoldings1) {
TEST(TestJSFinalizationRegistryPopClearedCellHoldings2) {
// Test that when all WeakCells for a key are popped, the key is removed from
// the key map.
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
Isolate* isolate = CcTest::i_isolate();
@ -476,7 +470,6 @@ TEST(TestJSFinalizationRegistryPopClearedCellHoldings2) {
}
TEST(TestUnregisterActiveCells) {
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
Isolate* isolate = CcTest::i_isolate();
@ -529,7 +522,6 @@ TEST(TestUnregisterActiveCells) {
}
TEST(TestUnregisterActiveAndClearedCells) {
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
Isolate* isolate = CcTest::i_isolate();
@ -585,7 +577,6 @@ TEST(TestUnregisterActiveAndClearedCells) {
}
TEST(TestWeakCellUnregisterTwice) {
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
Isolate* isolate = CcTest::i_isolate();
@ -633,7 +624,6 @@ TEST(TestWeakCellUnregisterTwice) {
}
TEST(TestWeakCellUnregisterPopped) {
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
Isolate* isolate = CcTest::i_isolate();
@ -674,7 +664,6 @@ TEST(TestWeakCellUnregisterPopped) {
}
TEST(TestWeakCellUnregisterNonexistentKey) {
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
Isolate* isolate = CcTest::i_isolate();
@ -687,7 +676,6 @@ TEST(TestWeakCellUnregisterNonexistentKey) {
}
TEST(TestJSWeakRef) {
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
@ -716,7 +704,6 @@ TEST(TestJSWeakRef) {
}
TEST(TestJSWeakRefIncrementalMarking) {
FLAG_harmony_weak_refs = true;
if (!FLAG_incremental_marking) {
return;
}
@ -752,7 +739,6 @@ TEST(TestJSWeakRefIncrementalMarking) {
}
TEST(TestJSWeakRefKeepDuringJob) {
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
@ -790,7 +776,6 @@ TEST(TestJSWeakRefKeepDuringJob) {
}
TEST(TestJSWeakRefKeepDuringJobIncrementalMarking) {
FLAG_harmony_weak_refs = true;
if (!FLAG_incremental_marking) {
return;
}
@ -819,7 +804,6 @@ TEST(TestJSWeakRefKeepDuringJobIncrementalMarking) {
}
TEST(TestRemoveUnregisterToken) {
FLAG_harmony_weak_refs = true;
CcTest::InitializeVM();
LocalContext context;
Isolate* isolate = CcTest::i_isolate();
@ -883,7 +867,6 @@ TEST(TestRemoveUnregisterToken) {
}
TEST(JSWeakRefScavengedInWorklist) {
FLAG_harmony_weak_refs = true;
if (!FLAG_incremental_marking || FLAG_single_generation) {
return;
}
@ -928,7 +911,6 @@ TEST(JSWeakRefScavengedInWorklist) {
}
TEST(JSWeakRefTenuredInWorklist) {
FLAG_harmony_weak_refs = true;
if (!FLAG_incremental_marking || FLAG_single_generation) {
return;
}
@ -976,7 +958,6 @@ TEST(JSWeakRefTenuredInWorklist) {
}
TEST(UnregisterTokenHeapVerifier) {
FLAG_harmony_weak_refs = true;
if (!FLAG_incremental_marking) return;
ManualGCScope manual_gc_scope;
#ifdef VERIFY_HEAP

View File

@ -2,6 +2,4 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs
let fg = new FinalizationRegistry();

View File

@ -1,6 +1,6 @@
*%(basename)s:7: TypeError: FinalizationRegistry: cleanup must be callable
*%(basename)s:*: TypeError: FinalizationRegistry: cleanup must be callable
let fg = new FinalizationRegistry();
^
TypeError: FinalizationRegistry: cleanup must be callable
at new FinalizationRegistry (<anonymous>)
at *%(basename)s:7:10
at *%(basename)s:*:10

View File

@ -2,6 +2,4 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs
let fg = new FinalizationRegistry({});

View File

@ -1,6 +1,6 @@
*%(basename)s:7: TypeError: FinalizationRegistry: cleanup must be callable
*%(basename)s:*: TypeError: FinalizationRegistry: cleanup must be callable
let fg = new FinalizationRegistry({});
^
TypeError: FinalizationRegistry: cleanup must be callable
at new FinalizationRegistry (<anonymous>)
at *%(basename)s:7:10
at *%(basename)s:*:10

View File

@ -2,7 +2,5 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs
let fg = new FinalizationRegistry(() => {});
fg.register(1);

View File

@ -1,6 +1,6 @@
*%(basename)s:8: TypeError: FinalizationRegistry.prototype.register: target must be an object
*%(basename)s:*: TypeError: FinalizationRegistry.prototype.register: target must be an object
fg.register(1);
^
TypeError: FinalizationRegistry.prototype.register: target must be an object
at FinalizationRegistry.register (<anonymous>)
at *%(basename)s:8:4
at *%(basename)s:*:4

View File

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs
let fg = new FinalizationRegistry(() => {});
let o = {};
fg.register(o, o);

View File

@ -1,6 +1,6 @@
*%(basename)s:9: TypeError: FinalizationRegistry.prototype.register: target and holdings must not be same
*%(basename)s:*: TypeError: FinalizationRegistry.prototype.register: target and holdings must not be same
fg.register(o, o);
^
TypeError: FinalizationRegistry.prototype.register: target and holdings must not be same
at FinalizationRegistry.register (<anonymous>)
at *%(basename)s:9:4
at *%(basename)s:*:4

View File

@ -2,7 +2,5 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs
let fg = new FinalizationRegistry(() => {});
fg.unregister(1);

View File

@ -1,6 +1,6 @@
*%(basename)s:8: TypeError: unregisterToken ('1') must be an object
*%(basename)s:*: TypeError: unregisterToken ('1') must be an object
fg.unregister(1);
^
TypeError: unregisterToken ('1') must be an object
at FinalizationRegistry.unregister (<anonymous>)
at *%(basename)s:8:4
at *%(basename)s:*:4

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
// Flags: --no-stress-opt
// Since cleanup tasks are top-level tasks, errors thrown from them don't stop

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Flags: --allow-natives-syntax --harmony-weak-refs --expose-gc
// Flags: --allow-natives-syntax --expose-gc
// Helper to convert setTimeout into an awaitable promise.
function asyncTimeout(timeout) {

View File

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs
(function TestConstructFinalizationRegistry() {
let fg = new FinalizationRegistry(() => {});
assertEquals(fg.toString(), "[object FinalizationRegistry]");

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let r = Realm.create();

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking --allow-natives-syntax
// Flags: --expose-gc --noincremental-marking --allow-natives-syntax
// This test asserts that the cleanup function call, scheduled by GC, is a
// microtask and not a normal task.

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanedUp = false;
let r = Realm.create();

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let r = Realm.create();

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_called = 0;
let holdings_list = [];

View File

@ -5,7 +5,7 @@
// Flags: --harmony-weak-refs
// FinalizationRegistry#cleanupSome is normative optional and has its own
// flag. Test that it's not present with only --harmony-weak-refs.
// flag. Test that it's not present.
assertEquals(undefined, Object.getOwnPropertyDescriptor(
FinalizationRegistry.prototype, "cleanupSome"));

View File

@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs
// A newly created WeakRef is kept alive until the end of the next microtask
// checkpoint. V8 asserts that the kept objects list is cleared at the end of
// microtask checkpoints when the microtask policy is auto. Test that d8, which

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_called = false;
let cleanup = function(holdings) {

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_called = false;
function cleanup(holdings) {

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_called = false;
let holdings_list = [];

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
// Flags: --no-stress-flush-bytecode
let cleanup0_call_count = 0;

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_call_count = 0;
let cleanup_holdings_count = 0;

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let call_count = 0;
let reentrant_gc = function(holdings) {

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let o1 = {};
let o2 = {};

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_call_count = 0;
let cleanup_holdings_count = 0;

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_call_count = 0;
let cleanup_holdings_count = 0;

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking --noincremental-marking
// Flags: --expose-gc --noincremental-marking --noincremental-marking
let cleanup_call_count = 0;
let cleanup = function(holdings) {

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_call_count = 0;
let cleanup = function(holdings) {

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_call_count = 0;
let cleanup_holdings_count = 0;

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_call_count = 0;
let cleanup_holdings_count = 0;

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_call_count = 0;
let cleanup_holdings_count = 0;

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_call_count = 0;
let cleanup_holdings_count = 0;

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_call_count = 0;
let cleanup = function(holdings) {

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let cleanup_called = false;
let cleanup = function(holdings_arg) {

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let wr;
(function() {

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-weak-refs --expose-gc --noincremental-marking
// Flags: --expose-gc --noincremental-marking
let wr;
let wr_control; // control WeakRef for testing what happens without deref

View File

@ -41,7 +41,6 @@ class WithFinalizationRegistryMixin : public TMixin {
static void SetUpTestCase() {
CHECK_NULL(save_flags_);
save_flags_ = new SaveFlags();
FLAG_harmony_weak_refs = true;
FLAG_expose_gc = true;
FLAG_allow_natives_syntax = true;
TMixin::SetUpTestCase();