| Index: runtime/vm/object.cc
|
| diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
|
| index 40fc1b7d493c1cd948df846dd8975645efac5334..4542f6ddf04a4de104b25b321abe50f2144c756f 100644
|
| --- a/runtime/vm/object.cc
|
| +++ b/runtime/vm/object.cc
|
| @@ -1436,6 +1436,7 @@ bool Class::HasInstanceFields() const {
|
| return false;
|
| }
|
|
|
| +
|
| void Class::SetFunctions(const Array& value) const {
|
| ASSERT(!value.IsNull());
|
| #if defined(DEBUG)
|
| @@ -1451,6 +1452,14 @@ void Class::SetFunctions(const Array& value) const {
|
| }
|
|
|
|
|
| +void Class::AddFunction(const Function& function) const {
|
| + const Array& arr = Array::Handle(functions());
|
| + const Array& new_arr = Array::Handle(Array::Grow(arr, arr.Length() + 1));
|
| + new_arr.SetAt(arr.Length(), function);
|
| + SetFunctions(new_arr);
|
| +}
|
| +
|
| +
|
| void Class::AddClosureFunction(const Function& function) const {
|
| GrowableObjectArray& closures =
|
| GrowableObjectArray::Handle(raw_ptr()->closure_functions_);
|
| @@ -3220,6 +3229,21 @@ void Function::set_closure_allocation_stub(const Code& value) const {
|
| }
|
|
|
|
|
| +RawFunction* Function::extracted_method_closure() const {
|
| + ASSERT(kind() == RawFunction::kMethodExtractor);
|
| + const Object& obj = Object::Handle(raw_ptr()->data_);
|
| + ASSERT(obj.IsFunction());
|
| + return Function::Cast(obj).raw();
|
| +}
|
| +
|
| +
|
| +void Function::set_extracted_method_closure(const Function& value) const {
|
| + ASSERT(kind() == RawFunction::kMethodExtractor);
|
| + ASSERT(raw_ptr()->data_ == Object::null());
|
| + set_data(value);
|
| +}
|
| +
|
| +
|
| RawFunction* Function::parent_function() const {
|
| if (IsClosureFunction()) {
|
| const Object& obj = Object::Handle(raw_ptr()->data_);
|
| @@ -4309,6 +4333,9 @@ const char* Function::ToCString() const {
|
| case RawFunction::kConstImplicitGetter:
|
| kind_str = " const-getter";
|
| break;
|
| + case RawFunction::kMethodExtractor:
|
| + kind_str = " method-extractor";
|
| + break;
|
| default:
|
| UNREACHABLE();
|
| }
|
|
|