1 // Copyright 2016 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef V8_EH_FRAME_H_ 6 #define V8_EH_FRAME_H_ 7 8 #include <cstdint> 9 10 namespace v8 { 11 namespace internal { 12 13 class Code; 14 15 class EhFrameHdr final { 16 public: 17 static const int kRecordSize = 20; 18 static const int kCIESize; 19 20 explicit EhFrameHdr(Code* code); 21 offset_to_eh_frame()22 int32_t offset_to_eh_frame() const { return offset_to_eh_frame_; } lut_entries_number()23 uint32_t lut_entries_number() const { return lut_entries_number_; } offset_to_procedure()24 int32_t offset_to_procedure() const { return offset_to_procedure_; } offset_to_fde()25 int32_t offset_to_fde() const { return offset_to_fde_; } 26 27 private: 28 uint8_t version_; 29 uint8_t eh_frame_ptr_encoding_; 30 uint8_t lut_size_encoding_; 31 uint8_t lut_entries_encoding_; 32 int32_t offset_to_eh_frame_; 33 uint32_t lut_entries_number_; 34 int32_t offset_to_procedure_; 35 int32_t offset_to_fde_; 36 }; 37 38 } // namespace internal 39 } // namespace v8 40 41 #endif 42