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

Side by Side Diff: src/objects.h

Issue 2161263003: [debug] use catch prediction flag for promise rejections. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 5 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
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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_OBJECTS_H_ 5 #ifndef V8_OBJECTS_H_
6 #define V8_OBJECTS_H_ 6 #define V8_OBJECTS_H_
7 7
8 #include <iosfwd> 8 #include <iosfwd>
9 9
10 #include "src/assert-scope.h" 10 #include "src/assert-scope.h"
(...skipping 4842 matching lines...) Expand 10 before | Expand all | Expand 10 after
4853 // handler. Layout looks as follows: 4853 // handler. Layout looks as follows:
4854 // [ range-start , range-end , handler-offset , handler-data ] 4854 // [ range-start , range-end , handler-offset , handler-data ]
4855 // 2) Based on return addresses: Used for turbofanned code. Contains one entry 4855 // 2) Based on return addresses: Used for turbofanned code. Contains one entry
4856 // per call-site that could throw an exception. Layout looks as follows: 4856 // per call-site that could throw an exception. Layout looks as follows:
4857 // [ return-address-offset , handler-offset ] 4857 // [ return-address-offset , handler-offset ]
4858 class HandlerTable : public FixedArray { 4858 class HandlerTable : public FixedArray {
4859 public: 4859 public:
4860 // Conservative prediction whether a given handler will locally catch an 4860 // Conservative prediction whether a given handler will locally catch an
4861 // exception or cause a re-throw to outside the code boundary. Since this is 4861 // exception or cause a re-throw to outside the code boundary. Since this is
4862 // undecidable it is merely an approximation (e.g. useful for debugger). 4862 // undecidable it is merely an approximation (e.g. useful for debugger).
4863 enum CatchPrediction { UNCAUGHT, CAUGHT }; 4863 enum CatchPrediction {
4864 UNCAUGHT, // the handler will (likely) rethrow the exception.
4865 CAUGHT, // the exception will be caught by the handler.
4866 PROMISE // the exception will be caught and cause a promise rejection.
4867 };
4864 4868
4865 // Getters for handler table based on ranges. 4869 // Getters for handler table based on ranges.
4866 inline int GetRangeStart(int index) const; 4870 inline int GetRangeStart(int index) const;
4867 inline int GetRangeEnd(int index) const; 4871 inline int GetRangeEnd(int index) const;
4868 inline int GetRangeHandler(int index) const; 4872 inline int GetRangeHandler(int index) const;
4869 inline int GetRangeData(int index) const; 4873 inline int GetRangeData(int index) const;
4870 4874
4871 // Setters for handler table based on ranges. 4875 // Setters for handler table based on ranges.
4872 inline void SetRangeStart(int index, int value); 4876 inline void SetRangeStart(int index, int value);
4873 inline void SetRangeEnd(int index, int value); 4877 inline void SetRangeEnd(int index, int value);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
4908 static const int kRangeHandlerIndex = 2; 4912 static const int kRangeHandlerIndex = 2;
4909 static const int kRangeDataIndex = 3; 4913 static const int kRangeDataIndex = 3;
4910 static const int kRangeEntrySize = 4; 4914 static const int kRangeEntrySize = 4;
4911 4915
4912 // Layout description for handler table based on return addresses. 4916 // Layout description for handler table based on return addresses.
4913 static const int kReturnOffsetIndex = 0; 4917 static const int kReturnOffsetIndex = 0;
4914 static const int kReturnHandlerIndex = 1; 4918 static const int kReturnHandlerIndex = 1;
4915 static const int kReturnEntrySize = 2; 4919 static const int kReturnEntrySize = 2;
4916 4920
4917 // Encoding of the {handler} field. 4921 // Encoding of the {handler} field.
4918 class HandlerPredictionField : public BitField<CatchPrediction, 0, 1> {}; 4922 class HandlerPredictionField : public BitField<CatchPrediction, 0, 2> {};
4919 class HandlerOffsetField : public BitField<int, 1, 30> {}; 4923 class HandlerOffsetField : public BitField<int, 2, 30> {};
4920 }; 4924 };
4921 4925
4922 4926
4923 // Code describes objects with on-the-fly generated machine code. 4927 // Code describes objects with on-the-fly generated machine code.
4924 class Code: public HeapObject { 4928 class Code: public HeapObject {
4925 public: 4929 public:
4926 // Opaque data type for encapsulating code flags like kind, inline 4930 // Opaque data type for encapsulating code flags like kind, inline
4927 // cache state, and arguments count. 4931 // cache state, and arguments count.
4928 typedef uint32_t Flags; 4932 typedef uint32_t Flags;
4929 4933
(...skipping 6059 matching lines...) Expand 10 before | Expand all | Expand 10 after
10989 } 10993 }
10990 return value; 10994 return value;
10991 } 10995 }
10992 }; 10996 };
10993 10997
10994 10998
10995 } // NOLINT, false-positive due to second-order macros. 10999 } // NOLINT, false-positive due to second-order macros.
10996 } // NOLINT, false-positive due to second-order macros. 11000 } // NOLINT, false-positive due to second-order macros.
10997 11001
10998 #endif // V8_OBJECTS_H_ 11002 #endif // V8_OBJECTS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698