| Index: src/isolate.cc
|
| diff --git a/src/isolate.cc b/src/isolate.cc
|
| index 23782cd1cfc1405557277a05976de7cf501d1a43..726209cfb4548356c8881e6042a6d0ddab11112b 100644
|
| --- a/src/isolate.cc
|
| +++ b/src/isolate.cc
|
| @@ -91,7 +91,6 @@ void ThreadLocalTop::InitializeInternal() {
|
| has_pending_message_ = false;
|
| rethrowing_message_ = false;
|
| pending_message_obj_ = NULL;
|
| - pending_message_script_ = NULL;
|
| scheduled_exception_ = NULL;
|
| }
|
|
|
| @@ -190,7 +189,6 @@ void Isolate::Iterate(ObjectVisitor* v, ThreadLocalTop* thread) {
|
| // Visit the roots from the top for a given thread.
|
| v->VisitPointer(&thread->pending_exception_);
|
| v->VisitPointer(&(thread->pending_message_obj_));
|
| - v->VisitPointer(bit_cast<Object**>(&(thread->pending_message_script_)));
|
| v->VisitPointer(bit_cast<Object**>(&(thread->context_)));
|
| v->VisitPointer(&thread->scheduled_exception_);
|
|
|
| @@ -199,7 +197,6 @@ void Isolate::Iterate(ObjectVisitor* v, ThreadLocalTop* thread) {
|
| block = block->next_) {
|
| v->VisitPointer(bit_cast<Object**>(&(block->exception_)));
|
| v->VisitPointer(bit_cast<Object**>(&(block->message_obj_)));
|
| - v->VisitPointer(bit_cast<Object**>(&(block->message_script_)));
|
| }
|
|
|
| // Iterate over pointers on native execution stack.
|
| @@ -989,7 +986,6 @@ Object* Isolate::Throw(Object* exception, MessageLocation* location) {
|
| Handle<Object> message_obj = CreateMessage(exception_handle, location);
|
|
|
| thread_local_top()->pending_message_obj_ = *message_obj;
|
| - thread_local_top()->pending_message_script_ = *location->script();
|
|
|
| // If the abort-on-uncaught-exception flag is specified, abort on any
|
| // exception not caught by JavaScript, even when an external handler is
|
| @@ -1161,11 +1157,8 @@ void Isolate::RestorePendingMessageFromTryCatch(v8::TryCatch* handler) {
|
| DCHECK(handler->rethrow_);
|
| DCHECK(handler->capture_message_);
|
| Object* message = reinterpret_cast<Object*>(handler->message_obj_);
|
| - Object* script = reinterpret_cast<Object*>(handler->message_script_);
|
| DCHECK(message->IsJSMessageObject() || message->IsTheHole());
|
| - DCHECK(script->IsScript() || script->IsTheHole());
|
| thread_local_top()->pending_message_obj_ = message;
|
| - thread_local_top()->pending_message_script_ = script;
|
| }
|
|
|
|
|
| @@ -1446,16 +1439,12 @@ void Isolate::ReportPendingMessages() {
|
| HandleScope scope(this);
|
| Handle<JSMessageObject> message_obj(
|
| JSMessageObject::cast(thread_local_top_.pending_message_obj_));
|
| - if (!thread_local_top_.pending_message_script_->IsTheHole()) {
|
| - Handle<Script> script(
|
| - Script::cast(thread_local_top_.pending_message_script_));
|
| - int start_pos = message_obj->start_position();
|
| - int end_pos = message_obj->end_position();
|
| - MessageLocation location(script, start_pos, end_pos);
|
| - MessageHandler::ReportMessage(this, &location, message_obj);
|
| - } else {
|
| - MessageHandler::ReportMessage(this, NULL, message_obj);
|
| - }
|
| + Handle<JSValue> script_wrapper(JSValue::cast(message_obj->script()));
|
| + Handle<Script> script(Script::cast(script_wrapper->value()));
|
| + int start_pos = message_obj->start_position();
|
| + int end_pos = message_obj->end_position();
|
| + MessageLocation location(script, start_pos, end_pos);
|
| + MessageHandler::ReportMessage(this, &location, message_obj);
|
| }
|
| }
|
| }
|
| @@ -1471,8 +1460,8 @@ MessageLocation Isolate::GetMessageLocation() {
|
| !thread_local_top_.pending_message_obj_->IsTheHole()) {
|
| Handle<JSMessageObject> message_obj(
|
| JSMessageObject::cast(thread_local_top_.pending_message_obj_));
|
| - Handle<Script> script(
|
| - Script::cast(thread_local_top_.pending_message_script_));
|
| + Handle<JSValue> script_wrapper(JSValue::cast(message_obj->script()));
|
| + Handle<Script> script(Script::cast(script_wrapper->value()));
|
| int start_pos = message_obj->start_position();
|
| int end_pos = message_obj->end_position();
|
| return MessageLocation(script, start_pos, end_pos);
|
| @@ -1988,8 +1977,6 @@ bool Isolate::PropagatePendingExceptionToExternalTryCatch() {
|
| v8::TryCatch* handler = try_catch_handler();
|
| DCHECK(thread_local_top_.pending_message_obj_->IsJSMessageObject() ||
|
| thread_local_top_.pending_message_obj_->IsTheHole());
|
| - DCHECK(thread_local_top_.pending_message_script_->IsScript() ||
|
| - thread_local_top_.pending_message_script_->IsTheHole());
|
| handler->can_continue_ = true;
|
| handler->has_terminated_ = false;
|
| handler->exception_ = pending_exception();
|
| @@ -1997,7 +1984,6 @@ bool Isolate::PropagatePendingExceptionToExternalTryCatch() {
|
| if (thread_local_top_.pending_message_obj_->IsTheHole()) return true;
|
|
|
| handler->message_obj_ = thread_local_top_.pending_message_obj_;
|
| - handler->message_script_ = thread_local_top_.pending_message_script_;
|
| }
|
| return true;
|
| }
|
|
|