| Index: src/accessors.cc
|
| ===================================================================
|
| --- src/accessors.cc (revision 7267)
|
| +++ src/accessors.cc (working copy)
|
| @@ -34,7 +34,6 @@
|
| #include "factory.h"
|
| #include "safepoint-table.h"
|
| #include "scopeinfo.h"
|
| -#include "top.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
| @@ -43,8 +42,9 @@
|
| template <class C>
|
| static C* FindInPrototypeChain(Object* obj, bool* found_it) {
|
| ASSERT(!*found_it);
|
| + Heap* heap = HEAP;
|
| while (!Is<C>(obj)) {
|
| - if (obj == Heap::null_value()) return NULL;
|
| + if (obj == heap->null_value()) return NULL;
|
| obj = obj->GetPrototype();
|
| }
|
| *found_it = true;
|
| @@ -90,10 +90,10 @@
|
| Object* Accessors::FlattenNumber(Object* value) {
|
| if (value->IsNumber() || !value->IsJSValue()) return value;
|
| JSValue* wrapper = JSValue::cast(value);
|
| - ASSERT(
|
| - Top::context()->global_context()->number_function()->has_initial_map());
|
| - Map* number_map =
|
| - Top::context()->global_context()->number_function()->initial_map();
|
| + ASSERT(Isolate::Current()->context()->global_context()->number_function()->
|
| + has_initial_map());
|
| + Map* number_map = Isolate::Current()->context()->global_context()->
|
| + number_function()->initial_map();
|
| if (wrapper->map() == number_map) return wrapper->value();
|
| return value;
|
| }
|
| @@ -126,12 +126,13 @@
|
| // 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(),
|
| + return object->SetLocalPropertyIgnoreAttributes(HEAP->length_symbol(),
|
| value, NONE);
|
| }
|
| }
|
| - return Top::Throw(*Factory::NewRangeError("invalid_array_length",
|
| - HandleVector<Object>(NULL, 0)));
|
| + return Isolate::Current()->Throw(
|
| + *FACTORY->NewRangeError("invalid_array_length",
|
| + HandleVector<Object>(NULL, 0)));
|
| }
|
|
|
|
|
| @@ -320,9 +321,9 @@
|
| 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 == HEAP->empty_fixed_array() ||
|
| + line_ends->map() == HEAP->fixed_cow_array_map());
|
| + Handle<JSArray> js_array = FACTORY->NewJSArrayWithElements(line_ends);
|
| return *js_array;
|
| }
|
|
|
| @@ -368,7 +369,7 @@
|
| return *GetScriptWrapper(eval_from_script);
|
| }
|
| }
|
| - return Heap::undefined_value();
|
| + return HEAP->undefined_value();
|
| }
|
|
|
|
|
| @@ -391,7 +392,7 @@
|
| // If this is not a script compiled through eval there is no eval position.
|
| int compilation_type = Smi::cast(script->compilation_type())->value();
|
| if (compilation_type != Script::COMPILATION_TYPE_EVAL) {
|
| - return Heap::undefined_value();
|
| + return HEAP->undefined_value();
|
| }
|
|
|
| // Get the function from where eval was called and find the source position
|
| @@ -445,7 +446,7 @@
|
| MaybeObject* Accessors::FunctionGetPrototype(Object* object, void*) {
|
| 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(),
|
| @@ -456,7 +457,7 @@
|
|
|
| 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;
|
| @@ -473,10 +474,10 @@
|
| void*) {
|
| 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);
|
| }
|
| @@ -545,7 +546,7 @@
|
| MaybeObject* Accessors::FunctionGetName(Object* object, void*) {
|
| bool found_it = false;
|
| JSFunction* holder = FindInPrototypeChain<JSFunction>(object, &found_it);
|
| - if (!found_it) return Heap::undefined_value();
|
| + if (!found_it) return HEAP->undefined_value();
|
| return holder->shared()->name();
|
| }
|
|
|
| @@ -604,13 +605,13 @@
|
| if (Smi::IsValid(value)) {
|
| return Handle<Object>(Smi::FromInt(value));
|
| } else {
|
| - return Factory::NewNumberFromInt(value);
|
| + return Isolate::Current()->factory()->NewNumberFromInt(value);
|
| }
|
| }
|
|
|
| case DOUBLE: {
|
| double value = Memory::double_at(addr_);
|
| - return Factory::NewNumber(value);
|
| + return Isolate::Current()->factory()->NewNumber(value);
|
| }
|
|
|
| case LITERAL:
|
| @@ -732,12 +733,13 @@
|
| JavaScriptFrame* frame,
|
| Handle<JSFunction> inlined_function,
|
| int inlined_frame_index) {
|
| + Factory* factory = Isolate::Current()->factory();
|
| int args_count = inlined_function->shared()->formal_parameter_count();
|
| ScopedVector<SlotRef> args_slots(args_count);
|
| ComputeSlotMappingForArguments(frame, inlined_frame_index, &args_slots);
|
| Handle<JSObject> arguments =
|
| - Factory::NewArgumentsObject(inlined_function, args_count);
|
| - Handle<FixedArray> array = Factory::NewFixedArray(args_count);
|
| + factory->NewArgumentsObject(inlined_function, args_count);
|
| + Handle<FixedArray> array = factory->NewFixedArray(args_count);
|
| for (int i = 0; i < args_count; ++i) {
|
| Handle<Object> value = args_slots[i].GetValue();
|
| array->set(i, *value);
|
| @@ -750,11 +752,12 @@
|
|
|
|
|
| MaybeObject* Accessors::FunctionGetArguments(Object* object, void*) {
|
| - HandleScope scope;
|
| + Isolate* isolate = Isolate::Current();
|
| + HandleScope scope(isolate);
|
| bool found_it = false;
|
| JSFunction* holder = FindInPrototypeChain<JSFunction>(object, &found_it);
|
| - if (!found_it) return Heap::undefined_value();
|
| - Handle<JSFunction> function(holder);
|
| + if (!found_it) return isolate->heap()->undefined_value();
|
| + Handle<JSFunction> function(holder, isolate);
|
|
|
| // Find the top invocation of the function by traversing frames.
|
| List<JSFunction*> functions(2);
|
| @@ -776,9 +779,9 @@
|
| if (!frame->is_optimized()) {
|
| // If there is an arguments variable in the stack, we return that.
|
| Handle<SerializedScopeInfo> info(function->shared()->scope_info());
|
| - int index = info->StackSlotIndex(Heap::arguments_symbol());
|
| + int index = info->StackSlotIndex(isolate->heap()->arguments_symbol());
|
| if (index >= 0) {
|
| - Handle<Object> arguments(frame->GetExpression(index));
|
| + Handle<Object> arguments(frame->GetExpression(index), isolate);
|
| if (!arguments->IsArgumentsMarker()) return *arguments;
|
| }
|
| }
|
| @@ -792,9 +795,9 @@
|
| // Get the number of arguments and construct an arguments object
|
| // mirror for the right frame.
|
| const int length = frame->ComputeParametersCount();
|
| - Handle<JSObject> arguments = Factory::NewArgumentsObject(function,
|
| - length);
|
| - Handle<FixedArray> array = Factory::NewFixedArray(length);
|
| + Handle<JSObject> arguments = isolate->factory()->NewArgumentsObject(
|
| + function, length);
|
| + Handle<FixedArray> array = isolate->factory()->NewFixedArray(length);
|
|
|
| // Copy the parameters to the arguments object.
|
| ASSERT(array->length() == length);
|
| @@ -808,7 +811,7 @@
|
| }
|
|
|
| // No frame corresponding to the given function found. Return null.
|
| - return Heap::null_value();
|
| + return isolate->heap()->null_value();
|
| }
|
|
|
|
|
| @@ -825,12 +828,13 @@
|
|
|
|
|
| MaybeObject* Accessors::FunctionGetCaller(Object* object, void*) {
|
| - HandleScope scope;
|
| + Isolate* isolate = Isolate::Current();
|
| + HandleScope scope(isolate);
|
| AssertNoAllocation no_alloc;
|
| bool found_it = false;
|
| JSFunction* holder = FindInPrototypeChain<JSFunction>(object, &found_it);
|
| - if (!found_it) return Heap::undefined_value();
|
| - Handle<JSFunction> function(holder);
|
| + if (!found_it) return isolate->heap()->undefined_value();
|
| + Handle<JSFunction> function(holder, isolate);
|
|
|
| List<JSFunction*> functions(2);
|
| for (JavaScriptFrameIterator it; !it.done(); it.Advance()) {
|
| @@ -854,7 +858,7 @@
|
| }
|
| ASSERT(functions.length() == 1);
|
| }
|
| - if (it.done()) return Heap::null_value();
|
| + if (it.done()) return isolate->heap()->null_value();
|
| break;
|
| }
|
| }
|
| @@ -863,7 +867,7 @@
|
| }
|
|
|
| // No frame corresponding to the given function found. Return null.
|
| - return Heap::null_value();
|
| + return isolate->heap()->null_value();
|
| }
|
|
|
|
|
|
|