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

Unified Diff: runtime/vm/intermediate_language_x64.cc

Issue 10892037: Stop attaching try_index to individual instructions put it at block entry instead. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: address Srdjan's comment, make meaning of CatchTryIndex clear Created 8 years, 4 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_test.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
diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc
index 62db0564d927bb5d7ae8a11b8e11bae8a9c90b40..f30ffd14a90e68b2bcfc6d6ad8f3280bc5e9ecbf 100644
--- a/runtime/vm/intermediate_language_x64.cc
+++ b/runtime/vm/intermediate_language_x64.cc
@@ -87,7 +87,6 @@ void ReturnInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
__ pushq(temp);
compiler->GenerateCallRuntime(Isolate::kNoDeoptId,
0,
- CatchClauseNode::kInvalidTryIndex,
kTraceFunctionExitRuntimeEntry,
NULL);
__ popq(temp); // Remove argument.
@@ -125,8 +124,7 @@ void ReturnInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
__ nop(1);
compiler->AddCurrentDescriptor(PcDescriptors::kReturn,
deopt_id(),
- token_pos(),
- CatchClauseNode::kInvalidTryIndex);
+ token_pos());
}
@@ -222,7 +220,6 @@ void AssertBooleanComp::EmitNativeCode(FlowGraphCompiler* compiler) {
__ pushq(obj); // Push the source object.
compiler->GenerateCallRuntime(deopt_id(),
token_pos(),
- try_index(),
kConditionTypeErrorRuntimeEntry,
locs());
// We should never return here.
@@ -287,13 +284,11 @@ LocationSummary* EqualityCompareComp::MakeLocationSummary() const {
static void EmitEqualityAsInstanceCall(FlowGraphCompiler* compiler,
intptr_t deopt_id,
intptr_t token_pos,
- intptr_t try_index,
Token::Kind kind,
LocationSummary* locs) {
compiler->AddCurrentDescriptor(PcDescriptors::kDeopt,
deopt_id,
- token_pos,
- try_index);
+ token_pos);
const String& operator_name = String::ZoneHandle(Symbols::New("=="));
const int kNumberOfArguments = 2;
const Array& kNoArgumentNames = Array::Handle();
@@ -331,7 +326,6 @@ static void EmitEqualityAsInstanceCall(FlowGraphCompiler* compiler,
__ pushq(right);
compiler->GenerateInstanceCall(deopt_id,
token_pos,
- try_index,
operator_name,
kNumberOfArguments,
kNoArgumentNames,
@@ -357,8 +351,7 @@ static void EmitEqualityAsPolymorphicCall(FlowGraphCompiler* compiler,
BranchInstr* branch,
Token::Kind kind,
intptr_t deopt_id,
- intptr_t token_pos,
- intptr_t try_index) {
+ intptr_t token_pos) {
ASSERT((kind == Token::kEQ) || (kind == Token::kNE));
const ICData& ic_data = ICData::Handle(orig_ic_data.AsUnaryClassChecks());
ASSERT(ic_data.NumberOfChecks() > 0);
@@ -412,7 +405,6 @@ static void EmitEqualityAsPolymorphicCall(FlowGraphCompiler* compiler,
const Array& kNoArgumentNames = Array::Handle();
compiler->GenerateStaticCall(deopt_id,
token_pos,
- try_index,
target,
kNumberOfArguments,
kNoArgumentNames,
@@ -504,8 +496,7 @@ static void EmitGenericEqualityCompare(FlowGraphCompiler* compiler,
BranchInstr* branch,
const ICData& ic_data,
intptr_t deopt_id,
- intptr_t token_pos,
- intptr_t try_index) {
+ intptr_t token_pos) {
ASSERT((kind == Token::kEQ) || (kind == Token::kNE));
ASSERT(!ic_data.IsNull() && (ic_data.NumberOfChecks() > 0));
Register left = locs->in(0).reg();
@@ -537,7 +528,7 @@ static void EmitGenericEqualityCompare(FlowGraphCompiler* compiler,
__ pushq(left);
__ pushq(right);
EmitEqualityAsPolymorphicCall(compiler, ic_data, locs, branch, kind,
- deopt_id, token_pos, try_index);
+ deopt_id, token_pos);
__ Bind(&done);
}
@@ -642,7 +633,7 @@ void EqualityCompareComp::EmitNativeCode(FlowGraphCompiler* compiler) {
}
if (HasICData() && (ic_data()->NumberOfChecks() > 0)) {
EmitGenericEqualityCompare(compiler, locs(), kind(), kNoBranch, *ic_data(),
- deopt_id(), token_pos(), try_index());
+ deopt_id(), token_pos());
return;
}
Register left = locs()->in(0).reg();
@@ -652,7 +643,6 @@ void EqualityCompareComp::EmitNativeCode(FlowGraphCompiler* compiler) {
EmitEqualityAsInstanceCall(compiler,
deopt_id(),
token_pos(),
- try_index(),
kind(),
locs());
ASSERT(locs()->out().reg() == RAX);
@@ -681,7 +671,7 @@ void EqualityCompareComp::EmitBranchCode(FlowGraphCompiler* compiler,
}
if (HasICData() && (ic_data()->NumberOfChecks() > 0)) {
EmitGenericEqualityCompare(compiler, locs(), kind(), branch, *ic_data(),
- deopt_id(), token_pos(), try_index());
+ deopt_id(), token_pos());
return;
}
Register left = locs()->in(0).reg();
@@ -691,7 +681,6 @@ void EqualityCompareComp::EmitBranchCode(FlowGraphCompiler* compiler,
EmitEqualityAsInstanceCall(compiler,
deopt_id(),
token_pos(),
- try_index(),
Token::kEQ, // kNE reverse occurs at branch.
locs());
Condition branch_condition = (kind() == Token::kNE) ? NOT_EQUAL : EQUAL;
@@ -760,7 +749,6 @@ void RelationalOpComp::EmitNativeCode(FlowGraphCompiler* compiler) {
deopt, // Deoptimize target.
deopt_id(),
token_pos(),
- try_index(),
locs());
return;
}
@@ -768,13 +756,11 @@ void RelationalOpComp::EmitNativeCode(FlowGraphCompiler* compiler) {
String::ZoneHandle(Symbols::New(Token::Str(kind())));
compiler->AddCurrentDescriptor(PcDescriptors::kDeopt,
deopt_id(),
- token_pos(),
- try_index());
+ token_pos());
const intptr_t kNumArguments = 2;
const intptr_t kNumArgsChecked = 2; // Type-feedback.
compiler->GenerateInstanceCall(deopt_id(),
token_pos(),
- try_index(),
function_name,
kNumArguments,
Array::ZoneHandle(), // No optional arguments.
@@ -834,7 +820,6 @@ void NativeCallComp::EmitNativeCode(FlowGraphCompiler* compiler) {
__ movq(RBX, Immediate(reinterpret_cast<uword>(native_c_function())));
__ movq(R10, Immediate(arg_count));
compiler->GenerateCall(token_pos(),
- try_index(),
&StubCode::CallNativeCFunctionLabel(),
PcDescriptors::kOther,
locs());
@@ -1057,7 +1042,6 @@ void InstanceOfComp::EmitNativeCode(FlowGraphCompiler* compiler) {
compiler->GenerateInstanceOf(deopt_id(),
token_pos(),
- try_index(),
type(),
negate_result(),
locs());
@@ -1081,7 +1065,6 @@ void CreateArrayComp::EmitNativeCode(FlowGraphCompiler* compiler) {
ASSERT(locs()->in(0).reg() == RBX);
__ movq(R10, Immediate(Smi::RawValue(ArgumentCount())));
compiler->GenerateCall(token_pos(),
- try_index(),
&StubCode::AllocateArrayLabel(),
PcDescriptors::kOther,
locs());
@@ -1123,7 +1106,6 @@ void AllocateObjectWithBoundsCheckComp::EmitNativeCode(
__ pushq(instantiator_type_arguments);
compiler->GenerateCallRuntime(deopt_id(),
token_pos(),
- try_index(),
kAllocateObjectWithBoundsCheckRuntimeEntry,
locs());
// Pop instantiator type arguments, type arguments, and class.
@@ -1207,7 +1189,6 @@ void InstantiateTypeArgumentsComp::EmitNativeCode(
__ pushq(instantiator_reg); // Push instantiator type arguments.
compiler->GenerateCallRuntime(deopt_id(),
token_pos(),
- try_index(),
kInstantiateTypeArgumentsRuntimeEntry,
locs());
__ Drop(2); // Drop instantiator and uninstantiated type arguments.
@@ -1359,7 +1340,6 @@ void AllocateContextComp::EmitNativeCode(FlowGraphCompiler* compiler) {
const ExternalLabel label("alloc_context",
StubCode::AllocateContextEntryPoint());
compiler->GenerateCall(token_pos(),
- try_index(),
&label,
PcDescriptors::kOther,
locs());
@@ -1385,7 +1365,6 @@ void CloneContextComp::EmitNativeCode(FlowGraphCompiler* compiler) {
__ pushq(context_value);
compiler->GenerateCallRuntime(deopt_id(),
token_pos(),
- try_index(),
kCloneContextRuntimeEntry,
locs());
__ popq(result); // Remove argument.
@@ -1442,7 +1421,6 @@ class CheckStackOverflowSlowPath : public SlowPathCode {
compiler->SaveLiveRegisters(computation_->locs());
compiler->GenerateCallRuntime(computation_->deopt_id(),
computation_->token_pos(),
- computation_->try_index(),
kStackOverflowRuntimeEntry,
computation_->locs());
compiler->RestoreLiveRegisters(computation_->locs());
@@ -1632,7 +1610,6 @@ void BinarySmiOpComp::EmitNativeCode(FlowGraphCompiler* compiler) {
compiler->GenerateStaticCall(
instance_call()->deopt_id(),
instance_call()->token_pos(),
- instance_call()->try_index(),
target,
kArgumentCount,
Array::Handle(), // No argument names.
@@ -1737,7 +1714,6 @@ void BinaryMintOpComp::EmitNativeCode(FlowGraphCompiler* compiler) {
compiler->GenerateStaticCall(
instance_call()->deopt_id(),
instance_call()->token_pos(),
- instance_call()->try_index(),
target,
instance_call()->ArgumentCount(),
instance_call()->argument_names(),
@@ -1759,7 +1735,6 @@ void BinaryMintOpComp::EmitNativeCode(FlowGraphCompiler* compiler) {
compiler->GenerateStaticCall(
instance_call()->deopt_id(),
instance_call()->token_pos(),
- instance_call()->try_index(),
target,
instance_call()->ArgumentCount(),
instance_call()->argument_names(),
@@ -1787,7 +1762,6 @@ void BinaryDoubleOpComp::EmitNativeCode(FlowGraphCompiler* compiler) {
Code::Handle(StubCode::GetAllocationStubForClass(double_class));
const ExternalLabel label(double_class.ToCString(), stub.EntryPoint());
compiler->GenerateCall(instance_call()->token_pos(),
- instance_call()->try_index(),
&label,
PcDescriptors::kOther,
locs());
@@ -1880,7 +1854,6 @@ class BoxDoubleSlowPath : public SlowPathCode {
compiler->SaveLiveRegisters(locs);
compiler->GenerateCall(computation_->instance_call()->token_pos(),
- computation_->instance_call()->try_index(),
&label,
PcDescriptors::kOther,
locs);
@@ -2045,7 +2018,6 @@ void NumberNegateComp::EmitNativeCode(FlowGraphCompiler* compiler) {
const ExternalLabel label(double_class.ToCString(), stub.EntryPoint());
__ pushq(value);
compiler->GenerateCall(instance_call()->token_pos(),
- instance_call()->try_index(),
&label,
PcDescriptors::kOther,
instance_call()->locs());
@@ -2108,7 +2080,6 @@ void SmiToDoubleComp::EmitNativeCode(FlowGraphCompiler* compiler) {
// TODO(fschneider): Inline new-space allocation and move the call into
// deferred code.
compiler->GenerateCall(instance_call()->token_pos(),
- instance_call()->try_index(),
&label,
PcDescriptors::kOther,
locs());
@@ -2144,7 +2115,6 @@ void PolymorphicInstanceCallComp::EmitNativeCode(FlowGraphCompiler* compiler) {
const Function& target = Function::ZoneHandle(ic_data()->GetTargetAt(0));
compiler->GenerateStaticCall(instance_call()->deopt_id(),
instance_call()->token_pos(),
- instance_call()->try_index(),
target,
instance_call()->ArgumentCount(),
instance_call()->argument_names(),
@@ -2168,7 +2138,6 @@ void PolymorphicInstanceCallComp::EmitNativeCode(FlowGraphCompiler* compiler) {
deopt,
instance_call()->deopt_id(),
instance_call()->token_pos(),
- instance_call()->try_index(),
locs());
}
« no previous file with comments | « runtime/vm/intermediate_language_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698