SquirrelJME/SquirrelJME

View on GitHub
assets/developer-notes/stephanie-gawroriski/2018/10/12.mkd

Summary

Maintainability
Test Coverage
# 2018/10/12

## 09:00

There is a freeze at the given frame and I think it may be related to
conversion or compatible objects:

 * `cc/squirreljme/runtime/cldc/string/CharArraySequence.charAt:(I)C`

## 09:05

Seems the issue is in context class.

## 09:06

`cc.squirreljme.springcoat.vm.SpringThreadWorker.contextClass` seems to
be the issue, it must be looping here.

## 09:11

Okay so there is a loop definitely with finding instructions. A new frame
is not being inserted, but there definitely is a problem with the byte
code parsing.

## 09:22

I think `CharArraySequence` is fine. It must be more up the stack. The
next is `java/lang/String.charAt:(I)C` which is really simple, I think if
that failed it would be bad and not work anywhere else. But there are no
enter frames being done at all which means that code is still executing
somehow.

## 09:29

I believe I am going to need a debugger that can be ran from the console or
otherwise.

## 09:31

Okay the code is really stuck at:

 * `java/util/Formatter.__specifier:`
   * `(Ljava/util/__PrintFState__;ILjava/lang/String;)I`

So to investifate that.

## 09:34

There is some kind of loop, it might be `if_icmpgt`.

## 09:49

Looks like it is stuck on a GOTO.

## 09:51

And it is:

    53: iload         4
    55: bipush        48
    57: if_icmplt     73
    60: iload         4
    62: bipush        57
    64: if_icmpgt     73
    67: iinc          3, 1
    70: goto          53

This block of code just compares values. And it is at Formatter.java:422.
This is reading a number from the input.

## 09:54

Duh, I am stupid, because I am only reading the value one.

## 21:04

I need to figure out how to check for overflow, actually I can use division
or just check the bits I guess?

## 22:59

Cheating a bit, `Character.toString()` is just a basic sequence initialized
for a single character since that is the solution with the least amount of
memory and object space used.

## 23:04

Okay so for the test failing, I believe `getResourceAsStream()` is failing.