Class StaticCodeBuilder
java.lang.Object
de.inetsoftware.jwebassembly.module.StaticCodeBuilder
Write the static class initializer code.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ClassFileLoaderprivate JavaMethodWasmCodeBuilderprivate WasmOptions -
Constructor Summary
ConstructorsConstructorDescriptionStaticCodeBuilder(WasmOptions options, ClassFileLoader classFileLoader, JavaMethodWasmCodeBuilder javaCodeBuilder) Create a instance with a snapshot of all static class initializer. -
Method Summary
Modifier and TypeMethodDescription(package private) FunctionNamecreateStartFunction(Iterator<FunctionName> writeLaterClinit) Create a start function for the static class constructorsprivate voidPatch static constructor (class initializer)private StaticCodeBuilder.ScanStatescan(FunctionName name, LinkedHashMap<String, FunctionName> constructors) Scan for for references to other classes
-
Field Details
-
options
-
classFileLoader
-
javaCodeBuilder
-
-
Constructor Details
-
StaticCodeBuilder
StaticCodeBuilder(WasmOptions options, ClassFileLoader classFileLoader, JavaMethodWasmCodeBuilder javaCodeBuilder) Create a instance with a snapshot of all static class initializer.- Parameters:
options- the compiler optionsclassFileLoader- for loading the class filesjavaCodeBuilder- global code builder
-
-
Method Details
-
createStartFunction
@Nonnull FunctionName createStartFunction(Iterator<FunctionName> writeLaterClinit) throws IOException Create a start function for the static class constructors- Parameters:
writeLaterClinit- iterator of all needed static constructors- Returns:
- the synthetic function name
- Throws:
IOException- if any I/O error occur
-
scan
private StaticCodeBuilder.ScanState scan(FunctionName name, LinkedHashMap<String, FunctionName> constructors) Scan for for references to other classes- Parameters:
name- the name of the static constructor (class initializer)constructors- all static constructors which have references or was not scanned- Returns:
- the reference state
-
patch
private void patch(StaticCodeBuilder.ScanState scan, LinkedHashMap<String, StaticCodeBuilder.ScanState> scans) Patch static constructor (class initializer)- Parameters:
scan- the current scanscans- a list with all static constructors which was not called
-