Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index ca10394f3279265f07842692a9eaefdb215b60ce..253405a7cd3a52b6c0a7d5637298e3bb02b03bf5 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -4458,27 +4458,17 @@ void NormalizedMapCache::Clear() { |
void JSObject::UpdateMapCodeCache(Handle<JSObject> object, |
Handle<Name> name, |
Handle<Code> code) { |
- Isolate* isolate = object->GetIsolate(); |
- CALL_HEAP_FUNCTION_VOID(isolate, |
- object->UpdateMapCodeCache(*name, *code)); |
-} |
- |
- |
-MaybeObject* JSObject::UpdateMapCodeCache(Name* name, Code* code) { |
- if (map()->is_shared()) { |
+ Handle<Map> map(object->map()); |
+ if (map->is_shared()) { |
// Fast case maps are never marked as shared. |
- ASSERT(!HasFastProperties()); |
+ ASSERT(!object->HasFastProperties()); |
// Replace the map with an identical copy that can be safely modified. |
- Object* obj; |
- { MaybeObject* maybe_obj = map()->CopyNormalized(KEEP_INOBJECT_PROPERTIES, |
- UNIQUE_NORMALIZED_MAP); |
- if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
- } |
- GetIsolate()->counters()->normalized_maps()->Increment(); |
- |
- set_map(Map::cast(obj)); |
+ map = Map::CopyNormalized(map, KEEP_INOBJECT_PROPERTIES, |
+ UNIQUE_NORMALIZED_MAP); |
+ object->GetIsolate()->counters()->normalized_maps()->Increment(); |
+ object->set_map(*map); |
} |
- return map()->UpdateCodeCache(name, code); |
+ Map::UpdateCodeCache(map, name, code); |
} |
@@ -6510,6 +6500,15 @@ MaybeObject* Map::RawCopy(int instance_size) { |
} |
+Handle<Map> Map::CopyNormalized(Handle<Map> map, |
+ PropertyNormalizationMode mode, |
+ NormalizedMapSharingMode sharing) { |
+ CALL_HEAP_FUNCTION(map->GetIsolate(), |
+ map->CopyNormalized(mode, sharing), |
+ Map); |
+} |
+ |
+ |
MaybeObject* Map::CopyNormalized(PropertyNormalizationMode mode, |
NormalizedMapSharingMode sharing) { |
int new_instance_size = instance_size(); |
@@ -9523,21 +9522,13 @@ bool JSFunction::IsInlineable() { |
void JSObject::OptimizeAsPrototype(Handle<JSObject> object) { |
- CALL_HEAP_FUNCTION_VOID(object->GetIsolate(), object->OptimizeAsPrototype()); |
-} |
- |
- |
-MaybeObject* JSObject::OptimizeAsPrototype() { |
- if (IsGlobalObject()) return this; |
+ if (object->IsGlobalObject()) return; |
// Make sure prototypes are fast objects and their maps have the bit set |
// so they remain fast. |
- if (!HasFastProperties()) { |
- MaybeObject* new_proto = TransformToFastProperties(0); |
- if (new_proto->IsFailure()) return new_proto; |
- ASSERT(new_proto == this); |
+ if (!object->HasFastProperties()) { |
+ TransformToFastProperties(object, 0); |
} |
- return this; |
} |