| Index: src/ic/ppc/ic-ppc.cc
 | 
| diff --git a/src/ic/ppc/ic-ppc.cc b/src/ic/ppc/ic-ppc.cc
 | 
| index 6b4fc4599722ce02baf5a83ea7919b3aabfac34c..fdb88aee50ce57c38cdb96681b33b8cf2d602b19 100644
 | 
| --- a/src/ic/ppc/ic-ppc.cc
 | 
| +++ b/src/ic/ppc/ic-ppc.cc
 | 
| @@ -167,8 +167,7 @@
 | 
|  static void GenerateFastArrayLoad(MacroAssembler* masm, Register receiver,
 | 
|                                    Register key, Register elements,
 | 
|                                    Register scratch1, Register scratch2,
 | 
| -                                  Register result, Label* slow,
 | 
| -                                  LanguageMode language_mode) {
 | 
| +                                  Register result, Label* slow) {
 | 
|    // Register use:
 | 
|    //
 | 
|    // receiver - holds the receiver on entry.
 | 
| @@ -190,7 +189,7 @@
 | 
|    //
 | 
|    // scratch2 - used to hold maps, prototypes, and the loaded value.
 | 
|    Label check_prototypes, check_next_prototype;
 | 
| -  Label done, in_bounds, absent;
 | 
| +  Label done, in_bounds, return_undefined;
 | 
|  
 | 
|    __ LoadP(elements, FieldMemOperand(receiver, JSObject::kElementsOffset));
 | 
|    __ AssertFastElements(elements);
 | 
| @@ -209,7 +208,7 @@
 | 
|    __ LoadP(scratch2, FieldMemOperand(scratch2, Map::kPrototypeOffset));
 | 
|    // scratch2: current prototype
 | 
|    __ CompareRoot(scratch2, Heap::kNullValueRootIndex);
 | 
| -  __ beq(&absent);
 | 
| +  __ beq(&return_undefined);
 | 
|    __ LoadP(elements, FieldMemOperand(scratch2, JSObject::kElementsOffset));
 | 
|    __ LoadP(scratch2, FieldMemOperand(scratch2, HeapObject::kMapOffset));
 | 
|    // elements: elements of current prototype
 | 
| @@ -224,14 +223,9 @@
 | 
|    __ bne(slow);
 | 
|    __ jmp(&check_next_prototype);
 | 
|  
 | 
| -  __ bind(&absent);
 | 
| -  if (is_strong(language_mode)) {
 | 
| -    // Strong mode accesses must throw in this case, so call the runtime.
 | 
| -    __ jmp(slow);
 | 
| -  } else {
 | 
| -    __ LoadRoot(result, Heap::kUndefinedValueRootIndex);
 | 
| -    __ jmp(&done);
 | 
| -  }
 | 
| +  __ bind(&return_undefined);
 | 
| +  __ LoadRoot(result, Heap::kUndefinedValueRootIndex);
 | 
| +  __ jmp(&done);
 | 
|  
 | 
|    __ bind(&in_bounds);
 | 
|    // Fast case: Do the load.
 | 
| @@ -294,7 +288,7 @@
 | 
|  
 | 
|    // Dictionary load failed, go slow (but don't miss).
 | 
|    __ bind(&slow);
 | 
| -  GenerateSlow(masm);
 | 
| +  GenerateRuntimeGetProperty(masm);
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -329,16 +323,13 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -void LoadIC::GenerateSlow(MacroAssembler* masm) {
 | 
| +void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
 | 
|    // The return address is in lr.
 | 
|  
 | 
|    __ mr(LoadIC_TempRegister(), LoadDescriptor::ReceiverRegister());
 | 
|    __ Push(LoadIC_TempRegister(), LoadDescriptor::NameRegister());
 | 
|  
 | 
| -  ExternalReference ref =
 | 
| -      ExternalReference(IC_Utility(kLoadIC_Slow), masm->isolate());
 | 
| -  int arg_count = 2;
 | 
| -  __ TailCallExternalReference(ref, arg_count, 1);
 | 
| +  __ TailCallRuntime(Runtime::kGetProperty, 2, 1);
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -360,20 +351,16 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -void KeyedLoadIC::GenerateSlow(MacroAssembler* masm) {
 | 
| +void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
 | 
|    // The return address is in lr.
 | 
|  
 | 
|    __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister());
 | 
|  
 | 
| -  ExternalReference ref =
 | 
| -      ExternalReference(IC_Utility(kKeyedLoadIC_Slow), masm->isolate());
 | 
| -  int arg_count = 2;
 | 
| -  __ TailCallExternalReference(ref, arg_count, 1);
 | 
| -}
 | 
| -
 | 
| -
 | 
| -void KeyedLoadIC::GenerateMegamorphic(MacroAssembler* masm,
 | 
| -                                      LanguageMode language_mode) {
 | 
| +  __ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1);
 | 
| +}
 | 
| +
 | 
| +
 | 
| +void KeyedLoadIC::GenerateMegamorphic(MacroAssembler* masm) {
 | 
|    // The return address is in lr.
 | 
|    Label slow, check_name, index_smi, index_name, property_array_property;
 | 
|    Label probe_dictionary, check_number_dictionary;
 | 
| @@ -397,8 +384,7 @@
 | 
|    // Check the receiver's map to see if it has fast elements.
 | 
|    __ CheckFastElements(r3, r6, &check_number_dictionary);
 | 
|  
 | 
| -  GenerateFastArrayLoad(masm, receiver, key, r3, r6, r7, r3, &slow,
 | 
| -                        language_mode);
 | 
| +  GenerateFastArrayLoad(masm, receiver, key, r3, r6, r7, r3, &slow);
 | 
|    __ IncrementCounter(isolate->counters()->keyed_load_generic_smi(), 1, r7, r6);
 | 
|    __ Ret();
 | 
|  
 | 
| @@ -420,7 +406,7 @@
 | 
|    __ bind(&slow);
 | 
|    __ IncrementCounter(isolate->counters()->keyed_load_generic_slow(), 1, r7,
 | 
|                        r6);
 | 
| -  GenerateSlow(masm);
 | 
| +  GenerateRuntimeGetProperty(masm);
 | 
|  
 | 
|    __ bind(&check_name);
 | 
|    GenerateKeyNameCheck(masm, key, r3, r6, &index_name, &slow);
 | 
| 
 |