Index: src/assembler_ia32.h |
diff --git a/src/assembler_ia32.h b/src/assembler_ia32.h |
index bb3f0ab63b2e439eecf7411720f0bc9fa9c44deb..b1079d1af80294593aee5f3b4646aa487a928e56 100644 |
--- a/src/assembler_ia32.h |
+++ b/src/assembler_ia32.h |
@@ -284,7 +284,9 @@ public: |
#endif // !NDEBUG |
} |
- ~Label() { |
+ ~Label() {} |
+ |
+ void FinalCheck() const { |
// Assert if label is being destroyed with unresolved branches pending. |
assert(!IsLinked()); |
assert(!HasNear()); |
@@ -363,11 +365,16 @@ public: |
assert(!use_far_branches); |
(void)use_far_branches; |
} |
- ~AssemblerX86() {} |
+ ~AssemblerX86() override; |
static const bool kNearJump = true; |
static const bool kFarJump = false; |
+ Label *GetOrCreateCfgNodeLabel(SizeT NodeNumber); |
+ void BindCfgNodeLabel(SizeT NodeNumber) override; |
+ Label *GetOrCreateLocalLabel(SizeT Number); |
+ void BindLocalLabel(SizeT Number); |
+ |
// Operations to emit GPR instructions (and dispatch on operand type). |
typedef void (AssemblerX86::*TypedEmitGPR)(Type, GPRRegister); |
typedef void (AssemblerX86::*TypedEmitAddr)(Type, const Address &); |
@@ -848,6 +855,14 @@ private: |
void EmitGenericShift(int rm, Type Ty, const Operand &operand, |
GPRRegister shifter); |
+ typedef std::vector<Label *> LabelVector; |
+ // A vector of pool-allocated x86 labels for CFG nodes. |
+ LabelVector CfgNodeLabels; |
+ // A vector of pool-allocated x86 labels for Local labels. |
+ LabelVector LocalLabels; |
+ |
+ Label *GetOrCreateLabel(SizeT Number, LabelVector &Labels); |
+ |
AssemblerBuffer buffer_; |
}; |