Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(891)

Side by Side Diff: runtime/vm/intermediate_language_mips.cc

Issue 15741002: Use a uniform way to emit code for all instructions. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "lib/error.h" 10 #include "lib/error.h"
(...skipping 2362 matching lines...) Expand 10 before | Expand all | Expand 10 after
2373 instance_call()->ArgumentCount(), 2373 instance_call()->ArgumentCount(),
2374 instance_call()->argument_names(), 2374 instance_call()->argument_names(),
2375 deopt, 2375 deopt,
2376 deopt_id(), 2376 deopt_id(),
2377 instance_call()->token_pos(), 2377 instance_call()->token_pos(),
2378 locs()); 2378 locs());
2379 } 2379 }
2380 2380
2381 2381
2382 LocationSummary* BranchInstr::MakeLocationSummary() const { 2382 LocationSummary* BranchInstr::MakeLocationSummary() const {
2383 UNREACHABLE(); 2383 LocationSummary* summary = comparison()->locs();
2384 return NULL; 2384 // Share the location summary with the comparison. Branches don't produce
2385 // a result.
2386 summary->set_out(Location::NoLocation());
2387 return summary;
2385 } 2388 }
2386 2389
2387 2390
2388 void BranchInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 2391 void BranchInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
2389 __ TraceSimMsg("BranchInstr"); 2392 __ TraceSimMsg("BranchInstr");
2390 comparison()->EmitBranchCode(compiler, this); 2393 comparison()->EmitBranchCode(compiler, this);
2391 } 2394 }
2392 2395
2393 2396
2394 LocationSummary* CheckClassInstr::MakeLocationSummary() const { 2397 LocationSummary* CheckClassInstr::MakeLocationSummary() const {
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
2601 } 2604 }
2602 2605
2603 2606
2604 LocationSummary* GotoInstr::MakeLocationSummary() const { 2607 LocationSummary* GotoInstr::MakeLocationSummary() const {
2605 return new LocationSummary(0, 0, LocationSummary::kNoCall); 2608 return new LocationSummary(0, 0, LocationSummary::kNoCall);
2606 } 2609 }
2607 2610
2608 2611
2609 void GotoInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 2612 void GotoInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
2610 __ TraceSimMsg("GotoInstr"); 2613 __ TraceSimMsg("GotoInstr");
2611 if (!compiler->is_optimizing()) {
2612 // Add deoptimization descriptor for deoptimizing instructions that may
2613 // be inserted before this instruction.
2614 compiler->AddCurrentDescriptor(PcDescriptors::kDeopt,
2615 GetDeoptId(),
2616 0); // No token position.
2617 }
2618
2619 if (HasParallelMove()) { 2614 if (HasParallelMove()) {
2620 compiler->parallel_move_resolver()->EmitNativeCode(parallel_move()); 2615 compiler->parallel_move_resolver()->EmitNativeCode(parallel_move());
2621 } 2616 }
2622 2617
2623 // We can fall through if the successor is the next block in the list. 2618 // We can fall through if the successor is the next block in the list.
2624 // Otherwise, we need a jump. 2619 // Otherwise, we need a jump.
2625 if (!compiler->CanFallThroughTo(successor())) { 2620 if (!compiler->CanFallThroughTo(successor())) {
2626 __ b(compiler->GetJumpLabel(successor())); 2621 __ b(compiler->GetJumpLabel(successor()));
2627 } 2622 }
2628 } 2623 }
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
2893 compiler->GenerateCall(token_pos(), 2888 compiler->GenerateCall(token_pos(),
2894 &label, 2889 &label,
2895 PcDescriptors::kOther, 2890 PcDescriptors::kOther,
2896 locs()); 2891 locs());
2897 __ Drop(2); // Discard type arguments and receiver. 2892 __ Drop(2); // Discard type arguments and receiver.
2898 } 2893 }
2899 2894
2900 } // namespace dart 2895 } // namespace dart
2901 2896
2902 #endif // defined TARGET_ARCH_MIPS 2897 #endif // defined TARGET_ARCH_MIPS
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698