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

Unified Diff: src/ast.h

Issue 20680002: Rebase of partial ia32 implementation of optimized try/catch (started by Kevin Millikin, continued … (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fix detection of CATCH frames (fixes debuger exception reporting anf breaks another assertion...). Created 7 years, 5 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 | src/ast.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/ast.h
diff --git a/src/ast.h b/src/ast.h
index 670c515087d53e626f7d42497c795fb4b8fca754..ab24680f42da21e3264ae1408d64f95e8fdd7161 100644
--- a/src/ast.h
+++ b/src/ast.h
@@ -174,6 +174,7 @@ typedef ZoneList<Handle<Object> > ZoneObjectList;
enum AstPropertiesFlag {
kDontInline,
kDontOptimize,
+ kDontOsr,
kDontSelfOptimize,
kDontSoftInline,
kDontCache
@@ -1231,9 +1232,14 @@ class TryStatement: public Statement {
Block* try_block() const { return try_block_; }
ZoneList<Label*>* escaping_targets() const { return escaping_targets_; }
+ BailoutId TryEntryId() const { return try_entry_id_; }
+ BailoutId TryExitId() const { return try_exit_id_; }
+
protected:
- TryStatement(int index, Block* try_block)
+ TryStatement(Isolate* isolate, int index, Block* try_block)
: index_(index),
+ try_entry_id_(GetNextId(isolate)),
+ try_exit_id_(GetNextId(isolate)),
try_block_(try_block),
escaping_targets_(NULL) { }
@@ -1241,6 +1247,9 @@ class TryStatement: public Statement {
// Unique (per-function) index of this handler. This is not an AST ID.
int index_;
+ BailoutId try_entry_id_;
+ BailoutId try_exit_id_;
+
Block* try_block_;
ZoneList<Label*>* escaping_targets_;
};
@@ -1255,16 +1264,16 @@ class TryCatchStatement: public TryStatement {
Block* catch_block() const { return catch_block_; }
protected:
- TryCatchStatement(int index,
+ TryCatchStatement(Isolate* isolate,
+ int index,
Block* try_block,
Scope* scope,
Variable* variable,
Block* catch_block)
- : TryStatement(index, try_block),
+ : TryStatement(isolate, index, try_block),
scope_(scope),
variable_(variable),
- catch_block_(catch_block) {
- }
+ catch_block_(catch_block) { }
private:
Scope* scope_;
@@ -1280,8 +1289,11 @@ class TryFinallyStatement: public TryStatement {
Block* finally_block() const { return finally_block_; }
protected:
- TryFinallyStatement(int index, Block* try_block, Block* finally_block)
- : TryStatement(index, try_block),
+ TryFinallyStatement(Isolate* isolate,
+ int index,
+ Block* try_block,
+ Block* finally_block)
+ : TryStatement(isolate, index, try_block),
finally_block_(finally_block) { }
private:
@@ -2978,21 +2990,24 @@ class AstNodeFactory BASE_EMBEDDED {
VISIT_AND_RETURN(IfStatement, stmt)
}
- TryCatchStatement* NewTryCatchStatement(int index,
+ TryCatchStatement* NewTryCatchStatement(Isolate* isolate,
+ int index,
Block* try_block,
Scope* scope,
Variable* variable,
Block* catch_block) {
TryCatchStatement* stmt = new(zone_) TryCatchStatement(
- index, try_block, scope, variable, catch_block);
+ isolate, index, try_block, scope, variable, catch_block);
VISIT_AND_RETURN(TryCatchStatement, stmt)
}
- TryFinallyStatement* NewTryFinallyStatement(int index,
+ TryFinallyStatement* NewTryFinallyStatement(Isolate* isolate,
+ int index,
Block* try_block,
Block* finally_block) {
TryFinallyStatement* stmt =
- new(zone_) TryFinallyStatement(index, try_block, finally_block);
+ new(zone_) TryFinallyStatement(isolate, index, try_block,
+ finally_block);
VISIT_AND_RETURN(TryFinallyStatement, stmt)
}
« no previous file with comments | « no previous file | src/ast.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698