Index: src/ia32/stub-cache-ia32.cc |
diff --git a/src/ia32/stub-cache-ia32.cc b/src/ia32/stub-cache-ia32.cc |
index 051a8177eac0f10bf168ed6324f50c5947766df4..c27a60fd06573ae7fc91c30fd343886f3772d453 100644 |
--- a/src/ia32/stub-cache-ia32.cc |
+++ b/src/ia32/stub-cache-ia32.cc |
@@ -878,10 +878,13 @@ Register StubCompiler::CheckPrototypes(Handle<JSObject> object, |
if (in_new_space) { |
// Save the map in scratch1 for later. |
__ mov(scratch1, FieldOperand(reg, HeapObject::kMapOffset)); |
+ __ cmp(scratch1, Immediate(current_map)); |
+ } else { |
+ __ cmp(FieldOperand(reg, HeapObject::kMapOffset), |
+ Immediate(current_map)); |
} |
- __ CheckMap(reg, current_map, miss, DONT_DO_SMI_CHECK, |
- ALLOW_ELEMENT_TRANSITION_MAPS); |
- |
+ // Branch on the result of the map check. |
+ __ j(not_equal, miss); |
// Check access rights to the global object. This has to happen after |
// the map check so that we know that the object is actually a global |
// object. |
@@ -913,8 +916,9 @@ Register StubCompiler::CheckPrototypes(Handle<JSObject> object, |
LOG(isolate(), IntEvent("check-maps-depth", depth + 1)); |
// Check the holder map. |
- __ CheckMap(reg, Handle<Map>(holder->map()), |
- miss, DONT_DO_SMI_CHECK, ALLOW_ELEMENT_TRANSITION_MAPS); |
+ __ cmp(FieldOperand(reg, HeapObject::kMapOffset), |
+ Immediate(Handle<Map>(holder->map()))); |
+ __ j(not_equal, miss); |
// Perform security check for access to the global object. |
ASSERT(holder->IsJSGlobalProxy() || !holder->IsAccessCheckNeeded()); |