| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_ISOLATE_H_ | 5 #ifndef V8_ISOLATE_H_ |
| 6 #define V8_ISOLATE_H_ | 6 #define V8_ISOLATE_H_ |
| 7 | 7 |
| 8 #include <queue> | 8 #include <queue> |
| 9 #include "include/v8-debug.h" | 9 #include "include/v8-debug.h" |
| 10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 Object* pending_exception_; | 275 Object* pending_exception_; |
| 276 | 276 |
| 277 // Communication channel between Isolate::FindHandler and the CEntryStub. | 277 // Communication channel between Isolate::FindHandler and the CEntryStub. |
| 278 Context* pending_handler_context_; | 278 Context* pending_handler_context_; |
| 279 Code* pending_handler_code_; | 279 Code* pending_handler_code_; |
| 280 intptr_t pending_handler_offset_; | 280 intptr_t pending_handler_offset_; |
| 281 Address pending_handler_fp_; | 281 Address pending_handler_fp_; |
| 282 Address pending_handler_sp_; | 282 Address pending_handler_sp_; |
| 283 | 283 |
| 284 // Communication channel between Isolate::Throw and message consumers. | 284 // Communication channel between Isolate::Throw and message consumers. |
| 285 bool has_pending_message_; | |
| 286 bool rethrowing_message_; | 285 bool rethrowing_message_; |
| 287 Object* pending_message_obj_; | 286 Object* pending_message_obj_; |
| 288 | 287 |
| 289 // Use a separate value for scheduled exceptions to preserve the | 288 // Use a separate value for scheduled exceptions to preserve the |
| 290 // invariants that hold about pending_exception. We may want to | 289 // invariants that hold about pending_exception. We may want to |
| 291 // unify them later. | 290 // unify them later. |
| 292 Object* scheduled_exception_; | 291 Object* scheduled_exception_; |
| 293 bool external_caught_exception_; | 292 bool external_caught_exception_; |
| 294 SaveContext* save_context_; | 293 SaveContext* save_context_; |
| 295 | 294 |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 | 596 |
| 598 THREAD_LOCAL_TOP_ADDRESS(Context*, pending_handler_context) | 597 THREAD_LOCAL_TOP_ADDRESS(Context*, pending_handler_context) |
| 599 THREAD_LOCAL_TOP_ADDRESS(Code*, pending_handler_code) | 598 THREAD_LOCAL_TOP_ADDRESS(Code*, pending_handler_code) |
| 600 THREAD_LOCAL_TOP_ADDRESS(intptr_t, pending_handler_offset) | 599 THREAD_LOCAL_TOP_ADDRESS(intptr_t, pending_handler_offset) |
| 601 THREAD_LOCAL_TOP_ADDRESS(Address, pending_handler_fp) | 600 THREAD_LOCAL_TOP_ADDRESS(Address, pending_handler_fp) |
| 602 THREAD_LOCAL_TOP_ADDRESS(Address, pending_handler_sp) | 601 THREAD_LOCAL_TOP_ADDRESS(Address, pending_handler_sp) |
| 603 | 602 |
| 604 THREAD_LOCAL_TOP_ACCESSOR(bool, external_caught_exception) | 603 THREAD_LOCAL_TOP_ACCESSOR(bool, external_caught_exception) |
| 605 | 604 |
| 606 void clear_pending_message() { | 605 void clear_pending_message() { |
| 607 thread_local_top_.has_pending_message_ = false; | |
| 608 thread_local_top_.pending_message_obj_ = heap_.the_hole_value(); | 606 thread_local_top_.pending_message_obj_ = heap_.the_hole_value(); |
| 609 } | 607 } |
| 610 v8::TryCatch* try_catch_handler() { | 608 v8::TryCatch* try_catch_handler() { |
| 611 return thread_local_top_.try_catch_handler(); | 609 return thread_local_top_.try_catch_handler(); |
| 612 } | 610 } |
| 613 Address try_catch_handler_address() { | 611 Address try_catch_handler_address() { |
| 614 return thread_local_top_.try_catch_handler_address(); | 612 return thread_local_top_.try_catch_handler_address(); |
| 615 } | 613 } |
| 616 bool* external_caught_exception_address() { | 614 bool* external_caught_exception_address() { |
| 617 return &thread_local_top_.external_caught_exception_; | 615 return &thread_local_top_.external_caught_exception_; |
| 618 } | 616 } |
| 619 | 617 |
| 620 THREAD_LOCAL_TOP_ADDRESS(Object*, scheduled_exception) | 618 THREAD_LOCAL_TOP_ADDRESS(Object*, scheduled_exception) |
| 621 | 619 |
| 622 Address pending_message_obj_address() { | 620 Address pending_message_obj_address() { |
| 623 return reinterpret_cast<Address>(&thread_local_top_.pending_message_obj_); | 621 return reinterpret_cast<Address>(&thread_local_top_.pending_message_obj_); |
| 624 } | 622 } |
| 625 | 623 |
| 626 Address has_pending_message_address() { | |
| 627 return reinterpret_cast<Address>(&thread_local_top_.has_pending_message_); | |
| 628 } | |
| 629 | |
| 630 Object* scheduled_exception() { | 624 Object* scheduled_exception() { |
| 631 DCHECK(has_scheduled_exception()); | 625 DCHECK(has_scheduled_exception()); |
| 632 DCHECK(!thread_local_top_.scheduled_exception_->IsException()); | 626 DCHECK(!thread_local_top_.scheduled_exception_->IsException()); |
| 633 return thread_local_top_.scheduled_exception_; | 627 return thread_local_top_.scheduled_exception_; |
| 634 } | 628 } |
| 635 bool has_scheduled_exception() { | 629 bool has_scheduled_exception() { |
| 636 DCHECK(!thread_local_top_.scheduled_exception_->IsException()); | 630 DCHECK(!thread_local_top_.scheduled_exception_->IsException()); |
| 637 return thread_local_top_.scheduled_exception_ != heap_.the_hole_value(); | 631 return thread_local_top_.scheduled_exception_ != heap_.the_hole_value(); |
| 638 } | 632 } |
| 639 void clear_scheduled_exception() { | 633 void clear_scheduled_exception() { |
| (...skipping 937 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1577 } | 1571 } |
| 1578 | 1572 |
| 1579 EmbeddedVector<char, 128> filename_; | 1573 EmbeddedVector<char, 128> filename_; |
| 1580 FILE* file_; | 1574 FILE* file_; |
| 1581 int scope_depth_; | 1575 int scope_depth_; |
| 1582 }; | 1576 }; |
| 1583 | 1577 |
| 1584 } } // namespace v8::internal | 1578 } } // namespace v8::internal |
| 1585 | 1579 |
| 1586 #endif // V8_ISOLATE_H_ | 1580 #endif // V8_ISOLATE_H_ |
| OLD | NEW |