| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 #include "src/v8.h" | 7 #include "src/v8.h" |
| 8 | 8 |
| 9 #if V8_TARGET_ARCH_MIPS64 | 9 #if V8_TARGET_ARCH_MIPS64 |
| 10 | 10 |
| (...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 775 // Set up the context from the function argument. | 775 // Set up the context from the function argument. |
| 776 __ ld(cp, FieldMemOperand(a1, JSFunction::kContextOffset)); | 776 __ ld(cp, FieldMemOperand(a1, JSFunction::kContextOffset)); |
| 777 | 777 |
| 778 // Push the function and the receiver onto the stack. | 778 // Push the function and the receiver onto the stack. |
| 779 __ Push(a1, a2); | 779 __ Push(a1, a2); |
| 780 | 780 |
| 781 // Copy arguments to the stack in a loop. | 781 // Copy arguments to the stack in a loop. |
| 782 // a3: argc | 782 // a3: argc |
| 783 // s0: argv, i.e. points to first arg | 783 // s0: argv, i.e. points to first arg |
| 784 Label loop, entry; | 784 Label loop, entry; |
| 785 // TODO(plind): At least on simulator, argc in a3 is an int32_t with junk | |
| 786 // in upper bits. Should fix the root cause, rather than use below | |
| 787 // workaround to clear upper bits. | |
| 788 __ dsll32(a3, a3, 0); // int32_t -> int64_t. | |
| 789 __ dsrl32(a3, a3, 0); | |
| 790 __ dsll(a4, a3, kPointerSizeLog2); | 785 __ dsll(a4, a3, kPointerSizeLog2); |
| 791 __ daddu(a6, s0, a4); | 786 __ daddu(a6, s0, a4); |
| 792 __ b(&entry); | 787 __ b(&entry); |
| 793 __ nop(); // Branch delay slot nop. | 788 __ nop(); // Branch delay slot nop. |
| 794 // a6 points past last arg. | 789 // a6 points past last arg. |
| 795 __ bind(&loop); | 790 __ bind(&loop); |
| 796 __ ld(a4, MemOperand(s0)); // Read next parameter. | 791 __ ld(a4, MemOperand(s0)); // Read next parameter. |
| 797 __ daddiu(s0, s0, kPointerSize); | 792 __ daddiu(s0, s0, kPointerSize); |
| 798 __ ld(a4, MemOperand(a4)); // Dereference handle. | 793 __ ld(a4, MemOperand(a4)); // Dereference handle. |
| 799 __ push(a4); // Push parameter. | 794 __ push(a4); // Push parameter. |
| (...skipping 787 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1587 __ break_(0xCC); | 1582 __ break_(0xCC); |
| 1588 } | 1583 } |
| 1589 } | 1584 } |
| 1590 | 1585 |
| 1591 | 1586 |
| 1592 #undef __ | 1587 #undef __ |
| 1593 | 1588 |
| 1594 } } // namespace v8::internal | 1589 } } // namespace v8::internal |
| 1595 | 1590 |
| 1596 #endif // V8_TARGET_ARCH_MIPS64 | 1591 #endif // V8_TARGET_ARCH_MIPS64 |
| OLD | NEW |