Class JSStructuredControlflowCodeGenerator
java.lang.Object
de.mirkosertic.bytecoder.core.backend.js.JSStructuredControlflowCodeGenerator
- All Implemented Interfaces:
StructuredControlflowCodeGenerator
public class JSStructuredControlflowCodeGenerator
extends Object
implements StructuredControlflowCodeGenerator
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ResolvedClass
private final CompileUnit
private final GeneratedMethodsRegistry
(package private) int
private final PrintWriter
private final Map
<AbstractVar, String> -
Constructor Summary
ConstructorsConstructorDescriptionJSStructuredControlflowCodeGenerator
(CompileUnit compileUnit, ResolvedClass cl, PrintWriter pw, GeneratedMethodsRegistry generatedMethodsRegistry) -
Method Summary
Modifier and TypeMethodDescriptionvoid
finishBlock
(Sequencer.Block block, boolean stackEmpty) void
void
void
void
void
void
void
void
private void
generateInvokeDynamicLambdaMetaFactoryInvocation
(InvokeDynamicExpression node, ResolveCallsite resolveCallsite) private void
generateInvokeDynamicObjectMethodsEquals
(InvokeDynamicExpression node, ResolveCallsite resolveCallsite) private void
generateInvokeDynamicObjectMethodsHashCode
(InvokeDynamicExpression node, ResolveCallsite resolveCallsite) private void
generateInvokeDynamicObjectMethodsToString
(InvokeDynamicExpression node, ResolveCallsite resolveCallsite) private void
generateInvokeDynamicStringMakeConcatWithConstants
(InvokeDynamicExpression node, ResolveCallsite resolveCallsite) void
registerVariables
(List<AbstractVar> variables) void
startBlock
(Sequencer.Block block) void
void
startCatchHandler
(org.objectweb.asm.Type type) void
startIfElseBlock
(If node) void
startIfWithTrueBlock
(If node) void
void
startTableSwitch
(TableSwitch node) void
void
startTryCatch
(String label) void
write
(ArrayStore node) void
write
(ClassInitialization node) void
void
write
(FrameDebugInfo node) void
void
write
(LineNumberDebugInfo node) void
write
(MethodInvocation invocation) void
write
(MonitorEnter node) void
write
(MonitorExit node) void
void
write
(ReturnValue node) void
write
(SetClassField node) void
write
(SetInstanceField node) void
void
writeBreakTo
(String label) void
writeContinueTo
(String label) private void
writeDirect
(MethodInvocation node) private void
writeExpression
(AbstractVar node) private void
writeExpression
(Add node) private void
writeExpression
(And node) private void
writeExpression
(ArrayLength node) private void
writeExpression
(ArrayLoad node) private void
writeExpression
(Cast node) private void
private void
writeExpression
(CMP node) private void
writeExpression
(Div node) private void
writeExpression
(EnumValuesOf enumValuesOf) private void
writeExpression
(InstanceOf node) private void
private void
private void
private void
writeExpression
(MethodType node) private void
writeExpression
(Mul node) private void
writeExpression
(Neg node) private void
writeExpression
(New node) private void
writeExpression
(NewArray node) private void
writeExpression
(Node node) private void
writeExpression
(NullReference node) private void
writeExpression
(NullTest node) private void
writeExpression
(NumericalTest node) private void
writeExpression
(ObjectString node) private void
writeExpression
(Or node) private void
writeExpression
(PrimitiveClassReference reference) private void
private void
private void
writeExpression
(PrimitiveInt node) private void
writeExpression
(PrimitiveLong node) private void
private void
private void
private void
writeExpression
(ReferenceTest node) private void
writeExpression
(Rem node) private void
writeExpression
(RuntimeClass node) private void
writeExpression
(RuntimeClassOf runtimeClassOf) private void
writeExpression
(SHL node) private void
writeExpression
(SHR node) private void
writeExpression
(Sub node) private void
writeExpression
(This node) private void
private void
writeExpression
(TypeReference node) private void
writeExpression
(USHR node) private void
writeExpression
(XOr node) private void
private void
private void
private void
private void
private void
void
private void
writeStatic
(MethodInvocation node) void
writeSwitchCase
(int index) void
private void
writeType
(org.objectweb.asm.Type type) private void
writeVirtual
(MethodInvocation node)
-
Field Details
-
level
int level -
variableToName
-
pw
-
cl
-
compileUnit
-
generatedMethodsRegistry
-
-
Constructor Details
-
JSStructuredControlflowCodeGenerator
public JSStructuredControlflowCodeGenerator(CompileUnit compileUnit, ResolvedClass cl, PrintWriter pw, GeneratedMethodsRegistry generatedMethodsRegistry)
-
-
Method Details
-
registerVariables
- Specified by:
registerVariables
in interfaceStructuredControlflowCodeGenerator
-
writeIndent
private void writeIndent() -
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
writeDirect
-
writeExpression
-
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
writeExpressionDirectInvocation
-
writeExpression
-
generateInvokeDynamicStringMakeConcatWithConstants
private void generateInvokeDynamicStringMakeConcatWithConstants(InvokeDynamicExpression node, ResolveCallsite resolveCallsite) -
generateInvokeDynamicObjectMethodsToString
private void generateInvokeDynamicObjectMethodsToString(InvokeDynamicExpression node, ResolveCallsite resolveCallsite) -
generateInvokeDynamicObjectMethodsHashCode
private void generateInvokeDynamicObjectMethodsHashCode(InvokeDynamicExpression node, ResolveCallsite resolveCallsite) -
generateInvokeDynamicObjectMethodsEquals
private void generateInvokeDynamicObjectMethodsEquals(InvokeDynamicExpression node, ResolveCallsite resolveCallsite) -
generateInvokeDynamicLambdaMetaFactoryInvocation
private void generateInvokeDynamicLambdaMetaFactoryInvocation(InvokeDynamicExpression node, ResolveCallsite resolveCallsite) -
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeType
private void writeType(org.objectweb.asm.Type type) -
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
writeVirtual
-
writeExpressionVirtualInvocation
-
writeInterface
-
writeExpressionInterfaceInvocation
-
writeStatic
-
writeExpressionStaticInvocation
-
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
writeExpression
-
startIfWithTrueBlock
- Specified by:
startIfWithTrueBlock
in interfaceStructuredControlflowCodeGenerator
-
startIfElseBlock
- Specified by:
startIfElseBlock
in interfaceStructuredControlflowCodeGenerator
-
finishIfBlock
public void finishIfBlock()- Specified by:
finishIfBlock
in interfaceStructuredControlflowCodeGenerator
-
startBlock
- Specified by:
startBlock
in interfaceStructuredControlflowCodeGenerator
-
finishBlock
- Specified by:
finishBlock
in interfaceStructuredControlflowCodeGenerator
-
startTryCatch
- Specified by:
startTryCatch
in interfaceStructuredControlflowCodeGenerator
-
startCatchBlock
public void startCatchBlock()- Specified by:
startCatchBlock
in interfaceStructuredControlflowCodeGenerator
-
startCatchHandler
public void startCatchHandler(org.objectweb.asm.Type type) - Specified by:
startCatchHandler
in interfaceStructuredControlflowCodeGenerator
-
finishCatchHandler
public void finishCatchHandler()- Specified by:
finishCatchHandler
in interfaceStructuredControlflowCodeGenerator
-
writeRethrowException
public void writeRethrowException()- Specified by:
writeRethrowException
in interfaceStructuredControlflowCodeGenerator
-
finishTryCatch
public void finishTryCatch()- Specified by:
finishTryCatch
in interfaceStructuredControlflowCodeGenerator
-
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
writeBreakTo
- Specified by:
writeBreakTo
in interfaceStructuredControlflowCodeGenerator
-
writeContinueTo
- Specified by:
writeContinueTo
in interfaceStructuredControlflowCodeGenerator
-
startTableSwitch
- Specified by:
startTableSwitch
in interfaceStructuredControlflowCodeGenerator
-
startTableSwitchDefaultBlock
public void startTableSwitchDefaultBlock()- Specified by:
startTableSwitchDefaultBlock
in interfaceStructuredControlflowCodeGenerator
-
finishTableSwitchDefaultBlock
public void finishTableSwitchDefaultBlock()- Specified by:
finishTableSwitchDefaultBlock
in interfaceStructuredControlflowCodeGenerator
-
startLookupSwitch
- Specified by:
startLookupSwitch
in interfaceStructuredControlflowCodeGenerator
-
writeSwitchCase
public void writeSwitchCase(int index) - Specified by:
writeSwitchCase
in interfaceStructuredControlflowCodeGenerator
-
writeSwitchDefaultCase
public void writeSwitchDefaultCase()- Specified by:
writeSwitchDefaultCase
in interfaceStructuredControlflowCodeGenerator
-
finishSwitchDefault
public void finishSwitchDefault()- Specified by:
finishSwitchDefault
in interfaceStructuredControlflowCodeGenerator
-
finishSwitchCase
public void finishSwitchCase()- Specified by:
finishSwitchCase
in interfaceStructuredControlflowCodeGenerator
-
finishLookupSwitch
public void finishLookupSwitch()- Specified by:
finishLookupSwitch
in interfaceStructuredControlflowCodeGenerator
-
finishTableSwitch
public void finishTableSwitch()- Specified by:
finishTableSwitch
in interfaceStructuredControlflowCodeGenerator
-