Index: src/runtime.cc |
diff --git a/src/runtime.cc b/src/runtime.cc |
index f672534791d9277fe0d4990a896428bdfca81ef7..54bb61a0bb93044481c2378ade39e34135bdce2a 100644 |
--- a/src/runtime.cc |
+++ b/src/runtime.cc |
@@ -1293,14 +1293,12 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DisableAccessChecks) { |
bool needs_access_checks = old_map->is_access_check_needed(); |
if (needs_access_checks) { |
// Copy map so it won't interfere constructor's initial map. |
- Object* new_map; |
- { MaybeObject* maybe_new_map = |
- old_map->CopyDropTransitions(DescriptorArray::MAY_BE_SHARED); |
- if (!maybe_new_map->ToObject(&new_map)) return maybe_new_map; |
- } |
+ Map* new_map; |
+ MaybeObject* maybe_new_map = old_map->Copy(DescriptorArray::MAY_BE_SHARED); |
+ if (!maybe_new_map->To(&new_map)) return maybe_new_map; |
- Map::cast(new_map)->set_is_access_check_needed(false); |
- object->set_map(Map::cast(new_map)); |
+ new_map->set_is_access_check_needed(false); |
+ object->set_map(new_map); |
} |
return isolate->heap()->ToBoolean(needs_access_checks); |
} |
@@ -1312,14 +1310,12 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_EnableAccessChecks) { |
Map* old_map = object->map(); |
if (!old_map->is_access_check_needed()) { |
// Copy map so it won't interfere constructor's initial map. |
- Object* new_map; |
- { MaybeObject* maybe_new_map = |
- old_map->CopyDropTransitions(DescriptorArray::MAY_BE_SHARED); |
- if (!maybe_new_map->ToObject(&new_map)) return maybe_new_map; |
- } |
+ Map* new_map; |
+ MaybeObject* maybe_new_map = old_map->Copy(DescriptorArray::MAY_BE_SHARED); |
+ if (!maybe_new_map->To(&new_map)) return maybe_new_map; |
- Map::cast(new_map)->set_is_access_check_needed(true); |
- object->set_map(Map::cast(new_map)); |
+ new_map->set_is_access_check_needed(true); |
+ object->set_map(new_map); |
} |
return isolate->heap()->undefined_value(); |
} |
@@ -2172,25 +2168,23 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionSetReadOnlyPrototype) { |
if (function->HasFastProperties()) { |
// Construct a new field descriptor with updated attributes. |
DescriptorArray* instance_desc = function->map()->instance_descriptors(); |
+ |
int index = instance_desc->Search(name); |
ASSERT(index != DescriptorArray::kNotFound); |
PropertyDetails details = instance_desc->GetDetails(index); |
+ |
CallbacksDescriptor new_desc(name, |
instance_desc->GetValue(index), |
static_cast<PropertyAttributes>(details.attributes() | READ_ONLY), |
details.index()); |
- // Construct a new field descriptors array containing the new descriptor. |
- DescriptorArray* new_descriptors; |
- { MaybeObject* maybe_descriptors = |
- instance_desc->CopyReplace(&new_desc, index); |
- if (!maybe_descriptors->To(&new_descriptors)) return maybe_descriptors; |
- } |
+ |
// Create a new map featuring the new field descriptors array. |
Map* new_map; |
- { MaybeObject* maybe_map = |
- function->map()->CopyReplaceDescriptors(new_descriptors); |
- if (!maybe_map->To(&new_map)) return maybe_map; |
- } |
+ MaybeObject* maybe_map = |
+ function->map()->CopyReplaceDescriptor( |
+ &new_desc, index, OMIT_TRANSITION); |
+ if (!maybe_map->To(&new_map)) return maybe_map; |
+ |
function->set_map(new_map); |
} else { // Dictionary properties. |
// Directly manipulate the property details. |
@@ -7829,8 +7823,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewArgumentsFast) { |
isolate->heap()->non_strict_arguments_elements_map()); |
Handle<Map> old_map(result->map()); |
- Handle<Map> new_map = |
- isolate->factory()->CopyMapDropTransitions(old_map); |
+ Handle<Map> new_map = isolate->factory()->CopyMap(old_map); |
new_map->set_elements_kind(NON_STRICT_ARGUMENTS_ELEMENTS); |
result->set_map(*new_map); |