Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(428)

Side by Side Diff: src/isolate.h

Issue 997213003: Remove kind field from StackHandler. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix layout test issue. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ia32/macro-assembler-ia32.cc ('k') | src/isolate.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 } 622 }
623 bool has_scheduled_exception() { 623 bool has_scheduled_exception() {
624 DCHECK(!thread_local_top_.scheduled_exception_->IsException()); 624 DCHECK(!thread_local_top_.scheduled_exception_->IsException());
625 return thread_local_top_.scheduled_exception_ != heap_.the_hole_value(); 625 return thread_local_top_.scheduled_exception_ != heap_.the_hole_value();
626 } 626 }
627 void clear_scheduled_exception() { 627 void clear_scheduled_exception() {
628 DCHECK(!thread_local_top_.scheduled_exception_->IsException()); 628 DCHECK(!thread_local_top_.scheduled_exception_->IsException());
629 thread_local_top_.scheduled_exception_ = heap_.the_hole_value(); 629 thread_local_top_.scheduled_exception_ = heap_.the_hole_value();
630 } 630 }
631 631
632 bool IsFinallyOnTop(); 632 bool IsJavaScriptHandlerOnTop(Object* exception);
633 bool IsExternalHandlerOnTop(Object* exception);
633 634
634 bool is_catchable_by_javascript(Object* exception) { 635 bool is_catchable_by_javascript(Object* exception) {
635 return exception != heap()->termination_exception(); 636 return exception != heap()->termination_exception();
636 } 637 }
637 638
638 // JS execution stack (see frames.h). 639 // JS execution stack (see frames.h).
639 static Address c_entry_fp(ThreadLocalTop* thread) { 640 static Address c_entry_fp(ThreadLocalTop* thread) {
640 return thread->c_entry_fp_; 641 return thread->c_entry_fp_;
641 } 642 }
642 static Address handler(ThreadLocalTop* thread) { return thread->handler_; } 643 static Address handler(ThreadLocalTop* thread) { return thread->handler_; }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 bool MayAccess(Handle<JSObject> receiver); 737 bool MayAccess(Handle<JSObject> receiver);
737 bool IsInternallyUsedPropertyName(Handle<Object> name); 738 bool IsInternallyUsedPropertyName(Handle<Object> name);
738 bool IsInternallyUsedPropertyName(Object* name); 739 bool IsInternallyUsedPropertyName(Object* name);
739 740
740 void SetFailedAccessCheckCallback(v8::FailedAccessCheckCallback callback); 741 void SetFailedAccessCheckCallback(v8::FailedAccessCheckCallback callback);
741 void ReportFailedAccessCheck(Handle<JSObject> receiver); 742 void ReportFailedAccessCheck(Handle<JSObject> receiver);
742 743
743 // Exception throwing support. The caller should use the result 744 // Exception throwing support. The caller should use the result
744 // of Throw() as its return value. 745 // of Throw() as its return value.
745 Object* Throw(Object* exception, MessageLocation* location = NULL); 746 Object* Throw(Object* exception, MessageLocation* location = NULL);
747 Object* ThrowIllegalOperation();
746 748
747 template <typename T> 749 template <typename T>
748 MUST_USE_RESULT MaybeHandle<T> Throw(Handle<Object> exception, 750 MUST_USE_RESULT MaybeHandle<T> Throw(Handle<Object> exception,
749 MessageLocation* location = NULL) { 751 MessageLocation* location = NULL) {
750 Throw(*exception, location); 752 Throw(*exception, location);
751 return MaybeHandle<T>(); 753 return MaybeHandle<T>();
752 } 754 }
753 755
754 // Re-throw an exception. This involves no error reporting since 756 // Re-throw an exception. This involves no error reporting since error
755 // error reporting was handled when the exception was thrown 757 // reporting was handled when the exception was thrown originally.
756 // originally.
757 Object* ReThrow(Object* exception); 758 Object* ReThrow(Object* exception);
758 759
759 // Find the correct handler for the current pending exception. This also 760 // Find the correct handler for the current pending exception. This also
760 // clears and returns the current pending exception. 761 // clears and returns the current pending exception.
761 Object* FindHandler(); 762 Object* FindHandler();
762 763
764 // Tries to predict whether the exception will be caught. Note that this can
765 // only produce an estimate, because it is undecidable whether a finally
766 // clause will consume or re-throw an exception. We conservatively assume any
767 // finally clause will behave as if the exception were consumed.
768 bool PredictWhetherExceptionIsCaught(Object* exception);
769
763 void ScheduleThrow(Object* exception); 770 void ScheduleThrow(Object* exception);
764 // Re-set pending message, script and positions reported to the TryCatch 771 // Re-set pending message, script and positions reported to the TryCatch
765 // back to the TLS for re-use when rethrowing. 772 // back to the TLS for re-use when rethrowing.
766 void RestorePendingMessageFromTryCatch(v8::TryCatch* handler); 773 void RestorePendingMessageFromTryCatch(v8::TryCatch* handler);
767 // Un-schedule an exception that was caught by a TryCatch handler. 774 // Un-schedule an exception that was caught by a TryCatch handler.
768 void CancelScheduledExceptionFromTryCatch(v8::TryCatch* handler); 775 void CancelScheduledExceptionFromTryCatch(v8::TryCatch* handler);
769 void ReportPendingMessages(); 776 void ReportPendingMessages();
770 // Return pending location if any or unfilled structure. 777 // Return pending location if any or unfilled structure.
771 MessageLocation GetMessageLocation(); 778 MessageLocation GetMessageLocation();
772 Object* ThrowIllegalOperation();
773 779
774 // Promote a scheduled exception to pending. Asserts has_scheduled_exception. 780 // Promote a scheduled exception to pending. Asserts has_scheduled_exception.
775 Object* PromoteScheduledException(); 781 Object* PromoteScheduledException();
776 // Checks if exception should be reported and finds out if it's
777 // caught externally.
778 bool ShouldReportException(bool* can_be_caught_externally,
779 bool catchable_by_javascript);
780 782
781 // Attempts to compute the current source location, storing the 783 // Attempts to compute the current source location, storing the
782 // result in the target out parameter. 784 // result in the target out parameter.
783 void ComputeLocation(MessageLocation* target); 785 void ComputeLocation(MessageLocation* target);
784 bool ComputeLocationFromException(MessageLocation* target, 786 bool ComputeLocationFromException(MessageLocation* target,
785 Handle<Object> exception); 787 Handle<Object> exception);
786 bool ComputeLocationFromStackTrace(MessageLocation* target, 788 bool ComputeLocationFromStackTrace(MessageLocation* target,
787 Handle<Object> exception); 789 Handle<Object> exception);
788 790
789 Handle<JSMessageObject> CreateMessage(Handle<Object> exception, 791 Handle<JSMessageObject> CreateMessage(Handle<Object> exception,
790 MessageLocation* location); 792 MessageLocation* location);
791 793
792 // Out of resource exception helpers. 794 // Out of resource exception helpers.
793 Object* StackOverflow(); 795 Object* StackOverflow();
794 Object* TerminateExecution(); 796 Object* TerminateExecution();
795 void CancelTerminateExecution(); 797 void CancelTerminateExecution();
796 798
797 void RequestInterrupt(InterruptCallback callback, void* data); 799 void RequestInterrupt(InterruptCallback callback, void* data);
798 void InvokeApiInterruptCallbacks(); 800 void InvokeApiInterruptCallbacks();
799 801
800 // Administration 802 // Administration
801 void Iterate(ObjectVisitor* v); 803 void Iterate(ObjectVisitor* v);
802 void Iterate(ObjectVisitor* v, ThreadLocalTop* t); 804 void Iterate(ObjectVisitor* v, ThreadLocalTop* t);
803 char* Iterate(ObjectVisitor* v, char* t); 805 char* Iterate(ObjectVisitor* v, char* t);
804 void IterateThread(ThreadVisitor* v, char* t); 806 void IterateThread(ThreadVisitor* v, char* t);
805 807
806
807 // Returns the current native context. 808 // Returns the current native context.
808 Handle<Context> native_context(); 809 Handle<Context> native_context();
809 810
810 // Returns the native context of the calling JavaScript code. That 811 // Returns the native context of the calling JavaScript code. That
811 // is, the native context of the top-most JavaScript frame. 812 // is, the native context of the top-most JavaScript frame.
812 Handle<Context> GetCallingNativeContext(); 813 Handle<Context> GetCallingNativeContext();
813 814
814 void RegisterTryCatchHandler(v8::TryCatch* that); 815 void RegisterTryCatchHandler(v8::TryCatch* that);
815 void UnregisterTryCatchHandler(v8::TryCatch* that); 816 void UnregisterTryCatchHandler(v8::TryCatch* that);
816 817
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after
1562 } 1563 }
1563 1564
1564 EmbeddedVector<char, 128> filename_; 1565 EmbeddedVector<char, 128> filename_;
1565 FILE* file_; 1566 FILE* file_;
1566 int scope_depth_; 1567 int scope_depth_;
1567 }; 1568 };
1568 1569
1569 } } // namespace v8::internal 1570 } } // namespace v8::internal
1570 1571
1571 #endif // V8_ISOLATE_H_ 1572 #endif // V8_ISOLATE_H_
OLDNEW
« no previous file with comments | « src/ia32/macro-assembler-ia32.cc ('k') | src/isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698