OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_MIPS. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_MIPS. |
6 #if defined(TARGET_ARCH_MIPS) | 6 #if defined(TARGET_ARCH_MIPS) |
7 | 7 |
8 #include "vm/intermediate_language.h" | 8 #include "vm/intermediate_language.h" |
9 | 9 |
10 #include "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" |
(...skipping 2228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2239 2, | 2239 2, |
2240 locs()); | 2240 locs()); |
2241 __ Drop(2); | 2241 __ Drop(2); |
2242 __ Pop(kResultReg); | 2242 __ Pop(kResultReg); |
2243 __ Bind(&done); | 2243 __ Bind(&done); |
2244 return; | 2244 return; |
2245 } | 2245 } |
2246 } | 2246 } |
2247 | 2247 |
2248 __ Bind(&slow_path); | 2248 __ Bind(&slow_path); |
| 2249 const Code& stub = Code::Handle(compiler->isolate(), |
| 2250 StubCode::AllocateArray_entry()->code()); |
| 2251 compiler->AddStubCallTarget(stub); |
2249 compiler->GenerateCall(token_pos(), | 2252 compiler->GenerateCall(token_pos(), |
2250 *StubCode::AllocateArray_entry(), | 2253 *StubCode::AllocateArray_entry(), |
2251 RawPcDescriptors::kOther, | 2254 RawPcDescriptors::kOther, |
2252 locs()); | 2255 locs()); |
2253 __ Bind(&done); | 2256 __ Bind(&done); |
2254 ASSERT(locs()->out(0).reg() == kResultReg); | 2257 ASSERT(locs()->out(0).reg() == kResultReg); |
2255 } | 2258 } |
2256 | 2259 |
2257 | 2260 |
2258 LocationSummary* LoadFieldInstr::MakeLocationSummary(Zone* zone, | 2261 LocationSummary* LoadFieldInstr::MakeLocationSummary(Zone* zone, |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2488 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { | 2491 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { |
2489 __ Comment("AllocateContextSlowPath"); | 2492 __ Comment("AllocateContextSlowPath"); |
2490 __ Bind(entry_label()); | 2493 __ Bind(entry_label()); |
2491 | 2494 |
2492 LocationSummary* locs = instruction_->locs(); | 2495 LocationSummary* locs = instruction_->locs(); |
2493 locs->live_registers()->Remove(locs->out(0)); | 2496 locs->live_registers()->Remove(locs->out(0)); |
2494 | 2497 |
2495 compiler->SaveLiveRegisters(locs); | 2498 compiler->SaveLiveRegisters(locs); |
2496 | 2499 |
2497 __ LoadImmediate(T1, instruction_->num_context_variables()); | 2500 __ LoadImmediate(T1, instruction_->num_context_variables()); |
| 2501 const Code& stub = Code::Handle(compiler->isolate(), |
| 2502 StubCode::AllocateContext_entry()->code()); |
| 2503 compiler->AddStubCallTarget(stub); |
2498 compiler->GenerateCall(instruction_->token_pos(), | 2504 compiler->GenerateCall(instruction_->token_pos(), |
2499 *StubCode::AllocateContext_entry(), | 2505 *StubCode::AllocateContext_entry(), |
2500 RawPcDescriptors::kOther, | 2506 RawPcDescriptors::kOther, |
2501 locs); | 2507 locs); |
2502 ASSERT(instruction_->locs()->out(0).reg() == V0); | 2508 ASSERT(instruction_->locs()->out(0).reg() == V0); |
2503 compiler->RestoreLiveRegisters(instruction_->locs()); | 2509 compiler->RestoreLiveRegisters(instruction_->locs()); |
2504 __ b(exit_label()); | 2510 __ b(exit_label()); |
2505 } | 2511 } |
2506 | 2512 |
2507 private: | 2513 private: |
(...skipping 3077 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5585 1, | 5591 1, |
5586 locs()); | 5592 locs()); |
5587 __ lw(result, Address(SP, 1 * kWordSize)); | 5593 __ lw(result, Address(SP, 1 * kWordSize)); |
5588 __ addiu(SP, SP, Immediate(2 * kWordSize)); | 5594 __ addiu(SP, SP, Immediate(2 * kWordSize)); |
5589 } | 5595 } |
5590 | 5596 |
5591 | 5597 |
5592 } // namespace dart | 5598 } // namespace dart |
5593 | 5599 |
5594 #endif // defined TARGET_ARCH_MIPS | 5600 #endif // defined TARGET_ARCH_MIPS |
OLD | NEW |