Chromium Code Reviews| Index: src/IceFixups.h | 
| diff --git a/src/IceFixups.h b/src/IceFixups.h | 
| index 7144aa8d093355e5b9d3c7cc942112d4ba5d4db3..cfea3cdd116261d1e49fa3d1987de387d943c57b 100644 | 
| --- a/src/IceFixups.h | 
| +++ b/src/IceFixups.h | 
| @@ -14,19 +14,41 @@ | 
| #ifndef SUBZERO_SRC_ICEFIXUPS_H | 
| #define SUBZERO_SRC_ICEFIXUPS_H | 
| -#include "IceTypes.def" | 
| +#include "IceDefs.h" | 
| namespace Ice { | 
| -enum FixupKind { | 
| - // Specify some of the most common relocation types. | 
| - FK_Abs_4 = 0, | 
| - FK_PcRel_4 = 1, | 
| +class ConstantRelocatable; | 
| 
 
Jim Stichnoth
2015/01/12 21:39:32
Is this forward declaration needed?
 
jvoung (off chromium)
2015/01/12 22:41:28
Oops no -- done.
 
 | 
| - // Target specific relocation types follow this. | 
| - FK_FirstTargetSpecific = 1 << 4 | 
| +// Each target and container format has a different namespace of relocations. | 
| +// This holds the specific target+container format's relocation number. | 
| +typedef uint32_t FixupKind; | 
| + | 
| +// Assembler fixups are positions in generated code/data that hold relocation | 
| +// information that needs to be processed before finalizing the code/data. | 
| +struct AssemblerFixup { | 
| +public: | 
| + intptr_t position() const { return position_; } | 
| + void set_position(intptr_t Position) { position_ = Position; } | 
| + | 
| + FixupKind kind() const { return kind_; } | 
| + void set_kind(FixupKind Kind) { kind_ = Kind; } | 
| + | 
| + RelocOffsetT offset() const; | 
| + IceString symbol(const GlobalContext *Ctx) const; | 
| + void set_value(const Constant *Value) { value_ = Value; } | 
| + | 
| + void emit(GlobalContext *Ctx) const; | 
| + | 
| +private: | 
| + intptr_t position_; | 
| + FixupKind kind_; | 
| + const Constant *value_; | 
| }; | 
| +typedef std::vector<AssemblerFixup> FixupList; | 
| +typedef std::vector<AssemblerFixup *> FixupRefList; | 
| + | 
| } // end of namespace Ice | 
| #endif // SUBZERO_SRC_ICEFIXUPS_H |