Index: runtime/vm/object.cc |
=================================================================== |
--- runtime/vm/object.cc (revision 39686) |
+++ runtime/vm/object.cc (working copy) |
@@ -13101,15 +13101,13 @@ |
const Function& eval_func = |
Function::Handle(EvaluateHelper(cls, expr, param_names, false)); |
const Array& args = Array::Handle(Array::New(1 + param_values.Length())); |
- Object& param = Object::Handle(); |
+ PassiveObject& param = PassiveObject::Handle(); |
args.SetAt(0, *this); |
for (intptr_t i = 0; i < param_values.Length(); i++) { |
param = param_values.At(i); |
args.SetAt(i + 1, param); |
} |
- const Object& result = |
- Object::Handle(DartEntry::InvokeFunction(eval_func, args)); |
- return result.raw(); |
+ return DartEntry::InvokeFunction(eval_func, args); |
} |
@@ -13340,9 +13338,7 @@ |
bool Instance::OperatorEquals(const Instance& other) const { |
// TODO(koda): Optimize for all builtin classes and all classes |
// that do not override operator==. |
- const Object& result = |
- Object::Handle(DartLibraryCalls::Equals(*this, other)); |
- return result.raw() == Object::bool_true().raw(); |
+ return DartLibraryCalls::Equals(*this, other) == Object::bool_true().raw(); |
} |
@@ -18121,15 +18117,17 @@ |
RawArray* Array::Grow(const Array& source, |
intptr_t new_length, |
Heap::Space space) { |
- const Array& result = Array::Handle(Array::New(new_length, space)); |
+ Isolate* isolate = Isolate::Current(); |
+ const Array& result = Array::Handle(isolate, Array::New(new_length, space)); |
intptr_t len = 0; |
if (!source.IsNull()) { |
len = source.Length(); |
- result.SetTypeArguments(TypeArguments::Handle(source.GetTypeArguments())); |
+ result.SetTypeArguments( |
+ TypeArguments::Handle(isolate, source.GetTypeArguments())); |
} |
ASSERT(new_length >= len); // Cannot copy 'source' into new array. |
ASSERT(new_length != len); // Unnecessary copying of array. |
- Object& obj = Object::Handle(); |
+ PassiveObject& obj = PassiveObject::Handle(isolate); |
for (int i = 0; i < len; i++) { |
obj = source.At(i); |
result.SetAt(i, obj); |
@@ -18249,7 +18247,7 @@ |
ASSERT(Length() > 0); |
intptr_t index = Length() - 1; |
const Array& contents = Array::Handle(data()); |
- const Object& obj = Object::Handle(contents.At(index)); |
+ const PassiveObject& obj = PassiveObject::Handle(contents.At(index)); |
contents.SetAt(index, Object::null_object()); |
SetLength(index); |
return obj.raw(); |
@@ -18411,9 +18409,12 @@ |
RawObject* LinkedHashMap::LookUp(const Object& key) const { |
ASSERT(!IsNull()); |
EnumIndexDefaultMap map(data()); |
- const Object& result = Object::Handle(map.GetOrNull(key)); |
- ASSERT(map.Release().raw() == data()); |
- return result.raw(); |
+ { |
+ NoGCScope no_gc; |
+ RawObject* result = map.GetOrNull(key); |
+ ASSERT(map.Release().raw() == data()); |
+ return result; |
+ } |
} |
@@ -18430,7 +18431,7 @@ |
ASSERT(!IsNull()); |
EnumIndexDefaultMap map(data()); |
// TODO(koda): Make 'Remove' also return the old value. |
- const Object& result = Object::Handle(map.GetOrNull(key)); |
+ const PassiveObject& result = PassiveObject::Handle(map.GetOrNull(key)); |
if (map.Remove(key)) { |
SetModified(); |
} |
@@ -19106,8 +19107,9 @@ |
// Grow the arrays for code, pc_offset pairs to accommodate the new stack |
// frames. |
- Array& code_array = Array::Handle(raw_ptr()->code_array_); |
- Array& pc_offset_array = Array::Handle(raw_ptr()->pc_offset_array_); |
+ Isolate* isolate = Isolate::Current(); |
+ Array& code_array = Array::Handle(isolate, raw_ptr()->code_array_); |
+ Array& pc_offset_array = Array::Handle(isolate, raw_ptr()->pc_offset_array_); |
code_array = Array::Grow(code_array, new_length); |
pc_offset_array = Array::Grow(pc_offset_array, new_length); |
set_code_array(code_array); |
@@ -19114,7 +19116,7 @@ |
set_pc_offset_array(pc_offset_array); |
// Now append the new function and code list to the existing arrays. |
intptr_t j = start_index; |
- Object& obj = Object::Handle(); |
+ PassiveObject& obj = PassiveObject::Handle(isolate); |
for (intptr_t i = old_length; i < new_length; i++, j++) { |
obj = code_list.At(j); |
code_array.SetAt(i, obj); |