Index: src/arm/stub-cache-arm.cc |
diff --git a/src/arm/stub-cache-arm.cc b/src/arm/stub-cache-arm.cc |
index 545c06c1dcca75863909d6641a2e60da4b04b0d2..3340740651773a348d07fa49e85e442e4d3decc6 100644 |
--- a/src/arm/stub-cache-arm.cc |
+++ b/src/arm/stub-cache-arm.cc |
@@ -525,15 +525,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); |
} |
@@ -1375,45 +1370,44 @@ 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. |
__ JumpIfSmi(receiver, miss); |
// Check that the maps haven't changed. |
- Register reg = |
- CheckPrototypes(object, receiver, holder, scratch1, scratch2, scratch3, |
- name, miss); |
- GenerateFastPropertyLoad(masm(), r0, reg, Handle<JSObject>(holder), index); |
+ Register reg = CheckPrototypes( |
+ object, receiver, holder, scratch1, scratch2, scratch3, name, miss); |
+ GenerateFastPropertyLoad(masm(), r0, 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); |
// Check that the maps haven't changed. |
- CheckPrototypes(object, receiver, holder, scratch1, scratch2, scratch3, name, |
- miss); |
+ CheckPrototypes( |
+ object, receiver, holder, scratch1, scratch2, scratch3, name, miss); |
// Return the constant value. |
- __ mov(r0, Operand(Handle<Object>(value))); |
+ __ mov(r0, Operand(value)); |
__ Ret(); |
} |
@@ -3003,9 +2997,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 ------------- |
// -- r0 : receiver |
// -- lr : return address |
@@ -3021,15 +3015,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 = TryGenerateCheckPropertyCell(masm(), |
- GlobalObject::cast(last), |
- name, |
- r1, |
- &miss); |
- if (cell->IsFailure()) { |
- miss.Unuse(); |
- return cell; |
- } |
+ GenerateCheckPropertyCell( |
+ masm(), Handle<GlobalObject>::cast(last), name, r1, &miss); |
} |
// Return undefined if maps of the full prototype chain are still the |
@@ -3041,14 +3028,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 ------------- |
// -- r0 : receiver |
// -- r2 : name |
@@ -3087,14 +3074,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 ------------- |
// -- r0 : receiver |
// -- r2 : name |
@@ -3137,7 +3124,7 @@ MaybeObject* LoadStubCompiler::CompileLoadInterceptor(JSObject* object, |
GenerateLoadMiss(masm(), Code::LOAD_IC); |
// Return the generated code. |
- return GetCode(INTERCEPTOR, name); |
+ return TryGetCode(INTERCEPTOR, name); |
} |
@@ -3184,13 +3171,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 ------------- |
// -- lr : return address |
@@ -3200,7 +3187,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadField(String* name, |
Label miss; |
// Check the key is the cached one. |
- __ cmp(r0, Operand(Handle<String>(name))); |
+ __ cmp(r0, Operand(name)); |
__ b(ne, &miss); |
GenerateLoadField(receiver, holder, r1, r2, r3, r4, index, name, &miss); |
@@ -3237,14 +3224,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 ------------- |
// -- lr : return address |
// -- r0 : key |
@@ -3253,7 +3241,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadConstant(String* name, |
Label miss; |
// Check the key is the cached one. |
- __ cmp(r0, Operand(Handle<String>(name))); |
+ __ cmp(r0, Operand(name)); |
__ b(ne, &miss); |
GenerateLoadConstant(receiver, holder, r1, r2, r3, r4, value, name, &miss); |
@@ -3294,11 +3282,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 ------------- |
// -- lr : return address |
// -- r0 : key |
@@ -3307,7 +3296,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) { |
Label miss; |
// Check the key is the cached one. |
- __ cmp(r0, Operand(Handle<String>(name))); |
+ __ cmp(r0, Operand(name)); |
__ b(ne, &miss); |
GenerateLoadArrayLength(masm(), r1, r2, &miss); |
@@ -3318,7 +3307,8 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) { |
} |
-MaybeObject* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) { |
+Handle<Code> KeyedLoadStubCompiler::CompileLoadStringLength( |
+ Handle<String> name) { |
// ----------- S t a t e ------------- |
// -- lr : return address |
// -- r0 : key |
@@ -3330,7 +3320,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) { |
__ IncrementCounter(counters->keyed_load_string_length(), 1, r2, r3); |
// Check the key is the cached one. |
- __ cmp(r0, Operand(Handle<String>(name))); |
+ __ cmp(r0, Operand(name)); |
__ b(ne, &miss); |
GenerateLoadStringLength(masm(), r1, r2, r3, &miss, true); |
@@ -3343,7 +3333,8 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) { |
} |
-MaybeObject* KeyedLoadStubCompiler::CompileLoadFunctionPrototype(String* name) { |
+Handle<Code> KeyedLoadStubCompiler::CompileLoadFunctionPrototype( |
+ Handle<String> name) { |
// ----------- S t a t e ------------- |
// -- lr : return address |
// -- r0 : key |
@@ -3355,7 +3346,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadFunctionPrototype(String* name) { |
__ IncrementCounter(counters->keyed_load_function_prototype(), 1, r2, r3); |
// Check the name hasn't changed. |
- __ cmp(r0, Operand(Handle<String>(name))); |
+ __ cmp(r0, Operand(name)); |
__ b(ne, &miss); |
GenerateLoadFunctionPrototype(masm(), r1, r2, r3, &miss); |
@@ -3387,7 +3378,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadElement(Map* receiver_map) { |
__ Jump(ic, RelocInfo::CODE_TARGET); |
// Return the generated code. |
- return GetCode(NORMAL, NULL); |
+ return TryGetCode(NORMAL, NULL); |
} |
@@ -3417,7 +3408,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadPolymorphic( |
__ Jump(miss_ic, RelocInfo::CODE_TARGET, al); |
// Return the generated code. |
- return GetCode(NORMAL, NULL, MEGAMORPHIC); |
+ return TryGetCode(NORMAL, NULL, MEGAMORPHIC); |
} |