| Index: runtime/vm/object.h
|
| ===================================================================
|
| --- runtime/vm/object.h (revision 2587)
|
| +++ runtime/vm/object.h (working copy)
|
| @@ -138,6 +138,7 @@
|
| kCodeClass,
|
| kInstructionsClass,
|
| kPcDescriptorsClass,
|
| + kLocalVarDescriptorsClass,
|
| kExceptionHandlersClass,
|
| kContextClass,
|
| kContextScopeClass,
|
| @@ -256,6 +257,7 @@
|
| static RawClass* code_class() { return code_class_; }
|
| static RawClass* instructions_class() { return instructions_class_; }
|
| static RawClass* pc_descriptors_class() { return pc_descriptors_class_; }
|
| + static RawClass* var_descriptors_class() { return var_descriptors_class_; }
|
| static RawClass* exception_handlers_class() {
|
| return exception_handlers_class_;
|
| }
|
| @@ -361,6 +363,7 @@
|
| static RawClass* code_class_; // Class of the Code vm object.
|
| static RawClass* instructions_class_; // Class of the Instructions vm object.
|
| static RawClass* pc_descriptors_class_; // Class of PcDescriptors vm object.
|
| + static RawClass* var_descriptors_class_; // Class of LocalVarDescriptors.
|
| static RawClass* exception_handlers_class_; // Class of ExceptionHandlers.
|
| static RawClass* context_class_; // Class of the Context vm object.
|
| static RawClass* context_scope_class_; // Class of ContextScope vm object.
|
| @@ -1742,6 +1745,39 @@
|
| };
|
|
|
|
|
| +class LocalVarDescriptors : public Object {
|
| + public:
|
| + intptr_t Length() const;
|
| +
|
| + RawString* GetName(intptr_t var_index) const;
|
| + void GetRange(intptr_t var_index,
|
| + intptr_t* begin_pos, intptr_t* end_pos) const;
|
| +
|
| + void SetVar(intptr_t var_index,
|
| + const String& name,
|
| + intptr_t stack_slot,
|
| + intptr_t begin_pos,
|
| + intptr_t end_pos) const;
|
| +
|
| + static intptr_t InstanceSize() {
|
| + ASSERT(sizeof(RawLocalVarDescriptors) ==
|
| + OFFSET_OF(RawLocalVarDescriptors, data_));
|
| + return 0;
|
| + }
|
| + static intptr_t InstanceSize(intptr_t len) {
|
| + return RoundedAllocationSize(
|
| + sizeof(RawLocalVarDescriptors) +
|
| + (len * sizeof(RawLocalVarDescriptors::VarInfo)));
|
| + }
|
| +
|
| + static RawLocalVarDescriptors* New(intptr_t num_variables);
|
| +
|
| + private:
|
| + HEAP_OBJECT_IMPLEMENTATION(LocalVarDescriptors, Object);
|
| + friend class Class;
|
| +};
|
| +
|
| +
|
| class PcDescriptors : public Object {
|
| public:
|
| enum Kind {
|
| @@ -1906,6 +1942,13 @@
|
| StorePointer(&raw_ptr()->pc_descriptors_, descriptors.raw());
|
| }
|
|
|
| + RawLocalVarDescriptors* var_descriptors() const {
|
| + return raw_ptr()->var_descriptors_;
|
| + }
|
| + void set_var_descriptors(const LocalVarDescriptors& value) const {
|
| + StorePointer(&raw_ptr()->var_descriptors_, value.raw());
|
| + }
|
| +
|
| // See class ICData for interpretation of the 'ic_data_' array.
|
| RawArray* ic_data() const;
|
| void set_ic_data(const Array& ic_data) const;
|
|
|