Offload int[] to byte[].
[SquirrelJME.git] / assets / developer-notes / stephanie-gawroriski / 2019 / 06 / 16.mkd
blob65113fd785cd850b809b3ec544b96300c86be06e
1 # 2019/06/16
3 ## 00:20
5 Did fix a LCDUI bug in text, where things were empty! But other than that I
6 want to debug my compiler but I am having an issue where I want to convert a
7 text file to an image so I can draw all over it with my pen. This way I can
8 have kind of a notepad and drawing into it to help me figure things out.
9 This is easier than having a separate part of it.
11 ## 00:36
13 Oh the bits are packed and the format is hybrid binary and text, so that
14 makes sense why the image looks weird.
16 ## 09:57
18 Checked `jvmLoadString()` it is perfectly fine and I see nothing wrong with
19 it. Now I suppose I shall do `String.intern()`.
21 ## 09:59
23 I could do a quick check, if `intern()` just returns `this` then I know that
24 is wrong.
26 ## 10:01
28 Okay, intern is fine as just returning has no effect. So maybe it is the
29 constructor for string?
31 ## 10:02
33 Okay so even blocking out the constructor still makes it happen.
35 ## 10:05
37 You know it seems to fail after instance fields are used, so maybe that is
38 incorrect? Like maybe memory corruption?
40 ## 10:05
42 Actually completely disabling garbage collection, things work again so I think
43 the garbage collector is destroying things?
45 ## 10:08
47 Okay, completely removing the free operation fixes things, so I think free is
48 causing some issues. Very possible it has a bug in it.
50 ## 10:17
52 Okay I noticed that in my allocator, I am not clearing the free bit in the
53 blocks. So the same memory is being used all the time.
55 ## 10:19
57 Yay I figured it out. I was not marking free blocks which were claimed as
58 taken, so all allocations would literally use the same block assuming it
59 would fit then possibly partition things. Like it would only mark it as
60 used if the block was smaller than the desired size.
62 ## 11:41
64 Okay, so I am going to have virtual pointers for 64-bit on RatufaCoat because
65 I am finding out that there are no real ways to allocate the lowest 32-bits on
66 many operating systems. It will be slower but it should work across various
67 things!
69 ## 16:01
71 I think the exception chain being odd is happening because I think the
72 exception register is not cleared? So like the exception flag always gets hit?
74 ## 16:16
76 Before I continue, I will very much need to have stack traces. Because that
77 would probably save me lots of headache in the future.
79 ## 18:33
81 Figured out how to make the stack traces nice without complicating how they
82 are encoded for example. So what I mean by this is I have two system calls,
83 one to get the height of the call stack (how deep the methods are) and another
84 to get elements from it. Since having memory access to the system call and
85 whatnot would be complicated, the first parameter is going to be the depth
86 from the top of the call stack and then the second will be another parameter
87 of it. This way new elements can be added without having to worry about how
88 many need to be stored. Since I really want the VM to be future proofed and
89 there might be different ways to obtain the information that does not make
90 sense in an array.