OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
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 5138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5149 } | 5149 } |
5150 | 5150 |
5151 | 5151 |
5152 void ICCompareStub::GenerateMiss(MacroAssembler* masm) { | 5152 void ICCompareStub::GenerateMiss(MacroAssembler* masm) { |
5153 { | 5153 { |
5154 // Call the runtime system in a fresh internal frame. | 5154 // Call the runtime system in a fresh internal frame. |
5155 ExternalReference miss = | 5155 ExternalReference miss = |
5156 ExternalReference(IC_Utility(IC::kCompareIC_Miss), masm->isolate()); | 5156 ExternalReference(IC_Utility(IC::kCompareIC_Miss), masm->isolate()); |
5157 FrameScope scope(masm, StackFrame::INTERNAL); | 5157 FrameScope scope(masm, StackFrame::INTERNAL); |
5158 __ Push(a1, a0); | 5158 __ Push(a1, a0); |
5159 __ push(ra); | 5159 __ Push(ra, a1, a0); |
5160 __ Push(a1, a0); | |
5161 __ li(t0, Operand(Smi::FromInt(op_))); | 5160 __ li(t0, Operand(Smi::FromInt(op_))); |
5162 __ addiu(sp, sp, -kPointerSize); | 5161 __ addiu(sp, sp, -kPointerSize); |
5163 __ CallExternalReference(miss, 3, USE_DELAY_SLOT); | 5162 __ CallExternalReference(miss, 3, USE_DELAY_SLOT); |
5164 __ sw(t0, MemOperand(sp)); // In the delay slot. | 5163 __ sw(t0, MemOperand(sp)); // In the delay slot. |
5165 // Compute the entry point of the rewritten stub. | 5164 // Compute the entry point of the rewritten stub. |
5166 __ Addu(a2, v0, Operand(Code::kHeaderSize - kHeapObjectTag)); | 5165 __ Addu(a2, v0, Operand(Code::kHeaderSize - kHeapObjectTag)); |
5167 // Restore registers. | 5166 // Restore registers. |
5168 __ Pop(a1, a0, ra); | 5167 __ Pop(a1, a0, ra); |
5169 } | 5168 } |
5170 __ Jump(a2); | 5169 __ Jump(a2); |
(...skipping 1045 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6216 __ bind(&fast_elements_case); | 6215 __ bind(&fast_elements_case); |
6217 GenerateCase(masm, FAST_ELEMENTS); | 6216 GenerateCase(masm, FAST_ELEMENTS); |
6218 } | 6217 } |
6219 | 6218 |
6220 | 6219 |
6221 #undef __ | 6220 #undef __ |
6222 | 6221 |
6223 } } // namespace v8::internal | 6222 } } // namespace v8::internal |
6224 | 6223 |
6225 #endif // V8_TARGET_ARCH_MIPS | 6224 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |