Class StaticCodeBuilder
- java.lang.Object
-
- de.inetsoftware.jwebassembly.module.StaticCodeBuilder
-
class StaticCodeBuilder extends java.lang.Object
Write the static class initializer code.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
StaticCodeBuilder.ScanState
-
Field Summary
Fields Modifier and Type Field Description private ClassFileLoader
classFileLoader
private JavaMethodWasmCodeBuilder
javaCodeBuilder
private WasmOptions
options
-
Constructor Summary
Constructors Constructor Description StaticCodeBuilder(WasmOptions options, ClassFileLoader classFileLoader, JavaMethodWasmCodeBuilder javaCodeBuilder)
Create a instance with a snapshot of all static class initializer.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) FunctionName
createStartFunction(java.util.Iterator<FunctionName> writeLaterClinit)
Create a start function for the static class constructorsprivate void
patch(StaticCodeBuilder.ScanState scan, java.util.LinkedHashMap<java.lang.String,StaticCodeBuilder.ScanState> scans)
Patch static constructor (class initializer)private StaticCodeBuilder.ScanState
scan(FunctionName name, java.util.LinkedHashMap<java.lang.String,FunctionName> constructors)
Scan for for references to other classes
-
-
-
Field Detail
-
options
private WasmOptions options
-
classFileLoader
private ClassFileLoader classFileLoader
-
javaCodeBuilder
private JavaMethodWasmCodeBuilder javaCodeBuilder
-
-
Constructor Detail
-
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 Detail
-
createStartFunction
@Nonnull FunctionName createStartFunction(java.util.Iterator<FunctionName> writeLaterClinit) throws java.io.IOException
Create a start function for the static class constructors- Parameters:
writeLaterClinit
- iterator of all needed static constructors- Returns:
- the synthetic function name
- Throws:
java.io.IOException
- if any I/O error occur
-
scan
private StaticCodeBuilder.ScanState scan(FunctionName name, java.util.LinkedHashMap<java.lang.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, java.util.LinkedHashMap<java.lang.String,StaticCodeBuilder.ScanState> scans)
Patch static constructor (class initializer)- Parameters:
scan
- the current scanscans
- a list with all static constructors which was not called
-
-