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

Unified Diff: src/scopeinfo.h

Issue 7979001: Scope tree serialization and ScopeIterator cleanup. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years, 3 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
Index: src/scopeinfo.h
diff --git a/src/scopeinfo.h b/src/scopeinfo.h
index 40c5c8a687b61c43e1773c5d6b5fabc9edb85b14..4a93fcca4995c4c4635b2badd64b9631398b5454 100644
--- a/src/scopeinfo.h
+++ b/src/scopeinfo.h
@@ -31,6 +31,7 @@
#include "allocation.h"
#include "variables.h"
#include "zone-inl.h"
+#include "scopes.h"
Kevin Millikin (Chromium) 2011/10/05 08:43:36 Maybe we should avoid this? It's not yet a circul
Steven 2011/10/06 19:09:27 Yes, I totally agree. On 2011/10/05 08:43:36, Kevi
namespace v8 {
namespace internal {
@@ -83,6 +84,10 @@ class ScopeInfo BASE_EMBEDDED {
Handle<String> LocalName(int i) const;
int NumberOfLocals() const;
+ Scope::Type type() const { return type_; }
+ int SourceBegStatementPos() const { return source_beg_statement_pos_; }
+ int SourceEndStatementPos() const { return source_end_statement_pos_; }
+
// --------------------------------------------------------------------------
// Debugging support
@@ -94,10 +99,14 @@ class ScopeInfo BASE_EMBEDDED {
Handle<String> function_name_;
bool calls_eval_;
bool is_strict_mode_;
+ Scope::Type type_;
+ int source_beg_statement_pos_;
+ int source_end_statement_pos_;
List<Handle<String>, Allocator > parameters_;
List<Handle<String>, Allocator > stack_slots_;
List<Handle<String>, Allocator > context_slots_;
List<Variable::Mode, Allocator > context_modes_;
+ List<Handle<SerializedScopeInfo>, Allocator> inner_scopeinfos_;
};
@@ -111,21 +120,39 @@ class SerializedScopeInfo : public FixedArray {
return reinterpret_cast<SerializedScopeInfo*>(object);
}
+ // Return the type of this scope.
+ Scope::Type ScopeType();
+
// Does this scope call eval?
bool CallsEval();
// Is this scope a strict mode scope?
bool IsStrictMode();
+ // Start position of this scope in the source string.
Kevin Millikin (Chromium) 2011/10/05 08:43:36 I think we want a crisp characterization of start
Steven 2011/10/06 19:09:27 Added a description to scopes.h. PTAL there. On 20
+ int SourceBegStatementPos();
+
+ // End position of this scope in the source string.
+ int SourceEndStatementPos();
+
// Return the number of stack slots for code.
int NumberOfStackSlots();
// Return the number of context slots for code.
int NumberOfContextSlots();
+ // Return the number of immediate nested scopes.
+ int NumberOfNestedScopes();
+
+ // Lookup an immediate nested scope by its index.
+ Handle<SerializedScopeInfo> NestedScope(int i);
+
// Return if this has context slots besides MIN_CONTEXT_SLOTS;
bool HasHeapAllocatedLocals();
+ // Return if contexts are allocated for this scope.
+ bool HasContext();
+
// Lookup support for serialized scope info. Returns the
// the stack slot index for a given slot name if the slot is
// present; otherwise returns a value < 0. The name must be a symbol
@@ -150,6 +177,13 @@ class SerializedScopeInfo : public FixedArray {
// must be a symbol (canonicalized).
int FunctionContextSlotIndex(String* name);
+ // Get the chain of nested scopes within this scope for the source statement
+ // position. The scopes will be added to the list from the outermost scope to
+ // the innermost scope. Only nested block, catch or with scopes are tracked
+ // and will be returned, but no inner function scopes.
+ void GetNestedScopeChain(List<Handle<SerializedScopeInfo> >* chain,
+ int statement_position);
+
static Handle<SerializedScopeInfo> Create(Scope* scope);
// Serializes empty scope info.
@@ -161,6 +195,8 @@ class SerializedScopeInfo : public FixedArray {
inline Object** ParameterEntriesAddr();
inline Object** StackSlotEntriesAddr();
+
+ inline Object** NestedScopeEntriesAddr();
};

Powered by Google App Engine
This is Rietveld 408576698