Index: runtime/vm/object.h |
=================================================================== |
--- runtime/vm/object.h (revision 10615) |
+++ runtime/vm/object.h (working copy) |
@@ -250,14 +250,13 @@ |
static RawClass* dynamic_class() { return dynamic_class_; } |
static RawClass* void_class() { return void_class_; } |
static RawClass* unresolved_class_class() { return unresolved_class_class_; } |
- static RawClass* type_class() { |
- return type_class_; |
- } |
+ static RawClass* type_class() { return type_class_; } |
static RawClass* type_parameter_class() { return type_parameter_class_; } |
static RawClass* type_arguments_class() { return type_arguments_class_; } |
static RawClass* instantiated_type_arguments_class() { |
return instantiated_type_arguments_class_; |
} |
+ static RawClass* patch_class_class() { return patch_class_class_; } |
static RawClass* function_class() { return function_class_; } |
static RawClass* field_class() { return field_class_; } |
static RawClass* literal_token_class() { return literal_token_class_; } |
@@ -387,6 +386,7 @@ |
// Class of the TypeArguments vm object. |
static RawClass* type_arguments_class_; |
static RawClass* instantiated_type_arguments_class_; // Class of Inst..ments. |
+ static RawClass* patch_class_class_; // Class of the PatchClass vm object. |
static RawClass* function_class_; // Class of the Function vm object. |
static RawClass* field_class_; // Class of the Field vm object. |
static RawClass* literal_token_class_; // Class of LiteralToken vm object. |
@@ -679,6 +679,8 @@ |
void Finalize() const; |
+ void ApplyPatch(const Class& with) const; |
+ |
// Allocate a class used for VM internal objects. |
template <class FakeObject> static RawClass* New(); |
@@ -1279,6 +1281,27 @@ |
}; |
+class PatchClass : public Object { |
+ public: |
+ RawClass* patched_class() const { return raw_ptr()->patched_class_; } |
+ RawScript* script() const { return raw_ptr()->script_; } |
+ |
+ static intptr_t InstanceSize() { |
+ return RoundedAllocationSize(sizeof(RawPatchClass)); |
+ } |
+ |
+ static RawPatchClass* New(const Class& patched_class, const Script& script); |
+ |
+ private: |
+ void set_patched_class(const Class& value) const; |
+ void set_script(const Script& value) const; |
+ static RawPatchClass* New(); |
+ |
+ HEAP_OBJECT_IMPLEMENTATION(PatchClass, Object); |
+ friend class Class; |
+}; |
+ |
+ |
class Function : public Object { |
public: |
RawString* name() const { return raw_ptr()->name_; } |
@@ -1307,8 +1330,10 @@ |
// does not involve generic parameter types or generic result type. |
bool HasInstantiatedSignature() const; |
- RawClass* owner() const { return raw_ptr()->owner_; } |
+ RawClass* Owner() const; |
+ RawScript* script() const; |
+ |
RawAbstractType* result_type() const { return raw_ptr()->result_type_; } |
void set_result_type(const AbstractType& value) const; |
@@ -1620,7 +1645,7 @@ |
void set_is_const(bool is_const) const; |
void set_is_external(bool value) const; |
void set_parent_function(const Function& value) const; |
- void set_owner(const Class& value) const; |
+ void set_owner(const Object& value) const; |
void set_token_pos(intptr_t value) const; |
void set_implicit_closure_function(const Function& value) const; |
void set_kind_tag(intptr_t value) const; |