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_ARM. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM. |
6 #if defined(TARGET_ARCH_ARM) | 6 #if defined(TARGET_ARCH_ARM) |
7 | 7 |
8 #include "vm/intermediate_language.h" | 8 #include "vm/intermediate_language.h" |
9 | 9 |
10 #include "vm/cpu.h" | 10 #include "vm/cpu.h" |
(...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
921 } else { | 921 } else { |
922 __ AddImmediate(R2, FP, kFirstLocalSlotFromFp * kWordSize); | 922 __ AddImmediate(R2, FP, kFirstLocalSlotFromFp * kWordSize); |
923 } | 923 } |
924 // Compute the effective address. When running under the simulator, | 924 // Compute the effective address. When running under the simulator, |
925 // this is a redirection address that forces the simulator to call | 925 // this is a redirection address that forces the simulator to call |
926 // into the runtime system. | 926 // into the runtime system. |
927 uword entry = reinterpret_cast<uword>(native_c_function()); | 927 uword entry = reinterpret_cast<uword>(native_c_function()); |
928 const intptr_t argc_tag = NativeArguments::ComputeArgcTag(function()); | 928 const intptr_t argc_tag = NativeArguments::ComputeArgcTag(function()); |
929 const bool is_leaf_call = | 929 const bool is_leaf_call = |
930 (argc_tag & NativeArguments::AutoSetupScopeMask()) == 0; | 930 (argc_tag & NativeArguments::AutoSetupScopeMask()) == 0; |
| 931 StubCode* stub_code = compiler->isolate()->stub_code(); |
931 const ExternalLabel* stub_entry; | 932 const ExternalLabel* stub_entry; |
932 if (is_bootstrap_native() || is_leaf_call) { | 933 if (is_bootstrap_native() || is_leaf_call) { |
933 stub_entry = &StubCode::CallBootstrapCFunctionLabel(); | 934 stub_entry = &stub_code->CallBootstrapCFunctionLabel(); |
934 #if defined(USING_SIMULATOR) | 935 #if defined(USING_SIMULATOR) |
935 entry = Simulator::RedirectExternalReference( | 936 entry = Simulator::RedirectExternalReference( |
936 entry, Simulator::kBootstrapNativeCall, function().NumParameters()); | 937 entry, Simulator::kBootstrapNativeCall, function().NumParameters()); |
937 #endif | 938 #endif |
938 } else { | 939 } else { |
939 // In the case of non bootstrap native methods the CallNativeCFunction | 940 // In the case of non bootstrap native methods the CallNativeCFunction |
940 // stub generates the redirection address when running under the simulator | 941 // stub generates the redirection address when running under the simulator |
941 // and hence we do not change 'entry' here. | 942 // and hence we do not change 'entry' here. |
942 stub_entry = &StubCode::CallNativeCFunctionLabel(); | 943 stub_entry = &stub_code->CallNativeCFunctionLabel(); |
943 #if defined(USING_SIMULATOR) | 944 #if defined(USING_SIMULATOR) |
944 if (!function().IsNativeAutoSetupScope()) { | 945 if (!function().IsNativeAutoSetupScope()) { |
945 entry = Simulator::RedirectExternalReference( | 946 entry = Simulator::RedirectExternalReference( |
946 entry, Simulator::kBootstrapNativeCall, function().NumParameters()); | 947 entry, Simulator::kBootstrapNativeCall, function().NumParameters()); |
947 } | 948 } |
948 #endif | 949 #endif |
949 } | 950 } |
950 __ LoadImmediate(R5, entry); | 951 __ LoadImmediate(R5, entry); |
951 __ LoadImmediate(R1, argc_tag); | 952 __ LoadImmediate(R1, argc_tag); |
952 compiler->GenerateCall(token_pos(), | 953 compiler->GenerateCall(token_pos(), |
(...skipping 958 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1911 } | 1912 } |
1912 | 1913 |
1913 | 1914 |
1914 class StoreInstanceFieldSlowPath : public SlowPathCode { | 1915 class StoreInstanceFieldSlowPath : public SlowPathCode { |
1915 public: | 1916 public: |
1916 StoreInstanceFieldSlowPath(StoreInstanceFieldInstr* instruction, | 1917 StoreInstanceFieldSlowPath(StoreInstanceFieldInstr* instruction, |
1917 const Class& cls) | 1918 const Class& cls) |
1918 : instruction_(instruction), cls_(cls) { } | 1919 : instruction_(instruction), cls_(cls) { } |
1919 | 1920 |
1920 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { | 1921 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { |
| 1922 Isolate* isolate = compiler->isolate(); |
| 1923 StubCode* stub_code = isolate->stub_code(); |
| 1924 |
1921 __ Comment("StoreInstanceFieldSlowPath"); | 1925 __ Comment("StoreInstanceFieldSlowPath"); |
1922 __ Bind(entry_label()); | 1926 __ Bind(entry_label()); |
1923 | 1927 |
1924 const Code& stub = | 1928 const Code& stub = |
1925 Code::Handle(StubCode::GetAllocationStubForClass(cls_)); | 1929 Code::Handle(isolate, stub_code->GetAllocationStubForClass(cls_)); |
1926 const ExternalLabel label(stub.EntryPoint()); | 1930 const ExternalLabel label(stub.EntryPoint()); |
1927 | 1931 |
1928 LocationSummary* locs = instruction_->locs(); | 1932 LocationSummary* locs = instruction_->locs(); |
1929 locs->live_registers()->Remove(locs->out(0)); | 1933 locs->live_registers()->Remove(locs->out(0)); |
1930 | 1934 |
1931 compiler->SaveLiveRegisters(locs); | 1935 compiler->SaveLiveRegisters(locs); |
1932 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. | 1936 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. |
1933 &label, | 1937 &label, |
1934 PcDescriptors::kOther, | 1938 PcDescriptors::kOther, |
1935 locs); | 1939 locs); |
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2371 kAllocateArrayRuntimeEntry, | 2375 kAllocateArrayRuntimeEntry, |
2372 2, | 2376 2, |
2373 locs()); | 2377 locs()); |
2374 __ Drop(2); | 2378 __ Drop(2); |
2375 __ Pop(kResultReg); | 2379 __ Pop(kResultReg); |
2376 __ Bind(&done); | 2380 __ Bind(&done); |
2377 return; | 2381 return; |
2378 } | 2382 } |
2379 } | 2383 } |
2380 | 2384 |
| 2385 StubCode* stub_code = compiler->isolate()->stub_code(); |
2381 compiler->GenerateCall(token_pos(), | 2386 compiler->GenerateCall(token_pos(), |
2382 &StubCode::AllocateArrayLabel(), | 2387 &stub_code->AllocateArrayLabel(), |
2383 PcDescriptors::kOther, | 2388 PcDescriptors::kOther, |
2384 locs()); | 2389 locs()); |
2385 ASSERT(locs()->out(0).reg() == kResultReg); | 2390 ASSERT(locs()->out(0).reg() == kResultReg); |
2386 } | 2391 } |
2387 | 2392 |
2388 | 2393 |
2389 class BoxDoubleSlowPath : public SlowPathCode { | 2394 class BoxDoubleSlowPath : public SlowPathCode { |
2390 public: | 2395 public: |
2391 explicit BoxDoubleSlowPath(Instruction* instruction) | 2396 explicit BoxDoubleSlowPath(Instruction* instruction) |
2392 : instruction_(instruction) { } | 2397 : instruction_(instruction) { } |
2393 | 2398 |
2394 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { | 2399 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { |
2395 __ Comment("BoxDoubleSlowPath"); | 2400 __ Comment("BoxDoubleSlowPath"); |
2396 __ Bind(entry_label()); | 2401 __ Bind(entry_label()); |
| 2402 Isolate* isolate = compiler->isolate(); |
| 2403 StubCode* stub_code = isolate->stub_code(); |
2397 const Class& double_class = compiler->double_class(); | 2404 const Class& double_class = compiler->double_class(); |
2398 const Code& stub = | 2405 const Code& stub = |
2399 Code::Handle(StubCode::GetAllocationStubForClass(double_class)); | 2406 Code::Handle(isolate, |
| 2407 stub_code->GetAllocationStubForClass(double_class)); |
2400 const ExternalLabel label(stub.EntryPoint()); | 2408 const ExternalLabel label(stub.EntryPoint()); |
2401 | 2409 |
2402 LocationSummary* locs = instruction_->locs(); | 2410 LocationSummary* locs = instruction_->locs(); |
2403 locs->live_registers()->Remove(locs->out(0)); | 2411 locs->live_registers()->Remove(locs->out(0)); |
2404 | 2412 |
2405 compiler->SaveLiveRegisters(locs); | 2413 compiler->SaveLiveRegisters(locs); |
2406 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. | 2414 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. |
2407 &label, | 2415 &label, |
2408 PcDescriptors::kOther, | 2416 PcDescriptors::kOther, |
2409 locs); | 2417 locs); |
2410 __ MoveRegister(locs->out(0).reg(), R0); | 2418 __ MoveRegister(locs->out(0).reg(), R0); |
2411 compiler->RestoreLiveRegisters(locs); | 2419 compiler->RestoreLiveRegisters(locs); |
2412 | 2420 |
2413 __ b(exit_label()); | 2421 __ b(exit_label()); |
2414 } | 2422 } |
2415 | 2423 |
2416 private: | 2424 private: |
2417 Instruction* instruction_; | 2425 Instruction* instruction_; |
2418 }; | 2426 }; |
2419 | 2427 |
2420 | 2428 |
2421 class BoxFloat32x4SlowPath : public SlowPathCode { | 2429 class BoxFloat32x4SlowPath : public SlowPathCode { |
2422 public: | 2430 public: |
2423 explicit BoxFloat32x4SlowPath(Instruction* instruction) | 2431 explicit BoxFloat32x4SlowPath(Instruction* instruction) |
2424 : instruction_(instruction) { } | 2432 : instruction_(instruction) { } |
2425 | 2433 |
2426 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { | 2434 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { |
2427 __ Comment("BoxFloat32x4SlowPath"); | 2435 __ Comment("BoxFloat32x4SlowPath"); |
2428 __ Bind(entry_label()); | 2436 __ Bind(entry_label()); |
| 2437 Isolate* isolate = compiler->isolate(); |
| 2438 StubCode* stub_code = isolate->stub_code(); |
2429 const Class& float32x4_class = compiler->float32x4_class(); | 2439 const Class& float32x4_class = compiler->float32x4_class(); |
2430 const Code& stub = | 2440 const Code& stub = |
2431 Code::Handle(StubCode::GetAllocationStubForClass(float32x4_class)); | 2441 Code::Handle(isolate, |
| 2442 stub_code->GetAllocationStubForClass(float32x4_class)); |
2432 const ExternalLabel label(stub.EntryPoint()); | 2443 const ExternalLabel label(stub.EntryPoint()); |
2433 | 2444 |
2434 LocationSummary* locs = instruction_->locs(); | 2445 LocationSummary* locs = instruction_->locs(); |
2435 locs->live_registers()->Remove(locs->out(0)); | 2446 locs->live_registers()->Remove(locs->out(0)); |
2436 | 2447 |
2437 compiler->SaveLiveRegisters(locs); | 2448 compiler->SaveLiveRegisters(locs); |
2438 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. | 2449 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. |
2439 &label, | 2450 &label, |
2440 PcDescriptors::kOther, | 2451 PcDescriptors::kOther, |
2441 locs); | 2452 locs); |
2442 __ mov(locs->out(0).reg(), Operand(R0)); | 2453 __ mov(locs->out(0).reg(), Operand(R0)); |
2443 compiler->RestoreLiveRegisters(locs); | 2454 compiler->RestoreLiveRegisters(locs); |
2444 | 2455 |
2445 __ b(exit_label()); | 2456 __ b(exit_label()); |
2446 } | 2457 } |
2447 | 2458 |
2448 private: | 2459 private: |
2449 Instruction* instruction_; | 2460 Instruction* instruction_; |
2450 }; | 2461 }; |
2451 | 2462 |
2452 | 2463 |
2453 class BoxFloat64x2SlowPath : public SlowPathCode { | 2464 class BoxFloat64x2SlowPath : public SlowPathCode { |
2454 public: | 2465 public: |
2455 explicit BoxFloat64x2SlowPath(Instruction* instruction) | 2466 explicit BoxFloat64x2SlowPath(Instruction* instruction) |
2456 : instruction_(instruction) { } | 2467 : instruction_(instruction) { } |
2457 | 2468 |
2458 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { | 2469 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { |
2459 __ Comment("BoxFloat64x2SlowPath"); | 2470 __ Comment("BoxFloat64x2SlowPath"); |
2460 __ Bind(entry_label()); | 2471 __ Bind(entry_label()); |
| 2472 Isolate* isolate = compiler->isolate(); |
| 2473 StubCode* stub_code = isolate->stub_code(); |
2461 const Class& float64x2_class = compiler->float64x2_class(); | 2474 const Class& float64x2_class = compiler->float64x2_class(); |
2462 const Code& stub = | 2475 const Code& stub = |
2463 Code::Handle(StubCode::GetAllocationStubForClass(float64x2_class)); | 2476 Code::Handle(isolate, |
| 2477 stub_code->GetAllocationStubForClass(float64x2_class)); |
2464 const ExternalLabel label(stub.EntryPoint()); | 2478 const ExternalLabel label(stub.EntryPoint()); |
2465 | 2479 |
2466 LocationSummary* locs = instruction_->locs(); | 2480 LocationSummary* locs = instruction_->locs(); |
2467 locs->live_registers()->Remove(locs->out(0)); | 2481 locs->live_registers()->Remove(locs->out(0)); |
2468 | 2482 |
2469 compiler->SaveLiveRegisters(locs); | 2483 compiler->SaveLiveRegisters(locs); |
2470 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. | 2484 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. |
2471 &label, | 2485 &label, |
2472 PcDescriptors::kOther, | 2486 PcDescriptors::kOther, |
2473 locs); | 2487 locs); |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2744 locs->set_out(0, Location::RegisterLocation(R0)); | 2758 locs->set_out(0, Location::RegisterLocation(R0)); |
2745 return locs; | 2759 return locs; |
2746 } | 2760 } |
2747 | 2761 |
2748 | 2762 |
2749 void AllocateContextInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2763 void AllocateContextInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
2750 ASSERT(locs()->temp(0).reg() == R1); | 2764 ASSERT(locs()->temp(0).reg() == R1); |
2751 ASSERT(locs()->out(0).reg() == R0); | 2765 ASSERT(locs()->out(0).reg() == R0); |
2752 | 2766 |
2753 __ LoadImmediate(R1, num_context_variables()); | 2767 __ LoadImmediate(R1, num_context_variables()); |
2754 const ExternalLabel label(StubCode::AllocateContextEntryPoint()); | 2768 StubCode* stub_code = compiler->isolate()->stub_code(); |
| 2769 const ExternalLabel label(stub_code->AllocateContextEntryPoint()); |
2755 compiler->GenerateCall(token_pos(), | 2770 compiler->GenerateCall(token_pos(), |
2756 &label, | 2771 &label, |
2757 PcDescriptors::kOther, | 2772 PcDescriptors::kOther, |
2758 locs()); | 2773 locs()); |
2759 } | 2774 } |
2760 | 2775 |
2761 | 2776 |
2762 LocationSummary* CloneContextInstr::MakeLocationSummary(Isolate* isolate, | 2777 LocationSummary* CloneContextInstr::MakeLocationSummary(Isolate* isolate, |
2763 bool opt) const { | 2778 bool opt) const { |
2764 const intptr_t kNumInputs = 1; | 2779 const intptr_t kNumInputs = 1; |
(...skipping 922 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3687 | 3702 |
3688 | 3703 |
3689 class BoxInt32x4SlowPath : public SlowPathCode { | 3704 class BoxInt32x4SlowPath : public SlowPathCode { |
3690 public: | 3705 public: |
3691 explicit BoxInt32x4SlowPath(BoxInt32x4Instr* instruction) | 3706 explicit BoxInt32x4SlowPath(BoxInt32x4Instr* instruction) |
3692 : instruction_(instruction) { } | 3707 : instruction_(instruction) { } |
3693 | 3708 |
3694 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { | 3709 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { |
3695 __ Comment("BoxInt32x4SlowPath"); | 3710 __ Comment("BoxInt32x4SlowPath"); |
3696 __ Bind(entry_label()); | 3711 __ Bind(entry_label()); |
| 3712 Isolate* isolate = compiler->isolate(); |
| 3713 StubCode* stub_code = isolate->stub_code(); |
3697 const Class& int32x4_class = compiler->int32x4_class(); | 3714 const Class& int32x4_class = compiler->int32x4_class(); |
3698 const Code& stub = | 3715 const Code& stub = |
3699 Code::Handle(StubCode::GetAllocationStubForClass(int32x4_class)); | 3716 Code::Handle(isolate, |
| 3717 stub_code->GetAllocationStubForClass(int32x4_class)); |
3700 const ExternalLabel label(stub.EntryPoint()); | 3718 const ExternalLabel label(stub.EntryPoint()); |
3701 | 3719 |
3702 LocationSummary* locs = instruction_->locs(); | 3720 LocationSummary* locs = instruction_->locs(); |
3703 locs->live_registers()->Remove(locs->out(0)); | 3721 locs->live_registers()->Remove(locs->out(0)); |
3704 | 3722 |
3705 compiler->SaveLiveRegisters(locs); | 3723 compiler->SaveLiveRegisters(locs); |
3706 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. | 3724 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. |
3707 &label, | 3725 &label, |
3708 PcDescriptors::kOther, | 3726 PcDescriptors::kOther, |
3709 locs); | 3727 locs); |
(...skipping 2196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5906 | 5924 |
5907 | 5925 |
5908 class BoxIntegerSlowPath : public SlowPathCode { | 5926 class BoxIntegerSlowPath : public SlowPathCode { |
5909 public: | 5927 public: |
5910 explicit BoxIntegerSlowPath(BoxIntegerInstr* instruction) | 5928 explicit BoxIntegerSlowPath(BoxIntegerInstr* instruction) |
5911 : instruction_(instruction) { } | 5929 : instruction_(instruction) { } |
5912 | 5930 |
5913 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { | 5931 virtual void EmitNativeCode(FlowGraphCompiler* compiler) { |
5914 __ Comment("BoxIntegerSlowPath"); | 5932 __ Comment("BoxIntegerSlowPath"); |
5915 __ Bind(entry_label()); | 5933 __ Bind(entry_label()); |
| 5934 Isolate* isolate = compiler->isolate(); |
| 5935 StubCode* stub_code = isolate->stub_code(); |
5916 const Class& mint_class = | 5936 const Class& mint_class = |
5917 Class::ZoneHandle(Isolate::Current()->object_store()->mint_class()); | 5937 Class::ZoneHandle(isolate->object_store()->mint_class()); |
5918 const Code& stub = | 5938 const Code& stub = |
5919 Code::Handle(StubCode::GetAllocationStubForClass(mint_class)); | 5939 Code::Handle(isolate, stub_code->GetAllocationStubForClass(mint_class)); |
5920 const ExternalLabel label(stub.EntryPoint()); | 5940 const ExternalLabel label(stub.EntryPoint()); |
5921 | 5941 |
5922 LocationSummary* locs = instruction_->locs(); | 5942 LocationSummary* locs = instruction_->locs(); |
5923 locs->live_registers()->Remove(locs->out(0)); | 5943 locs->live_registers()->Remove(locs->out(0)); |
5924 | 5944 |
5925 compiler->SaveLiveRegisters(locs); | 5945 compiler->SaveLiveRegisters(locs); |
5926 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. | 5946 compiler->GenerateCall(Scanner::kNoSourcePos, // No token position. |
5927 &label, | 5947 &label, |
5928 PcDescriptors::kOther, | 5948 PcDescriptors::kOther, |
5929 locs); | 5949 locs); |
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6410 } | 6430 } |
6411 | 6431 |
6412 | 6432 |
6413 LocationSummary* AllocateObjectInstr::MakeLocationSummary(Isolate* isolate, | 6433 LocationSummary* AllocateObjectInstr::MakeLocationSummary(Isolate* isolate, |
6414 bool opt) const { | 6434 bool opt) const { |
6415 return MakeCallSummary(); | 6435 return MakeCallSummary(); |
6416 } | 6436 } |
6417 | 6437 |
6418 | 6438 |
6419 void AllocateObjectInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 6439 void AllocateObjectInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
6420 const Code& stub = Code::Handle(StubCode::GetAllocationStubForClass(cls())); | 6440 Isolate* isolate = compiler->isolate(); |
| 6441 StubCode* stub_code = isolate->stub_code(); |
| 6442 const Code& stub = Code::Handle(isolate, |
| 6443 stub_code->GetAllocationStubForClass(cls())); |
6421 const ExternalLabel label(stub.EntryPoint()); | 6444 const ExternalLabel label(stub.EntryPoint()); |
6422 compiler->GenerateCall(token_pos(), | 6445 compiler->GenerateCall(token_pos(), |
6423 &label, | 6446 &label, |
6424 PcDescriptors::kOther, | 6447 PcDescriptors::kOther, |
6425 locs()); | 6448 locs()); |
6426 __ Drop(ArgumentCount()); // Discard arguments. | 6449 __ Drop(ArgumentCount()); // Discard arguments. |
6427 } | 6450 } |
6428 | 6451 |
6429 | 6452 |
6430 void DebugStepCheckInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 6453 void DebugStepCheckInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
6431 ASSERT(!compiler->is_optimizing()); | 6454 ASSERT(!compiler->is_optimizing()); |
6432 const ExternalLabel label(StubCode::DebugStepCheckEntryPoint()); | 6455 StubCode* stub_code = compiler->isolate()->stub_code(); |
| 6456 const ExternalLabel label(stub_code->DebugStepCheckEntryPoint()); |
6433 __ LoadImmediate(R4, 0); | 6457 __ LoadImmediate(R4, 0); |
6434 __ LoadImmediate(R5, 0); | 6458 __ LoadImmediate(R5, 0); |
6435 compiler->GenerateCall(token_pos(), &label, stub_kind_, locs()); | 6459 compiler->GenerateCall(token_pos(), &label, stub_kind_, locs()); |
6436 #if defined(DEBUG) | 6460 #if defined(DEBUG) |
6437 __ LoadImmediate(R4, kInvalidObjectPointer); | 6461 __ LoadImmediate(R4, kInvalidObjectPointer); |
6438 __ LoadImmediate(R5, kInvalidObjectPointer); | 6462 __ LoadImmediate(R5, kInvalidObjectPointer); |
6439 #endif | 6463 #endif |
6440 } | 6464 } |
6441 | 6465 |
6442 } // namespace dart | 6466 } // namespace dart |
6443 | 6467 |
6444 #endif // defined TARGET_ARCH_ARM | 6468 #endif // defined TARGET_ARCH_ARM |
OLD | NEW |