Index: src/assembler.cpp |
diff --git a/src/assembler.cpp b/src/assembler.cpp |
index 6f2ec8118c92545f98bdbdefc21853828eb820d6..6099d71528e57f2de840c178a5b3e757bc4b0fd2 100644 |
--- a/src/assembler.cpp |
+++ b/src/assembler.cpp |
@@ -74,10 +74,16 @@ AssemblerBuffer::AssemblerBuffer(Assembler &assembler) : assembler_(assembler) { |
AssemblerBuffer::~AssemblerBuffer() {} |
-AssemblerFixup *AssemblerBuffer::GetLatestFixup() const { |
- if (fixups_.empty()) |
- return NULL; |
- return fixups_.back(); |
+// Returns the latest fixup at or after the given position, or NULL if |
+// there is none. Assumes fixups were added in increasing order. |
+AssemblerFixup *AssemblerBuffer::GetLatestFixup(intptr_t position) const { |
+ AssemblerFixup *latest_fixup = NULL; |
+ for (auto I = fixups_.rbegin(), E = fixups_.rend(); I != E; ++I) { |
+ if ((*I)->position() < position) |
+ return latest_fixup; |
+ latest_fixup = *I; |
+ } |
+ return latest_fixup; |
} |
void AssemblerBuffer::ProcessFixups(const MemoryRegion ®ion) { |