X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/4e4e5a6f2694187498445a6ac6f1634ce8141119..a253471d7f8e4d91bf6ebabab00155c3b387d3d0:/assembler/CodeLocation.h diff --git a/assembler/CodeLocation.h b/assembler/CodeLocation.h index cab28cd..9500b1e 100644 --- a/assembler/CodeLocation.h +++ b/assembler/CodeLocation.h @@ -26,8 +26,7 @@ #ifndef CodeLocation_h #define CodeLocation_h - -#include +#include "MacroAssemblerCodeRef.h" #if ENABLE(ASSEMBLER) @@ -38,6 +37,7 @@ class CodeLocationLabel; class CodeLocationJump; class CodeLocationCall; class CodeLocationNearCall; +class CodeLocationDataLabelCompact; class CodeLocationDataLabel32; class CodeLocationDataLabelPtr; @@ -61,6 +61,7 @@ public: CodeLocationNearCall nearCallAtOffset(int offset); CodeLocationDataLabelPtr dataLabelPtrAtOffset(int offset); CodeLocationDataLabel32 dataLabel32AtOffset(int offset); + CodeLocationDataLabelCompact dataLabelCompactAtOffset(int offset); protected: CodeLocationCommon() @@ -127,6 +128,15 @@ public: : CodeLocationCommon(MacroAssemblerCodePtr(location)) {} }; +class CodeLocationDataLabelCompact : public CodeLocationCommon { +public: + CodeLocationDataLabelCompact() { } + explicit CodeLocationDataLabelCompact(MacroAssemblerCodePtr location) + : CodeLocationCommon(location) { } + explicit CodeLocationDataLabelCompact(void* location) + : CodeLocationCommon(MacroAssemblerCodePtr(location)) { } +}; + class CodeLocationDataLabelPtr : public CodeLocationCommon { public: CodeLocationDataLabelPtr() {} @@ -178,6 +188,12 @@ inline CodeLocationDataLabel32 CodeLocationCommon::dataLabel32AtOffset(int offse return CodeLocationDataLabel32(reinterpret_cast(dataLocation()) + offset); } +inline CodeLocationDataLabelCompact CodeLocationCommon::dataLabelCompactAtOffset(int offset) +{ + ASSERT_VALID_CODE_OFFSET(offset); + return CodeLocationDataLabelCompact(reinterpret_cast(dataLocation()) + offset); +} + } // namespace JSC #endif // ENABLE(ASSEMBLER)