| 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_;
|
| };
|
|
|
|
|