diff --git a/src/hashset.asm b/src/hashset.asm index 761f105..ee98a32 100644 --- a/src/hashset.asm +++ b/src/hashset.asm @@ -78,7 +78,7 @@ pub new_hashset: add r1, r1, 4 store_32 [r1], r12 ; eq context is in r12 - push r1 + add r12, r1, 4 ; Now r12 is hashset pointer at data_ptr load_32 r5, [r8] ; Loading the alloc function address mov r1, 64 @@ -86,12 +86,9 @@ pub new_hashset: add r13, r13, 12 jmp r5 ; allocating the space for the data - load r2, [sp] ; Now r1 is data pointer, r2 is hashset pointer at eq context - - add r2, r2, 4 store_32 [r2], r1 ; data pointer saved - pop r1 ; Popping the pointer to start of the hashset + sub r1, r12, 28 ; Getting the pointer to start of the hashset pop r13 ; Everything's set up, return pop r12