Index: src/assembler.h |
diff --git a/src/assembler.h b/src/assembler.h |
index 4639374c225daf7c929976891c594e5c7caa4a8e..bfd36a8166e07b8daf5983576c6b19c92c0a0fb0 100644 |
--- a/src/assembler.h |
+++ b/src/assembler.h |
@@ -248,7 +248,8 @@ class RelocInfo BASE_EMBEDDED { |
// add more as needed |
// Pseudo-types |
NUMBER_OF_MODES, // There are at most 15 modes with noncompact encoding. |
- NONE, // never recorded |
+ NONE, // never recorded 32-bit value |
+ NONE64, // never recorded 64-bit value |
CODE_AGE_SEQUENCE, // Not stored in RelocInfo array, used explictly by |
// code aging. |
FIRST_REAL_RELOC_MODE = CODE_TARGET, |
@@ -268,6 +269,9 @@ class RelocInfo BASE_EMBEDDED { |
RelocInfo(byte* pc, Mode rmode, intptr_t data, Code* host) |
: pc_(pc), rmode_(rmode), data_(data), host_(host) { |
} |
+ RelocInfo(byte* pc, double data64) |
+ : pc_(pc), rmode_(NONE64), data64_(data64), host_(NULL) { |
+ } |
static inline bool IsRealRelocMode(Mode mode) { |
return mode >= FIRST_REAL_RELOC_MODE && |
@@ -315,6 +319,9 @@ class RelocInfo BASE_EMBEDDED { |
static inline bool IsDebugBreakSlot(Mode mode) { |
return mode == DEBUG_BREAK_SLOT; |
} |
+ static inline bool IsNone(Mode mode) { |
+ return mode == NONE || mode == NONE64; |
+ } |
static inline bool IsCodeAgeSequence(Mode mode) { |
return mode == CODE_AGE_SEQUENCE; |
} |
@@ -325,6 +332,7 @@ class RelocInfo BASE_EMBEDDED { |
void set_pc(byte* pc) { pc_ = pc; } |
Mode rmode() const { return rmode_; } |
intptr_t data() const { return data_; } |
+ double data64() const { return data64_; } |
Code* host() const { return host_; } |
// Apply a relocation by delta bytes |
@@ -423,7 +431,10 @@ class RelocInfo BASE_EMBEDDED { |
// comment). |
byte* pc_; |
Mode rmode_; |
- intptr_t data_; |
+ union { |
+ intptr_t data_; |
+ double data64_; |
+ }; |
Code* host_; |
// Code and Embedded Object pointers on some platforms are stored split |
// across two consecutive 32-bit instructions. Heap management |