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 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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_; | 285 bool has_pending_message_; |
286 bool rethrowing_message_; | 286 bool rethrowing_message_; |
287 Object* pending_message_obj_; | 287 Object* pending_message_obj_; |
288 Object* pending_message_script_; | |
289 | 288 |
290 // Use a separate value for scheduled exceptions to preserve the | 289 // Use a separate value for scheduled exceptions to preserve the |
291 // invariants that hold about pending_exception. We may want to | 290 // invariants that hold about pending_exception. We may want to |
292 // unify them later. | 291 // unify them later. |
293 Object* scheduled_exception_; | 292 Object* scheduled_exception_; |
294 bool external_caught_exception_; | 293 bool external_caught_exception_; |
295 SaveContext* save_context_; | 294 SaveContext* save_context_; |
296 v8::TryCatch* catcher_; | 295 v8::TryCatch* catcher_; |
297 | 296 |
298 // Stack. | 297 // Stack. |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
601 THREAD_LOCAL_TOP_ADDRESS(Code*, pending_handler_code) | 600 THREAD_LOCAL_TOP_ADDRESS(Code*, pending_handler_code) |
602 THREAD_LOCAL_TOP_ADDRESS(intptr_t, pending_handler_offset) | 601 THREAD_LOCAL_TOP_ADDRESS(intptr_t, pending_handler_offset) |
603 THREAD_LOCAL_TOP_ADDRESS(Address, pending_handler_fp) | 602 THREAD_LOCAL_TOP_ADDRESS(Address, pending_handler_fp) |
604 THREAD_LOCAL_TOP_ADDRESS(Address, pending_handler_sp) | 603 THREAD_LOCAL_TOP_ADDRESS(Address, pending_handler_sp) |
605 | 604 |
606 THREAD_LOCAL_TOP_ACCESSOR(bool, external_caught_exception) | 605 THREAD_LOCAL_TOP_ACCESSOR(bool, external_caught_exception) |
607 | 606 |
608 void clear_pending_message() { | 607 void clear_pending_message() { |
609 thread_local_top_.has_pending_message_ = false; | 608 thread_local_top_.has_pending_message_ = false; |
610 thread_local_top_.pending_message_obj_ = heap_.the_hole_value(); | 609 thread_local_top_.pending_message_obj_ = heap_.the_hole_value(); |
611 thread_local_top_.pending_message_script_ = heap_.the_hole_value(); | |
612 } | 610 } |
613 v8::TryCatch* try_catch_handler() { | 611 v8::TryCatch* try_catch_handler() { |
614 return thread_local_top_.try_catch_handler(); | 612 return thread_local_top_.try_catch_handler(); |
615 } | 613 } |
616 Address try_catch_handler_address() { | 614 Address try_catch_handler_address() { |
617 return thread_local_top_.try_catch_handler_address(); | 615 return thread_local_top_.try_catch_handler_address(); |
618 } | 616 } |
619 bool* external_caught_exception_address() { | 617 bool* external_caught_exception_address() { |
620 return &thread_local_top_.external_caught_exception_; | 618 return &thread_local_top_.external_caught_exception_; |
621 } | 619 } |
622 | 620 |
623 THREAD_LOCAL_TOP_ACCESSOR(v8::TryCatch*, catcher) | 621 THREAD_LOCAL_TOP_ACCESSOR(v8::TryCatch*, catcher) |
624 | 622 |
625 THREAD_LOCAL_TOP_ADDRESS(Object*, scheduled_exception) | 623 THREAD_LOCAL_TOP_ADDRESS(Object*, scheduled_exception) |
626 | 624 |
627 Address pending_message_obj_address() { | 625 Address pending_message_obj_address() { |
628 return reinterpret_cast<Address>(&thread_local_top_.pending_message_obj_); | 626 return reinterpret_cast<Address>(&thread_local_top_.pending_message_obj_); |
629 } | 627 } |
630 | 628 |
631 Address has_pending_message_address() { | 629 Address has_pending_message_address() { |
632 return reinterpret_cast<Address>(&thread_local_top_.has_pending_message_); | 630 return reinterpret_cast<Address>(&thread_local_top_.has_pending_message_); |
633 } | 631 } |
634 | 632 |
635 Address pending_message_script_address() { | |
636 return reinterpret_cast<Address>( | |
637 &thread_local_top_.pending_message_script_); | |
638 } | |
639 | |
640 Object* scheduled_exception() { | 633 Object* scheduled_exception() { |
641 DCHECK(has_scheduled_exception()); | 634 DCHECK(has_scheduled_exception()); |
642 DCHECK(!thread_local_top_.scheduled_exception_->IsException()); | 635 DCHECK(!thread_local_top_.scheduled_exception_->IsException()); |
643 return thread_local_top_.scheduled_exception_; | 636 return thread_local_top_.scheduled_exception_; |
644 } | 637 } |
645 bool has_scheduled_exception() { | 638 bool has_scheduled_exception() { |
646 DCHECK(!thread_local_top_.scheduled_exception_->IsException()); | 639 DCHECK(!thread_local_top_.scheduled_exception_->IsException()); |
647 return thread_local_top_.scheduled_exception_ != heap_.the_hole_value(); | 640 return thread_local_top_.scheduled_exception_ != heap_.the_hole_value(); |
648 } | 641 } |
649 void clear_scheduled_exception() { | 642 void clear_scheduled_exception() { |
(...skipping 942 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1592 } | 1585 } |
1593 | 1586 |
1594 EmbeddedVector<char, 128> filename_; | 1587 EmbeddedVector<char, 128> filename_; |
1595 FILE* file_; | 1588 FILE* file_; |
1596 int scope_depth_; | 1589 int scope_depth_; |
1597 }; | 1590 }; |
1598 | 1591 |
1599 } } // namespace v8::internal | 1592 } } // namespace v8::internal |
1600 | 1593 |
1601 #endif // V8_ISOLATE_H_ | 1594 #endif // V8_ISOLATE_H_ |
OLD | NEW |