Index: src/mips/stub-cache-mips.cc |
diff --git a/src/mips/stub-cache-mips.cc b/src/mips/stub-cache-mips.cc |
index 97a58c763b79ab5df446e2db33ff42f4132b3ac9..230b52aa6d83dc4de0ffd5c5e460097627cbbb95 100644 |
--- a/src/mips/stub-cache-mips.cc |
+++ b/src/mips/stub-cache-mips.cc |
@@ -1,4 +1,4 @@ |
-// Copyright 2011 the V8 project authors. All rights reserved. |
+// Copyright 2012 the V8 project authors. All rights reserved. |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
@@ -377,13 +377,9 @@ void StubCompiler::GenerateStoreField(MacroAssembler* masm, |
Label* miss_label) { |
// a0 : value. |
Label exit; |
- |
- // Check that the receiver isn't a smi. |
- __ JumpIfSmi(receiver_reg, miss_label, scratch); |
- |
- // Check that the map of the receiver hasn't changed. |
- __ lw(scratch, FieldMemOperand(receiver_reg, HeapObject::kMapOffset)); |
- __ Branch(miss_label, ne, scratch, Operand(Handle<Map>(object->map()))); |
+ // Check that the map of the object hasn't changed. |
+ __ CheckMap(receiver_reg, scratch, Handle<Map>(object->map()), miss_label, |
+ DO_SMI_CHECK, ALLOW_ELEMENT_TRANSITION_MAPS); |
// Perform global security token check if needed. |
if (object->IsJSGlobalProxy()) { |
@@ -1037,9 +1033,8 @@ Register StubCompiler::CheckPrototypes(Handle<JSObject> object, |
__ lw(reg, FieldMemOperand(scratch1, Map::kPrototypeOffset)); |
} else { |
Handle<Map> current_map(current->map()); |
- __ lw(scratch1, FieldMemOperand(reg, HeapObject::kMapOffset)); |
- // Branch on the result of the map check. |
- __ Branch(miss, ne, scratch1, Operand(current_map)); |
+ __ CheckMap(reg, scratch1, current_map, miss, DONT_DO_SMI_CHECK, |
+ ALLOW_ELEMENT_TRANSITION_MAPS); |
// 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. |
@@ -1070,8 +1065,8 @@ Register StubCompiler::CheckPrototypes(Handle<JSObject> object, |
LOG(masm()->isolate(), IntEvent("check-maps-depth", depth + 1)); |
// Check the holder map. |
- __ lw(scratch1, FieldMemOperand(reg, HeapObject::kMapOffset)); |
- __ Branch(miss, ne, scratch1, Operand(Handle<Map>(current->map()))); |
+ __ CheckMap(reg, scratch1, Handle<Map>(current->map()), miss, |
+ DONT_DO_SMI_CHECK, ALLOW_ELEMENT_TRANSITION_MAPS); |
// Perform security check for access to the global object. |
ASSERT(holder->IsJSGlobalProxy() || !holder->IsAccessCheckNeeded()); |
@@ -2493,12 +2488,9 @@ Handle<Code> StoreStubCompiler::CompileStoreCallback( |
// ----------------------------------- |
Label miss; |
- // Check that the object isn't a smi. |
- __ JumpIfSmi(a1, &miss); |
- |
// Check that the map of the object hasn't changed. |
- __ lw(a3, FieldMemOperand(a1, HeapObject::kMapOffset)); |
- __ Branch(&miss, ne, a3, Operand(Handle<Map>(object->map()))); |
+ __ CheckMap(a1, a3, Handle<Map>(object->map()), &miss, |
+ DO_SMI_CHECK, ALLOW_ELEMENT_TRANSITION_MAPS); |
// Perform global security token check if needed. |
if (object->IsJSGlobalProxy()) { |
@@ -2540,12 +2532,9 @@ Handle<Code> StoreStubCompiler::CompileStoreInterceptor( |
// ----------------------------------- |
Label miss; |
- // Check that the object isn't a smi. |
- __ JumpIfSmi(a1, &miss); |
- |
// Check that the map of the object hasn't changed. |
- __ lw(a3, FieldMemOperand(a1, HeapObject::kMapOffset)); |
- __ Branch(&miss, ne, a3, Operand(Handle<Map>(receiver->map()))); |
+ __ CheckMap(a1, a3, Handle<Map>(receiver->map()), &miss, |
+ DO_SMI_CHECK, ALLOW_ELEMENT_TRANSITION_MAPS); |
// Perform global security token check if needed. |
if (receiver->IsJSGlobalProxy()) { |