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

Unified Diff: runtime/vm/ast.h

Issue 22184003: Fix a bug in compilation of try-finally. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 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 | « no previous file | runtime/vm/flow_graph_builder.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/ast.h
===================================================================
--- runtime/vm/ast.h (revision 25764)
+++ runtime/vm/ast.h (working copy)
@@ -1556,13 +1556,15 @@
const Array& handler_types,
const LocalVariable* context_var,
const LocalVariable* exception_var,
- const LocalVariable* stacktrace_var)
+ const LocalVariable* stacktrace_var,
+ intptr_t catch_handler_index)
: AstNode(token_pos),
catch_block_(catch_block),
handler_types_(handler_types),
context_var_(*context_var),
exception_var_(*exception_var),
- stacktrace_var_(*stacktrace_var) {
+ stacktrace_var_(*stacktrace_var),
+ catch_handler_index_(catch_handler_index) {
ASSERT(catch_block_ != NULL);
ASSERT(handler_types.IsZoneHandle());
ASSERT(context_var != NULL);
@@ -1574,6 +1576,7 @@
const LocalVariable& context_var() const { return context_var_; }
const LocalVariable& exception_var() const { return exception_var_; }
const LocalVariable& stacktrace_var() const { return stacktrace_var_; }
+ intptr_t catch_handler_index() const { return catch_handler_index_; }
virtual void VisitChildren(AstNodeVisitor* visitor) const {
catch_block_->Visit(visitor);
@@ -1587,6 +1590,7 @@
const LocalVariable& context_var_;
const LocalVariable& exception_var_;
const LocalVariable& stacktrace_var_;
+ const intptr_t catch_handler_index_;
DISALLOW_COPY_AND_ASSIGN(CatchClauseNode);
};
@@ -1599,13 +1603,15 @@
SourceLabel* end_catch_label,
const LocalVariable* context_var,
CatchClauseNode* catch_block,
- SequenceNode* finally_block)
+ SequenceNode* finally_block,
+ intptr_t try_index)
: AstNode(token_pos),
try_block_(try_block),
end_catch_label_(end_catch_label),
context_var_(*context_var),
catch_block_(catch_block),
- finally_block_(finally_block) {
+ finally_block_(finally_block),
+ try_index_(try_index) {
ASSERT(try_block_ != NULL);
ASSERT(context_var != NULL);
ASSERT(catch_block_ != NULL || finally_block_ != NULL);
@@ -1617,6 +1623,7 @@
CatchClauseNode* catch_block() const { return catch_block_; }
SequenceNode* finally_block() const { return finally_block_; }
const LocalVariable& context_var() const { return context_var_; }
+ intptr_t try_index() const { return try_index_; }
virtual void VisitChildren(AstNodeVisitor* visitor) const {
try_block_->Visit(visitor);
@@ -1636,6 +1643,7 @@
const LocalVariable& context_var_;
CatchClauseNode* catch_block_;
SequenceNode* finally_block_;
+ const intptr_t try_index_;
DISALLOW_COPY_AND_ASSIGN(TryCatchNode);
};
@@ -1672,16 +1680,19 @@
public:
InlinedFinallyNode(intptr_t token_pos,
AstNode* finally_block,
- const LocalVariable* context_var)
+ const LocalVariable* context_var,
+ intptr_t try_index)
: AstNode(token_pos),
finally_block_(finally_block),
- context_var_(*context_var) {
+ context_var_(*context_var),
+ try_index_(try_index) {
ASSERT(finally_block_ != NULL);
ASSERT(context_var != NULL);
}
AstNode* finally_block() const { return finally_block_; }
const LocalVariable& context_var() const { return context_var_; }
+ intptr_t try_index() const { return try_index_; }
virtual void VisitChildren(AstNodeVisitor* visitor) const {
finally_block()->Visit(visitor);
@@ -1692,6 +1703,7 @@
private:
AstNode* finally_block_;
const LocalVariable& context_var_;
+ const intptr_t try_index_;
DISALLOW_IMPLICIT_CONSTRUCTORS(InlinedFinallyNode);
};
« no previous file with comments | « no previous file | runtime/vm/flow_graph_builder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698