Skip to content

Commit ddfeaf8

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

File tree

6 files changed

+829
-3
lines changed

6 files changed

+829
-3
lines changed

src/interpreter/ByteCode.h

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#ifndef __WalrusByteCode__
1818
#define __WalrusByteCode__
1919

20+
#include "Walrus.h"
2021
#if !defined(NDEBUG)
2122
#include <cinttypes>
2223
#include "runtime/Module.h"
@@ -663,6 +664,7 @@ class BinaryOperation : public ByteCode {
663664
const ByteCodeStackOffset* srcOffset() const { return m_srcOffset; }
664665
ByteCodeStackOffset dstOffset() const { return m_dstOffset; }
665666
void setDstOffset(ByteCodeStackOffset o) { m_dstOffset = o; }
667+
void setSrcOffset(ByteCodeStackOffset o, size_t index) { m_srcOffset[index] = o; }
666668
#if !defined(NDEBUG)
667669
void dump(size_t pos)
668670
{
@@ -705,6 +707,14 @@ class UnaryOperation : public ByteCode {
705707
}
706708
ByteCodeStackOffset srcOffset() const { return m_srcOffset; }
707709
ByteCodeStackOffset dstOffset() const { return m_dstOffset; }
710+
void setDstOffset(ByteCodeStackOffset newOffset)
711+
{
712+
m_dstOffset = newOffset;
713+
}
714+
void setSrcOffset(ByteCodeStackOffset newOffset)
715+
{
716+
m_srcOffset = newOffset;
717+
}
708718
#if !defined(NDEBUG)
709719
void dump(size_t pos)
710720
{
@@ -874,6 +884,14 @@ class Move32 : public ByteCode {
874884

875885
ByteCodeStackOffset srcOffset() const { return m_srcOffset; }
876886
ByteCodeStackOffset dstOffset() const { return m_dstOffset; }
887+
void setDstOffset(ByteCodeStackOffset newOffset)
888+
{
889+
m_dstOffset = newOffset;
890+
}
891+
void setSrcOffset(ByteCodeStackOffset newOffset)
892+
{
893+
m_srcOffset = newOffset;
894+
}
877895

878896
#if !defined(NDEBUG)
879897
void dump(size_t pos)
@@ -951,7 +969,9 @@ class Load32 : public ByteCode {
951969
}
952970

953971
ByteCodeStackOffset srcOffset() const { return m_srcOffset; }
972+
void setSrcOffset(Walrus::ByteCodeStackOffset o) { m_srcOffset = o; }
954973
ByteCodeStackOffset dstOffset() const { return m_dstOffset; }
974+
void setDstOffset(Walrus::ByteCodeStackOffset o) { m_dstOffset = o; }
955975

956976
#if !defined(NDEBUG)
957977
void dump(size_t pos)
@@ -1003,7 +1023,9 @@ class Store32 : public ByteCode {
10031023
}
10041024

10051025
ByteCodeStackOffset src0Offset() const { return m_src0Offset; }
1026+
void setSrc0Offset(Walrus::ByteCodeStackOffset o) { m_src0Offset = o; }
10061027
ByteCodeStackOffset src1Offset() const { return m_src1Offset; }
1028+
void setSrc1Offset(Walrus::ByteCodeStackOffset o) { m_src1Offset = o; }
10071029

10081030
#if !defined(NDEBUG)
10091031
void dump(size_t pos)
@@ -1388,7 +1410,9 @@ class MemoryLoad : public ByteCode {
13881410

13891411
uint32_t offset() const { return m_offset; }
13901412
ByteCodeStackOffset srcOffset() const { return m_srcOffset; }
1413+
void setSrcOffset(Walrus::ByteCodeStackOffset o) { m_srcOffset = o; }
13911414
ByteCodeStackOffset dstOffset() const { return m_dstOffset; }
1415+
void setDstOffset(Walrus::ByteCodeStackOffset o) { m_dstOffset = o; }
13921416

13931417
#if !defined(NDEBUG)
13941418
void dump(size_t pos)
@@ -1486,7 +1510,9 @@ class MemoryStore : public ByteCode {
14861510

14871511
uint32_t offset() const { return m_offset; }
14881512
ByteCodeStackOffset src0Offset() const { return m_src0Offset; }
1513+
void setSrc0Offset(Walrus::ByteCodeStackOffset o) { m_src0Offset = o; }
14891514
ByteCodeStackOffset src1Offset() const { return m_src1Offset; }
1515+
void setSrc1Offset(Walrus::ByteCodeStackOffset o) { m_src1Offset = o; }
14901516

14911517
#if !defined(NDEBUG)
14921518
void dump(size_t pos)
@@ -2037,6 +2063,7 @@ class GlobalGet32 : public ByteCode {
20372063
}
20382064

20392065
ByteCodeStackOffset dstOffset() const { return m_dstOffset; }
2066+
void setDstOffset(ByteCodeStackOffset o) { m_dstOffset = o; }
20402067
uint32_t index() const { return m_index; }
20412068

20422069
#if !defined(NDEBUG)
@@ -2255,7 +2282,7 @@ class End : public ByteCode {
22552282
{
22562283
}
22572284

2258-
ByteCodeStackOffset* resultOffsets() const
2285+
ByteCodeStackOffset* resultOffsets()
22592286
{
22602287
return reinterpret_cast<ByteCodeStackOffset*>(reinterpret_cast<size_t>(this) + sizeof(End));
22612288
}

0 commit comments

Comments
 (0)