Support: Write ScaledNumbers::getAdjusted()
[oota-llvm.git] / include / llvm / Support / Win64EH.h
index 164aca16bf3a435b57147c36f8fe7b7b5ac0a334..7ca218e87a779ba9b552fca1eefeff43ced039d0 100644 (file)
@@ -106,14 +106,21 @@ struct UnwindInfo {
     return reinterpret_cast<void *>(&UnwindCodes[(NumCodes+1) & ~1]);
   }
 
-  /// \brief Return image-relativ offset of language-specific exception handler.
-  uint32_t getLanguageSpecificHandlerOffset() {
-    return *reinterpret_cast<uint32_t *>(getLanguageSpecificData());
+  /// \brief Return pointer to language specific data part of UnwindInfo.
+  const void *getLanguageSpecificData() const {
+    return reinterpret_cast<const void *>(&UnwindCodes[(NumCodes + 1) & ~1]);
+  }
+
+  /// \brief Return image-relative offset of language-specific exception handler.
+  uint32_t getLanguageSpecificHandlerOffset() const {
+    return *reinterpret_cast<const support::ulittle32_t *>(
+               getLanguageSpecificData());
   }
 
-  /// \brief Set image-relativ offset of language-specific exception handler.
+  /// \brief Set image-relative offset of language-specific exception handler.
   void setLanguageSpecificHandlerOffset(uint32_t offset) {
-    *reinterpret_cast<uint32_t *>(getLanguageSpecificData()) = offset;
+    *reinterpret_cast<support::ulittle32_t *>(getLanguageSpecificData()) =
+        offset;
   }
 
   /// \brief Return pointer to exception-specific data.
@@ -126,6 +133,11 @@ struct UnwindInfo {
   RuntimeFunction *getChainedFunctionEntry() {
     return reinterpret_cast<RuntimeFunction *>(getLanguageSpecificData());
   }
+
+  /// \brief Return pointer to chained unwind info.
+  const RuntimeFunction *getChainedFunctionEntry() const {
+    return reinterpret_cast<const RuntimeFunction *>(getLanguageSpecificData());
+  }
 };