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 #if V8_TARGET_ARCH_MIPS | 5 #if V8_TARGET_ARCH_MIPS |
6 | 6 |
7 #include "src/code-stubs.h" | 7 #include "src/code-stubs.h" |
8 #include "src/api-arguments.h" | 8 #include "src/api-arguments.h" |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
(...skipping 1580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1591 LoadWithVectorDescriptor::SlotRegister())); | 1591 LoadWithVectorDescriptor::SlotRegister())); |
1592 | 1592 |
1593 NamedLoadHandlerCompiler::GenerateLoadFunctionPrototype(masm, receiver, t0, | 1593 NamedLoadHandlerCompiler::GenerateLoadFunctionPrototype(masm, receiver, t0, |
1594 t1, &miss); | 1594 t1, &miss); |
1595 __ bind(&miss); | 1595 __ bind(&miss); |
1596 PropertyAccessCompiler::TailCallBuiltin( | 1596 PropertyAccessCompiler::TailCallBuiltin( |
1597 masm, PropertyAccessCompiler::MissBuiltin(Code::LOAD_IC)); | 1597 masm, PropertyAccessCompiler::MissBuiltin(Code::LOAD_IC)); |
1598 } | 1598 } |
1599 | 1599 |
1600 | 1600 |
1601 void LoadIndexedInterceptorStub::Generate(MacroAssembler* masm) { | |
1602 // Return address is in ra. | |
1603 Label slow; | |
1604 | |
1605 Register receiver = LoadDescriptor::ReceiverRegister(); | |
1606 Register key = LoadDescriptor::NameRegister(); | |
1607 | |
1608 // Check that the key is an array index, that is Uint32. | |
1609 __ And(t0, key, Operand(kSmiTagMask | kSmiSignMask)); | |
1610 __ Branch(&slow, ne, t0, Operand(zero_reg)); | |
1611 | |
1612 // Everything is fine, call runtime. | |
1613 __ Push(receiver, key); // Receiver, key. | |
1614 | |
1615 // Perform tail call to the entry. | |
1616 __ TailCallRuntime(Runtime::kLoadElementWithInterceptor); | |
1617 | |
1618 __ bind(&slow); | |
1619 PropertyAccessCompiler::TailCallBuiltin( | |
1620 masm, PropertyAccessCompiler::MissBuiltin(Code::KEYED_LOAD_IC)); | |
1621 } | |
1622 | |
1623 | |
1624 void RegExpExecStub::Generate(MacroAssembler* masm) { | 1601 void RegExpExecStub::Generate(MacroAssembler* masm) { |
1625 // Just jump directly to runtime if native RegExp is not selected at compile | 1602 // Just jump directly to runtime if native RegExp is not selected at compile |
1626 // time or if regexp entry in generated code is turned off runtime switch or | 1603 // time or if regexp entry in generated code is turned off runtime switch or |
1627 // at compilation. | 1604 // at compilation. |
1628 #ifdef V8_INTERPRETED_REGEXP | 1605 #ifdef V8_INTERPRETED_REGEXP |
1629 __ TailCallRuntime(Runtime::kRegExpExec); | 1606 __ TailCallRuntime(Runtime::kRegExpExec); |
1630 #else // V8_INTERPRETED_REGEXP | 1607 #else // V8_INTERPRETED_REGEXP |
1631 | 1608 |
1632 // Stack frame on entry. | 1609 // Stack frame on entry. |
1633 // sp[0]: last_match_info (expected JSArray) | 1610 // sp[0]: last_match_info (expected JSArray) |
(...skipping 4129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5763 return_value_operand, NULL); | 5740 return_value_operand, NULL); |
5764 } | 5741 } |
5765 | 5742 |
5766 | 5743 |
5767 #undef __ | 5744 #undef __ |
5768 | 5745 |
5769 } // namespace internal | 5746 } // namespace internal |
5770 } // namespace v8 | 5747 } // namespace v8 |
5771 | 5748 |
5772 #endif // V8_TARGET_ARCH_MIPS | 5749 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |