| Index: src/scopeinfo.h | 
| =================================================================== | 
| --- src/scopeinfo.h	(revision 5059) | 
| +++ src/scopeinfo.h	(working copy) | 
| @@ -54,17 +54,12 @@ | 
| // Create a ScopeInfo instance from a scope. | 
| explicit ScopeInfo(Scope* scope); | 
|  | 
| -  // Create a ScopeInfo instance from an Object holding the serialized data. | 
| -  explicit ScopeInfo(Object* data); | 
| +  // Create a ScopeInfo instance from SerializedScopeInfo. | 
| +  explicit ScopeInfo(SerializedScopeInfo* data); | 
|  | 
| -  // Creates a heap object holding the serialized scope info. | 
| -  Handle<Object> Serialize(); | 
| +  // Creates a SerializedScopeInfo holding the serialized scope info. | 
| +  Handle<SerializedScopeInfo> Serialize(); | 
|  | 
| -  static Handle<Object> CreateHeapObject(Scope* scope); | 
| - | 
| -  // Serializes empty scope info. | 
| -  static Object* EmptyHeapObject(); | 
| - | 
| // -------------------------------------------------------------------------- | 
| // Lookup | 
|  | 
| @@ -88,64 +83,80 @@ | 
| int NumberOfLocals() const; | 
|  | 
| // -------------------------------------------------------------------------- | 
| -  // The following functions provide quick access to scope info details | 
| -  // for runtime routines w/o the need to explicitly create a ScopeInfo | 
| -  // object. | 
| -  // | 
| -  // ScopeInfo is the only class which should have to know about the | 
| -  // encoding of it's information in a FixedArray object, which is why these | 
| -  // functions are in this class. | 
| +  // Debugging support | 
|  | 
| +#ifdef DEBUG | 
| +  void Print(); | 
| +#endif | 
| + | 
| + private: | 
| +  Handle<String> function_name_; | 
| +  bool calls_eval_; | 
| +  List<Handle<String>, Allocator > parameters_; | 
| +  List<Handle<String>, Allocator > stack_slots_; | 
| +  List<Handle<String>, Allocator > context_slots_; | 
| +  List<Variable::Mode, Allocator > context_modes_; | 
| +}; | 
| + | 
| + | 
| +// This object provides quick access to scope info details for runtime | 
| +// routines w/o the need to explicitly create a ScopeInfo object. | 
| +class SerializedScopeInfo : public FixedArray { | 
| + public : | 
| + | 
| +  static SerializedScopeInfo* cast(Object* object) { | 
| +    ASSERT(object->IsFixedArray()); | 
| +    return reinterpret_cast<SerializedScopeInfo*>(object); | 
| +  } | 
| + | 
| // Does this scope call eval. | 
| -  static bool CallsEval(Object* data); | 
| +  bool CallsEval(); | 
|  | 
| // Return the number of stack slots for code. | 
| -  static int NumberOfStackSlots(Object* data); | 
| +  int NumberOfStackSlots(); | 
|  | 
| // Return the number of context slots for code. | 
| -  static int NumberOfContextSlots(Object* data); | 
| +  int NumberOfContextSlots(); | 
|  | 
| // Return if this has context slots besides MIN_CONTEXT_SLOTS; | 
| -  static bool HasHeapAllocatedLocals(Object* data); | 
| +  bool HasHeapAllocatedLocals(); | 
|  | 
| // 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 | 
| // (canonicalized). | 
| -  static int StackSlotIndex(Object* data, String* name); | 
| +  int StackSlotIndex(String* name); | 
|  | 
| // Lookup support for serialized scope info. Returns the | 
| // context slot index for a given slot name if the slot is present; otherwise | 
| // returns a value < 0. The name must be a symbol (canonicalized). | 
| // If the slot is present and mode != NULL, sets *mode to the corresponding | 
| // mode for that variable. | 
| -  static int ContextSlotIndex(Object* data, String* name, Variable::Mode* mode); | 
| +  int ContextSlotIndex(String* name, Variable::Mode* mode); | 
|  | 
| // Lookup support for serialized scope info. Returns the | 
| // parameter index for a given parameter name if the parameter is present; | 
| // otherwise returns a value < 0. The name must be a symbol (canonicalized). | 
| -  static int ParameterIndex(Object* data, String* name); | 
| +  int ParameterIndex(String* name); | 
|  | 
| // Lookup support for serialized scope info. Returns the | 
| // function context slot index if the function name is present (named | 
| // function expressions, only), otherwise returns a value < 0. The name | 
| // must be a symbol (canonicalized). | 
| -  static int FunctionContextSlotIndex(Object* data, String* name); | 
| +  int FunctionContextSlotIndex(String* name); | 
|  | 
| -  // -------------------------------------------------------------------------- | 
| -  // Debugging support | 
| +  static Handle<SerializedScopeInfo> Create(Scope* scope); | 
|  | 
| -#ifdef DEBUG | 
| -  void Print(); | 
| -#endif | 
| +  // Serializes empty scope info. | 
| +  static SerializedScopeInfo* Empty(); | 
|  | 
| private: | 
| -  Handle<String> function_name_; | 
| -  bool calls_eval_; | 
| -  List<Handle<String>, Allocator > parameters_; | 
| -  List<Handle<String>, Allocator > stack_slots_; | 
| -  List<Handle<String>, Allocator > context_slots_; | 
| -  List<Variable::Mode, Allocator > context_modes_; | 
| + | 
| +  inline Object** ContextEntriesAddr(); | 
| + | 
| +  inline Object** ParameterEntriesAddr(); | 
| + | 
| +  inline Object** StackSlotEntriesAddr(); | 
| }; | 
|  | 
|  | 
|  |