Index: src/arm64/assembler-arm64.h |
diff --git a/src/arm64/assembler-arm64.h b/src/arm64/assembler-arm64.h |
index 9a8cd467a0f7b8425c6dabe754f9f7f89cc54686..568174906a3d7a146083e73a87712af83de7a29f 100644 |
--- a/src/arm64/assembler-arm64.h |
+++ b/src/arm64/assembler-arm64.h |
@@ -1694,6 +1694,10 @@ class Assembler : public AssemblerBase { |
return reinterpret_cast<Instruction*>(buffer_ + offset); |
} |
+ ptrdiff_t InstructionOffset(Instruction* instr) const { |
+ return reinterpret_cast<byte*>(instr) - buffer_; |
+ } |
+ |
// Register encoding. |
static Instr Rd(CPURegister rd) { |
ASSERT(rd.code() != kSPRegInternalCode); |
@@ -2182,6 +2186,11 @@ class Assembler : public AssemblerBase { |
// not later attempt (likely unsuccessfully) to patch it to branch directly to |
// the label. |
void DeleteUnresolvedBranchInfoForLabel(Label* label); |
+ // This function deletes the information related to the label by traversing |
+ // the label chain, and for each PC-relative instruction in the chain checking |
+ // if pending unresolved information exists. Its complexity is proportional to |
+ // the length of the label chain. |
+ void DeleteUnresolvedBranchInfoForLabelTraverse(Label* label); |
private: |
PositionsRecorder positions_recorder_; |