Skip to content

Commit 41f638e

Browse files
committed
Feature(compiler): Array - register capacity field
1 parent daa5f67 commit 41f638e

2 files changed

Lines changed: 8 additions & 3 deletions

File tree

packages/runtime/array.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@
1111

1212
template<typename T>
1313
class Array {
14-
T* elements;
15-
int32_t size = 0;
16-
int32_t capacity;
1714
public:
1815
Array() : elements(nullptr), capacity(0) {}
1916

@@ -32,6 +29,10 @@ class Array {
3229
}
3330

3431
private:
32+
T* elements;
33+
int32_t size = 0;
34+
int32_t capacity;
35+
3536
void expand() {
3637
this->size *= 2;
3738
this->elements = std::realloc(this->elements, this->size * sizeof(T));

src/backend/llvm/code-generation/array-literal-expression.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,12 @@ export class ArrayLiteralExpressionCodeGenerator implements NodeGenerateInterfac
3434

3535
static buildTypedArrayStructLLVMType(elementType: llvm.Type, ctx: Context, name: string): llvm.StructType {
3636
const structType = llvm.StructType.create(ctx.llvmContext, name);
37+
3738
structType.setBody([
3839
elementType,
40+
// size
41+
llvm.Type.getInt32Ty(ctx.llvmContext),
42+
// capacity
3943
llvm.Type.getInt32Ty(ctx.llvmContext),
4044
]);
4145

0 commit comments

Comments
 (0)