Index: src/accessors.cc |
diff --git a/src/accessors.cc b/src/accessors.cc |
index af344d1a631598f9e44ebd1b591d8e666ebdce4f..e33b4d794077954ac9ef701d9e42b64d5c5474d8 100644 |
--- a/src/accessors.cc |
+++ b/src/accessors.cc |
@@ -100,14 +100,15 @@ Object* Accessors::FlattenNumber(Object* value) { |
MaybeObject* Accessors::ArraySetLength(JSObject* object, Object* value, void*) { |
+ Isolate* isolate = object->GetIsolate(); |
value = FlattenNumber(value); |
// Need to call methods that may trigger GC. |
- HandleScope scope; |
+ HandleScope scope(isolate); |
// Protect raw pointers. |
- Handle<JSObject> object_handle(object); |
- Handle<Object> value_handle(value); |
+ Handle<JSObject> object_handle(object, isolate); |
+ Handle<Object> value_handle(value, isolate); |
bool has_exception; |
Handle<Object> uint32_v = Execution::ToUint32(value_handle, &has_exception); |
@@ -126,13 +127,13 @@ MaybeObject* Accessors::ArraySetLength(JSObject* object, Object* value, void*) { |
// This means one of the object's prototypes is a JSArray and |
// the object does not have a 'length' property. |
// Calling SetProperty causes an infinite loop. |
- return object->SetLocalPropertyIgnoreAttributes(HEAP->length_symbol(), |
- value, NONE); |
+ return object->SetLocalPropertyIgnoreAttributes( |
+ isolate->heap()->length_symbol(), value, NONE); |
} |
} |
- return Isolate::Current()->Throw( |
- *FACTORY->NewRangeError("invalid_array_length", |
- HandleVector<Object>(NULL, 0))); |
+ return isolate->Throw( |
+ *isolate->factory()->NewRangeError("invalid_array_length", |
+ HandleVector<Object>(NULL, 0))); |
} |
@@ -315,15 +316,18 @@ const AccessorDescriptor Accessors::ScriptCompilationType = { |
MaybeObject* Accessors::ScriptGetLineEnds(Object* object, void*) { |
- HandleScope scope; |
- Handle<Script> script(Script::cast(JSValue::cast(object)->value())); |
+ JSValue* wrapper = JSValue::cast(object); |
+ Isolate* isolate = wrapper->GetIsolate(); |
+ HandleScope scope(isolate); |
+ Handle<Script> script(Script::cast(wrapper->value()), isolate); |
InitScriptLineEnds(script); |
ASSERT(script->line_ends()->IsFixedArray()); |
Handle<FixedArray> line_ends(FixedArray::cast(script->line_ends())); |
// We do not want anyone to modify this array from JS. |
- ASSERT(*line_ends == HEAP->empty_fixed_array() || |
- line_ends->map() == HEAP->fixed_cow_array_map()); |
- Handle<JSArray> js_array = FACTORY->NewJSArrayWithElements(line_ends); |
+ ASSERT(*line_ends == isolate->heap()->empty_fixed_array() || |
+ line_ends->map() == isolate->heap()->fixed_cow_array_map()); |
+ Handle<JSArray> js_array = |
+ isolate->factory()->NewJSArrayWithElements(line_ends); |
return *js_array; |
} |
@@ -444,9 +448,10 @@ const AccessorDescriptor Accessors::ScriptEvalFromFunctionName = { |
MaybeObject* Accessors::FunctionGetPrototype(Object* object, void*) { |
+ Heap* heap = Isolate::Current()->heap(); |
bool found_it = false; |
JSFunction* function = FindInPrototypeChain<JSFunction>(object, &found_it); |
- if (!found_it) return HEAP->undefined_value(); |
+ if (!found_it) return heap->undefined_value(); |
while (!function->should_have_prototype()) { |
found_it = false; |
function = FindInPrototypeChain<JSFunction>(object->GetPrototype(), |
@@ -457,7 +462,7 @@ MaybeObject* Accessors::FunctionGetPrototype(Object* object, void*) { |
if (!function->has_prototype()) { |
Object* prototype; |
- { MaybeObject* maybe_prototype = HEAP->AllocateFunctionPrototype(function); |
+ { MaybeObject* maybe_prototype = heap->AllocateFunctionPrototype(function); |
if (!maybe_prototype->ToObject(&prototype)) return maybe_prototype; |
} |
Object* result; |
@@ -472,12 +477,13 @@ MaybeObject* Accessors::FunctionGetPrototype(Object* object, void*) { |
MaybeObject* Accessors::FunctionSetPrototype(JSObject* object, |
Object* value, |
void*) { |
+ Heap* heap = object->GetHeap(); |
bool found_it = false; |
JSFunction* function = FindInPrototypeChain<JSFunction>(object, &found_it); |
- if (!found_it) return HEAP->undefined_value(); |
+ if (!found_it) return heap->undefined_value(); |
if (!function->should_have_prototype()) { |
// Since we hit this accessor, object will have no prototype property. |
- return object->SetLocalPropertyIgnoreAttributes(HEAP->prototype_symbol(), |
+ return object->SetLocalPropertyIgnoreAttributes(heap->prototype_symbol(), |
value, |
NONE); |
} |