OLD | NEW |
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 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 4448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4459 // [ range-start , range-end , handler-offset , handler-data ] | 4459 // [ range-start , range-end , handler-offset , handler-data ] |
4460 // 2) Based on return addresses: Used for turbofanned code. Contains one entry | 4460 // 2) Based on return addresses: Used for turbofanned code. Contains one entry |
4461 // per call-site that could throw an exception. Layout looks as follows: | 4461 // per call-site that could throw an exception. Layout looks as follows: |
4462 // [ return-address-offset , handler-offset ] | 4462 // [ return-address-offset , handler-offset ] |
4463 class HandlerTable : public FixedArray { | 4463 class HandlerTable : public FixedArray { |
4464 public: | 4464 public: |
4465 // Conservative prediction whether a given handler will locally catch an | 4465 // Conservative prediction whether a given handler will locally catch an |
4466 // exception or cause a re-throw to outside the code boundary. Since this is | 4466 // exception or cause a re-throw to outside the code boundary. Since this is |
4467 // undecidable it is merely an approximation (e.g. useful for debugger). | 4467 // undecidable it is merely an approximation (e.g. useful for debugger). |
4468 enum CatchPrediction { | 4468 enum CatchPrediction { |
4469 UNCAUGHT, // the handler will (likely) rethrow the exception. | 4469 UNCAUGHT, // The handler will (likely) rethrow the exception. |
4470 CAUGHT, // the exception will be caught by the handler. | 4470 CAUGHT, // The exception will be caught by the handler. |
4471 PROMISE // the exception will be caught and cause a promise rejection. | 4471 PROMISE, // The exception will be caught and cause a promise rejection. |
| 4472 DESUGARING, // The exception will be caught, but both the exception and the |
| 4473 // catching are part of a desugaring and should therefore not |
| 4474 // be visible to the user (we won't notify the debugger of such |
| 4475 // exceptions). |
4472 }; | 4476 }; |
4473 | 4477 |
4474 // Getters for handler table based on ranges. | 4478 // Getters for handler table based on ranges. |
4475 inline int GetRangeStart(int index) const; | 4479 inline int GetRangeStart(int index) const; |
4476 inline int GetRangeEnd(int index) const; | 4480 inline int GetRangeEnd(int index) const; |
4477 inline int GetRangeHandler(int index) const; | 4481 inline int GetRangeHandler(int index) const; |
4478 inline int GetRangeData(int index) const; | 4482 inline int GetRangeData(int index) const; |
4479 | 4483 |
4480 // Setters for handler table based on ranges. | 4484 // Setters for handler table based on ranges. |
4481 inline void SetRangeStart(int index, int value); | 4485 inline void SetRangeStart(int index, int value); |
(...skipping 6581 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11063 } | 11067 } |
11064 return value; | 11068 return value; |
11065 } | 11069 } |
11066 }; | 11070 }; |
11067 | 11071 |
11068 | 11072 |
11069 } // NOLINT, false-positive due to second-order macros. | 11073 } // NOLINT, false-positive due to second-order macros. |
11070 } // NOLINT, false-positive due to second-order macros. | 11074 } // NOLINT, false-positive due to second-order macros. |
11071 | 11075 |
11072 #endif // V8_OBJECTS_H_ | 11076 #endif // V8_OBJECTS_H_ |
OLD | NEW |