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

Unified Diff: runtime/vm/intermediate_language_x64.cc

Issue 10466006: Implemented in ia32: branch, strict compare, instance setter, instanceof and assertassigneable with… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/intermediate_language_ia32.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/intermediate_language_x64.cc
===================================================================
--- runtime/vm/intermediate_language_x64.cc (revision 8254)
+++ runtime/vm/intermediate_language_x64.cc (working copy)
@@ -113,26 +113,24 @@
LocationSummary* BranchInstr::MakeLocationSummary() const {
const int kNumInputs = 1;
- const int kNumTemps = 1;
+ const int kNumTemps = 0;
LocationSummary* locs = new LocationSummary(kNumInputs, kNumTemps);
locs->set_in(0, Location::RequiresRegister());
- locs->set_temp(0, Location::RequiresRegister());
return locs;
}
void BranchInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
Register value = locs()->in(0).reg();
- Register temp = locs()->temp(0).reg();
- __ LoadObject(temp, Bool::ZoneHandle(Bool::True()));
- __ cmpq(value, temp);
+ __ CompareObject(value, Bool::ZoneHandle(Bool::True()));
if (compiler->IsNextBlock(false_successor())) {
- // If the next block is the false sucessor we will fall through to it if
+ // If the next block is the false successor we will fall through to it if
// comparison with true fails.
__ j(EQUAL, compiler->GetBlockLabel(true_successor()));
} else {
- // If the next block is the true sucessor we negate comparison and fall
+ ASSERT(compiler->IsNextBlock(true_successor()));
+ // If the next block is the true successor we negate comparison and fall
// through to it.
__ j(NOT_EQUAL, compiler->GetBlockLabel(false_successor()));
}
@@ -249,6 +247,7 @@
if (kind() == Token::kEQ_STRICT) {
__ j(EQUAL, &load_true, Assembler::kNearJump);
} else {
+ ASSERT(kind() == Token::kNE_STRICT);
__ j(NOT_EQUAL, &load_true, Assembler::kNearJump);
}
__ LoadObject(result, bool_false);
@@ -571,13 +570,15 @@
__ pushq(value);
__ pushq(receiver);
__ pushq(value);
+ const intptr_t kArgumentCount = 2;
+ const intptr_t kCheckedArgumentCount = 1;
compiler->GenerateInstanceCall(cid(),
token_index(),
try_index(),
function_name,
- 2,
+ kArgumentCount,
Array::ZoneHandle(),
- 1);
+ kCheckedArgumentCount);
__ popq(result);
}
« no previous file with comments | « runtime/vm/intermediate_language_ia32.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698