[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:
parent
67a52e8215
commit
d59db06bf5
@ -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")
|
||||
|
@ -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;
|
||||
|
@ -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());
|
||||
|
@ -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) {
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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({});
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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]");
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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 = [];
|
||||
|
@ -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"));
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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 = [];
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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 = {};
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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() {
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user