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/flow_graph_compiler_ia32.cc

Issue 335443002: Setup R10/EDX to be valid Oops before stub calls (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 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/flow_graph_compiler_arm64.cc ('k') | runtime/vm/flow_graph_compiler_mips.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/flow_graph_compiler_ia32.cc
diff --git a/runtime/vm/flow_graph_compiler_ia32.cc b/runtime/vm/flow_graph_compiler_ia32.cc
index de52c6496a4365956caf07907c51509da512b77a..25d3fd95da2b963690161b3dd02dc09fe162f3f3 100644
--- a/runtime/vm/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/flow_graph_compiler_ia32.cc
@@ -1182,6 +1182,7 @@ void FlowGraphCompiler::EmitUnoptimizedStaticCall(
UNIMPLEMENTED();
}
ExternalLabel target_label(label_address);
+ __ movl(EDX, Immediate(0));
Florian Schneider 2014/06/20 12:48:54 This is bad for unoptimized code size.
Ivan Posva 2014/06/20 14:03:31 We were fully aware of the code size issue when we
__ LoadObject(ECX, ic_data);
GenerateDartCall(deopt_id,
token_pos,
@@ -1189,6 +1190,9 @@ void FlowGraphCompiler::EmitUnoptimizedStaticCall(
PcDescriptors::kUnoptStaticCall,
locs);
__ Drop(argument_count);
+#if defined(DEBUG)
+ __ movl(EDX, Immediate(kInvalidObjectPointer));
+#endif
}
@@ -1239,6 +1243,7 @@ void FlowGraphCompiler::EmitInstanceCall(ExternalLabel* target_label,
intptr_t token_pos,
LocationSummary* locs) {
ASSERT(Array::Handle(ic_data.arguments_descriptor()).Length() > 0);
+ __ movl(EDX, Immediate(0));
__ LoadObject(ECX, ic_data);
GenerateDartCall(deopt_id,
token_pos,
@@ -1246,6 +1251,9 @@ void FlowGraphCompiler::EmitInstanceCall(ExternalLabel* target_label,
PcDescriptors::kIcCall,
locs);
__ Drop(argument_count);
+#if defined(DEBUG)
+ __ movl(EDX, Immediate(kInvalidObjectPointer));
+#endif
}
@@ -1375,6 +1383,8 @@ void FlowGraphCompiler::EmitEqualityRegRegCompare(Register left,
if (is_optimizing()) {
__ call(&StubCode::OptimizedIdenticalWithNumberCheckLabel());
} else {
+ __ movl(EDX, Immediate(0));
+ __ movl(ECX, Immediate(0));
__ call(&StubCode::UnoptimizedIdenticalWithNumberCheckLabel());
}
if (token_pos != Scanner::kNoSourcePos) {
@@ -1382,6 +1392,13 @@ void FlowGraphCompiler::EmitEqualityRegRegCompare(Register left,
Isolate::kNoDeoptId,
token_pos);
}
+#if defined(DEBUG)
+ if (!is_optimizing()) {
+ // Do this *after* adding the pc descriptor!
+ __ movl(EDX, Immediate(kInvalidObjectPointer));
+ __ movl(ECX, Immediate(kInvalidObjectPointer));
+ }
+#endif
// Stub returns result in flags (result of a cmpl, we need ZF computed).
__ popl(right);
__ popl(left);
« no previous file with comments | « runtime/vm/flow_graph_compiler_arm64.cc ('k') | runtime/vm/flow_graph_compiler_mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698