| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved.7 | 1 // Copyright 2012 the V8 project authors. All rights reserved.7 |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 2966 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2977 } | 2977 } |
| 2978 | 2978 |
| 2979 | 2979 |
| 2980 void LCodeGen::DoArgumentsElements(LArgumentsElements* instr) { | 2980 void LCodeGen::DoArgumentsElements(LArgumentsElements* instr) { |
| 2981 Register scratch = scratch0(); | 2981 Register scratch = scratch0(); |
| 2982 Register temp = scratch1(); | 2982 Register temp = scratch1(); |
| 2983 Register result = ToRegister(instr->result()); | 2983 Register result = ToRegister(instr->result()); |
| 2984 | 2984 |
| 2985 if (instr->hydrogen()->from_inlined()) { | 2985 if (instr->hydrogen()->from_inlined()) { |
| 2986 __ Subu(result, sp, 2 * kPointerSize); | 2986 __ Subu(result, sp, 2 * kPointerSize); |
| 2987 } else { | 2987 } else if (instr->hydrogen()->arguments_adaptor()) { |
| 2988 // Check if the calling frame is an arguments adaptor frame. | 2988 // Check if the calling frame is an arguments adaptor frame. |
| 2989 Label done, adapted; | 2989 Label done, adapted; |
| 2990 __ lw(scratch, MemOperand(fp, StandardFrameConstants::kCallerFPOffset)); | 2990 __ lw(scratch, MemOperand(fp, StandardFrameConstants::kCallerFPOffset)); |
| 2991 __ lw(result, | 2991 __ lw(result, |
| 2992 MemOperand(scratch, CommonFrameConstants::kContextOrFrameTypeOffset)); | 2992 MemOperand(scratch, CommonFrameConstants::kContextOrFrameTypeOffset)); |
| 2993 __ Xor(temp, result, Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); | 2993 __ Xor(temp, result, Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); |
| 2994 | 2994 |
| 2995 // Result is the frame pointer for the frame if not adapted and for the real | 2995 // Result is the frame pointer for the frame if not adapted and for the real |
| 2996 // frame below the adaptor frame if adapted. | 2996 // frame below the adaptor frame if adapted. |
| 2997 __ Movn(result, fp, temp); // Move only if temp is not equal to zero (ne). | 2997 __ Movn(result, fp, temp); // Move only if temp is not equal to zero (ne). |
| 2998 __ Movz(result, scratch, temp); // Move only if temp is equal to zero (eq). | 2998 __ Movz(result, scratch, temp); // Move only if temp is equal to zero (eq). |
| 2999 } else { |
| 3000 __ mov(result, fp); |
| 2999 } | 3001 } |
| 3000 } | 3002 } |
| 3001 | 3003 |
| 3002 | 3004 |
| 3003 void LCodeGen::DoArgumentsLength(LArgumentsLength* instr) { | 3005 void LCodeGen::DoArgumentsLength(LArgumentsLength* instr) { |
| 3004 Register elem = ToRegister(instr->elements()); | 3006 Register elem = ToRegister(instr->elements()); |
| 3005 Register result = ToRegister(instr->result()); | 3007 Register result = ToRegister(instr->result()); |
| 3006 | 3008 |
| 3007 Label done; | 3009 Label done; |
| 3008 | 3010 |
| (...skipping 2551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5560 void LCodeGen::DoStoreFrameContext(LStoreFrameContext* instr) { | 5562 void LCodeGen::DoStoreFrameContext(LStoreFrameContext* instr) { |
| 5561 Register context = ToRegister(instr->context()); | 5563 Register context = ToRegister(instr->context()); |
| 5562 __ sw(context, MemOperand(fp, StandardFrameConstants::kContextOffset)); | 5564 __ sw(context, MemOperand(fp, StandardFrameConstants::kContextOffset)); |
| 5563 } | 5565 } |
| 5564 | 5566 |
| 5565 | 5567 |
| 5566 #undef __ | 5568 #undef __ |
| 5567 | 5569 |
| 5568 } // namespace internal | 5570 } // namespace internal |
| 5569 } // namespace v8 | 5571 } // namespace v8 |
| OLD | NEW |