[ShadowRealm] Part 1 - Skeleton
1. Expose all the functions to empty builtins. 2. Wire up the basic structure of ShadowRealm and internal slots. Bug: v8:11989 Change-Id: If7545fe18a74b2bd4b70a1a25776e41f03aaff89 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3195532 Reviewed-by: Shu-yu Guo <syg@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Chengzhong Wu <legendecas@gmail.com> Cr-Commit-Position: refs/heads/main@{#78757}
This commit is contained in:
parent
c1d39129f9
commit
10a777ee7e
@ -857,6 +857,7 @@ filegroup(
|
||||
"src/objects/js-proxy.tq",
|
||||
"src/objects/js-regexp-string-iterator.tq",
|
||||
"src/objects/js-regexp.tq",
|
||||
"src/objects/js-shadow-realms.tq",
|
||||
"src/objects/js-temporal-objects.tq",
|
||||
"src/objects/js-weak-refs.tq",
|
||||
"src/objects/literal-objects.tq",
|
||||
@ -1051,6 +1052,7 @@ filegroup(
|
||||
"src/builtins/builtins-promise.h",
|
||||
"src/builtins/builtins-reflect.cc",
|
||||
"src/builtins/builtins-regexp.cc",
|
||||
"src/builtins/builtins-shadow-realms.cc",
|
||||
"src/builtins/builtins-sharedarraybuffer.cc",
|
||||
"src/builtins/builtins-string.cc",
|
||||
"src/builtins/builtins-symbol.cc",
|
||||
@ -1638,6 +1640,8 @@ filegroup(
|
||||
"src/objects/js-regexp-string-iterator.h",
|
||||
"src/objects/js-regexp.cc",
|
||||
"src/objects/js-regexp.h",
|
||||
"src/objects/js-shadow-realms.h",
|
||||
"src/objects/js-shadow-realms-inl.h",
|
||||
"src/objects/js-temporal-objects.h",
|
||||
"src/objects/js-temporal-objects-inl.h",
|
||||
"src/objects/js-temporal-objects.cc",
|
||||
|
4
BUILD.gn
4
BUILD.gn
@ -1759,6 +1759,7 @@ torque_files = [
|
||||
"src/objects/js-proxy.tq",
|
||||
"src/objects/js-regexp-string-iterator.tq",
|
||||
"src/objects/js-regexp.tq",
|
||||
"src/objects/js-shadow-realms.tq",
|
||||
"src/objects/js-temporal-objects.tq",
|
||||
"src/objects/js-weak-refs.tq",
|
||||
"src/objects/literal-objects.tq",
|
||||
@ -3162,6 +3163,8 @@ v8_header_set("v8_internal_headers") {
|
||||
"src/objects/js-regexp.h",
|
||||
"src/objects/js-segments-inl.h",
|
||||
"src/objects/js-segments.h",
|
||||
"src/objects/js-shadow-realms-inl.h",
|
||||
"src/objects/js-shadow-realms.h",
|
||||
"src/objects/js-temporal-objects-inl.h",
|
||||
"src/objects/js-temporal-objects.h",
|
||||
"src/objects/js-weak-refs-inl.h",
|
||||
@ -4029,6 +4032,7 @@ v8_source_set("v8_base_without_compiler") {
|
||||
"src/builtins/builtins-object.cc",
|
||||
"src/builtins/builtins-reflect.cc",
|
||||
"src/builtins/builtins-regexp.cc",
|
||||
"src/builtins/builtins-shadow-realms.cc",
|
||||
"src/builtins/builtins-sharedarraybuffer.cc",
|
||||
"src/builtins/builtins-string.cc",
|
||||
"src/builtins/builtins-symbol.cc",
|
||||
|
@ -367,6 +367,20 @@ using HostInitializeImportMetaObjectCallback = void (*)(Local<Context> context,
|
||||
Local<Module> module,
|
||||
Local<Object> meta);
|
||||
|
||||
/**
|
||||
* HostCreateShadowRealmContextCallback is called each time a ShadowRealm is
|
||||
* being constructed in the initiator_context.
|
||||
*
|
||||
* The method combines Context creation and implementation defined abstract
|
||||
* operation HostInitializeShadowRealm into one.
|
||||
*
|
||||
* The embedder should use v8::Context::New or v8::Context:NewFromSnapshot to
|
||||
* create a new context. If the creation fails, the embedder must propagate
|
||||
* that exception by returning an empty MaybeLocal.
|
||||
*/
|
||||
using HostCreateShadowRealmContextCallback =
|
||||
MaybeLocal<Context> (*)(Local<Context> initiator_context);
|
||||
|
||||
/**
|
||||
* PrepareStackTraceCallback is called when the stack property of an error is
|
||||
* first accessed. The return value will be used as the stack value. If this
|
||||
|
@ -641,6 +641,13 @@ class V8_EXPORT Isolate {
|
||||
void SetHostInitializeImportMetaObjectCallback(
|
||||
HostInitializeImportMetaObjectCallback callback);
|
||||
|
||||
/**
|
||||
* This specifies the callback called by the upcoming ShadowRealm
|
||||
* construction language feature to retrieve host created globals.
|
||||
*/
|
||||
void SetHostCreateShadowRealmContextCallback(
|
||||
HostCreateShadowRealmContextCallback callback);
|
||||
|
||||
/**
|
||||
* This specifies the callback called when the stack property of Error
|
||||
* is accessed.
|
||||
|
@ -8816,6 +8816,12 @@ void Isolate::SetHostInitializeImportMetaObjectCallback(
|
||||
isolate->SetHostInitializeImportMetaObjectCallback(callback);
|
||||
}
|
||||
|
||||
void Isolate::SetHostCreateShadowRealmContextCallback(
|
||||
HostCreateShadowRealmContextCallback callback) {
|
||||
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
|
||||
isolate->SetHostCreateShadowRealmContextCallback(callback);
|
||||
}
|
||||
|
||||
void Isolate::SetPrepareStackTraceCallback(PrepareStackTraceCallback callback) {
|
||||
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
|
||||
isolate->SetPrepareStackTraceCallback(callback);
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include 'src/objects/js-generator.h'
|
||||
#include 'src/objects/js-promise.h'
|
||||
#include 'src/objects/js-regexp-string-iterator.h'
|
||||
#include 'src/objects/js-shadow-realms.h'
|
||||
#include 'src/objects/js-weak-refs.h'
|
||||
#include 'src/objects/objects.h'
|
||||
#include 'src/objects/source-text-module.h'
|
||||
|
@ -867,6 +867,11 @@ namespace internal {
|
||||
TFJ(SetIteratorPrototypeNext, kJSArgcReceiverSlots, kReceiver) \
|
||||
TFS(SetOrSetIteratorToList, kSource) \
|
||||
\
|
||||
/* ShadowRealm */ \
|
||||
CPP(ShadowRealmConstructor) \
|
||||
CPP(ShadowRealmPrototypeEvaluate) \
|
||||
CPP(ShadowRealmPrototypeImportValue) \
|
||||
\
|
||||
/* SharedArrayBuffer */ \
|
||||
CPP(SharedArrayBufferPrototypeGetByteLength) \
|
||||
CPP(SharedArrayBufferPrototypeSlice) \
|
||||
|
71
src/builtins/builtins-shadow-realms.cc
Normal file
71
src/builtins/builtins-shadow-realms.cc
Normal file
@ -0,0 +1,71 @@
|
||||
// Copyright 2021 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.
|
||||
|
||||
#include "src/builtins/builtins-utils-inl.h"
|
||||
#include "src/logging/counters.h"
|
||||
#include "src/objects/js-shadow-realms-inl.h"
|
||||
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
// https://tc39.es/proposal-shadowrealm/#sec-shadowrealm-constructor
|
||||
BUILTIN(ShadowRealmConstructor) {
|
||||
HandleScope scope(isolate);
|
||||
// 1. If NewTarget is undefined, throw a TypeError exception.
|
||||
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
|
||||
THROW_NEW_ERROR_RETURN_FAILURE(
|
||||
isolate, NewTypeError(MessageTemplate::kConstructorNotFunction,
|
||||
isolate->factory()->ShadowRealm_string()));
|
||||
}
|
||||
// [[Construct]]
|
||||
Handle<JSFunction> target = args.target();
|
||||
Handle<JSReceiver> new_target = Handle<JSReceiver>::cast(args.new_target());
|
||||
|
||||
// 3. Let realmRec be CreateRealm().
|
||||
// 5. Let context be a new execution context.
|
||||
// 6. Set the Function of context to null.
|
||||
// 7. Set the Realm of context to realmRec.
|
||||
// 8. Set the ScriptOrModule of context to null.
|
||||
// 10. Perform ? SetRealmGlobalObject(realmRec, undefined, undefined).
|
||||
// 11. Perform ? SetDefaultGlobalBindings(O.[[ShadowRealm]]).
|
||||
// 12. Perform ? HostInitializeShadowRealm(O.[[ShadowRealm]]).
|
||||
// These steps are combined in
|
||||
// Isolate::RunHostCreateShadowRealmContextCallback and Context::New.
|
||||
// The host operation is hoisted for not creating a half-initialized
|
||||
// ShadowRealm object, which can fail the heap verification.
|
||||
Handle<NativeContext> native_context;
|
||||
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
||||
isolate, native_context,
|
||||
isolate->RunHostCreateShadowRealmContextCallback());
|
||||
|
||||
// 2. Let O be ? OrdinaryCreateFromConstructor(NewTarget,
|
||||
// "%ShadowRealm.prototype%", « [[ShadowRealm]], [[ExecutionContext]] »).
|
||||
Handle<JSObject> result;
|
||||
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
||||
isolate, result,
|
||||
JSObject::New(target, new_target, Handle<AllocationSite>::null()));
|
||||
Handle<JSShadowRealm> O = Handle<JSShadowRealm>::cast(result);
|
||||
|
||||
// 4. Set O.[[ShadowRealm]] to realmRec.
|
||||
// 9. Set O.[[ExecutionContext]] to context.
|
||||
O->set_native_context(*native_context);
|
||||
|
||||
// 13. Return O.
|
||||
return *O;
|
||||
}
|
||||
|
||||
// https://tc39.es/proposal-shadowrealm/#sec-shadowrealm.prototype.evaluate
|
||||
BUILTIN(ShadowRealmPrototypeEvaluate) {
|
||||
HandleScope scope(isolate);
|
||||
return ReadOnlyRoots(isolate).undefined_value();
|
||||
}
|
||||
|
||||
// https://tc39.es/proposal-shadowrealm/#sec-shadowrealm.prototype.importvalue
|
||||
BUILTIN(ShadowRealmPrototypeImportValue) {
|
||||
HandleScope scope(isolate);
|
||||
return ReadOnlyRoots(isolate).undefined_value();
|
||||
}
|
||||
|
||||
} // namespace internal
|
||||
} // namespace v8
|
@ -257,6 +257,7 @@ Type::bitset BitsetType::Lub(const MapRefLike& map) {
|
||||
case JS_WEAK_REF_TYPE:
|
||||
case JS_WEAK_SET_TYPE:
|
||||
case JS_PROMISE_TYPE:
|
||||
case JS_SHADOW_REALM_TYPE:
|
||||
case JS_TEMPORAL_CALENDAR_TYPE:
|
||||
case JS_TEMPORAL_DURATION_TYPE:
|
||||
case JS_TEMPORAL_INSTANT_TYPE:
|
||||
|
@ -1265,6 +1265,11 @@ void Shell::HostInitializeImportMetaObject(Local<Context> context,
|
||||
meta->CreateDataProperty(context, url_key, url).ToChecked();
|
||||
}
|
||||
|
||||
MaybeLocal<Context> Shell::HostCreateShadowRealmContext(
|
||||
Local<Context> initiator_context) {
|
||||
return v8::Context::New(initiator_context->GetIsolate());
|
||||
}
|
||||
|
||||
void Shell::DoHostImportModuleDynamically(void* import_data) {
|
||||
DynamicImportData* import_data_ =
|
||||
static_cast<DynamicImportData*>(import_data);
|
||||
@ -3190,6 +3195,8 @@ void Shell::Initialize(Isolate* isolate, D8Console* console,
|
||||
Shell::HostImportModuleDynamically);
|
||||
isolate->SetHostInitializeImportMetaObjectCallback(
|
||||
Shell::HostInitializeImportMetaObject);
|
||||
isolate->SetHostCreateShadowRealmContextCallback(
|
||||
Shell::HostCreateShadowRealmContext);
|
||||
|
||||
#ifdef V8_FUZZILLI
|
||||
// Let the parent process (Fuzzilli) know we are ready.
|
||||
|
@ -636,6 +636,8 @@ class Shell : public i::AllStatic {
|
||||
static void HostInitializeImportMetaObject(Local<Context> context,
|
||||
Local<Module> module,
|
||||
Local<Object> meta);
|
||||
static MaybeLocal<Context> HostCreateShadowRealmContext(
|
||||
Local<Context> initiator_context);
|
||||
|
||||
#ifdef V8_FUZZILLI
|
||||
static void Fuzzilli(const v8::FunctionCallbackInfo<v8::Value>& args);
|
||||
|
@ -54,6 +54,7 @@
|
||||
#endif // V8_INTL_SUPPORT
|
||||
#include "src/objects/js-regexp-inl.h"
|
||||
#include "src/objects/js-regexp-string-iterator-inl.h"
|
||||
#include "src/objects/js-shadow-realms-inl.h"
|
||||
#ifdef V8_INTL_SUPPORT
|
||||
#include "src/objects/js-relative-time-format-inl.h"
|
||||
#include "src/objects/js-segment-iterator-inl.h"
|
||||
@ -1134,6 +1135,8 @@ void JSMapIterator::JSMapIteratorVerify(Isolate* isolate) {
|
||||
CHECK(index().IsSmi());
|
||||
}
|
||||
|
||||
USE_TORQUE_VERIFIER(JSShadowRealm)
|
||||
|
||||
void WeakCell::WeakCellVerify(Isolate* isolate) {
|
||||
CHECK(IsWeakCell());
|
||||
|
||||
|
@ -1399,6 +1399,12 @@ void JSWeakRef::JSWeakRefPrint(std::ostream& os) {
|
||||
JSObjectPrintBody(os, *this);
|
||||
}
|
||||
|
||||
void JSShadowRealm::JSShadowRealmPrint(std::ostream& os) {
|
||||
JSObjectPrintHeader(os, *this, "JSShadowRealm");
|
||||
os << "\n - native_context: " << Brief(native_context());
|
||||
JSObjectPrintBody(os, *this);
|
||||
}
|
||||
|
||||
void JSFinalizationRegistry::JSFinalizationRegistryPrint(std::ostream& os) {
|
||||
JSObjectPrintHeader(os, *this, "JSFinalizationRegistry");
|
||||
os << "\n - native_context: " << Brief(native_context());
|
||||
|
@ -4771,6 +4771,32 @@ void Isolate::SetHostInitializeImportMetaObjectCallback(
|
||||
host_initialize_import_meta_object_callback_ = callback;
|
||||
}
|
||||
|
||||
void Isolate::SetHostCreateShadowRealmContextCallback(
|
||||
HostCreateShadowRealmContextCallback callback) {
|
||||
host_create_shadow_realm_context_callback_ = callback;
|
||||
}
|
||||
|
||||
MaybeHandle<NativeContext> Isolate::RunHostCreateShadowRealmContextCallback() {
|
||||
if (host_create_shadow_realm_context_callback_ == nullptr) {
|
||||
Handle<Object> exception =
|
||||
factory()->NewError(error_function(), MessageTemplate::kUnsupported);
|
||||
Throw(*exception);
|
||||
return kNullMaybeHandle;
|
||||
}
|
||||
|
||||
v8::Local<v8::Context> api_context =
|
||||
v8::Utils::ToLocal(Handle<Context>(native_context()));
|
||||
v8::Local<v8::Context> shadow_realm_context;
|
||||
ASSIGN_RETURN_ON_SCHEDULED_EXCEPTION_VALUE(
|
||||
this, shadow_realm_context,
|
||||
host_create_shadow_realm_context_callback_(api_context),
|
||||
MaybeHandle<NativeContext>());
|
||||
Handle<Context> shadow_realm_context_handle =
|
||||
v8::Utils::OpenHandle(*shadow_realm_context);
|
||||
DCHECK(shadow_realm_context_handle->IsNativeContext());
|
||||
return Handle<NativeContext>::cast(shadow_realm_context_handle);
|
||||
}
|
||||
|
||||
MaybeHandle<Object> Isolate::RunPrepareStackTraceCallback(
|
||||
Handle<Context> context, Handle<JSObject> error, Handle<JSArray> sites) {
|
||||
v8::Local<v8::Context> api_context = Utils::ToLocal(context);
|
||||
|
@ -1753,6 +1753,10 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
|
||||
MaybeHandle<JSObject> RunHostInitializeImportMetaObjectCallback(
|
||||
Handle<SourceTextModule> module);
|
||||
|
||||
void SetHostCreateShadowRealmContextCallback(
|
||||
HostCreateShadowRealmContextCallback callback);
|
||||
MaybeHandle<NativeContext> RunHostCreateShadowRealmContextCallback();
|
||||
|
||||
void RegisterEmbeddedFileWriter(EmbeddedFileWriterInterface* writer) {
|
||||
embedded_file_writer_ = writer;
|
||||
}
|
||||
@ -2137,6 +2141,9 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
|
||||
|
||||
HostInitializeImportMetaObjectCallback
|
||||
host_initialize_import_meta_object_callback_ = nullptr;
|
||||
HostCreateShadowRealmContextCallback
|
||||
host_create_shadow_realm_context_callback_ = nullptr;
|
||||
|
||||
base::Mutex rail_mutex_;
|
||||
double load_start_time_ms_ = 0;
|
||||
|
||||
|
@ -306,7 +306,8 @@ DEFINE_BOOL(harmony_shipping, true, "enable all shipped harmony features")
|
||||
V(harmony_import_assertions, "harmony import assertions") \
|
||||
V(harmony_rab_gsab, \
|
||||
"harmony ResizableArrayBuffer / GrowableSharedArrayBuffer") \
|
||||
V(harmony_temporal, "Temporal")
|
||||
V(harmony_temporal, "Temporal") \
|
||||
V(harmony_shadow_realm, "harmony ShadowRealm")
|
||||
|
||||
#ifdef V8_INTL_SUPPORT
|
||||
#define HARMONY_INPROGRESS(V) HARMONY_INPROGRESS_BASE(V)
|
||||
|
@ -52,6 +52,7 @@
|
||||
#endif // V8_INTL_SUPPORT
|
||||
#include "src/objects/js-regexp-string-iterator.h"
|
||||
#include "src/objects/js-regexp.h"
|
||||
#include "src/objects/js-shadow-realms.h"
|
||||
#ifdef V8_INTL_SUPPORT
|
||||
#include "src/objects/js-relative-time-format.h"
|
||||
#include "src/objects/js-segment-iterator.h"
|
||||
@ -4407,6 +4408,30 @@ EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_intl_best_fit_matcher)
|
||||
|
||||
#undef EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE
|
||||
|
||||
void Genesis::InitializeGlobal_harmony_shadow_realm() {
|
||||
if (!FLAG_harmony_shadow_realm) return;
|
||||
// -- S h a d o w R e a l m
|
||||
// #sec-shadowrealm-objects
|
||||
Handle<JSGlobalObject> global(native_context()->global_object(), isolate());
|
||||
Handle<JSFunction> shadow_realm_fun = InstallFunction(
|
||||
isolate_, global, "ShadowRealm", JS_SHADOW_REALM_TYPE,
|
||||
JSShadowRealm::kHeaderSize, 0, factory()->the_hole_value(),
|
||||
Builtin::kShadowRealmConstructor);
|
||||
shadow_realm_fun->shared().set_length(0);
|
||||
shadow_realm_fun->shared().DontAdaptArguments();
|
||||
|
||||
// Setup %ShadowRealmPrototype%.
|
||||
Handle<JSObject> prototype(
|
||||
JSObject::cast(shadow_realm_fun->instance_prototype()), isolate());
|
||||
|
||||
InstallToStringTag(isolate_, prototype, factory()->ShadowRealm_string());
|
||||
|
||||
SimpleInstallFunction(isolate_, prototype, "evaluate",
|
||||
Builtin::kShadowRealmPrototypeEvaluate, 1, true);
|
||||
SimpleInstallFunction(isolate_, prototype, "importValue",
|
||||
Builtin::kShadowRealmPrototypeImportValue, 2, true);
|
||||
}
|
||||
|
||||
void Genesis::InitializeGlobal_harmony_array_find_last() {
|
||||
if (!FLAG_harmony_array_find_last) return;
|
||||
|
||||
|
@ -367,6 +367,7 @@
|
||||
V(_, set_string, "set") \
|
||||
V(_, SetIterator_string, "Set Iterator") \
|
||||
V(_, setPrototypeOf_string, "setPrototypeOf") \
|
||||
V(_, ShadowRealm_string, "ShadowRealm") \
|
||||
V(_, SharedArrayBuffer_string, "SharedArrayBuffer") \
|
||||
V(_, sign_string, "sign") \
|
||||
V(_, smallestUnit_string, "smallestUnit") \
|
||||
|
@ -47,6 +47,7 @@
|
||||
#include "src/objects/js-proxy-inl.h"
|
||||
#include "src/objects/js-regexp-inl.h"
|
||||
#include "src/objects/js-regexp-string-iterator-inl.h"
|
||||
#include "src/objects/js-shadow-realms-inl.h"
|
||||
#include "src/objects/js-temporal-objects-inl.h"
|
||||
#include "src/objects/js-weak-refs-inl.h"
|
||||
#include "src/objects/literal-objects-inl.h"
|
||||
|
@ -570,6 +570,7 @@ bool CanSubclassHaveInobjectProperties(InstanceType instance_type) {
|
||||
case JS_PROMISE_TYPE:
|
||||
case JS_REG_EXP_TYPE:
|
||||
case JS_SET_TYPE:
|
||||
case JS_SHADOW_REALM_TYPE:
|
||||
case JS_SPECIAL_API_OBJECT_TYPE:
|
||||
case JS_TYPED_ARRAY_TYPE:
|
||||
case JS_PRIMITIVE_WRAPPER_TYPE:
|
||||
|
@ -52,6 +52,7 @@
|
||||
#include "src/objects/js-promise.h"
|
||||
#include "src/objects/js-regexp-inl.h"
|
||||
#include "src/objects/js-regexp-string-iterator.h"
|
||||
#include "src/objects/js-shadow-realms.h"
|
||||
#ifdef V8_INTL_SUPPORT
|
||||
#include "src/objects/js-relative-time-format.h"
|
||||
#include "src/objects/js-segment-iterator.h"
|
||||
@ -2334,6 +2335,8 @@ int JSObject::GetHeaderSize(InstanceType type,
|
||||
return JSObject::kHeaderSize;
|
||||
case JS_ERROR_TYPE:
|
||||
return JSObject::kHeaderSize;
|
||||
case JS_SHADOW_REALM_TYPE:
|
||||
return JSShadowRealm::kHeaderSize;
|
||||
case JS_STRING_ITERATOR_TYPE:
|
||||
return JSStringIterator::kHeaderSize;
|
||||
case JS_MODULE_NAMESPACE_TYPE:
|
||||
|
28
src/objects/js-shadow-realms-inl.h
Normal file
28
src/objects/js-shadow-realms-inl.h
Normal file
@ -0,0 +1,28 @@
|
||||
// Copyright 2021 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.
|
||||
|
||||
#ifndef V8_OBJECTS_JS_SHADOW_REALMS_INL_H_
|
||||
#define V8_OBJECTS_JS_SHADOW_REALMS_INL_H_
|
||||
|
||||
#include "src/api/api-inl.h"
|
||||
#include "src/heap/heap-write-barrier-inl.h"
|
||||
#include "src/objects/js-shadow-realms.h"
|
||||
#include "src/objects/smi-inl.h"
|
||||
|
||||
// Has to be the last include (doesn't have include guards):
|
||||
#include "src/objects/object-macros.h"
|
||||
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
#include "torque-generated/src/objects/js-shadow-realms-tq-inl.inc"
|
||||
|
||||
TQ_OBJECT_CONSTRUCTORS_IMPL(JSShadowRealm)
|
||||
|
||||
} // namespace internal
|
||||
} // namespace v8
|
||||
|
||||
#include "src/objects/object-macros-undef.h"
|
||||
|
||||
#endif // V8_OBJECTS_JS_SHADOW_REALMS_INL_H_
|
39
src/objects/js-shadow-realms.h
Normal file
39
src/objects/js-shadow-realms.h
Normal file
@ -0,0 +1,39 @@
|
||||
// Copyright 2021 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.
|
||||
|
||||
#ifndef V8_OBJECTS_JS_SHADOW_REALMS_H_
|
||||
#define V8_OBJECTS_JS_SHADOW_REALMS_H_
|
||||
|
||||
#include "src/objects/js-objects.h"
|
||||
#include "torque-generated/bit-fields.h"
|
||||
|
||||
// Has to be the last include (doesn't have include guards):
|
||||
#include "src/objects/object-macros.h"
|
||||
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
class NativeContext;
|
||||
|
||||
#include "torque-generated/src/objects/js-shadow-realms-tq.inc"
|
||||
|
||||
// ShadowRealm object from the JS ShadowRealm spec proposal:
|
||||
// https://github.com/tc39/proposal-shadowrealm
|
||||
class JSShadowRealm
|
||||
: public TorqueGeneratedJSShadowRealm<JSShadowRealm, JSObject> {
|
||||
public:
|
||||
DECL_PRINTER(JSShadowRealm)
|
||||
EXPORT_DECL_VERIFIER(JSShadowRealm)
|
||||
|
||||
class BodyDescriptor;
|
||||
|
||||
TQ_OBJECT_CONSTRUCTORS(JSShadowRealm)
|
||||
};
|
||||
|
||||
} // namespace internal
|
||||
} // namespace v8
|
||||
|
||||
#include "src/objects/object-macros-undef.h"
|
||||
|
||||
#endif // V8_OBJECTS_JS_SHADOW_REALMS_H_
|
5
src/objects/js-shadow-realms.tq
Normal file
5
src/objects/js-shadow-realms.tq
Normal file
@ -0,0 +1,5 @@
|
||||
// Copyright 2021 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.
|
||||
|
||||
extern class JSShadowRealm extends JSObject { native_context: NativeContext; }
|
@ -272,6 +272,7 @@ VisitorId Map::GetVisitorId(Map map) {
|
||||
case JS_SET_PROTOTYPE_TYPE:
|
||||
case JS_SET_TYPE:
|
||||
case JS_SET_VALUE_ITERATOR_TYPE:
|
||||
case JS_SHADOW_REALM_TYPE:
|
||||
case JS_STRING_ITERATOR_PROTOTYPE_TYPE:
|
||||
case JS_STRING_ITERATOR_TYPE:
|
||||
case JS_TEMPORAL_CALENDAR_TYPE:
|
||||
|
@ -158,6 +158,7 @@ class ZoneForwardList;
|
||||
V(JSRegExpStringIterator) \
|
||||
V(JSSet) \
|
||||
V(JSSetIterator) \
|
||||
V(JSShadowRealm) \
|
||||
V(JSSpecialObject) \
|
||||
V(JSStringIterator) \
|
||||
V(JSTemporalCalendar) \
|
||||
|
@ -1153,6 +1153,7 @@ auto BodyDescriptorApply(InstanceType type, Args&&... args) {
|
||||
case JS_SET_TYPE:
|
||||
case JS_SET_VALUE_ITERATOR_TYPE:
|
||||
case JS_SPECIAL_API_OBJECT_TYPE:
|
||||
case JS_SHADOW_REALM_TYPE:
|
||||
case JS_STRING_ITERATOR_PROTOTYPE_TYPE:
|
||||
case JS_STRING_ITERATOR_TYPE:
|
||||
case JS_TEMPORAL_CALENDAR_TYPE:
|
||||
|
@ -64,6 +64,7 @@
|
||||
// - JSMessageObject
|
||||
// - JSRegExp
|
||||
// - JSSetIterator
|
||||
// - JSShadowRealm
|
||||
// - JSStringIterator
|
||||
// - JSTemporalCalendar
|
||||
// - JSTemporalDuration
|
||||
|
@ -26600,6 +26600,90 @@ TEST(ImportMetaThrowHandled) {
|
||||
CHECK(!try_catch.HasCaught());
|
||||
}
|
||||
|
||||
v8::MaybeLocal<v8::Context> HostCreateShadowRealmContextCallbackStatic(
|
||||
v8::Local<v8::Context> initiator_context) {
|
||||
CHECK(!initiator_context.IsEmpty());
|
||||
return v8::Context::New(initiator_context->GetIsolate());
|
||||
}
|
||||
|
||||
TEST(CreateShadowRealmContextHostNotSupported) {
|
||||
i::FLAG_harmony_shadow_realm = true;
|
||||
LocalContext context;
|
||||
v8::Isolate* isolate = context->GetIsolate();
|
||||
v8::HandleScope scope(isolate);
|
||||
|
||||
Local<String> url = v8_str("www.google.com");
|
||||
Local<String> source_text = v8_str("new ShadowRealm()");
|
||||
v8::ScriptOrigin origin(isolate, url, 0, 0, false, -1, Local<v8::Value>(),
|
||||
false, false, false);
|
||||
v8::ScriptCompiler::Source source(source_text, origin);
|
||||
Local<Script> script =
|
||||
v8::ScriptCompiler::Compile(context.local(), &source).ToLocalChecked();
|
||||
|
||||
v8::TryCatch try_catch(isolate);
|
||||
v8::MaybeLocal<v8::Value> result = script->Run(context.local());
|
||||
CHECK(try_catch.HasCaught());
|
||||
CHECK(result.IsEmpty());
|
||||
CHECK(v8_str("Error: Not supported")
|
||||
->Equals(isolate->GetCurrentContext(),
|
||||
try_catch.Exception()
|
||||
->ToString(isolate->GetCurrentContext())
|
||||
.ToLocalChecked())
|
||||
.FromJust());
|
||||
}
|
||||
|
||||
TEST(CreateShadowRealmContext) {
|
||||
i::FLAG_harmony_shadow_realm = true;
|
||||
LocalContext context;
|
||||
v8::Isolate* isolate = context->GetIsolate();
|
||||
v8::HandleScope scope(isolate);
|
||||
|
||||
isolate->SetHostCreateShadowRealmContextCallback(
|
||||
HostCreateShadowRealmContextCallbackStatic);
|
||||
|
||||
Local<String> url = v8_str("www.google.com");
|
||||
Local<String> source_text = v8_str("new ShadowRealm()");
|
||||
v8::ScriptOrigin origin(isolate, url, 0, 0, false, -1, Local<v8::Value>(),
|
||||
false, false, false);
|
||||
v8::ScriptCompiler::Source source(source_text, origin);
|
||||
Local<Script> script =
|
||||
v8::ScriptCompiler::Compile(context.local(), &source).ToLocalChecked();
|
||||
|
||||
Local<Value> result = script->Run(context.local()).ToLocalChecked();
|
||||
CHECK(result->IsObject());
|
||||
i::Handle<i::Object> object = v8::Utils::OpenHandle(*result);
|
||||
CHECK(object->IsJSShadowRealm());
|
||||
}
|
||||
|
||||
v8::MaybeLocal<v8::Context> HostCreateShadowRealmContextCallbackThrow(
|
||||
v8::Local<v8::Context> initiator_context) {
|
||||
CcTest::isolate()->ThrowException(v8_num(42));
|
||||
return v8::MaybeLocal<v8::Context>();
|
||||
}
|
||||
|
||||
TEST(CreateShadowRealmContextThrow) {
|
||||
i::FLAG_harmony_shadow_realm = true;
|
||||
LocalContext context;
|
||||
v8::Isolate* isolate = context->GetIsolate();
|
||||
v8::HandleScope scope(isolate);
|
||||
|
||||
isolate->SetHostCreateShadowRealmContextCallback(
|
||||
HostCreateShadowRealmContextCallbackThrow);
|
||||
|
||||
Local<String> url = v8_str("www.google.com");
|
||||
Local<String> source_text = v8_str("new ShadowRealm()");
|
||||
v8::ScriptOrigin origin(isolate, url, 0, 0, false, -1, Local<v8::Value>(),
|
||||
false, false, false);
|
||||
v8::ScriptCompiler::Source source(source_text, origin);
|
||||
Local<Script> script =
|
||||
v8::ScriptCompiler::Compile(context.local(), &source).ToLocalChecked();
|
||||
|
||||
v8::TryCatch try_catch(isolate);
|
||||
CHECK(script->Run(context.local()).IsEmpty());
|
||||
CHECK(try_catch.HasCaught());
|
||||
CHECK(try_catch.Exception()->StrictEquals(v8_num(42)));
|
||||
}
|
||||
|
||||
TEST(GetModuleNamespace) {
|
||||
LocalContext context;
|
||||
v8::Isolate* isolate = context->GetIsolate();
|
||||
|
@ -2673,24 +2673,12 @@
|
||||
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=11989
|
||||
'built-ins/ShadowRealm/constructor': [FAIL],
|
||||
'built-ins/ShadowRealm/descriptor': [FAIL],
|
||||
'built-ins/ShadowRealm/extensibility': [FAIL],
|
||||
'built-ins/ShadowRealm/instance': [FAIL],
|
||||
'built-ins/ShadowRealm/instance-extensibility': [FAIL],
|
||||
'built-ins/ShadowRealm/length': [FAIL],
|
||||
'built-ins/ShadowRealm/name': [FAIL],
|
||||
'built-ins/ShadowRealm/proto': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/descriptor': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/errors-from-the-other-realm-is-wrapped-into-a-typeerror': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/globalthis-available-properties': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/globalthis-config-only-properties': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/globalthis-orginary-object': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/length': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/name': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/no-conditional-strict-mode': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/not-constructor': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/proto': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/returns-primitive-values': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/returns-proxy-callable-object': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/returns-symbol-values': [FAIL],
|
||||
@ -2717,20 +2705,13 @@
|
||||
'built-ins/ShadowRealm/prototype/evaluate/wrapped-function-throws-typeerror-on-non-primitive-arguments': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/wrapped-function-throws-typeerror-on-non-primitive-returns': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/evaluate/nested-realms': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/importValue/descriptor': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/importValue/exportName-tostring': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/importValue/import-value': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/importValue/length': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/importValue/name': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/importValue/not-constructor': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/importValue/proto': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/importValue/specifier-tostring': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/importValue/throws-if-import-value-does-not-exist': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/importValue/throws-typeerror-import-syntax-error': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/importValue/throws-typeerror-import-throws': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/importValue/validates-realm-object': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/proto': [FAIL],
|
||||
'built-ins/ShadowRealm/prototype/Symbol.toStringTag': [FAIL],
|
||||
|
||||
# https://bugs.chromium.org/p/v8/issues/detail?id=12085
|
||||
'language/statements/class/subclass/derived-class-return-override-catch-finally': [FAIL],
|
||||
|
@ -61,6 +61,7 @@ FEATURE_FLAGS = {
|
||||
'resizable-arraybuffer': '--harmony-rab-gsab',
|
||||
'Temporal': '--harmony-temporal',
|
||||
'array-find-from-last': '--harmony_array_find_last',
|
||||
'ShadowRealm': '--harmony-shadow-realm',
|
||||
}
|
||||
|
||||
SKIPPED_FEATURES = set([])
|
||||
|
@ -240,27 +240,28 @@ INSTANCE_TYPES = {
|
||||
2121: "JS_SEGMENT_ITERATOR_TYPE",
|
||||
2122: "JS_SEGMENTER_TYPE",
|
||||
2123: "JS_SEGMENTS_TYPE",
|
||||
2124: "JS_STRING_ITERATOR_TYPE",
|
||||
2125: "JS_TEMPORAL_CALENDAR_TYPE",
|
||||
2126: "JS_TEMPORAL_DURATION_TYPE",
|
||||
2127: "JS_TEMPORAL_INSTANT_TYPE",
|
||||
2128: "JS_TEMPORAL_PLAIN_DATE_TYPE",
|
||||
2129: "JS_TEMPORAL_PLAIN_DATE_TIME_TYPE",
|
||||
2130: "JS_TEMPORAL_PLAIN_MONTH_DAY_TYPE",
|
||||
2131: "JS_TEMPORAL_PLAIN_TIME_TYPE",
|
||||
2132: "JS_TEMPORAL_PLAIN_YEAR_MONTH_TYPE",
|
||||
2133: "JS_TEMPORAL_TIME_ZONE_TYPE",
|
||||
2134: "JS_TEMPORAL_ZONED_DATE_TIME_TYPE",
|
||||
2135: "JS_V8_BREAK_ITERATOR_TYPE",
|
||||
2136: "JS_WEAK_REF_TYPE",
|
||||
2137: "WASM_GLOBAL_OBJECT_TYPE",
|
||||
2138: "WASM_INSTANCE_OBJECT_TYPE",
|
||||
2139: "WASM_MEMORY_OBJECT_TYPE",
|
||||
2140: "WASM_MODULE_OBJECT_TYPE",
|
||||
2141: "WASM_SUSPENDER_OBJECT_TYPE",
|
||||
2142: "WASM_TABLE_OBJECT_TYPE",
|
||||
2143: "WASM_TAG_OBJECT_TYPE",
|
||||
2144: "WASM_VALUE_OBJECT_TYPE",
|
||||
2124: "JS_SHADOW_REALM_TYPE",
|
||||
2125: "JS_STRING_ITERATOR_TYPE",
|
||||
2126: "JS_TEMPORAL_CALENDAR_TYPE",
|
||||
2127: "JS_TEMPORAL_DURATION_TYPE",
|
||||
2128: "JS_TEMPORAL_INSTANT_TYPE",
|
||||
2129: "JS_TEMPORAL_PLAIN_DATE_TYPE",
|
||||
2130: "JS_TEMPORAL_PLAIN_DATE_TIME_TYPE",
|
||||
2131: "JS_TEMPORAL_PLAIN_MONTH_DAY_TYPE",
|
||||
2132: "JS_TEMPORAL_PLAIN_TIME_TYPE",
|
||||
2133: "JS_TEMPORAL_PLAIN_YEAR_MONTH_TYPE",
|
||||
2134: "JS_TEMPORAL_TIME_ZONE_TYPE",
|
||||
2135: "JS_TEMPORAL_ZONED_DATE_TIME_TYPE",
|
||||
2136: "JS_V8_BREAK_ITERATOR_TYPE",
|
||||
2137: "JS_WEAK_REF_TYPE",
|
||||
2138: "WASM_GLOBAL_OBJECT_TYPE",
|
||||
2139: "WASM_INSTANCE_OBJECT_TYPE",
|
||||
2140: "WASM_MEMORY_OBJECT_TYPE",
|
||||
2141: "WASM_MODULE_OBJECT_TYPE",
|
||||
2142: "WASM_SUSPENDER_OBJECT_TYPE",
|
||||
2143: "WASM_TABLE_OBJECT_TYPE",
|
||||
2144: "WASM_TAG_OBJECT_TYPE",
|
||||
2145: "WASM_VALUE_OBJECT_TYPE",
|
||||
}
|
||||
|
||||
# List of known V8 maps.
|
||||
@ -368,76 +369,76 @@ KNOWN_MAPS = {
|
||||
("read_only_space", 0x03399): (131, "BasicBlockCountersMarkerMap"),
|
||||
("read_only_space", 0x033dd): (147, "ArrayBoilerplateDescriptionMap"),
|
||||
("read_only_space", 0x034dd): (161, "InterceptorInfoMap"),
|
||||
("read_only_space", 0x05de5): (132, "PromiseFulfillReactionJobTaskMap"),
|
||||
("read_only_space", 0x05e0d): (133, "PromiseRejectReactionJobTaskMap"),
|
||||
("read_only_space", 0x05e35): (134, "CallableTaskMap"),
|
||||
("read_only_space", 0x05e5d): (135, "CallbackTaskMap"),
|
||||
("read_only_space", 0x05e85): (136, "PromiseResolveThenableJobTaskMap"),
|
||||
("read_only_space", 0x05ead): (139, "FunctionTemplateInfoMap"),
|
||||
("read_only_space", 0x05ed5): (140, "ObjectTemplateInfoMap"),
|
||||
("read_only_space", 0x05efd): (141, "AccessCheckInfoMap"),
|
||||
("read_only_space", 0x05f25): (142, "AccessorInfoMap"),
|
||||
("read_only_space", 0x05f4d): (143, "AccessorPairMap"),
|
||||
("read_only_space", 0x05f75): (144, "AliasedArgumentsEntryMap"),
|
||||
("read_only_space", 0x05f9d): (145, "AllocationMementoMap"),
|
||||
("read_only_space", 0x05fc5): (148, "AsmWasmDataMap"),
|
||||
("read_only_space", 0x05fed): (149, "AsyncGeneratorRequestMap"),
|
||||
("read_only_space", 0x06015): (150, "BreakPointMap"),
|
||||
("read_only_space", 0x0603d): (151, "BreakPointInfoMap"),
|
||||
("read_only_space", 0x06065): (152, "CachedTemplateObjectMap"),
|
||||
("read_only_space", 0x0608d): (154, "CallSiteInfoMap"),
|
||||
("read_only_space", 0x060b5): (155, "ClassPositionsMap"),
|
||||
("read_only_space", 0x060dd): (156, "DebugInfoMap"),
|
||||
("read_only_space", 0x06105): (158, "ErrorStackDataMap"),
|
||||
("read_only_space", 0x0612d): (160, "FunctionTemplateRareDataMap"),
|
||||
("read_only_space", 0x06155): (162, "InterpreterDataMap"),
|
||||
("read_only_space", 0x0617d): (163, "ModuleRequestMap"),
|
||||
("read_only_space", 0x061a5): (164, "PromiseCapabilityMap"),
|
||||
("read_only_space", 0x061cd): (165, "PromiseReactionMap"),
|
||||
("read_only_space", 0x061f5): (166, "PropertyDescriptorObjectMap"),
|
||||
("read_only_space", 0x0621d): (167, "PrototypeInfoMap"),
|
||||
("read_only_space", 0x06245): (168, "RegExpBoilerplateDescriptionMap"),
|
||||
("read_only_space", 0x0626d): (169, "ScriptMap"),
|
||||
("read_only_space", 0x06295): (170, "ScriptOrModuleMap"),
|
||||
("read_only_space", 0x062bd): (171, "SourceTextModuleInfoEntryMap"),
|
||||
("read_only_space", 0x062e5): (172, "StackFrameInfoMap"),
|
||||
("read_only_space", 0x0630d): (173, "TemplateObjectDescriptionMap"),
|
||||
("read_only_space", 0x06335): (174, "Tuple2Map"),
|
||||
("read_only_space", 0x0635d): (175, "WasmContinuationObjectMap"),
|
||||
("read_only_space", 0x06385): (176, "WasmExceptionTagMap"),
|
||||
("read_only_space", 0x063ad): (177, "WasmIndirectFunctionTableMap"),
|
||||
("read_only_space", 0x063d5): (196, "SloppyArgumentsElementsMap"),
|
||||
("read_only_space", 0x063fd): (231, "DescriptorArrayMap"),
|
||||
("read_only_space", 0x06425): (219, "UncompiledDataWithoutPreparseDataMap"),
|
||||
("read_only_space", 0x0644d): (217, "UncompiledDataWithPreparseDataMap"),
|
||||
("read_only_space", 0x06475): (220, "UncompiledDataWithoutPreparseDataWithJobMap"),
|
||||
("read_only_space", 0x0649d): (218, "UncompiledDataWithPreparseDataAndJobMap"),
|
||||
("read_only_space", 0x064c5): (250, "OnHeapBasicBlockProfilerDataMap"),
|
||||
("read_only_space", 0x064ed): (197, "TurbofanBitsetTypeMap"),
|
||||
("read_only_space", 0x06515): (201, "TurbofanUnionTypeMap"),
|
||||
("read_only_space", 0x0653d): (200, "TurbofanRangeTypeMap"),
|
||||
("read_only_space", 0x06565): (198, "TurbofanHeapConstantTypeMap"),
|
||||
("read_only_space", 0x0658d): (199, "TurbofanOtherNumberConstantTypeMap"),
|
||||
("read_only_space", 0x065b5): (246, "InternalClassMap"),
|
||||
("read_only_space", 0x065dd): (257, "SmiPairMap"),
|
||||
("read_only_space", 0x06605): (256, "SmiBoxMap"),
|
||||
("read_only_space", 0x0662d): (225, "ExportedSubClassBaseMap"),
|
||||
("read_only_space", 0x06655): (226, "ExportedSubClassMap"),
|
||||
("read_only_space", 0x0667d): (202, "AbstractInternalClassSubclass1Map"),
|
||||
("read_only_space", 0x066a5): (203, "AbstractInternalClassSubclass2Map"),
|
||||
("read_only_space", 0x066cd): (195, "InternalClassWithSmiElementsMap"),
|
||||
("read_only_space", 0x066f5): (247, "InternalClassWithStructElementsMap"),
|
||||
("read_only_space", 0x0671d): (227, "ExportedSubClass2Map"),
|
||||
("read_only_space", 0x06745): (258, "SortStateMap"),
|
||||
("read_only_space", 0x0676d): (146, "AllocationSiteWithWeakNextMap"),
|
||||
("read_only_space", 0x06795): (146, "AllocationSiteWithoutWeakNextMap"),
|
||||
("read_only_space", 0x067bd): (137, "LoadHandler1Map"),
|
||||
("read_only_space", 0x067e5): (137, "LoadHandler2Map"),
|
||||
("read_only_space", 0x0680d): (137, "LoadHandler3Map"),
|
||||
("read_only_space", 0x06835): (138, "StoreHandler0Map"),
|
||||
("read_only_space", 0x0685d): (138, "StoreHandler1Map"),
|
||||
("read_only_space", 0x06885): (138, "StoreHandler2Map"),
|
||||
("read_only_space", 0x068ad): (138, "StoreHandler3Map"),
|
||||
("read_only_space", 0x05dfd): (132, "PromiseFulfillReactionJobTaskMap"),
|
||||
("read_only_space", 0x05e25): (133, "PromiseRejectReactionJobTaskMap"),
|
||||
("read_only_space", 0x05e4d): (134, "CallableTaskMap"),
|
||||
("read_only_space", 0x05e75): (135, "CallbackTaskMap"),
|
||||
("read_only_space", 0x05e9d): (136, "PromiseResolveThenableJobTaskMap"),
|
||||
("read_only_space", 0x05ec5): (139, "FunctionTemplateInfoMap"),
|
||||
("read_only_space", 0x05eed): (140, "ObjectTemplateInfoMap"),
|
||||
("read_only_space", 0x05f15): (141, "AccessCheckInfoMap"),
|
||||
("read_only_space", 0x05f3d): (142, "AccessorInfoMap"),
|
||||
("read_only_space", 0x05f65): (143, "AccessorPairMap"),
|
||||
("read_only_space", 0x05f8d): (144, "AliasedArgumentsEntryMap"),
|
||||
("read_only_space", 0x05fb5): (145, "AllocationMementoMap"),
|
||||
("read_only_space", 0x05fdd): (148, "AsmWasmDataMap"),
|
||||
("read_only_space", 0x06005): (149, "AsyncGeneratorRequestMap"),
|
||||
("read_only_space", 0x0602d): (150, "BreakPointMap"),
|
||||
("read_only_space", 0x06055): (151, "BreakPointInfoMap"),
|
||||
("read_only_space", 0x0607d): (152, "CachedTemplateObjectMap"),
|
||||
("read_only_space", 0x060a5): (154, "CallSiteInfoMap"),
|
||||
("read_only_space", 0x060cd): (155, "ClassPositionsMap"),
|
||||
("read_only_space", 0x060f5): (156, "DebugInfoMap"),
|
||||
("read_only_space", 0x0611d): (158, "ErrorStackDataMap"),
|
||||
("read_only_space", 0x06145): (160, "FunctionTemplateRareDataMap"),
|
||||
("read_only_space", 0x0616d): (162, "InterpreterDataMap"),
|
||||
("read_only_space", 0x06195): (163, "ModuleRequestMap"),
|
||||
("read_only_space", 0x061bd): (164, "PromiseCapabilityMap"),
|
||||
("read_only_space", 0x061e5): (165, "PromiseReactionMap"),
|
||||
("read_only_space", 0x0620d): (166, "PropertyDescriptorObjectMap"),
|
||||
("read_only_space", 0x06235): (167, "PrototypeInfoMap"),
|
||||
("read_only_space", 0x0625d): (168, "RegExpBoilerplateDescriptionMap"),
|
||||
("read_only_space", 0x06285): (169, "ScriptMap"),
|
||||
("read_only_space", 0x062ad): (170, "ScriptOrModuleMap"),
|
||||
("read_only_space", 0x062d5): (171, "SourceTextModuleInfoEntryMap"),
|
||||
("read_only_space", 0x062fd): (172, "StackFrameInfoMap"),
|
||||
("read_only_space", 0x06325): (173, "TemplateObjectDescriptionMap"),
|
||||
("read_only_space", 0x0634d): (174, "Tuple2Map"),
|
||||
("read_only_space", 0x06375): (175, "WasmContinuationObjectMap"),
|
||||
("read_only_space", 0x0639d): (176, "WasmExceptionTagMap"),
|
||||
("read_only_space", 0x063c5): (177, "WasmIndirectFunctionTableMap"),
|
||||
("read_only_space", 0x063ed): (196, "SloppyArgumentsElementsMap"),
|
||||
("read_only_space", 0x06415): (231, "DescriptorArrayMap"),
|
||||
("read_only_space", 0x0643d): (219, "UncompiledDataWithoutPreparseDataMap"),
|
||||
("read_only_space", 0x06465): (217, "UncompiledDataWithPreparseDataMap"),
|
||||
("read_only_space", 0x0648d): (220, "UncompiledDataWithoutPreparseDataWithJobMap"),
|
||||
("read_only_space", 0x064b5): (218, "UncompiledDataWithPreparseDataAndJobMap"),
|
||||
("read_only_space", 0x064dd): (250, "OnHeapBasicBlockProfilerDataMap"),
|
||||
("read_only_space", 0x06505): (197, "TurbofanBitsetTypeMap"),
|
||||
("read_only_space", 0x0652d): (201, "TurbofanUnionTypeMap"),
|
||||
("read_only_space", 0x06555): (200, "TurbofanRangeTypeMap"),
|
||||
("read_only_space", 0x0657d): (198, "TurbofanHeapConstantTypeMap"),
|
||||
("read_only_space", 0x065a5): (199, "TurbofanOtherNumberConstantTypeMap"),
|
||||
("read_only_space", 0x065cd): (246, "InternalClassMap"),
|
||||
("read_only_space", 0x065f5): (257, "SmiPairMap"),
|
||||
("read_only_space", 0x0661d): (256, "SmiBoxMap"),
|
||||
("read_only_space", 0x06645): (225, "ExportedSubClassBaseMap"),
|
||||
("read_only_space", 0x0666d): (226, "ExportedSubClassMap"),
|
||||
("read_only_space", 0x06695): (202, "AbstractInternalClassSubclass1Map"),
|
||||
("read_only_space", 0x066bd): (203, "AbstractInternalClassSubclass2Map"),
|
||||
("read_only_space", 0x066e5): (195, "InternalClassWithSmiElementsMap"),
|
||||
("read_only_space", 0x0670d): (247, "InternalClassWithStructElementsMap"),
|
||||
("read_only_space", 0x06735): (227, "ExportedSubClass2Map"),
|
||||
("read_only_space", 0x0675d): (258, "SortStateMap"),
|
||||
("read_only_space", 0x06785): (146, "AllocationSiteWithWeakNextMap"),
|
||||
("read_only_space", 0x067ad): (146, "AllocationSiteWithoutWeakNextMap"),
|
||||
("read_only_space", 0x067d5): (137, "LoadHandler1Map"),
|
||||
("read_only_space", 0x067fd): (137, "LoadHandler2Map"),
|
||||
("read_only_space", 0x06825): (137, "LoadHandler3Map"),
|
||||
("read_only_space", 0x0684d): (138, "StoreHandler0Map"),
|
||||
("read_only_space", 0x06875): (138, "StoreHandler1Map"),
|
||||
("read_only_space", 0x0689d): (138, "StoreHandler2Map"),
|
||||
("read_only_space", 0x068c5): (138, "StoreHandler3Map"),
|
||||
("map_space", 0x02131): (1057, "ExternalMap"),
|
||||
("map_space", 0x02159): (2114, "JSMessageObjectMap"),
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user