mirror of
https://github.com/JonathanFleischmann/CompilerULTIMATE.git
synced 2024-10-06 20:21:41 +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();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void writeClassfile(ClassWriter cw, String name) {
|
public static void writeClassfile(byte[] code, String name) {
|
||||||
byte[] code = cw.toByteArray();
|
|
||||||
try {
|
try {
|
||||||
FileOutputStream fos = new FileOutputStream("output/" + name + ".class");
|
FileOutputStream fos = new FileOutputStream("output/" + name + ".class");
|
||||||
fos.write(code);
|
fos.write(code);
|
||||||
|
@ -5,7 +5,6 @@ import lombok.Data;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
|
||||||
@Data
|
@Data
|
||||||
public class MethodContext {
|
public class MethodContext {
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ public class TypedClass implements TypedNode {
|
|||||||
return typedClass;
|
return typedClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void codeGen() {
|
public byte[] codeGen() {
|
||||||
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS);
|
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);
|
cw.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC, typedId.getName(), null, "java/lang/Object", null);
|
||||||
for (TypedField field : typedFields) {
|
for (TypedField field : typedFields) {
|
||||||
@ -78,7 +78,7 @@ public class TypedClass implements TypedNode {
|
|||||||
//m.codeGen(cw);
|
//m.codeGen(cw);
|
||||||
}
|
}
|
||||||
|
|
||||||
CodeGenUtils.writeClassfile(cw, typedId.getName());
|
return cw.toByteArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -99,6 +99,7 @@ public class TypedClass implements TypedNode {
|
|||||||
c.typedMethods = new ArrayList<>();
|
c.typedMethods = new ArrayList<>();
|
||||||
|
|
||||||
//codeGen
|
//codeGen
|
||||||
c.codeGen();
|
byte[] code = c.codeGen();
|
||||||
|
CodeGenUtils.writeClassfile(code, "SomeClass");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user