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 ClassFileLoader
private JavaMethodWasmCodeBuilder
private 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) FunctionName
createStartFunction
(Iterator<FunctionName> writeLaterClinit) Create a start function for the static class constructorsprivate void
Patch static constructor (class initializer)private StaticCodeBuilder.ScanState
scan
(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
-