I'm trying to convert Java to an intermediate language and am in the process of figuring out how the intermediate language works.
I have the original Java code: http://cs.ucla.edu/classes/spring11/cs132/cs132/mj/Factorial.java
And I have the Intermediate Code representation (VAPOR): http://cs.ucla.edu/classes/spring11/cs132/kannan/vapor-examples/Factorial.vapor
Here's another set: in Java: http://cs.ucla.edu/classes/spring11/cs132/cs132/mj/BubbleSort.java
In VAPOR: http://cs.ucla.edu/classes/spring11/cs132/kannan/vapor-examples/BubbleSort.vapor
My question is, all of the VAPOR code has t.0 = HeapAllocZ(x)
(where x
is an int
). I'm wondering how the converter determines the heap size needs to be size x
. In Factorial.vapor
, it's set to 4
. In BubbleSort.vapor
, it's set to 12
.
Thanks!
It looks like the HeapAlloc
is based on the size of the structure you are creating (assuming 4
and 12
are byte values). I would think that looking at the variables your data structure uses, and counting the number of bytes those variables sum to would give you the number being allocated.