seperate classfile generation from codegen

This commit is contained in:
404Simon 2024-05-08 10:49:41 +02:00
parent debbea7736
commit 98d899e026
3 changed files with 5 additions and 6 deletions

View File

@ -17,8 +17,7 @@ public class CodeGenUtils {
return builder.toString();
}
public static void writeClassfile(ClassWriter cw, String name) {
byte[] code = cw.toByteArray();
public static void writeClassfile(byte[] code, String name) {
try {
FileOutputStream fos = new FileOutputStream("output/" + name + ".class");
fos.write(code);

View File

@ -5,7 +5,6 @@ import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
public class MethodContext {
}

View File

@ -63,7 +63,7 @@ public class TypedClass implements TypedNode {
return typedClass;
}
public void codeGen() {
public byte[] codeGen() {
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS);
cw.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC, typedId.getName(), null, "java/lang/Object", null);
for (TypedField field : typedFields) {
@ -78,7 +78,7 @@ public class TypedClass implements TypedNode {
//m.codeGen(cw);
}
CodeGenUtils.writeClassfile(cw, typedId.getName());
return cw.toByteArray();
}
@ -99,6 +99,7 @@ public class TypedClass implements TypedNode {
c.typedMethods = new ArrayList<>();
//codeGen
c.codeGen();
byte[] code = c.codeGen();
CodeGenUtils.writeClassfile(code, "SomeClass");
}
}