| Index: runtime/vm/object.cc
|
| diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
|
| index 25a060ae1604ef31da84166c6884e36f7fc17569..c58c377767b8130745f229166ac19a6a35065749 100644
|
| --- a/runtime/vm/object.cc
|
| +++ b/runtime/vm/object.cc
|
| @@ -5559,24 +5559,27 @@ void Function::set_owner(const Object& value) const {
|
|
|
| RawJSRegExp* Function::regexp() const {
|
| ASSERT(kind() == RawFunction::kIrregexpFunction);
|
| - const Object& obj = Object::Handle(raw_ptr()->data_);
|
| - return JSRegExp::Cast(obj).raw();
|
| + const Array& pair = Array::Cast(Object::Handle(raw_ptr()->data_));
|
| + return JSRegExp::RawCast(pair.At(0));
|
| }
|
|
|
|
|
| -void Function::set_regexp(const JSRegExp& value) const {
|
| +intptr_t Function::string_specialization_cid() const {
|
| ASSERT(kind() == RawFunction::kIrregexpFunction);
|
| - ASSERT(raw_ptr()->data_ == Object::null());
|
| - set_data(value);
|
| + const Array& pair = Array::Cast(Object::Handle(raw_ptr()->data_));
|
| + return Smi::Value(Smi::RawCast(pair.At(1)));
|
| }
|
|
|
|
|
| -void Function::set_regexp_cid(intptr_t regexp_cid) const {
|
| - ASSERT((regexp_cid == kIllegalCid) ||
|
| - (kind() == RawFunction::kIrregexpFunction));
|
| - ASSERT((regexp_cid == kIllegalCid) ||
|
| - RawObject::IsStringClassId(regexp_cid));
|
| - StoreNonPointer(&raw_ptr()->regexp_cid_, regexp_cid);
|
| +void Function::SetRegExpData(const JSRegExp& regexp,
|
| + intptr_t string_specialization_cid) const {
|
| + ASSERT(kind() == RawFunction::kIrregexpFunction);
|
| + ASSERT(RawObject::IsStringClassId(string_specialization_cid));
|
| + ASSERT(raw_ptr()->data_ == Object::null());
|
| + const Array& pair = Array::Handle(Array::New(2, Heap::kOld));
|
| + pair.SetAt(0, regexp);
|
| + pair.SetAt(1, Smi::Handle(Smi::New(string_specialization_cid)));
|
| + set_data(pair);
|
| }
|
|
|
|
|
| @@ -6279,7 +6282,6 @@ RawFunction* Function::New(const String& name,
|
| result.set_num_optional_parameters(0);
|
| result.set_usage_counter(0);
|
| result.set_deoptimization_counter(0);
|
| - result.set_regexp_cid(kIllegalCid);
|
| result.set_optimized_instruction_count(0);
|
| result.set_optimized_call_site_count(0);
|
| result.set_is_optimizable(is_native ? false : true);
|
| @@ -6307,7 +6309,6 @@ RawFunction* Function::Clone(const Class& new_owner) const {
|
| clone.ClearCode();
|
| clone.set_usage_counter(0);
|
| clone.set_deoptimization_counter(0);
|
| - clone.set_regexp_cid(kIllegalCid);
|
| clone.set_optimized_instruction_count(0);
|
| clone.set_optimized_call_site_count(0);
|
| if (new_owner.NumTypeParameters() > 0) {
|
|
|