| Index: src/IceAssemblerARM32.h
|
| diff --git a/src/IceAssemblerARM32.h b/src/IceAssemblerARM32.h
|
| index 6cd120e5e864b65a9d01c559e6538f3c777d6445..c7ea86bc752a2cfe08900f44cc8232d2a44b2992 100644
|
| --- a/src/IceAssemblerARM32.h
|
| +++ b/src/IceAssemblerARM32.h
|
| @@ -82,7 +82,7 @@ public:
|
| SizeT BytesNeeded = Utils::OffsetToAlignment(Buffer.getPosition(), Align);
|
| constexpr IValueT UndefinedInst = 0xe7fedef0; // udf #60896
|
| constexpr SizeT InstSize = sizeof(IValueT);
|
| - assert(BytesNeeded % InstSize == 0);
|
| + assert(BytesNeeded % InstARM32::InstSize == 0);
|
| while (BytesNeeded > 0) {
|
| AssemblerBuffer::EnsureCapacity ensured(&Buffer);
|
| emitInst(UndefinedInst);
|
| @@ -137,6 +137,14 @@ public:
|
| return false;
|
| }
|
|
|
| + /// Accessors to keep track of the number of bytes generated inside
|
| + /// InstARM32::emit() methods, when run inside of
|
| + /// InstARM32::emitUsingTextFixup().
|
| + void resetEmitTextSize() { EmitTextSize = 0; }
|
| + void incEmitTextSize(size_t Amount) { EmitTextSize += Amount; }
|
| + void decEmitTextSize(size_t Amount) { EmitTextSize -= Amount; }
|
| + size_t getEmitTextSize() const { return EmitTextSize; }
|
| +
|
| void bind(Label *label);
|
|
|
| // List of instructions implemented by integrated assembler.
|
| @@ -198,7 +206,7 @@ public:
|
| return Asm->getKind() == Asm_ARM32;
|
| }
|
|
|
| - void emitTextInst(const std::string &Text, SizeT InstSize = sizeof(IValueT));
|
| + void emitTextInst(const std::string &Text, SizeT InstSize);
|
|
|
| private:
|
| // A vector of pool-allocated x86 labels for CFG nodes.
|
| @@ -206,6 +214,9 @@ private:
|
| LabelVector CfgNodeLabels;
|
| // A vector of pool-allocated x86 labels for Local labels.
|
| LabelVector LocalLabels;
|
| + // Number of bytes emitted by InstARM32::emit() methods, when run inside
|
| + // InstARM32::emitUsingTextFixup().
|
| + size_t EmitTextSize = 0;
|
|
|
| Label *getOrCreateLabel(SizeT Number, LabelVector &Labels);
|
|
|
|
|