Class JSStructuredControlflowCodeGenerator
- java.lang.Object
-
- de.mirkosertic.bytecoder.core.backend.js.JSStructuredControlflowCodeGenerator
-
- All Implemented Interfaces:
StructuredControlflowCodeGenerator
public class JSStructuredControlflowCodeGenerator extends java.lang.Object implements StructuredControlflowCodeGenerator
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
JSStructuredControlflowCodeGenerator.LinkageArgument
-
Field Summary
Fields Modifier and Type Field Description private ResolvedClass
cl
private CompileUnit
compileUnit
private GeneratedMethodsRegistry
generatedMethodsRegistry
(package private) int
level
private java.io.PrintWriter
pw
private java.util.Map<AbstractVar,java.lang.String>
variableToName
-
Constructor Summary
Constructors Constructor Description JSStructuredControlflowCodeGenerator(CompileUnit compileUnit, ResolvedClass cl, java.io.PrintWriter pw, GeneratedMethodsRegistry generatedMethodsRegistry)
-
Method Summary
-
-
-
Field Detail
-
level
int level
-
variableToName
private final java.util.Map<AbstractVar,java.lang.String> variableToName
-
pw
private final java.io.PrintWriter pw
-
cl
private final ResolvedClass cl
-
compileUnit
private final CompileUnit compileUnit
-
generatedMethodsRegistry
private final GeneratedMethodsRegistry generatedMethodsRegistry
-
-
Constructor Detail
-
JSStructuredControlflowCodeGenerator
public JSStructuredControlflowCodeGenerator(CompileUnit compileUnit, ResolvedClass cl, java.io.PrintWriter pw, GeneratedMethodsRegistry generatedMethodsRegistry)
-
-
Method Detail
-
registerVariables
public void registerVariables(java.util.List<AbstractVar> variables)
- Specified by:
registerVariables
in interfaceStructuredControlflowCodeGenerator
-
writeIndent
private void writeIndent()
-
write
public void write(LineNumberDebugInfo node)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
public void write(Goto node)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
public void write(FrameDebugInfo node)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
public void write(MonitorEnter node)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
public void write(MonitorExit node)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
public void write(Unwind node)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
public void write(MethodInvocation invocation)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
writeDirect
private void writeDirect(MethodInvocation node)
-
writeExpression
private void writeExpression(MethodInvocationExpression node)
-
write
public void write(ClassInitialization node)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
writeExpressionDirectInvocation
private void writeExpressionDirectInvocation(MethodInvocationExpression node)
-
writeExpression
private void writeExpression(InvokeDynamicExpression node)
-
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
private void writeExpression(ReadInstanceField node)
-
writeExpression
private void writeExpression(ReadClassField node)
-
writeExpression
private void writeExpression(NewArray node)
-
writeExpression
private void writeExpression(ArrayLoad node)
-
writeExpression
private void writeExpression(MethodArgument node)
-
writeExpression
private void writeExpression(NullReference node)
-
writeExpression
private void writeExpression(ObjectString node)
-
writeExpression
private void writeExpression(ReferenceTest node)
-
writeExpression
private void writeExpression(NullTest node)
-
writeExpression
private void writeExpression(CaughtException node)
-
writeExpression
private void writeExpression(And node)
-
writeExpression
private void writeExpression(TypeConversion node)
-
writeExpression
private void writeExpression(ArrayLength node)
-
writeExpression
private void writeExpression(SHR node)
-
writeExpression
private void writeExpression(SHL node)
-
writeExpression
private void writeExpression(Or node)
-
writeExpression
private void writeExpression(Neg node)
-
writeExpression
private void writeExpression(Mul node)
-
writeExpression
private void writeExpression(RuntimeClassOf runtimeClassOf)
-
writeExpression
private void writeExpression(EnumValuesOf enumValuesOf)
-
writeType
private void writeType(org.objectweb.asm.Type type)
-
writeExpression
private void writeExpression(MethodType node)
-
writeExpression
private void writeExpression(CMP node)
-
writeExpression
private void writeExpression(RuntimeClass node)
-
writeExpression
private void writeExpression(Cast node)
-
writeExpression
private void writeExpression(PrimitiveClassReference reference)
-
writeExpression
private void writeExpression(PrimitiveLong node)
-
writeExpression
private void writeExpression(PrimitiveDouble node)
-
writeExpression
private void writeExpression(PrimitiveFloat node)
-
writeExpression
private void writeExpression(XOr node)
-
writeExpression
private void writeExpression(USHR node)
-
writeExpression
private void writeExpression(Rem node)
-
writeExpression
private void writeExpression(InstanceOf node)
-
writeExpression
private void writeExpression(NumericalTest node)
-
write
public void write(SetInstanceField node)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
public void write(SetClassField node)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
public void write(ArrayStore node)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
writeVirtual
private void writeVirtual(MethodInvocation node)
-
writeExpressionVirtualInvocation
private void writeExpressionVirtualInvocation(MethodInvocationExpression node)
-
writeInterface
private void writeInterface(MethodInvocation node)
-
writeExpressionInterfaceInvocation
private void writeExpressionInterfaceInvocation(MethodInvocationExpression node)
-
writeStatic
private void writeStatic(MethodInvocation node)
-
writeExpressionStaticInvocation
private void writeExpressionStaticInvocation(MethodInvocationExpression node)
-
write
public void write(Copy node)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
writeExpression
private void writeExpression(Node node)
-
writeExpression
private void writeExpression(TypeReference node)
-
writeExpression
private void writeExpression(This node)
-
writeExpression
private void writeExpression(New node)
-
writeExpression
private void writeExpression(Sub node)
-
writeExpression
private void writeExpression(Add node)
-
writeExpression
private void writeExpression(Div node)
-
writeExpression
private void writeExpression(AbstractVar node)
-
writeExpression
private void writeExpression(PrimitiveShort node)
-
writeExpression
private void writeExpression(PrimitiveInt node)
-
startIfWithTrueBlock
public void startIfWithTrueBlock(If node)
- Specified by:
startIfWithTrueBlock
in interfaceStructuredControlflowCodeGenerator
-
startIfElseBlock
public void startIfElseBlock(If node)
- Specified by:
startIfElseBlock
in interfaceStructuredControlflowCodeGenerator
-
finishIfBlock
public void finishIfBlock()
- Specified by:
finishIfBlock
in interfaceStructuredControlflowCodeGenerator
-
startBlock
public void startBlock(Sequencer.Block block)
- Specified by:
startBlock
in interfaceStructuredControlflowCodeGenerator
-
finishBlock
public void finishBlock(Sequencer.Block block, boolean stackEmpty)
- Specified by:
finishBlock
in interfaceStructuredControlflowCodeGenerator
-
startTryCatch
public void startTryCatch(java.lang.String label)
- 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
public void write(Return node)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
write
public void write(ReturnValue node)
- Specified by:
write
in interfaceStructuredControlflowCodeGenerator
-
writeBreakTo
public void writeBreakTo(java.lang.String label)
- Specified by:
writeBreakTo
in interfaceStructuredControlflowCodeGenerator
-
writeContinueTo
public void writeContinueTo(java.lang.String label)
- Specified by:
writeContinueTo
in interfaceStructuredControlflowCodeGenerator
-
startTableSwitch
public void startTableSwitch(TableSwitch node)
- Specified by:
startTableSwitch
in interfaceStructuredControlflowCodeGenerator
-
startTableSwitchDefaultBlock
public void startTableSwitchDefaultBlock()
- Specified by:
startTableSwitchDefaultBlock
in interfaceStructuredControlflowCodeGenerator
-
finishTableSwitchDefaultBlock
public void finishTableSwitchDefaultBlock()
- Specified by:
finishTableSwitchDefaultBlock
in interfaceStructuredControlflowCodeGenerator
-
startLookupSwitch
public void startLookupSwitch(LookupSwitch node)
- 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
-
-