Index: src/runtime.cc |
=================================================================== |
--- src/runtime.cc (revision 4906) |
+++ src/runtime.cc (working copy) |
@@ -53,7 +53,7 @@ |
#define RUNTIME_ASSERT(value) \ |
- if (!(value)) return Top::ThrowIllegalOperation(); |
+ if (!(value)) return Isolate::Current()->ThrowIllegalOperation(); |
// Cast the given object to a value of the specified type and store |
// it in a variable with the given name. If the object is not of the |
@@ -100,7 +100,7 @@ |
static Object* DeepCopyBoilerplate(Heap* heap, JSObject* boilerplate) { |
StackLimitCheck check; |
- if (check.HasOverflowed()) return Top::StackOverflow(); |
+ if (check.HasOverflowed()) return Isolate::Current()->StackOverflow(); |
Object* result = heap->CopyJSObject(boilerplate); |
if (result->IsFailure()) return result; |
@@ -474,7 +474,8 @@ |
Object* value = args[1]; |
// Create a catch context extension object. |
JSFunction* constructor = |
- Top::context()->global_context()->context_extension_function(); |
+ Isolate::Current()->context()->global_context()-> |
+ context_extension_function(); |
Object* object = HEAP->AllocateJSObject(constructor); |
if (object->IsFailure()) return object; |
// Assign the exception value to the catch variable and make sure |
@@ -772,13 +773,14 @@ |
Handle<Object> args[2] = { type_handle, name }; |
Handle<Object> error = |
Factory::NewTypeError("redeclaration", HandleVector(args, 2)); |
- return Top::Throw(*error); |
+ return Isolate::Current()->Throw(*error); |
} |
static Object* Runtime_DeclareGlobals(Arguments args) { |
HandleScope scope; |
- Handle<GlobalObject> global = Handle<GlobalObject>(Top::context()->global()); |
+ Handle<GlobalObject> global = Handle<GlobalObject>( |
+ Isolate::Current()->context()->global()); |
Handle<Context> context = args.at<Context>(0); |
CONVERT_ARG_CHECKED(FixedArray, pairs, 1); |
@@ -951,7 +953,8 @@ |
} else { |
// The function context's extension context does not exists - allocate |
// it. |
- context_ext = Factory::NewJSObject(Top::context_extension_function()); |
+ context_ext = Factory::NewJSObject( |
+ Isolate::Current()->context_extension_function()); |
// And store it in the extension slot. |
context->set_extension(*context_ext); |
} |
@@ -980,7 +983,7 @@ |
bool assign = args.length() == 2; |
CONVERT_ARG_CHECKED(String, name, 0); |
- GlobalObject* global = Top::context()->global(); |
+ GlobalObject* global = Isolate::Current()->context()->global(); |
// According to ECMA-262, section 12.2, page 62, the property must |
// not be deletable. |
@@ -1006,7 +1009,7 @@ |
if (lookup.IsReadOnly()) { |
// If we found readonly property on one of hidden prototypes, |
// just shadow it. |
- if (real_holder != Top::context()->global()) break; |
+ if (real_holder != Isolate::Current()->context()->global()) break; |
return ThrowRedeclarationError("const", name); |
} |
@@ -1028,7 +1031,7 @@ |
// overwrite it with a variable declaration we must throw a |
// re-declaration error. However if we found readonly property |
// on one of hidden prototypes, just shadow it. |
- if (real_holder != Top::context()->global()) break; |
+ if (real_holder != Isolate::Current()->context()->global()) break; |
return ThrowRedeclarationError("const", name); |
} |
} |
@@ -1054,7 +1057,7 @@ |
real_holder = JSObject::cast(proto); |
} |
- global = Top::context()->global(); |
+ global = Isolate::Current()->context()->global(); |
if (assign) { |
return global->IgnoreAttributesAndSetLocalProperty(*name, |
args[1], |
@@ -1073,7 +1076,7 @@ |
Handle<Object> value = args.at<Object>(1); |
// Get the current global object from top. |
- GlobalObject* global = Top::context()->global(); |
+ GlobalObject* global = Isolate::Current()->context()->global(); |
// According to ECMA-262, section 12.2, page 62, the property must |
// not be deletable. Since it's a const, it must be READ_ONLY too. |
@@ -1112,7 +1115,7 @@ |
// Restore global object from context (in case of GC) and continue |
// with setting the value because the property is either absent or |
// read-only. We also have to do redo the lookup. |
- global = Top::context()->global(); |
+ global = Isolate::Current()->context()->global(); |
// BUG 1213579: Handle the case where we have to set a read-only |
// property through an interceptor and only do it if it's |
@@ -1197,7 +1200,8 @@ |
// The property could not be found, we introduce it in the global |
// context. |
if (attributes == ABSENT) { |
- Handle<JSObject> global = Handle<JSObject>(Top::context()->global()); |
+ Handle<JSObject> global = Handle<JSObject>( |
+ Isolate::Current()->context()->global()); |
SetProperty(global, name, value, NONE); |
return *value; |
} |
@@ -1240,7 +1244,7 @@ |
// are converted to empty handles in handle operations. We |
// need to convert back to exceptions here. |
if (set.is_null()) { |
- ASSERT(Top::has_pending_exception()); |
+ ASSERT(Isolate::Current()->has_pending_exception()); |
return Failure::Exception(); |
} |
} |
@@ -1289,7 +1293,7 @@ |
ASSERT(args.length() == 3); |
CONVERT_SMI_CHECKED(elements_count, args[0]); |
if (elements_count > JSArray::kMaxFastElementsLength) { |
- return Top::ThrowIllegalOperation(); |
+ return Isolate::Current()->ThrowIllegalOperation(); |
} |
Object* new_object = HEAP->AllocateFixedArrayWithHoles(elements_count); |
if (new_object->IsFailure()) return new_object; |
@@ -1302,7 +1306,7 @@ |
AssertNoAllocation no_gc; |
HandleScope scope; |
reinterpret_cast<HeapObject*>(new_object)-> |
- set_map(Top::global_context()->regexp_result_map()); |
+ set_map(Isolate::Current()->global_context()->regexp_result_map()); |
} |
JSArray* array = JSArray::cast(new_object); |
array->set_properties(HEAP->empty_fixed_array()); |
@@ -1417,7 +1421,8 @@ |
static Object* Runtime_GetGlobalReceiver(Arguments args) { |
// Returns a real global receiver, not one of builtins object. |
- Context* global_context = Top::context()->global()->global_context(); |
+ Context* global_context = |
+ Isolate::Current()->context()->global()->global_context(); |
return global_context->global()->global_receiver(); |
} |
@@ -1444,7 +1449,7 @@ |
RegExpImpl::CreateRegExpLiteral(constructor, pattern, flags, |
&has_pending_exception); |
if (has_pending_exception) { |
- ASSERT(Top::has_pending_exception()); |
+ ASSERT(Isolate::Current()->has_pending_exception()); |
return Failure::Exception(); |
} |
literals->set(index, *regexp); |
@@ -3703,7 +3708,7 @@ |
Handle<Object> error = |
Factory::NewTypeError("non_object_property_load", |
HandleVector(args, 2)); |
- return Top::Throw(*error); |
+ return Isolate::Current()->Throw(*error); |
} |
// Check if the given key is an array index. |
@@ -3905,7 +3910,7 @@ |
Handle<Object> error = |
Factory::NewTypeError("non_object_property_store", |
HandleVector(args, 2)); |
- return Top::Throw(*error); |
+ return Isolate::Current()->Throw(*error); |
} |
// If the object isn't a JavaScript object, we ignore the store. |
@@ -4251,8 +4256,10 @@ |
if (obj->IsJSGlobalProxy()) { |
// Only collect names if access is permitted. |
if (obj->IsAccessCheckNeeded() && |
- !Top::MayNamedAccess(*obj, HEAP->undefined_value(), v8::ACCESS_KEYS)) { |
- Top::ReportFailedAccessCheck(*obj, v8::ACCESS_KEYS); |
+ !Isolate::Current()->MayNamedAccess(*obj, |
+ HEAP->undefined_value(), |
+ v8::ACCESS_KEYS)) { |
+ Isolate::Current()->ReportFailedAccessCheck(*obj, v8::ACCESS_KEYS); |
return *Factory::NewJSArray(0); |
} |
obj = Handle<JSObject>(JSObject::cast(obj->GetPrototype())); |
@@ -4268,10 +4275,10 @@ |
for (int i = 0; i < length; i++) { |
// Only collect names if access is permitted. |
if (jsproto->IsAccessCheckNeeded() && |
- !Top::MayNamedAccess(*jsproto, |
- HEAP->undefined_value(), |
- v8::ACCESS_KEYS)) { |
- Top::ReportFailedAccessCheck(*jsproto, v8::ACCESS_KEYS); |
+ !Isolate::Current()->MayNamedAccess(*jsproto, |
+ HEAP->undefined_value(), |
+ v8::ACCESS_KEYS)) { |
+ Isolate::Current()->ReportFailedAccessCheck(*jsproto, v8::ACCESS_KEYS); |
return *Factory::NewJSArray(0); |
} |
int n; |
@@ -4444,7 +4451,7 @@ |
if (index < n) { |
return frame->GetParameter(index); |
} else { |
- return Top::initial_object_prototype()->GetElement(index); |
+ return Isolate::Current()->initial_object_prototype()->GetElement(index); |
} |
} |
@@ -4453,7 +4460,7 @@ |
if (key->Equals(HEAP->callee_symbol())) return frame->function(); |
// Lookup in the initial Object.prototype object. |
- return Top::initial_object_prototype()->GetProperty(*key); |
+ return Isolate::Current()->initial_object_prototype()->GetProperty(*key); |
} |
@@ -4690,7 +4697,7 @@ |
// We don't allow strings that are longer than a maximal length. |
ASSERT(String::kMaxLength < 0x7fffffff - 6); // Cannot overflow. |
if (escaped_length > String::kMaxLength) { |
- Top::context()->mark_out_of_memory(); |
+ Isolate::Current()->context()->mark_out_of_memory(); |
return Failure::OutOfMemoryException(); |
} |
} |
@@ -4921,7 +4928,7 @@ |
if (char_length == 0) char_length = 1; |
current_length += char_length; |
if (current_length > Smi::kMaxValue) { |
- Top::context()->mark_out_of_memory(); |
+ Isolate::Current()->context()->mark_out_of_memory(); |
return Failure::OutOfMemoryException(); |
} |
} |
@@ -5541,7 +5548,7 @@ |
ASSERT(args.length() == 3); |
CONVERT_CHECKED(JSArray, array, args[0]); |
if (!args[1]->IsSmi()) { |
- Top::context()->mark_out_of_memory(); |
+ Isolate::Current()->context()->mark_out_of_memory(); |
return Failure::OutOfMemoryException(); |
} |
int array_length = Smi::cast(args[1])->value(); |
@@ -5552,7 +5559,7 @@ |
int special_length = special->length(); |
if (!array->HasFastElements()) { |
- return Top::Throw(HEAP->illegal_argument_symbol()); |
+ return Isolate::Current()->Throw(HEAP->illegal_argument_symbol()); |
} |
FixedArray* fixed_array = FixedArray::cast(array->elements()); |
if (fixed_array->length() < array_length) { |
@@ -5586,21 +5593,21 @@ |
// Get the position and check that it is a positive smi. |
i++; |
if (i >= array_length) { |
- return Top::Throw(HEAP->illegal_argument_symbol()); |
+ return Isolate::Current()->Throw(HEAP->illegal_argument_symbol()); |
} |
Object* next_smi = fixed_array->get(i); |
if (!next_smi->IsSmi()) { |
- return Top::Throw(HEAP->illegal_argument_symbol()); |
+ return Isolate::Current()->Throw(HEAP->illegal_argument_symbol()); |
} |
pos = Smi::cast(next_smi)->value(); |
if (pos < 0) { |
- return Top::Throw(HEAP->illegal_argument_symbol()); |
+ return Isolate::Current()->Throw(HEAP->illegal_argument_symbol()); |
} |
} |
ASSERT(pos >= 0); |
ASSERT(len >= 0); |
if (pos > special_length || len > special_length - pos) { |
- return Top::Throw(HEAP->illegal_argument_symbol()); |
+ return Isolate::Current()->Throw(HEAP->illegal_argument_symbol()); |
} |
increment = len; |
} else if (elt->IsString()) { |
@@ -5611,10 +5618,10 @@ |
ascii = false; |
} |
} else { |
- return Top::Throw(HEAP->illegal_argument_symbol()); |
+ return Isolate::Current()->Throw(HEAP->illegal_argument_symbol()); |
} |
if (increment > String::kMaxLength - position) { |
- Top::context()->mark_out_of_memory(); |
+ Isolate::Current()->context()->mark_out_of_memory(); |
return Failure::OutOfMemoryException(); |
} |
position += increment; |
@@ -6617,7 +6624,7 @@ |
Vector< Handle<Object> > arguments = HandleVector(&constructor, 1); |
Handle<Object> type_error = |
Factory::NewTypeError("not_constructor", arguments); |
- return Top::Throw(*type_error); |
+ return Isolate::Current()->Throw(*type_error); |
} |
Handle<JSFunction> function = Handle<JSFunction>::cast(constructor); |
@@ -6628,7 +6635,7 @@ |
Vector< Handle<Object> > arguments = HandleVector(&constructor, 1); |
Handle<Object> type_error = |
Factory::NewTypeError("not_constructor", arguments); |
- return Top::Throw(*type_error); |
+ return Isolate::Current()->Throw(*type_error); |
} |
#ifdef ENABLE_DEBUGGER_SUPPORT |
@@ -6651,7 +6658,7 @@ |
// instead of a new JSFunction object. This way, errors are |
// reported the same way whether or not 'Function' is called |
// using 'new'. |
- return Top::context()->global(); |
+ return Isolate::Current()->context()->global(); |
} |
} |
@@ -6728,7 +6735,7 @@ |
Object* result = HEAP->AllocateFunctionContext(length, function); |
if (result->IsFailure()) return result; |
- Top::set_context(Context::cast(result)); |
+ Isolate::Current()->set_context(Context::cast(result)); |
return result; // non-failure |
} |
@@ -6744,18 +6751,18 @@ |
Handle<Object> handle(object); |
Handle<Object> result = |
Factory::NewTypeError("with_expression", HandleVector(&handle, 1)); |
- return Top::Throw(*result); |
+ return Isolate::Current()->Throw(*result); |
} |
} |
Object* result = |
- HEAP->AllocateWithContext(Top::context(), |
+ HEAP->AllocateWithContext(Isolate::Current()->context(), |
JSObject::cast(js_object), |
is_catch_context); |
if (result->IsFailure()) return result; |
Context* context = Context::cast(result); |
- Top::set_context(context); |
+ Isolate::Current()->set_context(context); |
return result; |
} |
@@ -6794,7 +6801,7 @@ |
} |
// No intermediate context found. Use global object by default. |
- return Top::context()->global(); |
+ return Isolate::Current()->context()->global(); |
} |
@@ -6836,7 +6843,7 @@ |
static JSObject* ComputeReceiverForNonGlobal(JSObject* holder) { |
ASSERT(!holder->IsGlobalObject()); |
- Context* top = Top::context(); |
+ Context* top = Isolate::Current()->context(); |
// Get the context extension function. |
JSFunction* context_extension_function = |
top->global_context()->context_extension_function(); |
@@ -6858,7 +6865,7 @@ |
ASSERT_EQ(2, args.length()); |
if (!args[0]->IsContext() || !args[1]->IsString()) { |
- return MakePair(Top::ThrowIllegalOperation(), NULL); |
+ return MakePair(Isolate::Current()->ThrowIllegalOperation(), NULL); |
} |
Handle<Context> context = args.at<Context>(0); |
Handle<String> name = args.at<String>(1); |
@@ -6876,7 +6883,8 @@ |
// If the "property" we were looking for is a local variable or an |
// argument in a context, the receiver is the global object; see |
// ECMA-262, 3rd., 10.1.6 and 10.2.3. |
- JSObject* receiver = Top::context()->global()->global_receiver(); |
+ JSObject* receiver = |
+ Isolate::Current()->context()->global()->global_receiver(); |
Object* value = (holder->IsContext()) |
? Context::cast(*holder)->get(index) |
: JSObject::cast(*holder)->GetElement(index); |
@@ -6891,7 +6899,7 @@ |
if (object->IsGlobalObject()) { |
receiver = GlobalObject::cast(object)->global_receiver(); |
} else if (context->is_exception_holder(*holder)) { |
- receiver = Top::context()->global()->global_receiver(); |
+ receiver = Isolate::Current()->context()->global()->global_receiver(); |
} else { |
receiver = ComputeReceiverForNonGlobal(object); |
} |
@@ -6905,7 +6913,7 @@ |
// The property doesn't exist - throw exception. |
Handle<Object> reference_error = |
Factory::NewReferenceError("not_defined", HandleVector(&name, 1)); |
- return MakePair(Top::Throw(*reference_error), NULL); |
+ return MakePair(Isolate::Current()->Throw(*reference_error), NULL); |
} else { |
// The property doesn't exist - return undefined |
return MakePair(HEAP->undefined_value(), HEAP->undefined_value()); |
@@ -6964,7 +6972,7 @@ |
// The property was not found. It needs to be stored in the global context. |
ASSERT(attributes == ABSENT); |
attributes = NONE; |
- context_ext = Handle<JSObject>(Top::context()->global()); |
+ context_ext = Handle<JSObject>(Isolate::Current()->context()->global()); |
} |
// Set the property, but ignore if read_only variable on the context |
@@ -6976,7 +6984,7 @@ |
// Failure::Exception is converted to a null handle in the |
// handle-based methods such as SetProperty. We therefore need |
// to convert null handles back to exceptions. |
- ASSERT(Top::has_pending_exception()); |
+ ASSERT(Isolate::Current()->has_pending_exception()); |
return Failure::Exception(); |
} |
} |
@@ -6988,7 +6996,7 @@ |
HandleScope scope; |
ASSERT(args.length() == 1); |
- return Top::Throw(args[0]); |
+ return Isolate::Current()->Throw(args[0]); |
} |
@@ -6996,13 +7004,13 @@ |
HandleScope scope; |
ASSERT(args.length() == 1); |
- return Top::ReThrow(args[0]); |
+ return Isolate::Current()->ReThrow(args[0]); |
} |
static Object* Runtime_PromoteScheduledException(Arguments args) { |
ASSERT_EQ(0, args.length()); |
- return Top::PromoteScheduledException(); |
+ return Isolate::Current()->PromoteScheduledException(); |
} |
@@ -7013,13 +7021,13 @@ |
Handle<Object> name(args[0]); |
Handle<Object> reference_error = |
Factory::NewReferenceError("not_defined", HandleVector(&name, 1)); |
- return Top::Throw(*reference_error); |
+ return Isolate::Current()->Throw(*reference_error); |
} |
static Object* Runtime_StackOverflow(Arguments args) { |
NoHandleAllocation na; |
- return Top::StackOverflow(); |
+ return Isolate::Current()->StackOverflow(); |
} |
@@ -7170,7 +7178,7 @@ |
static Object* Runtime_DebugTrace(Arguments args) { |
ASSERT(args.length() == 0); |
NoHandleAllocation ha; |
- Top::PrintStack(); |
+ Isolate::Current()->PrintStack(); |
return HEAP->undefined_value(); |
} |
@@ -7260,7 +7268,7 @@ |
CONVERT_ARG_CHECKED(Oddball, is_json, 1) |
// Compile source string in the global context. |
- Handle<Context> context(Top::context()->global_context()); |
+ Handle<Context> context(Isolate::Current()->context()->global_context()); |
Compiler::ValidationState validate = (is_json->IsTrue()) |
? Compiler::VALIDATE_JSON : Compiler::DONT_VALIDATE_JSON; |
Handle<SharedFunctionInfo> shared = Compiler::CompileEval(source, |
@@ -7280,13 +7288,13 @@ |
// and return the compiled function bound in the local context. |
Handle<SharedFunctionInfo> shared = Compiler::CompileEval( |
source, |
- Handle<Context>(Top::context()), |
- Top::context()->IsGlobalContext(), |
+ Handle<Context>(Isolate::Current()->context()), |
+ Isolate::Current()->context()->IsGlobalContext(), |
Compiler::DONT_VALIDATE_JSON); |
if (shared.is_null()) return MakePair(Failure::Exception(), NULL); |
Handle<JSFunction> compiled = Factory::NewFunctionFromSharedFunctionInfo( |
shared, |
- Handle<Context>(Top::context()), |
+ Handle<Context>(Isolate::Current()->context()), |
NOT_TENURED); |
return MakePair(*compiled, *receiver); |
} |
@@ -7295,7 +7303,7 @@ |
static ObjectPair Runtime_ResolvePossiblyDirectEval(Arguments args) { |
ASSERT(args.length() == 3); |
if (!args[0]->IsJSFunction()) { |
- return MakePair(Top::ThrowIllegalOperation(), NULL); |
+ return MakePair(Isolate::Current()->ThrowIllegalOperation(), NULL); |
} |
HandleScope scope; |
@@ -7303,9 +7311,9 @@ |
Handle<Object> receiver; // Will be overwritten. |
// Compute the calling context. |
- Handle<Context> context = Handle<Context>(Top::context()); |
+ Handle<Context> context = Handle<Context>(Isolate::Current()->context()); |
#ifdef DEBUG |
- // Make sure Top::context() agrees with the old code that traversed |
+ // Make sure Isolate::context() agrees with the old code that traversed |
// the stack frames to compute the context. |
StackFrameLocator locator; |
JavaScriptFrame* frame = locator.FindJavaScriptFrame(0); |
@@ -7335,7 +7343,7 @@ |
Handle<Object> name = Factory::eval_symbol(); |
Handle<Object> reference_error = |
Factory::NewReferenceError("not_defined", HandleVector(&name, 1)); |
- return MakePair(Top::Throw(*reference_error), NULL); |
+ return MakePair(Isolate::Current()->Throw(*reference_error), NULL); |
} |
if (!context->IsGlobalContext()) { |
@@ -7345,16 +7353,18 @@ |
context = Handle<Context>::cast(receiver); |
receiver = Handle<Object>(context->get(index)); |
} else if (receiver->IsJSContextExtensionObject()) { |
- receiver = Handle<JSObject>(Top::context()->global()->global_receiver()); |
+ receiver = Handle<JSObject>( |
+ Isolate::Current()->context()->global()->global_receiver()); |
} |
return MakePair(*callee, *receiver); |
} |
// 'eval' is bound in the global context, but it may have been overwritten. |
// Compare it to the builtin 'GlobalEval' function to make sure. |
- if (*callee != Top::global_context()->global_eval_fun() || |
+ if (*callee != Isolate::Current()->global_context()->global_eval_fun() || |
!args[1]->IsString()) { |
- return MakePair(*callee, Top::context()->global()->global_receiver()); |
+ return MakePair(*callee, |
+ Isolate::Current()->context()->global()->global_receiver()); |
} |
return CompileGlobalEval(args.at<String>(1), args.at<Object>(2)); |
@@ -7364,7 +7374,7 @@ |
static ObjectPair Runtime_ResolvePossiblyDirectEvalNoLookup(Arguments args) { |
ASSERT(args.length() == 3); |
if (!args[0]->IsJSFunction()) { |
- return MakePair(Top::ThrowIllegalOperation(), NULL); |
+ return MakePair(Isolate::Current()->ThrowIllegalOperation(), NULL); |
} |
HandleScope scope; |
@@ -7372,9 +7382,10 @@ |
// 'eval' is bound in the global context, but it may have been overwritten. |
// Compare it to the builtin 'GlobalEval' function to make sure. |
- if (*callee != Top::global_context()->global_eval_fun() || |
+ if (*callee != Isolate::Current()->global_context()->global_eval_fun() || |
!args[1]->IsString()) { |
- return MakePair(*callee, Top::context()->global()->global_receiver()); |
+ return MakePair(*callee, |
+ Isolate::Current()->context()->global()->global_receiver()); |
} |
return CompileGlobalEval(args.at<String>(1), args.at<Object>(2)); |
@@ -7390,10 +7401,10 @@ |
ASSERT(args.length() == 1); |
CONVERT_ARG_CHECKED(JSFunction, func, 0); |
ASSERT(func->map()->instance_type() == |
- Top::function_instance_map()->instance_type()); |
+ Isolate::Current()->function_instance_map()->instance_type()); |
ASSERT(func->map()->instance_size() == |
- Top::function_instance_map()->instance_size()); |
- func->set_map(*Top::function_instance_map()); |
+ Isolate::Current()->function_instance_map()->instance_size()); |
+ func->set_map(*Isolate::Current()->function_instance_map()); |
return *func; |
} |
@@ -7876,7 +7887,7 @@ |
uint32_t index1, index2; |
if (!key1->ToArrayIndex(&index1) |
|| !key2->ToArrayIndex(&index2)) { |
- return Top::ThrowIllegalOperation(); |
+ return Isolate::Current()->ThrowIllegalOperation(); |
} |
Handle<JSObject> jsobject = Handle<JSObject>::cast(object); |
@@ -8033,8 +8044,8 @@ |
value = receiver->GetPropertyWithCallback( |
receiver, structure, name, result->holder()); |
if (value->IsException()) { |
- value = Top::pending_exception(); |
- Top::clear_pending_exception(); |
+ value = Isolate::Current()->pending_exception(); |
+ Isolate::Current()->clear_pending_exception(); |
if (caught_exception != NULL) { |
*caught_exception = true; |
} |
@@ -8085,7 +8096,7 @@ |
// context and not some internal debugger context. |
SaveContext save; |
if (Debug::InDebugger()) { |
- Top::set_context(*Debug::debugger_entry()->GetContext()); |
+ Isolate::Current()->set_context(*Debug::debugger_entry()->GetContext()); |
} |
// Skip the global proxy as it has no properties and always delegates to the |
@@ -8239,7 +8250,7 @@ |
CONVERT_NUMBER_CHECKED(int, break_id, Int32, args[0]); |
// Check that the break id is valid. |
if (Debug::break_id() == 0 || break_id != Debug::break_id()) { |
- return Top::Throw(HEAP->illegal_execution_state_symbol()); |
+ return Isolate::Current()->Throw(HEAP->illegal_execution_state_symbol()); |
} |
return HEAP->true_value(); |
@@ -8319,7 +8330,7 @@ |
// Traverse the saved contexts chain to find the active context for the |
// selected frame. |
- SaveContext* save = Top::save_context(); |
+ SaveContext* save = Isolate::Current()->save_context(); |
while (save != NULL && !save->below(it.frame())) { |
save = save->prev(); |
} |
@@ -8537,7 +8548,8 @@ |
// Allocate and initialize a JSObject with all the arguments, stack locals |
// heap locals and extension properties of the debugged function. |
- Handle<JSObject> local_scope = Factory::NewJSObject(Top::object_function()); |
+ Handle<JSObject> local_scope = |
+ Factory::NewJSObject(Isolate::Current()->object_function()); |
// First fill all parameters. |
for (int i = 0; i < scope_info.number_of_parameters(); ++i) { |
@@ -8588,7 +8600,8 @@ |
// Allocate and initialize a JSObject with all the content of theis function |
// closure. |
- Handle<JSObject> closure_scope = Factory::NewJSObject(Top::object_function()); |
+ Handle<JSObject> closure_scope = |
+ Factory::NewJSObject(Isolate::Current()->object_function()); |
// Check whether the arguments shadow object exists. |
int arguments_shadow_index = |
@@ -8946,7 +8959,8 @@ |
Handle<String> text_str = Factory::LookupAsciiSymbol("text"); |
Handle<FixedArray> frames_array = Factory::NewFixedArray(frames_count); |
for (int i = 0; i < frames_count; i++) { |
- Handle<JSObject> frame_value = Factory::NewJSObject(Top::object_function()); |
+ Handle<JSObject> frame_value = |
+ Factory::NewJSObject(Isolate::Current()->object_function()); |
frame_value->SetProperty( |
*address_str, |
*Factory::NewNumberFromInt(reinterpret_cast<int>(frames[i].address)), |
@@ -9252,7 +9266,7 @@ |
Object* check = Runtime_CheckExecutionState(args); |
if (check->IsFailure()) return check; |
if (!args[1]->IsNumber() || !args[2]->IsNumber()) { |
- return Top::Throw(HEAP->illegal_argument_symbol()); |
+ return Isolate::Current()->Throw(HEAP->illegal_argument_symbol()); |
} |
// Get the step action and check validity. |
@@ -9262,13 +9276,13 @@ |
step_action != StepOut && |
step_action != StepInMin && |
step_action != StepMin) { |
- return Top::Throw(HEAP->illegal_argument_symbol()); |
+ return Isolate::Current()->Throw(HEAP->illegal_argument_symbol()); |
} |
// Get the number of steps. |
int step_count = NumberToInt32(args[2]); |
if (step_count < 1) { |
- return Top::Throw(HEAP->illegal_argument_symbol()); |
+ return Isolate::Current()->Throw(HEAP->illegal_argument_symbol()); |
} |
// Clear all current stepping setup. |
@@ -9384,13 +9398,13 @@ |
// Traverse the saved contexts chain to find the active context for the |
// selected frame. |
- SaveContext* save = Top::save_context(); |
+ SaveContext* save = Isolate::Current()->save_context(); |
while (save != NULL && !save->below(frame)) { |
save = save->prev(); |
} |
ASSERT(save != NULL); |
SaveContext savex; |
- Top::set_context(*(save->context())); |
+ Isolate::Current()->set_context(*(save->context())); |
// Create the (empty) function replacing the function on the stack frame for |
// the purpose of evaluating in the context created below. It is important |
@@ -9491,12 +9505,12 @@ |
top = top->prev(); |
} |
if (top != NULL) { |
- Top::set_context(*top->context()); |
+ Isolate::Current()->set_context(*top->context()); |
} |
// Get the global context now set to the top context from before the |
// debugger was invoked. |
- Handle<Context> context = Top::global_context(); |
+ Handle<Context> context = Isolate::Current()->global_context(); |
// Compile the source to be evaluated. |
Handle<SharedFunctionInfo> shared = |
@@ -9511,7 +9525,7 @@ |
// Invoke the result of the compilation to get the evaluation function. |
bool has_pending_exception; |
- Handle<Object> receiver = Top::global(); |
+ Handle<Object> receiver = Isolate::Current()->global(); |
Handle<Object> result = |
Execution::Call(compiled_function, receiver, 0, NULL, |
&has_pending_exception); |
@@ -9540,7 +9554,8 @@ |
} |
// Return result as a JS array. |
- Handle<JSObject> result = Factory::NewJSObject(Top::array_function()); |
+ Handle<JSObject> result = Factory::NewJSObject( |
+ Isolate::Current()->array_function()); |
Handle<JSArray>::cast(result)->SetContent(*instances); |
return *result; |
} |
@@ -9636,7 +9651,7 @@ |
// Get the constructor function for context extension and arguments array. |
JSObject* arguments_boilerplate = |
- Top::context()->global_context()->arguments_boilerplate(); |
+ Isolate::Current()->context()->global_context()->arguments_boilerplate(); |
JSFunction* arguments_function = |
JSFunction::cast(arguments_boilerplate->map()->constructor()); |
@@ -9657,7 +9672,7 @@ |
// Return result as JS array. |
Object* result = |
HEAP->AllocateJSObject( |
- Top::context()->global_context()->array_function()); |
+ Isolate::Current()->context()->global_context()->array_function()); |
if (!result->IsFailure()) JSArray::cast(result)->SetContent(instances); |
return result; |
} |
@@ -9722,7 +9737,7 @@ |
// Return result as JS array. |
Object* result = |
HEAP->AllocateJSObject( |
- Top::context()->global_context()->array_function()); |
+ Isolate::Current()->context()->global_context()->array_function()); |
if (!result->IsFailure()) JSArray::cast(result)->SetContent(instances); |
return result; |
} |
@@ -9857,7 +9872,7 @@ |
JSArray* result = LiveEdit::GatherCompileInfo(script_handle, source); |
- if (Top::has_pending_exception()) { |
+ if (Isolate::Current()->has_pending_exception()) { |
return Failure::Exception(); |
} |
@@ -10026,11 +10041,11 @@ |
bool pending_exception; |
{ |
if (without_debugger) { |
- result = Execution::Call(function, Top::global(), 0, NULL, |
+ result = Execution::Call(function, Isolate::Current()->global(), 0, NULL, |
&pending_exception); |
} else { |
EnterDebugger enter_debugger; |
- result = Execution::Call(function, Top::global(), 0, NULL, |
+ result = Execution::Call(function, Isolate::Current()->global(), 0, NULL, |
&pending_exception); |
} |
} |
@@ -10214,7 +10229,7 @@ |
ASSERT(args.length() == 2); |
OS::PrintError("abort: %s\n", reinterpret_cast<char*>(args[0]) + |
Smi::cast(args[1])->value()); |
- Top::PrintStack(); |
+ Isolate::Current()->PrintStack(); |
OS::Abort(); |
UNREACHABLE(); |
return NULL; |
@@ -10241,7 +10256,7 @@ |
Handle<JSFunction> factory(JSFunction::cast( |
cache->get(JSFunctionResultCache::kFactoryIndex))); |
// TODO(antonm): consider passing a receiver when constructing a cache. |
- Handle<Object> receiver(Top::global_context()->global()); |
+ Handle<Object> receiver(Isolate::Current()->global_context()->global()); |
Handle<Object> value; |
{ |