From f119b0eaa13e5241cf922092bea4feeaf28c8b5b Mon Sep 17 00:00:00 2001 From: "dcarney@chromium.org" Date: Mon, 2 Sep 2013 09:25:20 +0000 Subject: [PATCH] thread isolate in accessors.cc R=svenpanne@chromium.org BUG= Review URL: https://codereview.chromium.org/23824002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16462 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/accessors.cc | 132 +++++++++++++++++++++++++++++++--------------- src/accessors.h | 88 ++++++++++++++++++++++--------- src/objects.cc | 5 +- src/v8globals.h | 5 +- test/cctest/test-alloc.cc | 2 +- 5 files changed, 158 insertions(+), 74 deletions(-) diff --git a/src/accessors.cc b/src/accessors.cc index 45869ea..3c09693 100644 --- a/src/accessors.cc +++ b/src/accessors.cc @@ -51,19 +51,27 @@ static C* FindInstanceOf(Isolate* isolate, Object* obj) { // Entry point that never should be called. -MaybeObject* Accessors::IllegalSetter(JSObject*, Object*, void*) { +MaybeObject* Accessors::IllegalSetter(Isolate* isolate, + JSObject*, + Object*, + void*) { UNREACHABLE(); return NULL; } -Object* Accessors::IllegalGetAccessor(Object* object, void*) { +Object* Accessors::IllegalGetAccessor(Isolate* isolate, + Object* object, + void*) { UNREACHABLE(); return object; } -MaybeObject* Accessors::ReadOnlySetAccessor(JSObject*, Object* value, void*) { +MaybeObject* Accessors::ReadOnlySetAccessor(Isolate* isolate, + JSObject*, + Object* value, + void*) { // According to ECMA-262, section 8.6.2.2, page 28, setting // read-only properties must be silently ignored. return value; @@ -75,29 +83,32 @@ MaybeObject* Accessors::ReadOnlySetAccessor(JSObject*, Object* value, void*) { // -MaybeObject* Accessors::ArrayGetLength(Object* object, void*) { +MaybeObject* Accessors::ArrayGetLength(Isolate* isolate, + Object* object, + void*) { // Traverse the prototype chain until we reach an array. - JSArray* holder = FindInstanceOf(Isolate::Current(), object); + JSArray* holder = FindInstanceOf(isolate, object); return holder == NULL ? Smi::FromInt(0) : holder->length(); } // The helper function will 'flatten' Number objects. -Object* Accessors::FlattenNumber(Object* value) { +Object* Accessors::FlattenNumber(Isolate* isolate, Object* value) { if (value->IsNumber() || !value->IsJSValue()) return value; JSValue* wrapper = JSValue::cast(value); - ASSERT(Isolate::Current()->context()->native_context()->number_function()-> + ASSERT(wrapper->GetIsolate()->context()->native_context()->number_function()-> has_initial_map()); - Map* number_map = Isolate::Current()->context()->native_context()-> + Map* number_map = isolate->context()->native_context()-> number_function()->initial_map(); if (wrapper->map() == number_map) return wrapper->value(); return value; } -MaybeObject* Accessors::ArraySetLength(JSObject* object, Object* value, void*) { - Isolate* isolate = object->GetIsolate(); - +MaybeObject* Accessors::ArraySetLength(Isolate* isolate, + 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. @@ -106,7 +117,7 @@ MaybeObject* Accessors::ArraySetLength(JSObject* object, Object* value, void*) { isolate->heap()->length_string(), value, NONE); } - value = FlattenNumber(value); + value = FlattenNumber(isolate, value); // Need to call methods that may trigger GC. HandleScope scope(isolate); @@ -142,7 +153,9 @@ const AccessorDescriptor Accessors::ArrayLength = { // -MaybeObject* Accessors::StringGetLength(Object* object, void*) { +MaybeObject* Accessors::StringGetLength(Isolate* isolate, + Object* object, + void*) { Object* value = object; if (object->IsJSValue()) value = JSValue::cast(object)->value(); if (value->IsString()) return Smi::FromInt(String::cast(value)->length()); @@ -164,7 +177,9 @@ const AccessorDescriptor Accessors::StringLength = { // -MaybeObject* Accessors::ScriptGetSource(Object* object, void*) { +MaybeObject* Accessors::ScriptGetSource(Isolate* isolate, + Object* object, + void*) { Object* script = JSValue::cast(object)->value(); return Script::cast(script)->source(); } @@ -182,7 +197,9 @@ const AccessorDescriptor Accessors::ScriptSource = { // -MaybeObject* Accessors::ScriptGetName(Object* object, void*) { +MaybeObject* Accessors::ScriptGetName(Isolate* isolate, + Object* object, + void*) { Object* script = JSValue::cast(object)->value(); return Script::cast(script)->name(); } @@ -200,7 +217,7 @@ const AccessorDescriptor Accessors::ScriptName = { // -MaybeObject* Accessors::ScriptGetId(Object* object, void*) { +MaybeObject* Accessors::ScriptGetId(Isolate* isolate, Object* object, void*) { Object* script = JSValue::cast(object)->value(); return Script::cast(script)->id(); } @@ -218,7 +235,9 @@ const AccessorDescriptor Accessors::ScriptId = { // -MaybeObject* Accessors::ScriptGetLineOffset(Object* object, void*) { +MaybeObject* Accessors::ScriptGetLineOffset(Isolate* isolate, + Object* object, + void*) { Object* script = JSValue::cast(object)->value(); return Script::cast(script)->line_offset(); } @@ -236,7 +255,9 @@ const AccessorDescriptor Accessors::ScriptLineOffset = { // -MaybeObject* Accessors::ScriptGetColumnOffset(Object* object, void*) { +MaybeObject* Accessors::ScriptGetColumnOffset(Isolate* isolate, + Object* object, + void*) { Object* script = JSValue::cast(object)->value(); return Script::cast(script)->column_offset(); } @@ -254,7 +275,9 @@ const AccessorDescriptor Accessors::ScriptColumnOffset = { // -MaybeObject* Accessors::ScriptGetData(Object* object, void*) { +MaybeObject* Accessors::ScriptGetData(Isolate* isolate, + Object* object, + void*) { Object* script = JSValue::cast(object)->value(); return Script::cast(script)->data(); } @@ -272,7 +295,9 @@ const AccessorDescriptor Accessors::ScriptData = { // -MaybeObject* Accessors::ScriptGetType(Object* object, void*) { +MaybeObject* Accessors::ScriptGetType(Isolate* isolate, + Object* object, + void*) { Object* script = JSValue::cast(object)->value(); return Script::cast(script)->type(); } @@ -290,7 +315,9 @@ const AccessorDescriptor Accessors::ScriptType = { // -MaybeObject* Accessors::ScriptGetCompilationType(Object* object, void*) { +MaybeObject* Accessors::ScriptGetCompilationType(Isolate* isolate, + Object* object, + void*) { Object* script = JSValue::cast(object)->value(); return Smi::FromInt(Script::cast(script)->compilation_type()); } @@ -308,9 +335,10 @@ const AccessorDescriptor Accessors::ScriptCompilationType = { // -MaybeObject* Accessors::ScriptGetLineEnds(Object* object, void*) { +MaybeObject* Accessors::ScriptGetLineEnds(Isolate* isolate, + Object* object, + void*) { JSValue* wrapper = JSValue::cast(object); - Isolate* isolate = wrapper->GetIsolate(); HandleScope scope(isolate); Handle