Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index a4bcc7986b2accc4cd575ba4886e733a260b7fad..bf657a2254be64bd731ff861ab85d546758d91da 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -219,7 +219,7 @@ bool FunctionTemplateInfo::IsTemplateFor(Map* map) { |
// There is a constraint on the object; check. |
if (!map->IsJSObjectMap()) return false; |
// Fetch the constructor function of the object. |
- Object* cons_obj = map->constructor(); |
+ Object* cons_obj = map->GetConstructor(); |
if (!cons_obj->IsJSFunction()) return false; |
JSFunction* fun = JSFunction::cast(cons_obj); |
// Iterate through the chain of inheriting function templates to |
@@ -1208,7 +1208,7 @@ void JSObject::JSObjectShortPrint(StringStream* accumulator) { |
default: { |
Map* map_of_this = map(); |
Heap* heap = GetHeap(); |
- Object* constructor = map_of_this->constructor(); |
+ Object* constructor = map_of_this->GetConstructor(); |
bool printed = false; |
if (constructor->IsHeapObject() && |
!heap->Contains(HeapObject::cast(constructor))) { |
@@ -1671,8 +1671,9 @@ String* JSReceiver::class_name() { |
if (IsJSFunction() || IsJSFunctionProxy()) { |
return GetHeap()->Function_string(); |
} |
- if (map()->constructor()->IsJSFunction()) { |
- JSFunction* constructor = JSFunction::cast(map()->constructor()); |
+ Object* maybe_constructor = map()->GetConstructor(); |
+ if (maybe_constructor->IsJSFunction()) { |
+ JSFunction* constructor = JSFunction::cast(maybe_constructor); |
return String::cast(constructor->shared()->instance_class_name()); |
} |
// If the constructor is not present, return "Object". |
@@ -1681,8 +1682,9 @@ String* JSReceiver::class_name() { |
String* Map::constructor_name() { |
- if (constructor()->IsJSFunction()) { |
- JSFunction* constructor = JSFunction::cast(this->constructor()); |
+ Object* maybe_constructor = GetConstructor(); |
+ if (maybe_constructor->IsJSFunction()) { |
+ JSFunction* constructor = JSFunction::cast(maybe_constructor); |
String* name = String::cast(constructor->shared()->name()); |
if (name->length() > 0) return name; |
String* inferred_name = constructor->shared()->inferred_name(); |
@@ -1784,7 +1786,7 @@ void JSObject::AddSlowProperty(Handle<JSObject> object, |
Context* JSObject::GetCreationContext() { |
- Object* constructor = this->map()->constructor(); |
+ Object* constructor = this->map()->GetConstructor(); |
JSFunction* function; |
if (!constructor->IsJSFunction()) { |
// Functions have null as a constructor, |
@@ -5445,7 +5447,7 @@ bool JSObject::ReferencesObject(Object* obj) { |
DisallowHeapAllocation no_allocation; |
// Is the object the constructor for this object? |
- if (map_of_this->constructor() == obj) { |
+ if (map_of_this->GetConstructor() == obj) { |
return true; |
} |
@@ -5509,7 +5511,7 @@ bool JSObject::ReferencesObject(Object* obj) { |
Map* arguments_map = |
heap->isolate()->context()->native_context()->sloppy_arguments_map(); |
JSFunction* arguments_function = |
- JSFunction::cast(arguments_map->constructor()); |
+ JSFunction::cast(arguments_map->GetConstructor()); |
// Get the context and don't check if it is the native context. |
JSFunction* f = JSFunction::cast(this); |
@@ -5524,7 +5526,7 @@ bool JSObject::ReferencesObject(Object* obj) { |
if (context->get(i)->IsJSObject()) { |
JSObject* ctxobj = JSObject::cast(context->get(i)); |
// If it is an arguments array check the content. |
- if (ctxobj->map()->constructor() == arguments_function) { |
+ if (ctxobj->map()->GetConstructor() == arguments_function) { |
if (ctxobj->ReferencesObject(obj)) { |
return true; |
} |
@@ -6248,7 +6250,7 @@ MaybeHandle<FixedArray> JSReceiver::GetKeys(Handle<JSReceiver> object, |
Isolate* isolate = object->GetIsolate(); |
Handle<FixedArray> content = isolate->factory()->empty_fixed_array(); |
Handle<JSFunction> arguments_function( |
- JSFunction::cast(isolate->sloppy_arguments_map()->constructor())); |
+ JSFunction::cast(isolate->sloppy_arguments_map()->GetConstructor())); |
// Only collect keys if access is permitted. |
for (PrototypeIterator iter(isolate, object, |
@@ -6321,11 +6323,9 @@ MaybeHandle<FixedArray> JSReceiver::GetKeys(Handle<JSReceiver> object, |
// array or dictionary. So the fast inline test for whether to |
// use the cache says yes, so we should not create a cache. |
bool cache_enum_keys = |
- ((current->map()->constructor() != *arguments_function) && |
- !current->IsJSValue() && |
- !current->IsAccessCheckNeeded() && |
- !current->HasNamedInterceptor() && |
- !current->HasIndexedInterceptor()); |
+ ((current->map()->GetConstructor() != *arguments_function) && |
+ !current->IsJSValue() && !current->IsAccessCheckNeeded() && |
+ !current->HasNamedInterceptor() && !current->HasIndexedInterceptor()); |
// Compute the property keys and cache them if possible. |
ASSIGN_RETURN_ON_EXCEPTION( |
isolate, content, |
@@ -6841,7 +6841,7 @@ Handle<Map> Map::RawCopy(Handle<Map> map, int instance_size) { |
Handle<Map> result = map->GetIsolate()->factory()->NewMap( |
map->instance_type(), instance_size); |
result->SetPrototype(handle(map->prototype(), map->GetIsolate())); |
- result->set_constructor(map->constructor()); |
+ result->set_constructor_or_backpointer(map->GetConstructor()); |
result->set_bit_field(map->bit_field()); |
result->set_bit_field2(map->bit_field2()); |
int new_bit_field3 = map->bit_field3(); |
@@ -9555,7 +9555,7 @@ int Map::Hash() { |
// addresses. |
// Shift away the tag. |
- int hash = ObjectAddressForHashing(constructor()) >> 2; |
+ int hash = ObjectAddressForHashing(GetConstructor()) >> 2; |
// XOR-ing the prototype and constructor directly yields too many zero bits |
// when the two pointers are close (which is fairly common). |
@@ -9567,7 +9567,7 @@ int Map::Hash() { |
static bool CheckEquivalent(Map* first, Map* second) { |
- return first->constructor() == second->constructor() && |
+ return first->GetConstructor() == second->GetConstructor() && |
first->prototype() == second->prototype() && |
first->instance_type() == second->instance_type() && |
first->bit_field() == second->bit_field() && |
@@ -9929,8 +9929,9 @@ void JSObject::OptimizeAsPrototype(Handle<JSObject> object, |
Handle<Map> new_map = Map::Copy(handle(object->map()), "CopyAsPrototype"); |
JSObject::MigrateToMap(object, new_map); |
} |
- if (object->map()->constructor()->IsJSFunction()) { |
- JSFunction* constructor = JSFunction::cast(object->map()->constructor()); |
+ Object* maybe_constructor = object->map()->GetConstructor(); |
+ if (maybe_constructor->IsJSFunction()) { |
+ JSFunction* constructor = JSFunction::cast(maybe_constructor); |
// Replace the pointer to the exact constructor with the Object function |
// from the same context if undetectable from JS. This is to avoid keeping |
// memory alive unnecessarily. |
@@ -9939,7 +9940,7 @@ void JSObject::OptimizeAsPrototype(Handle<JSObject> object, |
object->GetIsolate()->heap()->Object_string()) { |
Context* context = constructor->context()->native_context(); |
JSFunction* object_function = context->object_function(); |
- object->map()->set_constructor(object_function); |
+ object->map()->SetConstructor(object_function); |
} |
} |
object->map()->set_is_prototype_map(true); |
@@ -10126,7 +10127,7 @@ void JSFunction::SetPrototype(Handle<JSFunction> function, |
Handle<Map> new_map = Map::Copy(handle(function->map()), "SetPrototype"); |
JSObject::MigrateToMap(function, new_map); |
- new_map->set_constructor(*value); |
+ new_map->SetConstructor(*value); |
new_map->set_non_instance_prototype(true); |
Isolate* isolate = new_map->GetIsolate(); |
construct_prototype = handle( |
@@ -10169,7 +10170,7 @@ void JSFunction::SetInitialMap(Handle<JSFunction> function, Handle<Map> map, |
map->SetPrototype(prototype, FAST_PROTOTYPE); |
} |
function->set_prototype_or_initial_map(*map); |
- map->set_constructor(*function); |
+ map->SetConstructor(*function); |
#if TRACE_MAPS |
if (FLAG_trace_maps) { |
PrintF("[TraceMaps: InitialMap map= %p SFI= %d_%s ]\n", |
@@ -13819,7 +13820,7 @@ void Dictionary<Derived, Shape, Key>::CopyValuesTo(FixedArray* elements) { |
InterceptorInfo* JSObject::GetNamedInterceptor() { |
DCHECK(map()->has_named_interceptor()); |
- JSFunction* constructor = JSFunction::cast(map()->constructor()); |
+ JSFunction* constructor = JSFunction::cast(map()->GetConstructor()); |
DCHECK(constructor->shared()->IsApiFunction()); |
Object* result = |
constructor->shared()->get_api_func_data()->named_property_handler(); |
@@ -13829,7 +13830,7 @@ InterceptorInfo* JSObject::GetNamedInterceptor() { |
InterceptorInfo* JSObject::GetIndexedInterceptor() { |
DCHECK(map()->has_indexed_interceptor()); |
- JSFunction* constructor = JSFunction::cast(map()->constructor()); |
+ JSFunction* constructor = JSFunction::cast(map()->GetConstructor()); |
DCHECK(constructor->shared()->IsApiFunction()); |
Object* result = |
constructor->shared()->get_api_func_data()->indexed_property_handler(); |