Index: src/x64/stub-cache-x64.cc |
diff --git a/src/x64/stub-cache-x64.cc b/src/x64/stub-cache-x64.cc |
index b0f9847fa01142521606823231c315c880fdbd08..26c345b38218daf4973804ae6293a99ffdd1f692 100644 |
--- a/src/x64/stub-cache-x64.cc |
+++ b/src/x64/stub-cache-x64.cc |
@@ -750,15 +750,10 @@ class CallInterceptorCompiler BASE_EMBEDDED { |
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); |
} |
@@ -1203,25 +1198,24 @@ 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 the prototype chain. |
- Register reg = |
- CheckPrototypes(object, receiver, holder, |
- scratch1, scratch2, scratch3, name, miss); |
+ Register reg = CheckPrototypes( |
+ object, receiver, holder, scratch1, scratch2, scratch3, name, miss); |
// Get the value from the properties. |
- GenerateFastPropertyLoad(masm(), rax, reg, Handle<JSObject>(holder), index); |
+ GenerateFastPropertyLoad(masm(), rax, reg, holder, index); |
__ ret(0); |
} |
@@ -1303,24 +1297,24 @@ MaybeObject* StubCompiler::GenerateLoadCallback(JSObject* object, |
} |
-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. |
- __ Move(rax, Handle<Object>(value)); |
+ __ Move(rax, value); |
__ ret(0); |
} |
@@ -2870,9 +2864,9 @@ MaybeObject* KeyedStoreStubCompiler::CompileStorePolymorphic( |
} |
-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 ------------- |
// -- rax : receiver |
// -- rcx : name |
@@ -2891,15 +2885,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, |
- rdx, |
- &miss); |
- if (cell->IsFailure()) { |
- miss.Unuse(); |
- return cell; |
- } |
+ GenerateCheckPropertyCell( |
+ masm(), Handle<GlobalObject>::cast(last), name, rdx, &miss); |
} |
// Return undefined if maps of the full prototype chain are still the |
@@ -2911,14 +2898,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 ------------- |
// -- rax : receiver |
// -- rcx : name |
@@ -2957,14 +2944,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 ------------- |
// -- rax : receiver |
// -- rcx : name |
@@ -3011,7 +2998,7 @@ MaybeObject* LoadStubCompiler::CompileLoadInterceptor(JSObject* receiver, |
GenerateLoadMiss(masm(), Code::LOAD_IC); |
// Return the generated code. |
- return GetCode(INTERCEPTOR, name); |
+ return TryGetCode(INTERCEPTOR, name); |
} |
@@ -3060,13 +3047,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 ------------- |
// -- rax : key |
@@ -3079,7 +3066,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadField(String* name, |
__ IncrementCounter(counters->keyed_load_field(), 1); |
// Check that the name has not changed. |
- __ Cmp(rax, Handle<String>(name)); |
+ __ Cmp(rax, name); |
__ j(not_equal, &miss); |
GenerateLoadField(receiver, holder, rdx, rbx, rcx, rdi, index, name, &miss); |
@@ -3125,14 +3112,15 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadCallback( |
GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC); |
// Return the generated code. |
- 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 ------------- |
// -- rax : key |
// -- rdx : receiver |
@@ -3192,11 +3180,12 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadInterceptor(JSObject* receiver, |
GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC); |
// Return the generated code. |
- 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 ------------- |
// -- rax : key |
// -- rdx : receiver |
@@ -3208,7 +3197,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) { |
__ IncrementCounter(counters->keyed_load_array_length(), 1); |
// Check that the name has not changed. |
- __ Cmp(rax, Handle<String>(name)); |
+ __ Cmp(rax, name); |
__ j(not_equal, &miss); |
GenerateLoadArrayLength(masm(), rdx, rcx, &miss); |
@@ -3221,7 +3210,8 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) { |
} |
-MaybeObject* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) { |
+Handle<Code> KeyedLoadStubCompiler::CompileLoadStringLength( |
+ Handle<String> name) { |
// ----------- S t a t e ------------- |
// -- rax : key |
// -- rdx : receiver |
@@ -3233,7 +3223,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) { |
__ IncrementCounter(counters->keyed_load_string_length(), 1); |
// Check that the name has not changed. |
- __ Cmp(rax, Handle<String>(name)); |
+ __ Cmp(rax, name); |
__ j(not_equal, &miss); |
GenerateLoadStringLength(masm(), rdx, rcx, rbx, &miss, true); |
@@ -3246,7 +3236,8 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) { |
} |
-MaybeObject* KeyedLoadStubCompiler::CompileLoadFunctionPrototype(String* name) { |
+Handle<Code> KeyedLoadStubCompiler::CompileLoadFunctionPrototype( |
+ Handle<String> name) { |
// ----------- S t a t e ------------- |
// -- rax : key |
// -- rdx : receiver |
@@ -3258,7 +3249,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadFunctionPrototype(String* name) { |
__ IncrementCounter(counters->keyed_load_function_prototype(), 1); |
// Check that the name has not changed. |
- __ Cmp(rax, Handle<String>(name)); |
+ __ Cmp(rax, name); |
__ j(not_equal, &miss); |
GenerateLoadFunctionPrototype(masm(), rdx, rcx, rbx, &miss); |
@@ -3290,7 +3281,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadElement(Map* receiver_map) { |
__ jmp(ic, RelocInfo::CODE_TARGET); |
// Return the generated code. |
- return GetCode(NORMAL, NULL); |
+ return TryGetCode(NORMAL, NULL); |
} |
@@ -3321,7 +3312,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadPolymorphic( |
GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC); |
// Return the generated code. |
- return GetCode(NORMAL, NULL, MEGAMORPHIC); |
+ return TryGetCode(NORMAL, NULL, MEGAMORPHIC); |
} |