| Index: src/arm/stub-cache-arm.cc
|
| ===================================================================
|
| --- src/arm/stub-cache-arm.cc (revision 4872)
|
| +++ src/arm/stub-cache-arm.cc (working copy)
|
| @@ -1019,6 +1019,14 @@
|
| }
|
|
|
|
|
| +void CallStubCompiler::GenerateNameCheck(String* name, Label* miss) {
|
| + if (kind_ == Code::KEYED_CALL_IC) {
|
| + __ cmp(r2, Operand(Handle<String>(name)));
|
| + __ b(ne, miss);
|
| + }
|
| +}
|
| +
|
| +
|
| void CallStubCompiler::GenerateMissBranch() {
|
| Handle<Code> ic = ComputeCallMiss(arguments().immediate(), kind_);
|
| __ Jump(ic, RelocInfo::CODE_TARGET);
|
| @@ -1035,6 +1043,8 @@
|
| // -----------------------------------
|
| Label miss;
|
|
|
| + GenerateNameCheck(name, &miss);
|
| +
|
| const int argc = arguments().immediate();
|
|
|
| // Get the receiver of the function from the stack into r0.
|
| @@ -1078,6 +1088,8 @@
|
|
|
| Label miss;
|
|
|
| + GenerateNameCheck(name, &miss);
|
| +
|
| // Get the receiver from the stack
|
| const int argc = arguments().immediate();
|
| __ ldr(r1, MemOperand(sp, argc * kPointerSize));
|
| @@ -1127,6 +1139,8 @@
|
|
|
| Label miss;
|
|
|
| + GenerateNameCheck(name, &miss);
|
| +
|
| // Get the receiver from the stack
|
| const int argc = arguments().immediate();
|
| __ ldr(r1, MemOperand(sp, argc * kPointerSize));
|
| @@ -1198,6 +1212,8 @@
|
|
|
| Label miss_in_smi_check;
|
|
|
| + GenerateNameCheck(name, &miss_in_smi_check);
|
| +
|
| // Get the receiver from the stack
|
| const int argc = arguments().immediate();
|
| __ ldr(r1, MemOperand(sp, argc * kPointerSize));
|
| @@ -1337,6 +1353,8 @@
|
|
|
| Label miss;
|
|
|
| + GenerateNameCheck(name, &miss);
|
| +
|
| // Get the number of arguments.
|
| const int argc = arguments().immediate();
|
|
|
| @@ -1384,6 +1402,8 @@
|
| // -----------------------------------
|
| Label miss;
|
|
|
| + GenerateNameCheck(name, &miss);
|
| +
|
| // Get the number of arguments.
|
| const int argc = arguments().immediate();
|
|
|
|
|