mirror of
https://github.com/JonathanFleischmann/CompilerULTIMATE.git
synced 2024-10-06 18:01:40 +00:00
seperate classfile generation from codegen
This commit is contained in:
parent
debbea7736
commit
98d899e026
@ -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);
|
||||
|
@ -5,7 +5,6 @@ import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
public class MethodContext {
|
||||
}
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user