Skip to content

Commit c062e79

Browse files
committed
[WIP] Implement live variable analysis
Signed-off-by: Adam Laszlo Kulcsar <[email protected]>
1 parent dea5797 commit c062e79

File tree

9 files changed

+1907
-356
lines changed

9 files changed

+1907
-356
lines changed

notes.txt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
live_analysis
2+
3+
get-ből való kiindulás azért jobb mert valaminek be kell állítania az értékét
4+
5+
egy adott getből keresem vissza hogy milyen utakon lehet visszamenni az őt beállító utasításokig
6+
multimap jó
7+
8+
listákban tartom az összes változóra a set-jeit és a get-jeit
9+
10+
jump + sets [T,p]
11+
T - target, ahova ugrunk
12+
p - position, ahonnan ugrottunk
13+
+ listában a set-ek amelyek abban a blokban vannak
14+
15+
dump!!! - variableRange
16+
17+
[] hátra
18+
() előre
19+
20+
s g
21+
s ( g )
22+
23+
s [ ( g ) ]
24+
25+
[ (s ) g ]
26+
27+
[ s [ g ] g ] ( g )
28+
29+
30+
31+
s [ g ][ s g ]

src/interpreter/ByteCode.h

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,7 @@ class BinaryOperation : public ByteCode {
665665
const ByteCodeStackOffset* srcOffset() const { return m_srcOffset; }
666666
ByteCodeStackOffset dstOffset() const { return m_dstOffset; }
667667
void setDstOffset(ByteCodeStackOffset o) { m_dstOffset = o; }
668+
void setSrcOffset(ByteCodeStackOffset o, size_t index) { m_srcOffset[index] = o; }
668669
#if !defined(NDEBUG)
669670
void dump(size_t pos)
670671
{
@@ -707,6 +708,14 @@ class UnaryOperation : public ByteCode {
707708
}
708709
ByteCodeStackOffset srcOffset() const { return m_srcOffset; }
709710
ByteCodeStackOffset dstOffset() const { return m_dstOffset; }
711+
void setDstOffset(ByteCodeStackOffset newOffset)
712+
{
713+
m_dstOffset = newOffset;
714+
}
715+
void setSrcOffset(ByteCodeStackOffset newOffset)
716+
{
717+
m_srcOffset = newOffset;
718+
}
710719
#if !defined(NDEBUG)
711720
void dump(size_t pos)
712721
{
@@ -876,6 +885,14 @@ class Move : public ByteCode {
876885

877886
ByteCodeStackOffset srcOffset() const { return m_srcOffset; }
878887
ByteCodeStackOffset dstOffset() const { return m_dstOffset; }
888+
void setDstOffset(ByteCodeStackOffset newOffset)
889+
{
890+
m_dstOffset = newOffset;
891+
}
892+
void setSrcOffset(ByteCodeStackOffset newOffset)
893+
{
894+
m_srcOffset = newOffset;
895+
}
879896

880897
protected:
881898
ByteCodeStackOffset m_srcOffset;
@@ -977,7 +994,9 @@ class Load32 : public ByteCode {
977994
}
978995

979996
ByteCodeStackOffset srcOffset() const { return m_srcOffset; }
997+
void setSrcOffset(ByteCodeStackOffset o) { m_srcOffset = o; }
980998
ByteCodeStackOffset dstOffset() const { return m_dstOffset; }
999+
void setDstOffset(ByteCodeStackOffset o) { m_dstOffset = o; }
9811000

9821001
#if !defined(NDEBUG)
9831002
void dump(size_t pos)
@@ -1029,7 +1048,9 @@ class Store32 : public ByteCode {
10291048
}
10301049

10311050
ByteCodeStackOffset src0Offset() const { return m_src0Offset; }
1051+
void setSrc0Offset(ByteCodeStackOffset o) { m_src0Offset = o; }
10321052
ByteCodeStackOffset src1Offset() const { return m_src1Offset; }
1053+
void setSrc1Offset(ByteCodeStackOffset o) { m_src1Offset = o; }
10331054

10341055
#if !defined(NDEBUG)
10351056
void dump(size_t pos)
@@ -1170,11 +1191,15 @@ class Select : public ByteCode {
11701191
}
11711192

11721193
ByteCodeStackOffset condOffset() const { return m_condOffset; }
1194+
void setCondOffset(ByteCodeStackOffset o) { m_condOffset = o; }
11731195
uint16_t valueSize() const { return m_valueSize; }
11741196
bool isFloat() const { return m_isFloat != 0; }
11751197
ByteCodeStackOffset src0Offset() const { return m_src0Offset; }
1198+
void setSrc0Offset(ByteCodeStackOffset o) { m_src0Offset = o; }
11761199
ByteCodeStackOffset src1Offset() const { return m_src1Offset; }
1200+
void setSrc1Offset(ByteCodeStackOffset o) { m_src1Offset = o; }
11771201
ByteCodeStackOffset dstOffset() const { return m_dstOffset; }
1202+
void setDstOffset(ByteCodeStackOffset o) { m_dstOffset = o; }
11781203

11791204
#if !defined(NDEBUG)
11801205
void dump(size_t pos)
@@ -1414,7 +1439,9 @@ class MemoryLoad : public ByteCode {
14141439

14151440
uint32_t offset() const { return m_offset; }
14161441
ByteCodeStackOffset srcOffset() const { return m_srcOffset; }
1442+
void setSrcOffset(ByteCodeStackOffset o) { m_srcOffset = o; }
14171443
ByteCodeStackOffset dstOffset() const { return m_dstOffset; }
1444+
void setDstOffset(ByteCodeStackOffset o) { m_dstOffset = o; }
14181445

14191446
#if !defined(NDEBUG)
14201447
void dump(size_t pos)
@@ -1512,7 +1539,9 @@ class MemoryStore : public ByteCode {
15121539

15131540
uint32_t offset() const { return m_offset; }
15141541
ByteCodeStackOffset src0Offset() const { return m_src0Offset; }
1542+
void setSrc0Offset(ByteCodeStackOffset o) { m_src0Offset = o; }
15151543
ByteCodeStackOffset src1Offset() const { return m_src1Offset; }
1544+
void setSrc1Offset(ByteCodeStackOffset o) { m_src1Offset = o; }
15161545

15171546
#if !defined(NDEBUG)
15181547
void dump(size_t pos)
@@ -2063,6 +2092,7 @@ class GlobalGet32 : public ByteCode {
20632092
}
20642093

20652094
ByteCodeStackOffset dstOffset() const { return m_dstOffset; }
2095+
void setDstOffset(ByteCodeStackOffset o) { m_dstOffset = o; }
20662096
uint32_t index() const { return m_index; }
20672097

20682098
#if !defined(NDEBUG)

0 commit comments

Comments
 (0)