Index: src/mips/stub-cache-mips.cc |
diff --git a/src/mips/stub-cache-mips.cc b/src/mips/stub-cache-mips.cc |
index 9ca9cd4bfb97fd42c80cac0b4c2b9c2702abfcf1..eb0572759866d3a05b6f20bfd36d44e1b5581af9 100644 |
--- a/src/mips/stub-cache-mips.cc |
+++ b/src/mips/stub-cache-mips.cc |
@@ -469,15 +469,10 @@ void StubCompiler::GenerateStoreField(MacroAssembler* masm, |
void StubCompiler::GenerateLoadMiss(MacroAssembler* masm, Code::Kind kind) { |
ASSERT(kind == Code::LOAD_IC || kind == Code::KEYED_LOAD_IC); |
- Code* code = NULL; |
- if (kind == Code::LOAD_IC) { |
- code = masm->isolate()->builtins()->builtin(Builtins::kLoadIC_Miss); |
- } else { |
- code = masm->isolate()->builtins()->builtin(Builtins::kKeyedLoadIC_Miss); |
- } |
- |
- Handle<Code> ic(code); |
- __ Jump(ic, RelocInfo::CODE_TARGET); |
+ Handle<Code> code = (kind == Code::LOAD_IC) |
+ ? masm->isolate()->builtins()->LoadIC_Miss() |
+ : masm->isolate()->builtins()->KeyedLoadIC_Miss(); |
+ __ Jump(code, RelocInfo::CODE_TARGET); |
} |
@@ -1185,36 +1180,35 @@ Register StubCompiler::CheckPrototypes(JSObject* object, |
} |
-void StubCompiler::GenerateLoadField(JSObject* object, |
- JSObject* holder, |
+void StubCompiler::GenerateLoadField(Handle<JSObject> object, |
+ Handle<JSObject> holder, |
Register receiver, |
Register scratch1, |
Register scratch2, |
Register scratch3, |
int index, |
- String* name, |
+ Handle<String> name, |
Label* miss) { |
// Check that the receiver isn't a smi. |
__ And(scratch1, receiver, Operand(kSmiTagMask)); |
__ Branch(miss, eq, scratch1, Operand(zero_reg)); |
// Check that the maps haven't changed. |
- Register reg = |
- CheckPrototypes(object, receiver, holder, scratch1, scratch2, scratch3, |
- name, miss); |
+ Register reg = CheckPrototypes( |
+ object, receiver, holder, scratch1, scratch2, scratch3, name, miss); |
GenerateFastPropertyLoad(masm(), v0, reg, holder, index); |
__ Ret(); |
} |
-void StubCompiler::GenerateLoadConstant(JSObject* object, |
- JSObject* holder, |
+void StubCompiler::GenerateLoadConstant(Handle<JSObject> object, |
+ Handle<JSObject> holder, |
Register receiver, |
Register scratch1, |
Register scratch2, |
Register scratch3, |
- Object* value, |
- String* name, |
+ Handle<Object> value, |
+ Handle<String> name, |
Label* miss) { |
// Check that the receiver isn't a smi. |
__ JumpIfSmi(receiver, miss, scratch1); |
@@ -1225,7 +1219,7 @@ void StubCompiler::GenerateLoadConstant(JSObject* object, |
scratch1, scratch2, scratch3, name, miss); |
// Return the constant value. |
- __ li(v0, Operand(Handle<Object>(value))); |
+ __ li(v0, Operand(value)); |
__ Ret(); |
} |
@@ -2793,9 +2787,9 @@ MaybeObject* StoreStubCompiler::CompileStoreGlobal(GlobalObject* object, |
} |
-MaybeObject* LoadStubCompiler::CompileLoadNonexistent(String* name, |
- JSObject* object, |
- JSObject* last) { |
+Handle<Code> LoadStubCompiler::CompileLoadNonexistent(Handle<String> name, |
+ Handle<JSObject> object, |
+ Handle<JSObject> last) { |
// ----------- S t a t e ------------- |
// -- a0 : receiver |
// -- ra : return address |
@@ -2811,15 +2805,8 @@ MaybeObject* LoadStubCompiler::CompileLoadNonexistent(String* name, |
// If the last object in the prototype chain is a global object, |
// check that the global property cell is empty. |
if (last->IsGlobalObject()) { |
- MaybeObject* cell = GenerateCheckPropertyCell(masm(), |
- GlobalObject::cast(last), |
- name, |
- a1, |
- &miss); |
- if (cell->IsFailure()) { |
- miss.Unuse(); |
- return cell; |
- } |
+ GenerateCheckPropertyCell( |
+ masm(), Handle<GlobalObject>::cast(last), name, a1, &miss); |
} |
// Return undefined if maps of the full prototype chain is still the same. |
@@ -2830,14 +2817,14 @@ MaybeObject* LoadStubCompiler::CompileLoadNonexistent(String* name, |
GenerateLoadMiss(masm(), Code::LOAD_IC); |
// Return the generated code. |
- return GetCode(NONEXISTENT, heap()->empty_string()); |
+ return GetCode(NONEXISTENT, factory()->empty_string()); |
} |
-MaybeObject* LoadStubCompiler::CompileLoadField(JSObject* object, |
- JSObject* holder, |
+Handle<Code> LoadStubCompiler::CompileLoadField(Handle<JSObject> object, |
+ Handle<JSObject> holder, |
int index, |
- String* name) { |
+ Handle<String> name) { |
// ----------- S t a t e ------------- |
// -- a0 : receiver |
// -- a2 : name |
@@ -2878,14 +2865,14 @@ MaybeObject* LoadStubCompiler::CompileLoadCallback(String* name, |
GenerateLoadMiss(masm(), Code::LOAD_IC); |
// Return the generated code. |
- return GetCode(CALLBACKS, name); |
+ return TryGetCode(CALLBACKS, name); |
} |
-MaybeObject* LoadStubCompiler::CompileLoadConstant(JSObject* object, |
- JSObject* holder, |
- Object* value, |
- String* name) { |
+Handle<Code> LoadStubCompiler::CompileLoadConstant(Handle<JSObject> object, |
+ Handle<JSObject> holder, |
+ Handle<Object> value, |
+ Handle<String> name) { |
// ----------- S t a t e ------------- |
// -- a0 : receiver |
// -- a2 : name |
@@ -2929,7 +2916,7 @@ MaybeObject* LoadStubCompiler::CompileLoadInterceptor(JSObject* object, |
GenerateLoadMiss(masm(), Code::LOAD_IC); |
// Return the generated code. |
- return GetCode(INTERCEPTOR, name); |
+ return TryGetCode(INTERCEPTOR, name); |
} |
@@ -2976,13 +2963,13 @@ MaybeObject* LoadStubCompiler::CompileLoadGlobal(JSObject* object, |
GenerateLoadMiss(masm(), Code::LOAD_IC); |
// Return the generated code. |
- return GetCode(NORMAL, name); |
+ return TryGetCode(NORMAL, name); |
} |
-MaybeObject* KeyedLoadStubCompiler::CompileLoadField(String* name, |
- JSObject* receiver, |
- JSObject* holder, |
+Handle<Code> KeyedLoadStubCompiler::CompileLoadField(Handle<String> name, |
+ Handle<JSObject> receiver, |
+ Handle<JSObject> holder, |
int index) { |
// ----------- S t a t e ------------- |
// -- ra : return address |
@@ -2992,7 +2979,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadField(String* name, |
Label miss; |
// Check the key is the cached one. |
- __ Branch(&miss, ne, a0, Operand(Handle<String>(name))); |
+ __ Branch(&miss, ne, a0, Operand(name)); |
GenerateLoadField(receiver, holder, a1, a2, a3, t0, index, name, &miss); |
__ bind(&miss); |
@@ -3027,14 +3014,15 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadCallback( |
__ bind(&miss); |
GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC); |
- return GetCode(CALLBACKS, name); |
+ return TryGetCode(CALLBACKS, name); |
} |
-MaybeObject* KeyedLoadStubCompiler::CompileLoadConstant(String* name, |
- JSObject* receiver, |
- JSObject* holder, |
- Object* value) { |
+Handle<Code> KeyedLoadStubCompiler::CompileLoadConstant( |
+ Handle<String> name, |
+ Handle<JSObject> receiver, |
+ Handle<JSObject> holder, |
+ Handle<Object> value) { |
// ----------- S t a t e ------------- |
// -- ra : return address |
// -- a0 : key |
@@ -3043,7 +3031,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadConstant(String* name, |
Label miss; |
// Check the key is the cached one. |
- __ Branch(&miss, ne, a0, Operand(Handle<String>(name))); |
+ __ Branch(&miss, ne, a0, Operand(name)); |
GenerateLoadConstant(receiver, holder, a1, a2, a3, t0, value, name, &miss); |
__ bind(&miss); |
@@ -3082,11 +3070,12 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadInterceptor(JSObject* receiver, |
__ bind(&miss); |
GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC); |
- return GetCode(INTERCEPTOR, name); |
+ return TryGetCode(INTERCEPTOR, name); |
} |
-MaybeObject* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) { |
+Handle<Code> KeyedLoadStubCompiler::CompileLoadArrayLength( |
+ Handle<String> name) { |
// ----------- S t a t e ------------- |
// -- ra : return address |
// -- a0 : key |
@@ -3095,7 +3084,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) { |
Label miss; |
// Check the key is the cached one. |
- __ Branch(&miss, ne, a0, Operand(Handle<String>(name))); |
+ __ Branch(&miss, ne, a0, Operand(name)); |
GenerateLoadArrayLength(masm(), a1, a2, &miss); |
__ bind(&miss); |
@@ -3105,7 +3094,8 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) { |
} |
-MaybeObject* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) { |
+Handle<Code> KeyedLoadStubCompiler::CompileLoadStringLength( |
+ Handle<String> name) { |
// ----------- S t a t e ------------- |
// -- ra : return address |
// -- a0 : key |
@@ -3117,7 +3107,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) { |
__ IncrementCounter(counters->keyed_load_string_length(), 1, a2, a3); |
// Check the key is the cached one. |
- __ Branch(&miss, ne, a0, Operand(Handle<String>(name))); |
+ __ Branch(&miss, ne, a0, Operand(name)); |
GenerateLoadStringLength(masm(), a1, a2, a3, &miss, true); |
__ bind(&miss); |
@@ -3129,7 +3119,8 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) { |
} |
-MaybeObject* KeyedLoadStubCompiler::CompileLoadFunctionPrototype(String* name) { |
+Handle<Code> KeyedLoadStubCompiler::CompileLoadFunctionPrototype( |
+ Handle<String> name) { |
// ----------- S t a t e ------------- |
// -- ra : return address |
// -- a0 : key |
@@ -3141,7 +3132,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadFunctionPrototype(String* name) { |
__ IncrementCounter(counters->keyed_load_function_prototype(), 1, a2, a3); |
// Check the name hasn't changed. |
- __ Branch(&miss, ne, a0, Operand(Handle<String>(name))); |
+ __ Branch(&miss, ne, a0, Operand(name)); |
GenerateLoadFunctionPrototype(masm(), a1, a2, a3, &miss); |
__ bind(&miss); |
@@ -3172,7 +3163,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadElement(Map* receiver_map) { |
__ Jump(ic, RelocInfo::CODE_TARGET); |
// Return the generated code. |
- return GetCode(NORMAL, NULL); |
+ return TryGetCode(NORMAL, NULL); |
} |
@@ -3200,7 +3191,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadPolymorphic( |
__ Jump(miss_ic, RelocInfo::CODE_TARGET); |
// Return the generated code. |
- return GetCode(NORMAL, NULL, MEGAMORPHIC); |
+ return TryGetCode(NORMAL, NULL, MEGAMORPHIC); |
} |