Lines Matching refs:isolate
9 #include "src/execution/isolate-inl.h"
25 explicit InvokeScope(Isolate* isolate)
26 : isolate_(isolate), save_context_(isolate) {}
41 MaybeHandle<JSObject> InstantiateObject(Isolate* isolate,
47 Isolate* isolate, Handle<NativeContext> native_context,
52 Isolate* isolate, Handle<FunctionTemplateInfo> data,
54 return InstantiateFunction(isolate, isolate->native_context(), data,
59 Isolate* isolate, Handle<Object> data,
63 isolate, Handle<FunctionTemplateInfo>::cast(data), maybe_name);
65 return InstantiateObject(isolate, Handle<ObjectTemplateInfo>::cast(data),
72 MaybeHandle<Object> DefineAccessorProperty(Isolate* isolate,
85 isolate, getter,
86 InstantiateFunction(isolate,
93 isolate, setter,
94 InstantiateFunction(isolate,
99 isolate,
105 MaybeHandle<Object> DefineDataProperty(Isolate* isolate,
111 ASSIGN_RETURN_ON_EXCEPTION(isolate, value,
112 Instantiate(isolate, prop_data, name), Object);
114 PropertyKey key(isolate, name);
115 LookupIterator it(isolate, object, key, LookupIterator::OWN_SKIP_INTERCEPTOR);
122 isolate,
134 void DisableAccessChecks(Isolate* isolate, Handle<JSObject> object) {
135 Handle<Map> old_map(object->map(), isolate);
137 Handle<Map> new_map = Map::Copy(isolate, old_map, "DisableAccessChecks");
139 JSObject::MigrateToMap(isolate, Handle<JSObject>::cast(object), new_map);
142 void EnableAccessChecks(Isolate* isolate, Handle<JSObject> object) {
143 Handle<Map> old_map(object->map(), isolate);
145 Handle<Map> new_map = Map::Copy(isolate, old_map, "EnableAccessChecks");
148 JSObject::MigrateToMap(isolate, object, new_map);
153 AccessCheckDisableScope(Isolate* isolate, Handle<JSObject> obj)
154 : isolate_(isolate),
173 Object GetIntrinsic(Isolate* isolate, v8::Intrinsic intrinsic) {
174 Handle<Context> native_context = isolate->native_context();
187 MaybeHandle<JSObject> ConfigureInstance(Isolate* isolate, Handle<JSObject> obj,
189 RCS_SCOPE(isolate, RuntimeCallCounterId::kConfigureInstance);
190 HandleScope scope(isolate);
192 AccessCheckDisableScope access_check_scope(isolate, obj);
199 if (!props.IsUndefined(isolate)) {
202 info = info.GetParent(isolate);
209 isolate->factory()->NewFixedArray(max_number_of_properties);
211 for (Handle<TemplateInfoT> temp(*data, isolate); !temp->is_null();
212 temp = handle(temp->GetParent(isolate), isolate)) {
215 if (!maybe_properties.IsUndefined(isolate)) {
217 isolate, handle(maybe_properties, isolate), array,
224 Handle<AccessorInfo> accessor(AccessorInfo::cast(array->get(i)), isolate);
225 Handle<Name> name(Name::cast(accessor->name()), isolate);
233 if (maybe_property_list.IsUndefined(isolate)) return obj;
235 isolate);
240 auto name = handle(Name::cast(properties->get(i++)), isolate);
248 auto prop_data = handle(properties->get(i++), isolate);
250 isolate,
251 DefineDataProperty(isolate, obj, name, prop_data, attributes),
254 auto getter = handle(properties->get(i++), isolate);
255 auto setter = handle(properties->get(i++), isolate);
256 RETURN_ON_EXCEPTION(isolate,
257 DefineAccessorProperty(isolate, obj, name, getter,
270 auto prop_data = handle(GetIntrinsic(isolate, intrinsic), isolate);
273 isolate,
274 DefineDataProperty(isolate, obj, name, prop_data, attributes),
290 Isolate* isolate, Handle<NativeContext> native_context, int serial_number,
300 Handle<Object> object{fast_cache.get(serial_number), isolate};
301 if (object->IsTheHole(isolate)) return {};
308 InternalIndex entry = slow_cache.FindEntry(isolate, serial_number);
310 return handle(JSObject::cast(slow_cache.ValueAt(entry)), isolate);
316 void CacheTemplateInstantiation(Isolate* isolate,
325 serial_number = isolate->heap()->GetNextTemplateSerialNumber();
330 handle(native_context->fast_template_instantiations_cache(), isolate);
332 FixedArray::SetAndGrow(isolate, fast_cache, serial_number, object);
341 handle(native_context->slow_template_instantiations_cache(), isolate);
343 SimpleNumberDictionary::Set(isolate, cache, serial_number, object);
354 void UncacheTemplateInstantiation(Isolate* isolate,
364 DCHECK(!fast_cache.get(serial_number).IsUndefined(isolate));
371 handle(native_context->slow_template_instantiations_cache(), isolate);
372 InternalIndex entry = cache->FindEntry(isolate, serial_number);
374 cache = SimpleNumberDictionary::DeleteEntry(isolate, cache, entry);
380 bool IsSimpleInstantiation(Isolate* isolate, ObjectTemplateInfo info,
389 return fun.native_context() == isolate->raw_native_context();
392 MaybeHandle<JSObject> InstantiateObject(Isolate* isolate,
396 RCS_SCOPE(isolate, RuntimeCallCounterId::kInstantiateObject);
400 if (IsSimpleInstantiation(isolate, *info, *new_target)) {
410 if (ProbeInstantiationsCache(isolate, isolate->native_context(),
413 return isolate->factory()->CopyJSObject(result);
419 if (maybe_constructor_info.IsUndefined(isolate)) {
420 constructor = isolate->object_function();
423 HandleScope scope(isolate);
425 FunctionTemplateInfo::cast(maybe_constructor_info), isolate);
427 ASSIGN_RETURN_ON_EXCEPTION(isolate, tmp_constructor,
428 InstantiateFunction(isolate, cons_templ),
438 isolate, object,
445 isolate, result, ConfigureInstance(isolate, object, info), JSObject);
455 CacheTemplateInstantiation(isolate, isolate->native_context(), info,
457 result = isolate->factory()->CopyJSObject(result);
465 MaybeHandle<Object> GetInstancePrototype(Isolate* isolate,
468 HandleScope scope(isolate);
471 isolate, parent_instance,
473 isolate, Handle<FunctionTemplateInfo>::cast(function_template)),
478 isolate, instance_prototype,
479 JSObject::GetProperty(isolate, parent_instance,
480 isolate->factory()->prototype_string()),
487 Isolate* isolate, Handle<NativeContext> native_context,
489 RCS_SCOPE(isolate, RuntimeCallCounterId::kInstantiateFunction);
493 if (ProbeInstantiationsCache(isolate, native_context, data->serial_number(),
501 Handle<Object> prototype_templ(data->GetPrototypeTemplate(), isolate);
502 if (prototype_templ->IsUndefined(isolate)) {
504 data->GetPrototypeProviderTemplate(), isolate);
505 if (protoype_provider_templ->IsUndefined(isolate)) {
506 prototype = isolate->factory()->NewJSObject(isolate->object_function());
509 isolate, prototype,
510 GetInstancePrototype(isolate, protoype_provider_templ), JSFunction);
514 isolate, prototype,
515 InstantiateObject(isolate,
520 Handle<Object> parent(data->GetParentTemplate(), isolate);
521 if (!parent->IsUndefined(isolate)) {
523 ASSIGN_RETURN_ON_EXCEPTION(isolate, parent_prototype,
524 GetInstancePrototype(isolate, parent),
527 JSObject::ForceSetPrototype(isolate, Handle<JSObject>::cast(prototype),
533 data->GetNamedPropertyHandler().IsUndefined(isolate) &&
534 data->GetIndexedPropertyHandler().IsUndefined(isolate)) {
541 isolate, native_context, data, prototype, function_type, maybe_name);
544 CacheTemplateInstantiation(isolate, native_context, data,
547 MaybeHandle<JSObject> result = ConfigureInstance(isolate, function, data);
550 UncacheTemplateInstantiation(isolate, native_context, data,
558 void AddPropertyToPropertyList(Isolate* isolate, Handle<TemplateInfo> templ,
562 if (maybe_list.IsUndefined(isolate)) {
563 list = TemplateList::New(isolate, length);
565 list = handle(TemplateList::cast(maybe_list), isolate);
571 ? Handle<Object>::cast(isolate->factory()->undefined_value())
573 list = TemplateList::Add(isolate, list, value);
581 Isolate* isolate, Handle<NativeContext> native_context,
583 InvokeScope invoke_scope(isolate);
584 return ::v8::internal::InstantiateFunction(isolate, native_context, data,
590 Isolate* isolate = data->GetIsolate();
591 InvokeScope invoke_scope(isolate);
592 return ::v8::internal::InstantiateFunction(isolate, data, maybe_name);
596 Isolate* isolate, Handle<ObjectTemplateInfo> data,
598 InvokeScope invoke_scope(isolate);
599 return ::v8::internal::InstantiateObject(isolate, data, new_target, false);
604 Isolate* isolate = data->GetIsolate();
605 InvokeScope invoke_scope(isolate);
608 FunctionTemplateInfo::cast(data->constructor()), isolate);
609 Handle<Map> object_map = isolate->factory()->NewMap(
618 Handle<JSObject> object = isolate->factory()->NewJSObjectFromMap(object_map);
619 JSObject::ForceSetPrototype(isolate, object,
620 isolate->factory()->null_value());
625 void ApiNatives::AddDataProperty(Isolate* isolate, Handle<TemplateInfo> info,
630 auto details_handle = handle(details.AsSmi(), isolate);
632 AddPropertyToPropertyList(isolate, info, arraysize(data), data);
635 void ApiNatives::AddDataProperty(Isolate* isolate, Handle<TemplateInfo> info,
638 auto value = handle(Smi::FromInt(intrinsic), isolate);
639 auto intrinsic_marker = isolate->factory()->true_value();
642 auto details_handle = handle(details.AsSmi(), isolate);
644 AddPropertyToPropertyList(isolate, info, arraysize(data), data);
647 void ApiNatives::AddAccessorProperty(Isolate* isolate,
657 auto details_handle = handle(details.AsSmi(), isolate);
659 AddPropertyToPropertyList(isolate, info, arraysize(data), data);
662 void ApiNatives::AddNativeDataProperty(Isolate* isolate,
667 if (maybe_list.IsUndefined(isolate)) {
668 list = TemplateList::New(isolate, 1);
670 list = handle(TemplateList::cast(maybe_list), isolate);
672 list = TemplateList::Add(isolate, list, property);
677 Isolate* isolate, Handle<NativeContext> native_context,
680 RCS_SCOPE(isolate, RuntimeCallCounterId::kCreateApiFunction);
682 FunctionTemplateInfo::GetOrCreateSharedFunctionInfo(isolate, obj,
688 Factory::JSFunctionBuilder{isolate, shared, native_context}.Build();
703 result->set_map(*isolate->sloppy_function_with_readonly_prototype_map());
706 if (prototype->IsTheHole(isolate)) {
707 prototype = isolate->factory()->NewFunctionPrototype(result);
708 } else if (obj->GetPrototypeProviderTemplate().IsUndefined(isolate)) {
709 JSObject::AddProperty(isolate, Handle<JSObject>::cast(prototype),
710 isolate->factory()->constructor_string(), result,
716 if (!obj->GetInstanceTemplate().IsUndefined(isolate)) {
718 ObjectTemplateInfo::cast(obj->GetInstanceTemplate()), isolate);
728 Handle<Map> map = isolate->factory()->NewMap(type, instance_size,
738 CHECK(!obj->GetInstanceCallHandler().IsUndefined(isolate));
749 if (!obj->GetNamedPropertyHandler().IsUndefined(isolate)) {
753 if (!obj->GetIndexedPropertyHandler().IsUndefined(isolate)) {
758 if (!obj->GetInstanceCallHandler().IsUndefined(isolate)) {
765 JSFunction::SetInitialMap(isolate, result, map,