Index: runtime/vm/intermediate_language.h |
diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h |
index 2217d5b3b5c746931cbf19ee9758a28d10c1823a..489a32ab4483e1c4fecd40552b26c12f839abd49 100644 |
--- a/runtime/vm/intermediate_language.h |
+++ b/runtime/vm/intermediate_language.h |
@@ -531,14 +531,12 @@ class MaterializeComp : public TemplateComputation<0> { |
class AssertAssignableComp : public TemplateComputation<3> { |
public: |
AssertAssignableComp(intptr_t token_pos, |
- intptr_t try_index, |
Value* value, |
Value* instantiator, |
Value* instantiator_type_arguments, |
const AbstractType& dst_type, |
const String& dst_name) |
: token_pos_(token_pos), |
- try_index_(try_index), |
dst_type_(dst_type), |
dst_name_(dst_name), |
is_eliminated_(false) { |
@@ -559,7 +557,6 @@ class AssertAssignableComp : public TemplateComputation<3> { |
Value* instantiator_type_arguments() const { return inputs_[2]; } |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
const AbstractType& dst_type() const { return dst_type_; } |
const String& dst_name() const { return dst_name_; } |
@@ -578,7 +575,6 @@ class AssertAssignableComp : public TemplateComputation<3> { |
private: |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
const AbstractType& dst_type_; |
const String& dst_name_; |
bool is_eliminated_; |
@@ -590,10 +586,8 @@ class AssertAssignableComp : public TemplateComputation<3> { |
class AssertBooleanComp : public TemplateComputation<1> { |
public: |
AssertBooleanComp(intptr_t token_pos, |
- intptr_t try_index, |
Value* value) |
: token_pos_(token_pos), |
- try_index_(try_index), |
is_eliminated_(false) { |
ASSERT(value != NULL); |
inputs_[0] = value; |
@@ -602,7 +596,6 @@ class AssertBooleanComp : public TemplateComputation<1> { |
DECLARE_COMPUTATION(AssertBoolean) |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
Value* value() const { return inputs_[0]; } |
bool is_eliminated() const { |
@@ -620,7 +613,6 @@ class AssertBooleanComp : public TemplateComputation<1> { |
private: |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
bool is_eliminated_; |
DISALLOW_COPY_AND_ASSIGN(AssertBooleanComp); |
@@ -665,17 +657,14 @@ class StoreContextComp : public TemplateComputation<1> { |
class ClosureCallComp : public TemplateComputation<0> { |
public: |
ClosureCallComp(ClosureCallNode* node, |
- intptr_t try_index, |
ZoneGrowableArray<PushArgumentInstr*>* arguments) |
: ast_node_(*node), |
- try_index_(try_index), |
arguments_(arguments) { } |
DECLARE_CALL_COMPUTATION(ClosureCall) |
const Array& argument_names() const { return ast_node_.arguments()->names(); } |
intptr_t token_pos() const { return ast_node_.token_pos(); } |
- intptr_t try_index() const { return try_index_; } |
virtual intptr_t ArgumentCount() const { return arguments_->length(); } |
PushArgumentInstr* ArgumentAt(intptr_t index) const { |
@@ -689,7 +678,6 @@ class ClosureCallComp : public TemplateComputation<0> { |
private: |
const ClosureCallNode& ast_node_; |
- const intptr_t try_index_; |
ZoneGrowableArray<PushArgumentInstr*>* arguments_; |
DISALLOW_COPY_AND_ASSIGN(ClosureCallComp); |
@@ -699,14 +687,12 @@ class ClosureCallComp : public TemplateComputation<0> { |
class InstanceCallComp : public TemplateComputation<0> { |
public: |
InstanceCallComp(intptr_t token_pos, |
- intptr_t try_index, |
const String& function_name, |
Token::Kind token_kind, |
ZoneGrowableArray<PushArgumentInstr*>* arguments, |
const Array& argument_names, |
intptr_t checked_argument_count) |
: token_pos_(token_pos), |
- try_index_(try_index), |
function_name_(function_name), |
token_kind_(token_kind), |
arguments_(arguments), |
@@ -726,7 +712,6 @@ class InstanceCallComp : public TemplateComputation<0> { |
DECLARE_CALL_COMPUTATION(InstanceCall) |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
const String& function_name() const { return function_name_; } |
Token::Kind token_kind() const { return token_kind_; } |
virtual intptr_t ArgumentCount() const { return arguments_->length(); } |
@@ -743,7 +728,6 @@ class InstanceCallComp : public TemplateComputation<0> { |
private: |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
const String& function_name_; |
const Token::Kind token_kind_; // Binary op, unary op, kGET or kILLEGAL. |
ZoneGrowableArray<PushArgumentInstr*>* const arguments_; |
@@ -832,13 +816,11 @@ class StrictCompareComp : public ComparisonComp { |
class EqualityCompareComp : public ComparisonComp { |
public: |
EqualityCompareComp(intptr_t token_pos, |
- intptr_t try_index, |
Token::Kind kind, |
Value* left, |
Value* right) |
: ComparisonComp(kind, left, right), |
token_pos_(token_pos), |
- try_index_(try_index), |
receiver_class_id_(kIllegalCid) { |
ASSERT((kind == Token::kEQ) || (kind == Token::kNE)); |
} |
@@ -846,7 +828,6 @@ class EqualityCompareComp : public ComparisonComp { |
DECLARE_COMPUTATION(EqualityCompare) |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
// Receiver class id is computed from collected ICData. |
void set_receiver_class_id(intptr_t value) { receiver_class_id_ = value; } |
@@ -862,7 +843,6 @@ class EqualityCompareComp : public ComparisonComp { |
private: |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
intptr_t receiver_class_id_; // Set by optimizer. |
DISALLOW_COPY_AND_ASSIGN(EqualityCompareComp); |
@@ -872,13 +852,11 @@ class EqualityCompareComp : public ComparisonComp { |
class RelationalOpComp : public ComparisonComp { |
public: |
RelationalOpComp(intptr_t token_pos, |
- intptr_t try_index, |
Token::Kind kind, |
Value* left, |
Value* right) |
: ComparisonComp(kind, left, right), |
token_pos_(token_pos), |
- try_index_(try_index), |
operands_class_id_(kIllegalCid) { |
ASSERT(Token::IsRelationalOperator(kind)); |
} |
@@ -886,7 +864,6 @@ class RelationalOpComp : public ComparisonComp { |
DECLARE_COMPUTATION(RelationalOp) |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
// TODO(srdjan): instead of class-id pass an enum that can differentiate |
// between boxed and unboxed doubles and integers. |
@@ -906,7 +883,6 @@ class RelationalOpComp : public ComparisonComp { |
private: |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
intptr_t operands_class_id_; // class id of both operands. |
DISALLOW_COPY_AND_ASSIGN(RelationalOpComp); |
@@ -916,12 +892,10 @@ class RelationalOpComp : public ComparisonComp { |
class StaticCallComp : public TemplateComputation<0> { |
public: |
StaticCallComp(intptr_t token_pos, |
- intptr_t try_index, |
const Function& function, |
const Array& argument_names, |
ZoneGrowableArray<PushArgumentInstr*>* arguments) |
: token_pos_(token_pos), |
- try_index_(try_index), |
function_(function), |
argument_names_(argument_names), |
arguments_(arguments), |
@@ -936,7 +910,6 @@ class StaticCallComp : public TemplateComputation<0> { |
const Function& function() const { return function_; } |
const Array& argument_names() const { return argument_names_; } |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
virtual intptr_t ArgumentCount() const { return arguments_->length(); } |
PushArgumentInstr* ArgumentAt(intptr_t index) const { |
@@ -953,7 +926,6 @@ class StaticCallComp : public TemplateComputation<0> { |
private: |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
const Function& function_; |
const Array& argument_names_; |
ZoneGrowableArray<PushArgumentInstr*>* arguments_; |
@@ -1022,13 +994,12 @@ class StoreLocalComp : public TemplateComputation<1> { |
class NativeCallComp : public TemplateComputation<0> { |
public: |
- NativeCallComp(NativeBodyNode* node, intptr_t try_index) |
- : ast_node_(*node), try_index_(try_index) {} |
+ explicit NativeCallComp(NativeBodyNode* node) |
+ : ast_node_(*node) {} |
DECLARE_COMPUTATION(NativeCall) |
intptr_t token_pos() const { return ast_node_.token_pos(); } |
- intptr_t try_index() const { return try_index_; } |
const String& native_name() const { |
return ast_node_.native_c_function_name(); |
@@ -1055,7 +1026,6 @@ class NativeCallComp : public TemplateComputation<0> { |
private: |
const NativeBodyNode& ast_node_; |
- const intptr_t try_index_; |
DISALLOW_COPY_AND_ASSIGN(NativeCallComp); |
}; |
@@ -1247,14 +1217,12 @@ class BooleanNegateComp : public TemplateComputation<1> { |
class InstanceOfComp : public TemplateComputation<3> { |
public: |
InstanceOfComp(intptr_t token_pos, |
- intptr_t try_index, |
Value* value, |
Value* instantiator, |
Value* instantiator_type_arguments, |
const AbstractType& type, |
bool negate_result) |
: token_pos_(token_pos), |
- try_index_(try_index), |
type_(type), |
negate_result_(negate_result) { |
ASSERT(value != NULL); |
@@ -1275,7 +1243,6 @@ class InstanceOfComp : public TemplateComputation<3> { |
bool negate_result() const { return negate_result_; } |
const AbstractType& type() const { return type_; } |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
virtual void PrintOperandsTo(BufferFormatter* f) const; |
@@ -1284,7 +1251,6 @@ class InstanceOfComp : public TemplateComputation<3> { |
private: |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
Value* value_; |
Value* instantiator_; |
Value* type_arguments_; |
@@ -1298,9 +1264,8 @@ class InstanceOfComp : public TemplateComputation<3> { |
class AllocateObjectComp : public TemplateComputation<0> { |
public: |
AllocateObjectComp(ConstructorCallNode* node, |
- intptr_t try_index, |
ZoneGrowableArray<PushArgumentInstr*>* arguments) |
- : ast_node_(*node), try_index_(try_index), arguments_(arguments) { |
+ : ast_node_(*node), arguments_(arguments) { |
// Either no arguments or one type-argument and one instantiator. |
ASSERT(arguments->is_empty() || (arguments->length() == 2)); |
} |
@@ -1314,7 +1279,6 @@ class AllocateObjectComp : public TemplateComputation<0> { |
const Function& constructor() const { return ast_node_.constructor(); } |
intptr_t token_pos() const { return ast_node_.token_pos(); } |
- intptr_t try_index() const { return try_index_; } |
virtual void PrintOperandsTo(BufferFormatter* f) const; |
@@ -1323,7 +1287,6 @@ class AllocateObjectComp : public TemplateComputation<0> { |
private: |
const ConstructorCallNode& ast_node_; |
- const intptr_t try_index_; |
ZoneGrowableArray<PushArgumentInstr*>* const arguments_; |
DISALLOW_COPY_AND_ASSIGN(AllocateObjectComp); |
@@ -1333,10 +1296,9 @@ class AllocateObjectComp : public TemplateComputation<0> { |
class AllocateObjectWithBoundsCheckComp : public TemplateComputation<2> { |
public: |
AllocateObjectWithBoundsCheckComp(ConstructorCallNode* node, |
- intptr_t try_index, |
Value* type_arguments, |
Value* instantiator) |
- : ast_node_(*node), try_index_(try_index) { |
+ : ast_node_(*node) { |
ASSERT(type_arguments != NULL); |
ASSERT(instantiator != NULL); |
inputs_[0] = type_arguments; |
@@ -1347,7 +1309,6 @@ class AllocateObjectWithBoundsCheckComp : public TemplateComputation<2> { |
const Function& constructor() const { return ast_node_.constructor(); } |
intptr_t token_pos() const { return ast_node_.token_pos(); } |
- intptr_t try_index() const { return try_index_; } |
virtual void PrintOperandsTo(BufferFormatter* f) const; |
@@ -1356,7 +1317,6 @@ class AllocateObjectWithBoundsCheckComp : public TemplateComputation<2> { |
private: |
const ConstructorCallNode& ast_node_; |
- const intptr_t try_index_; |
DISALLOW_COPY_AND_ASSIGN(AllocateObjectWithBoundsCheckComp); |
}; |
@@ -1365,12 +1325,10 @@ class AllocateObjectWithBoundsCheckComp : public TemplateComputation<2> { |
class CreateArrayComp : public TemplateComputation<1> { |
public: |
CreateArrayComp(intptr_t token_pos, |
- intptr_t try_index, |
ZoneGrowableArray<PushArgumentInstr*>* arguments, |
const AbstractType& type, |
Value* element_type) |
: token_pos_(token_pos), |
- try_index_(try_index), |
arguments_(arguments), |
type_(type) { |
#if defined(DEBUG) |
@@ -1390,7 +1348,6 @@ class CreateArrayComp : public TemplateComputation<1> { |
virtual intptr_t ArgumentCount() const { return arguments_->length(); } |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
PushArgumentInstr* ArgumentAt(intptr_t i) const { return (*arguments_)[i]; } |
const AbstractType& type() const { return type_; } |
Value* element_type() const { return inputs_[0]; } |
@@ -1402,7 +1359,6 @@ class CreateArrayComp : public TemplateComputation<1> { |
private: |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
ZoneGrowableArray<PushArgumentInstr*>* const arguments_; |
const AbstractType& type_; |
@@ -1413,16 +1369,13 @@ class CreateArrayComp : public TemplateComputation<1> { |
class CreateClosureComp : public TemplateComputation<0> { |
public: |
CreateClosureComp(ClosureNode* node, |
- intptr_t try_index, |
ZoneGrowableArray<PushArgumentInstr*>* arguments) |
: ast_node_(*node), |
- try_index_(try_index), |
arguments_(arguments) { } |
DECLARE_CALL_COMPUTATION(CreateClosure) |
intptr_t token_pos() const { return ast_node_.token_pos(); } |
- intptr_t try_index() const { return try_index_; } |
const Function& function() const { return ast_node_.function(); } |
virtual intptr_t ArgumentCount() const { return arguments_->length(); } |
@@ -1437,7 +1390,6 @@ class CreateClosureComp : public TemplateComputation<0> { |
private: |
const ClosureNode& ast_node_; |
- const intptr_t try_index_; |
ZoneGrowableArray<PushArgumentInstr*>* arguments_; |
DISALLOW_COPY_AND_ASSIGN(CreateClosureComp); |
@@ -1520,11 +1472,9 @@ class StoreVMFieldComp : public TemplateComputation<2> { |
class InstantiateTypeArgumentsComp : public TemplateComputation<1> { |
public: |
InstantiateTypeArgumentsComp(intptr_t token_pos, |
- intptr_t try_index, |
const AbstractTypeArguments& type_arguments, |
Value* instantiator) |
: token_pos_(token_pos), |
- try_index_(try_index), |
type_arguments_(type_arguments) { |
ASSERT(type_arguments.IsZoneHandle()); |
ASSERT(instantiator != NULL); |
@@ -1538,7 +1488,6 @@ class InstantiateTypeArgumentsComp : public TemplateComputation<1> { |
return type_arguments_; |
} |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
virtual void PrintOperandsTo(BufferFormatter* f) const; |
@@ -1547,7 +1496,6 @@ class InstantiateTypeArgumentsComp : public TemplateComputation<1> { |
private: |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
const AbstractTypeArguments& type_arguments_; |
DISALLOW_COPY_AND_ASSIGN(InstantiateTypeArgumentsComp); |
@@ -1558,11 +1506,9 @@ class ExtractConstructorTypeArgumentsComp : public TemplateComputation<1> { |
public: |
ExtractConstructorTypeArgumentsComp( |
intptr_t token_pos, |
- intptr_t try_index, |
const AbstractTypeArguments& type_arguments, |
Value* instantiator) |
: token_pos_(token_pos), |
- try_index_(try_index), |
type_arguments_(type_arguments) { |
ASSERT(instantiator != NULL); |
inputs_[0] = instantiator; |
@@ -1575,7 +1521,6 @@ class ExtractConstructorTypeArgumentsComp : public TemplateComputation<1> { |
return type_arguments_; |
} |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
virtual void PrintOperandsTo(BufferFormatter* f) const; |
@@ -1584,7 +1529,6 @@ class ExtractConstructorTypeArgumentsComp : public TemplateComputation<1> { |
private: |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
const AbstractTypeArguments& type_arguments_; |
DISALLOW_COPY_AND_ASSIGN(ExtractConstructorTypeArgumentsComp); |
@@ -1622,16 +1566,13 @@ class ExtractConstructorInstantiatorComp : public TemplateComputation<1> { |
class AllocateContextComp : public TemplateComputation<0> { |
public: |
AllocateContextComp(intptr_t token_pos, |
- intptr_t try_index, |
intptr_t num_context_variables) |
: token_pos_(token_pos), |
- try_index_(try_index), |
num_context_variables_(num_context_variables) {} |
DECLARE_COMPUTATION(AllocateContext); |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
intptr_t num_context_variables() const { return num_context_variables_; } |
virtual void PrintOperandsTo(BufferFormatter* f) const; |
@@ -1641,7 +1582,6 @@ class AllocateContextComp : public TemplateComputation<0> { |
private: |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
const intptr_t num_context_variables_; |
DISALLOW_COPY_AND_ASSIGN(AllocateContextComp); |
@@ -1670,16 +1610,13 @@ class ChainContextComp : public TemplateComputation<1> { |
class CloneContextComp : public TemplateComputation<1> { |
public: |
CloneContextComp(intptr_t token_pos, |
- intptr_t try_index, |
Value* context_value) |
- : token_pos_(token_pos), |
- try_index_(try_index) { |
+ : token_pos_(token_pos) { |
ASSERT(context_value != NULL); |
inputs_[0] = context_value; |
} |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
Value* context_value() const { return inputs_[0]; } |
DECLARE_COMPUTATION(CloneContext) |
@@ -1689,7 +1626,6 @@ class CloneContextComp : public TemplateComputation<1> { |
private: |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
DISALLOW_COPY_AND_ASSIGN(CloneContextComp); |
}; |
@@ -2001,12 +1937,10 @@ class NumberNegateComp : public TemplateComputation<1> { |
class CheckStackOverflowComp : public TemplateComputation<0> { |
public: |
- CheckStackOverflowComp(intptr_t token_pos, intptr_t try_index) |
- : token_pos_(token_pos), |
- try_index_(try_index) {} |
+ explicit CheckStackOverflowComp(intptr_t token_pos) |
+ : token_pos_(token_pos) {} |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
DECLARE_COMPUTATION(CheckStackOverflow) |
@@ -2015,7 +1949,6 @@ class CheckStackOverflowComp : public TemplateComputation<0> { |
private: |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
DISALLOW_COPY_AND_ASSIGN(CheckStackOverflowComp); |
}; |
@@ -2086,7 +2019,6 @@ class CheckClassComp : public TemplateComputation<1> { |
Value* value() const { return inputs_[0]; } |
intptr_t deopt_id() const { return original_->deopt_id(); } |
- intptr_t try_index() const { return original_->try_index(); } |
virtual Definition* TryReplace(BindInstr* instr) const; |
@@ -2121,7 +2053,6 @@ class CheckSmiComp : public TemplateComputation<1> { |
Value* value() const { return inputs_[0]; } |
intptr_t deopt_id() const { return original_->deopt_id(); } |
- intptr_t try_index() const { return original_->try_index(); } |
private: |
InstanceCallComp* original_; |
@@ -2158,7 +2089,6 @@ class CheckArrayBoundComp : public TemplateComputation<2> { |
intptr_t array_type() const { return array_type_; } |
intptr_t deopt_id() const { return original_->deopt_id(); } |
- intptr_t try_index() const { return original_->try_index(); } |
private: |
intptr_t array_type_; |
@@ -2575,9 +2505,12 @@ class BlockEntryInstr : public Instruction { |
virtual bool CanDeoptimize() const { return false; } |
+ intptr_t try_index() const { return try_index_; } |
+ |
protected: |
- BlockEntryInstr() |
- : preorder_number_(-1), |
+ explicit BlockEntryInstr(intptr_t try_index) |
+ : try_index_(try_index), |
+ preorder_number_(-1), |
postorder_number_(-1), |
block_id_(-1), |
dominator_(NULL), |
@@ -2586,6 +2519,7 @@ class BlockEntryInstr : public Instruction { |
parallel_move_(NULL) { } |
private: |
+ const intptr_t try_index_; |
intptr_t preorder_number_; |
intptr_t postorder_number_; |
// Starting and ending lifetime positions for this block. Used by |
@@ -2657,7 +2591,7 @@ class BackwardInstructionIterator : public ValueObject { |
class GraphEntryInstr : public BlockEntryInstr { |
public: |
explicit GraphEntryInstr(TargetEntryInstr* normal_entry) |
- : BlockEntryInstr(), |
+ : BlockEntryInstr(CatchClauseNode::kInvalidTryIndex), |
normal_entry_(normal_entry), |
catch_entries_(), |
start_env_(NULL), |
@@ -2709,8 +2643,8 @@ class GraphEntryInstr : public BlockEntryInstr { |
class JoinEntryInstr : public BlockEntryInstr { |
public: |
- JoinEntryInstr() |
- : BlockEntryInstr(), |
+ explicit JoinEntryInstr(intptr_t try_index) |
+ : BlockEntryInstr(try_index), |
predecessors_(2), // Two is the assumed to be the common case. |
phis_(NULL), |
phi_count_(0) { } |
@@ -2748,16 +2682,16 @@ class JoinEntryInstr : public BlockEntryInstr { |
class TargetEntryInstr : public BlockEntryInstr { |
public: |
- TargetEntryInstr() |
- : BlockEntryInstr(), |
+ explicit TargetEntryInstr(intptr_t try_index) |
+ : BlockEntryInstr(try_index), |
predecessor_(NULL), |
- try_index_(CatchClauseNode::kInvalidTryIndex) { } |
+ catch_try_index_(CatchClauseNode::kInvalidTryIndex) { } |
// Used for exception catch entries. |
- explicit TargetEntryInstr(intptr_t try_index) |
- : BlockEntryInstr(), |
+ explicit TargetEntryInstr(intptr_t try_index, intptr_t catch_try_index) |
+ : BlockEntryInstr(try_index), |
predecessor_(NULL), |
- try_index_(try_index) { } |
+ catch_try_index_(catch_try_index) { } |
DECLARE_INSTRUCTION(TargetEntry) |
@@ -2773,20 +2707,23 @@ class TargetEntryInstr : public BlockEntryInstr { |
predecessor_ = predecessor; |
} |
- bool HasTryIndex() const { |
- return try_index_ != CatchClauseNode::kInvalidTryIndex; |
+ // Returns true if this Block is an entry of a catch handler. |
+ bool IsCatchEntry() const { |
+ return catch_try_index_ != CatchClauseNode::kInvalidTryIndex; |
} |
- intptr_t try_index() const { |
- ASSERT(HasTryIndex()); |
- return try_index_; |
+ // Returns try index for the try block to which this catch handler |
+ // corresponds. |
+ intptr_t catch_try_index() const { |
+ ASSERT(IsCatchEntry()); |
+ return catch_try_index_; |
} |
virtual void PrepareEntry(FlowGraphCompiler* compiler); |
private: |
BlockEntryInstr* predecessor_; |
- const intptr_t try_index_; |
+ const intptr_t catch_try_index_; |
DISALLOW_COPY_AND_ASSIGN(TargetEntryInstr); |
}; |
@@ -3090,10 +3027,9 @@ class ReturnInstr : public TemplateInstruction<1> { |
class ThrowInstr : public TemplateInstruction<0> { |
public: |
- ThrowInstr(intptr_t token_pos, intptr_t try_index) |
+ explicit ThrowInstr(intptr_t token_pos) |
: deopt_id_(Isolate::Current()->GetNextDeoptId()), |
- token_pos_(token_pos), |
- try_index_(try_index) { } |
+ token_pos_(token_pos) { } |
DECLARE_INSTRUCTION(Throw) |
@@ -3101,7 +3037,6 @@ class ThrowInstr : public TemplateInstruction<0> { |
intptr_t deopt_id() const { return deopt_id_; } |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
virtual LocationSummary* MakeLocationSummary() const; |
@@ -3112,7 +3047,6 @@ class ThrowInstr : public TemplateInstruction<0> { |
private: |
const intptr_t deopt_id_; |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
DISALLOW_COPY_AND_ASSIGN(ThrowInstr); |
}; |
@@ -3120,11 +3054,9 @@ class ThrowInstr : public TemplateInstruction<0> { |
class ReThrowInstr : public TemplateInstruction<0> { |
public: |
- ReThrowInstr(intptr_t token_pos, |
- intptr_t try_index) |
+ explicit ReThrowInstr(intptr_t token_pos) |
: deopt_id_(Isolate::Current()->GetNextDeoptId()), |
- token_pos_(token_pos), |
- try_index_(try_index) { } |
+ token_pos_(token_pos) { } |
DECLARE_INSTRUCTION(ReThrow) |
@@ -3132,7 +3064,6 @@ class ReThrowInstr : public TemplateInstruction<0> { |
intptr_t deopt_id() const { return deopt_id_; } |
intptr_t token_pos() const { return token_pos_; } |
- intptr_t try_index() const { return try_index_; } |
virtual LocationSummary* MakeLocationSummary() const; |
@@ -3143,7 +3074,6 @@ class ReThrowInstr : public TemplateInstruction<0> { |
private: |
const intptr_t deopt_id_; |
const intptr_t token_pos_; |
- const intptr_t try_index_; |
DISALLOW_COPY_AND_ASSIGN(ReThrowInstr); |
}; |