From 96b8ac1af2f2ac08df25625532e9179f0e75c54c Mon Sep 17 00:00:00 2001 From: RSDuck Date: Mon, 6 Apr 2020 12:25:35 +0200 Subject: preparations for block linking --- src/ARMJIT_Internal.h | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/ARMJIT_Internal.h b/src/ARMJIT_Internal.h index fb05f75..b968dcb 100644 --- a/src/ARMJIT_Internal.h +++ b/src/ARMJIT_Internal.h @@ -86,6 +86,14 @@ struct __attribute__((packed)) TinyVector Capacity = capacity; } + void SetLength(u16 length) + { + if (Capacity < length) + MakeCapacity(length); + + Length = length; + } + void Clear() { Length = 0; @@ -147,12 +155,7 @@ public: { NumInstrs = numInstrs; NumAddresses = numAddresses; - Data = new u32[numInstrs + numAddresses]; - } - - ~JitBlock() - { - delete[] Data; + Data.SetLength(numInstrs + numAddresses); } u32 StartAddr; @@ -160,13 +163,14 @@ public: u32 NumInstrs; u32 NumAddresses; + u32 NumLinks; JitBlockEntry EntryPoint; u32* Instrs() - { return Data; } + { return &Data[0]; } u32* AddressRanges() - { return Data + NumInstrs; } + { return &Data[NumInstrs]; } private: /* @@ -174,7 +178,7 @@ private: NumInstrs..<(NumLinks + NumInstrs) - pseudo physical addresses where the block is located (atleast one, the pseudo physical address of the block) */ - u32* Data; + TinyVector Data; }; // size should be 16 bytes because I'm to lazy to use mul and whatnot -- cgit v1.2.3