| Index: src/arm/stub-cache-arm.cc
|
| ===================================================================
|
| --- src/arm/stub-cache-arm.cc (revision 10578)
|
| +++ src/arm/stub-cache-arm.cc (working copy)
|
| @@ -377,7 +377,8 @@
|
| Label exit;
|
|
|
| // Check that the map of the object hasn't changed.
|
| - __ CheckMap(receiver_reg, scratch, Handle<Map>(object->map()), miss_label,
|
| + __ CheckMap(receiver_reg, scratch, scratch,
|
| + Handle<Map>(object->map()), miss_label,
|
| DO_SMI_CHECK, ALLOW_ELEMENT_TRANSITION_MAPS);
|
|
|
| // Perform global security token check if needed.
|
| @@ -973,7 +974,8 @@
|
| Register scratch2,
|
| Handle<String> name,
|
| int save_at_depth,
|
| - Label* miss) {
|
| + Label* miss,
|
| + bool fast_map_check) {
|
| // Make sure there's no overlap between holder and object registers.
|
| ASSERT(!scratch1.is(object_reg) && !scratch1.is(holder_reg));
|
| ASSERT(!scratch2.is(object_reg) && !scratch2.is(holder_reg)
|
| @@ -1015,7 +1017,12 @@
|
| __ ldr(reg, FieldMemOperand(scratch1, Map::kPrototypeOffset));
|
| } else {
|
| Handle<Map> current_map(current->map());
|
| - __ CheckMap(reg, scratch1, current_map, miss, DONT_DO_SMI_CHECK,
|
| + __ CheckMap(reg,
|
| + scratch1,
|
| + fast_map_check ? scratch2 : no_reg,
|
| + current_map,
|
| + miss,
|
| + DONT_DO_SMI_CHECK,
|
| ALLOW_ELEMENT_TRANSITION_MAPS);
|
|
|
| // Check access rights to the global object. This has to happen after
|
| @@ -1048,7 +1055,7 @@
|
| LOG(masm()->isolate(), IntEvent("check-maps-depth", depth + 1));
|
|
|
| // Check the holder map.
|
| - __ CheckMap(reg, scratch1, Handle<Map>(current->map()), miss,
|
| + __ CheckMap(reg, scratch1, scratch1, Handle<Map>(current->map()), miss,
|
| DONT_DO_SMI_CHECK, ALLOW_ELEMENT_TRANSITION_MAPS);
|
|
|
| // Perform security check for access to the global object.
|
| @@ -2471,7 +2478,7 @@
|
| Label miss;
|
|
|
| // Check that the map of the object hasn't changed.
|
| - __ CheckMap(r1, r3, Handle<Map>(object->map()), &miss,
|
| + __ CheckMap(r1, r3, r3, Handle<Map>(object->map()), &miss,
|
| DO_SMI_CHECK, ALLOW_ELEMENT_TRANSITION_MAPS);
|
|
|
| // Perform global security token check if needed.
|
| @@ -2515,7 +2522,7 @@
|
| Label miss;
|
|
|
| // Check that the map of the object hasn't changed.
|
| - __ CheckMap(r1, r3, Handle<Map>(receiver->map()), &miss,
|
| + __ CheckMap(r1, r3, r3, Handle<Map>(receiver->map()), &miss,
|
| DO_SMI_CHECK, ALLOW_ELEMENT_TRANSITION_MAPS);
|
|
|
| // Perform global security token check if needed.
|
|
|