| Index: src/assembler_ia32.cpp
|
| diff --git a/src/assembler_ia32.cpp b/src/assembler_ia32.cpp
|
| index 2b80820558ec3e2826b6d06270801750c136e031..0d5f4b623d778cd5ec44b2b7319e70b08dd507e2 100644
|
| --- a/src/assembler_ia32.cpp
|
| +++ b/src/assembler_ia32.cpp
|
| @@ -67,6 +67,37 @@ Address Address::ofConstPool(GlobalContext *Ctx, Assembler *Asm,
|
| return x86::Address::Absolute(Fixup);
|
| }
|
|
|
| +AssemblerX86::~AssemblerX86() {
|
| +#ifndef NDEBUG
|
| + for (const Label *Label : CfgNodeLabels) {
|
| + Label->FinalCheck();
|
| + }
|
| +#endif
|
| +}
|
| +
|
| +Label *AssemblerX86::GetOrCreateCfgNodeLabel(SizeT NodeNumber) {
|
| + Label *L = nullptr;
|
| + if (NodeNumber == CfgNodeLabels.size()) {
|
| + L = new (this->Allocate<Label>()) Label();
|
| + CfgNodeLabels.push_back(L);
|
| + return L;
|
| + }
|
| + if (NodeNumber > CfgNodeLabels.size()) {
|
| + CfgNodeLabels.resize(NodeNumber + 1);
|
| + }
|
| + L = CfgNodeLabels[NodeNumber];
|
| + if (!L) {
|
| + L = new (this->Allocate<Label>()) Label();
|
| + CfgNodeLabels[NodeNumber] = L;
|
| + }
|
| + return L;
|
| +}
|
| +
|
| +void AssemblerX86::BindCfgNodeLabel(SizeT NodeNumber) {
|
| + Label *L = GetOrCreateCfgNodeLabel(NodeNumber);
|
| + this->Bind(L);
|
| +}
|
| +
|
| void AssemblerX86::call(GPRRegister reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xFF);
|
|
|