| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 ASSERT(try_catch_handler_address_ == NULL); | 239 ASSERT(try_catch_handler_address_ == NULL); |
| 240 } | 240 } |
| 241 | 241 |
| 242 Isolate* isolate_; | 242 Isolate* isolate_; |
| 243 // The context where the current execution method is created and for variable | 243 // The context where the current execution method is created and for variable |
| 244 // lookups. | 244 // lookups. |
| 245 Context* context_; | 245 Context* context_; |
| 246 ThreadId thread_id_; | 246 ThreadId thread_id_; |
| 247 MaybeObject* pending_exception_; | 247 MaybeObject* pending_exception_; |
| 248 bool has_pending_message_; | 248 bool has_pending_message_; |
| 249 bool rethrowing_message_; |
| 249 Object* pending_message_obj_; | 250 Object* pending_message_obj_; |
| 250 Script* pending_message_script_; | 251 Object* pending_message_script_; |
| 251 int pending_message_start_pos_; | 252 int pending_message_start_pos_; |
| 252 int pending_message_end_pos_; | 253 int pending_message_end_pos_; |
| 253 // Use a separate value for scheduled exceptions to preserve the | 254 // Use a separate value for scheduled exceptions to preserve the |
| 254 // invariants that hold about pending_exception. We may want to | 255 // invariants that hold about pending_exception. We may want to |
| 255 // unify them later. | 256 // unify them later. |
| 256 MaybeObject* scheduled_exception_; | 257 MaybeObject* scheduled_exception_; |
| 257 bool external_caught_exception_; | 258 bool external_caught_exception_; |
| 258 SaveContext* save_context_; | 259 SaveContext* save_context_; |
| 259 v8::TryCatch* catcher_; | 260 v8::TryCatch* catcher_; |
| 260 | 261 |
| (...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 } | 576 } |
| 576 MaybeObject** pending_exception_address() { | 577 MaybeObject** pending_exception_address() { |
| 577 return &thread_local_top_.pending_exception_; | 578 return &thread_local_top_.pending_exception_; |
| 578 } | 579 } |
| 579 bool has_pending_exception() { | 580 bool has_pending_exception() { |
| 580 return !thread_local_top_.pending_exception_->IsTheHole(); | 581 return !thread_local_top_.pending_exception_->IsTheHole(); |
| 581 } | 582 } |
| 582 void clear_pending_message() { | 583 void clear_pending_message() { |
| 583 thread_local_top_.has_pending_message_ = false; | 584 thread_local_top_.has_pending_message_ = false; |
| 584 thread_local_top_.pending_message_obj_ = heap_.the_hole_value(); | 585 thread_local_top_.pending_message_obj_ = heap_.the_hole_value(); |
| 585 thread_local_top_.pending_message_script_ = NULL; | 586 thread_local_top_.pending_message_script_ = heap_.the_hole_value(); |
| 586 } | 587 } |
| 587 v8::TryCatch* try_catch_handler() { | 588 v8::TryCatch* try_catch_handler() { |
| 588 return thread_local_top_.TryCatchHandler(); | 589 return thread_local_top_.TryCatchHandler(); |
| 589 } | 590 } |
| 590 Address try_catch_handler_address() { | 591 Address try_catch_handler_address() { |
| 591 return thread_local_top_.try_catch_handler_address(); | 592 return thread_local_top_.try_catch_handler_address(); |
| 592 } | 593 } |
| 593 bool* external_caught_exception_address() { | 594 bool* external_caught_exception_address() { |
| 594 return &thread_local_top_.external_caught_exception_; | 595 return &thread_local_top_.external_caught_exception_; |
| 595 } | 596 } |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 753 void ReportFailedAccessCheck(JSObject* receiver, v8::AccessType type); | 754 void ReportFailedAccessCheck(JSObject* receiver, v8::AccessType type); |
| 754 | 755 |
| 755 // Exception throwing support. The caller should use the result | 756 // Exception throwing support. The caller should use the result |
| 756 // of Throw() as its return value. | 757 // of Throw() as its return value. |
| 757 Failure* Throw(Object* exception, MessageLocation* location = NULL); | 758 Failure* Throw(Object* exception, MessageLocation* location = NULL); |
| 758 // Re-throw an exception. This involves no error reporting since | 759 // Re-throw an exception. This involves no error reporting since |
| 759 // error reporting was handled when the exception was thrown | 760 // error reporting was handled when the exception was thrown |
| 760 // originally. | 761 // originally. |
| 761 Failure* ReThrow(MaybeObject* exception); | 762 Failure* ReThrow(MaybeObject* exception); |
| 762 void ScheduleThrow(Object* exception); | 763 void ScheduleThrow(Object* exception); |
| 764 // Re-set pending message, script and positions reported to the TryCatch |
| 765 // back to the TLS for re-use when rethrowing. |
| 766 void RestorePendingMessageFromTryCatch(v8::TryCatch* handler); |
| 763 void ReportPendingMessages(); | 767 void ReportPendingMessages(); |
| 764 // Return pending location if any or unfilled structure. | 768 // Return pending location if any or unfilled structure. |
| 765 MessageLocation GetMessageLocation(); | 769 MessageLocation GetMessageLocation(); |
| 766 Failure* ThrowIllegalOperation(); | 770 Failure* ThrowIllegalOperation(); |
| 767 | 771 |
| 768 // Promote a scheduled exception to pending. Asserts has_scheduled_exception. | 772 // Promote a scheduled exception to pending. Asserts has_scheduled_exception. |
| 769 Failure* PromoteScheduledException(); | 773 Failure* PromoteScheduledException(); |
| 770 void DoThrow(Object* exception, MessageLocation* location); | 774 void DoThrow(Object* exception, MessageLocation* location); |
| 771 // Checks if exception should be reported and finds out if it's | 775 // Checks if exception should be reported and finds out if it's |
| 772 // caught externally. | 776 // caught externally. |
| (...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1489 | 1493 |
| 1490 // Mark the native context with out of memory. | 1494 // Mark the native context with out of memory. |
| 1491 inline void Context::mark_out_of_memory() { | 1495 inline void Context::mark_out_of_memory() { |
| 1492 native_context()->set_out_of_memory(HEAP->true_value()); | 1496 native_context()->set_out_of_memory(HEAP->true_value()); |
| 1493 } | 1497 } |
| 1494 | 1498 |
| 1495 | 1499 |
| 1496 } } // namespace v8::internal | 1500 } } // namespace v8::internal |
| 1497 | 1501 |
| 1498 #endif // V8_ISOLATE_H_ | 1502 #endif // V8_ISOLATE_H_ |
| OLD | NEW |