From b0d396ed72e0ca262189945eae8e118c04c5aa61 Mon Sep 17 00:00:00 2001 From: Marc Miltenberger Date: Wed, 29 Nov 2023 13:26:58 +0100 Subject: [PATCH 1/7] Do not compute a null element in class path --- src/main/java/soot/Scene.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/soot/Scene.java b/src/main/java/soot/Scene.java index 89a371d8e42..b321ef93a87 100755 --- a/src/main/java/soot/Scene.java +++ b/src/main/java/soot/Scene.java @@ -301,7 +301,10 @@ public void setSootClassPath(String p) { } public void extendSootClassPath(String newPathElement) { - sootClassPath += File.pathSeparatorChar + newPathElement; + if (sootClassPath == null) + sootClassPath = newPathElement; + else + sootClassPath += File.pathSeparatorChar + newPathElement; SourceLocator.v().extendClassPath(newPathElement); } From 7ace7a344e0866d1a2047fc884b7ff53b5d26b74 Mon Sep 17 00:00:00 2001 From: Marc Miltenberger Date: Wed, 29 Nov 2023 13:34:50 +0100 Subject: [PATCH 2/7] Stylecheck --- src/main/java/soot/Scene.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/soot/Scene.java b/src/main/java/soot/Scene.java index b321ef93a87..f13c1ba53a4 100755 --- a/src/main/java/soot/Scene.java +++ b/src/main/java/soot/Scene.java @@ -301,10 +301,11 @@ public void setSootClassPath(String p) { } public void extendSootClassPath(String newPathElement) { - if (sootClassPath == null) + if (sootClassPath == null) { sootClassPath = newPathElement; - else + } else { sootClassPath += File.pathSeparatorChar + newPathElement; + } SourceLocator.v().extendClassPath(newPathElement); } From a5b9e95c669e1274edde7496ea42e6d86bf8a92d Mon Sep 17 00:00:00 2001 From: Marc Miltenberger Date: Wed, 29 Nov 2023 17:47:10 +0100 Subject: [PATCH 3/7] Remove legacy coffi --- doc/soot_options.html | 4 - .../sable/soot/ui/PhaseOptionsDialog.java | 27 - .../jastadd/soot/JastAddJ/ASTNode$State.java | 4 - .../jastadd/soot/JastAddJ/ASTNode.java | 4 - .../jastadd/soot/JastAddJ/AbstractDot.java | 4 - .../soot/JastAddJ/AbstractWildcard.java | 4 - .../soot/JastAddJ/AbstractWildcardType.java | 4 - .../jastadd/soot/JastAddJ/Access.java | 4 - .../jastadd/soot/JastAddJ/AddExpr.java | 4 - .../jastadd/soot/JastAddJ/AdditiveExpr.java | 4 - .../soot/JastAddJ/AmbiguousAccess.java | 4 - .../jastadd/soot/JastAddJ/AndBitwiseExpr.java | 4 - .../jastadd/soot/JastAddJ/AndLogicalExpr.java | 4 - .../JastAddJ/AnnotatedCompilationUnit.java | 4 - .../jastadd/soot/JastAddJ/Annotation.java | 4 - .../jastadd/soot/JastAddJ/AnnotationDecl.java | 4 - .../soot/JastAddJ/AnnotationMethodDecl.java | 4 - .../jastadd/soot/JastAddJ/AnonymousDecl.java | 4 - .../jastadd/soot/JastAddJ/ArithmeticExpr.java | 4 - .../jastadd/soot/JastAddJ/ArrayAccess.java | 4 - .../soot/JastAddJ/ArrayCreationExpr.java | 4 - .../jastadd/soot/JastAddJ/ArrayDecl.java | 4 - .../jastadd/soot/JastAddJ/ArrayInit.java | 4 - .../soot/JastAddJ/ArrayTypeAccess.java | 4 - .../JastAddJ/ArrayTypeWithSizeAccess.java | 4 - .../jastadd/soot/JastAddJ/AssertStmt.java | 4 - .../soot/JastAddJ/AssignAdditiveExpr.java | 4 - .../jastadd/soot/JastAddJ/AssignAndExpr.java | 4 - .../soot/JastAddJ/AssignBitwiseExpr.java | 4 - .../jastadd/soot/JastAddJ/AssignDivExpr.java | 4 - .../jastadd/soot/JastAddJ/AssignExpr.java | 4 - .../soot/JastAddJ/AssignLShiftExpr.java | 4 - .../soot/JastAddJ/AssignMinusExpr.java | 4 - .../jastadd/soot/JastAddJ/AssignModExpr.java | 4 - .../jastadd/soot/JastAddJ/AssignMulExpr.java | 4 - .../JastAddJ/AssignMultiplicativeExpr.java | 4 - .../jastadd/soot/JastAddJ/AssignOrExpr.java | 4 - .../jastadd/soot/JastAddJ/AssignPlusExpr.java | 4 - .../soot/JastAddJ/AssignRShiftExpr.java | 4 - .../soot/JastAddJ/AssignShiftExpr.java | 4 - .../soot/JastAddJ/AssignSimpleExpr.java | 4 - .../soot/JastAddJ/AssignURShiftExpr.java | 4 - .../jastadd/soot/JastAddJ/AssignXorExpr.java | 4 - .../jastadd/soot/JastAddJ/Attributes.java | 4 - .../jastadd/soot/JastAddJ/BasicCatch.java | 4 - .../jastadd/soot/JastAddJ/Binary.java | 4 - .../jastadd/soot/JastAddJ/BitNotExpr.java | 4 - .../jastadd/soot/JastAddJ/BitwiseExpr.java | 4 - .../jastadd/soot/JastAddJ/Block.java | 4 - .../generated/jastadd/soot/JastAddJ/Body.java | 4 - .../jastadd/soot/JastAddJ/BodyDecl.java | 4 - .../jastadd/soot/JastAddJ/BodyDeclList.java | 4 - .../jastadd/soot/JastAddJ/BooleanLiteral.java | 4 - .../jastadd/soot/JastAddJ/BooleanType.java | 4 - .../soot/JastAddJ/BoundFieldAccess.java | 4 - .../soot/JastAddJ/BoundMethodAccess.java | 4 - .../soot/JastAddJ/BoundTypeAccess.java | 4 - .../soot/JastAddJ/BranchPropagation.java | 4 - .../soot/JastAddJ/BranchTargetStmt.java | 4 - .../jastadd/soot/JastAddJ/BreakStmt.java | 4 - .../soot/JastAddJ/BridgeMethodDecl.java | 4 - .../jastadd/soot/JastAddJ/ByteType.java | 4 - .../jastadd/soot/JastAddJ/BytecodeParser.java | 4 - .../jastadd/soot/JastAddJ/BytecodeReader.java | 4 - .../soot/JastAddJ/BytecodeTypeAccess.java | 4 - .../soot/JastAddJ/CONSTANT_Class_Info.java | 4 - .../soot/JastAddJ/CONSTANT_Double_Info.java | 4 - .../soot/JastAddJ/CONSTANT_Fieldref_Info.java | 4 - .../soot/JastAddJ/CONSTANT_Float_Info.java | 4 - .../jastadd/soot/JastAddJ/CONSTANT_Info.java | 4 - .../soot/JastAddJ/CONSTANT_Integer_Info.java | 4 - .../CONSTANT_InterfaceMethodref_Info.java | 4 - .../soot/JastAddJ/CONSTANT_Long_Info.java | 4 - .../JastAddJ/CONSTANT_Methodref_Info.java | 4 - .../JastAddJ/CONSTANT_NameAndType_Info.java | 4 - .../soot/JastAddJ/CONSTANT_String_Info.java | 4 - .../soot/JastAddJ/CONSTANT_Utf8_Info.java | 4 - .../generated/jastadd/soot/JastAddJ/Case.java | 4 - .../jastadd/soot/JastAddJ/CastExpr.java | 4 - .../jastadd/soot/JastAddJ/CatchClause.java | 4 - .../JastAddJ/CatchParameterDeclaration.java | 4 - .../jastadd/soot/JastAddJ/CharType.java | 4 - .../soot/JastAddJ/CharacterLiteral.java | 4 - .../jastadd/soot/JastAddJ/ClassAccess.java | 4 - .../jastadd/soot/JastAddJ/ClassDecl.java | 15 - .../soot/JastAddJ/ClassDeclSubstituted.java | 4 - .../soot/JastAddJ/ClassInstanceExpr.java | 4 - .../soot/JastAddJ/CompilationUnit.java | 4 - .../soot/JastAddJ/ConditionalExpr.java | 4 - .../jastadd/soot/JastAddJ/ConstCase.java | 4 - .../jastadd/soot/JastAddJ/Constant.java | 4 - .../jastadd/soot/JastAddJ/Constraints.java | 4 - .../soot/JastAddJ/ConstructorAccess.java | 4 - .../soot/JastAddJ/ConstructorDecl.java | 3 +- .../JastAddJ/ConstructorDeclSubstituted.java | 4 - .../jastadd/soot/JastAddJ/ContinueStmt.java | 4 - .../jastadd/soot/JastAddJ/DefaultCase.java | 4 - .../jastadd/soot/JastAddJ/DiamondAccess.java | 4 - .../generated/jastadd/soot/JastAddJ/Dims.java | 4 - .../jastadd/soot/JastAddJ/DivExpr.java | 4 - .../jastadd/soot/JastAddJ/DoStmt.java | 4 - .../generated/jastadd/soot/JastAddJ/Dot.java | 4 - .../jastadd/soot/JastAddJ/DoubleLiteral.java | 4 - .../jastadd/soot/JastAddJ/DoubleType.java | 4 - .../jastadd/soot/JastAddJ/EQExpr.java | 4 - .../soot/JastAddJ/ElementAnnotationValue.java | 4 - .../soot/JastAddJ/ElementArrayValue.java | 4 - .../soot/JastAddJ/ElementConstantValue.java | 4 - .../jastadd/soot/JastAddJ/ElementValue.java | 4 - .../soot/JastAddJ/ElementValuePair.java | 4 - .../jastadd/soot/JastAddJ/EmptyStmt.java | 4 - .../jastadd/soot/JastAddJ/EmptyType.java | 4 - .../soot/JastAddJ/EnhancedForStmt.java | 4 - .../jastadd/soot/JastAddJ/EnumConstant.java | 4 - .../jastadd/soot/JastAddJ/EnumDecl.java | 4 - .../soot/JastAddJ/EnumInstanceExpr.java | 4 - .../jastadd/soot/JastAddJ/EqualityExpr.java | 4 - .../generated/jastadd/soot/JastAddJ/Expr.java | 4 - .../jastadd/soot/JastAddJ/ExprStmt.java | 4 - .../jastadd/soot/JastAddJ/FieldDecl.java | 4 - .../JastAddJ/FieldDeclarationSubstituted.java | 4 - .../soot/JastAddJ/FieldDescriptor.java | 4 - .../jastadd/soot/JastAddJ/FieldInfo.java | 4 - .../jastadd/soot/JastAddJ/FileNamesPart.java | 4 - .../jastadd/soot/JastAddJ/FinallyHost.java | 4 - .../jastadd/soot/JastAddJ/Flags.java | 4 - .../jastadd/soot/JastAddJ/FloatType.java | 4 - .../soot/JastAddJ/FloatingPointLiteral.java | 4 - .../soot/JastAddJ/FloatingPointType.java | 4 - .../jastadd/soot/JastAddJ/FolderPart.java | 4 - .../jastadd/soot/JastAddJ/ForStmt.java | 4 - .../jastadd/soot/JastAddJ/Frontend.java | 4 - .../jastadd/soot/JastAddJ/GEExpr.java | 4 - .../jastadd/soot/JastAddJ/GLBType.java | 4 - .../jastadd/soot/JastAddJ/GLBTypeFactory.java | 4 - .../jastadd/soot/JastAddJ/GTExpr.java | 4 - .../soot/JastAddJ/GenericClassDecl.java | 4 - .../JastAddJ/GenericClassDeclSubstituted.java | 4 - .../soot/JastAddJ/GenericConstructorDecl.java | 4 - .../soot/JastAddJ/GenericInterfaceDecl.java | 4 - .../GenericInterfaceDeclSubstituted.java | 4 - .../soot/JastAddJ/GenericMethodDecl.java | 4 - .../soot/JastAddJ/GenericTypeDecl.java | 4 - .../jastadd/soot/JastAddJ/IdUse.java | 4 - .../jastadd/soot/JastAddJ/IfStmt.java | 4 - .../jastadd/soot/JastAddJ/IllegalLiteral.java | 4 - .../jastadd/soot/JastAddJ/ImportDecl.java | 4 - .../soot/JastAddJ/InstanceInitializer.java | 4 - .../jastadd/soot/JastAddJ/InstanceOfExpr.java | 4 - .../jastadd/soot/JastAddJ/IntType.java | 4 - .../jastadd/soot/JastAddJ/IntegerLiteral.java | 4 - .../jastadd/soot/JastAddJ/IntegralType.java | 4 - .../jastadd/soot/JastAddJ/InterfaceDecl.java | 4 - .../JastAddJ/InterfaceDeclSubstituted.java | 4 - .../jastadd/soot/JastAddJ/JavaParser.java | 4 - .../jastadd/soot/JastAddJ/LEExpr.java | 4 - .../jastadd/soot/JastAddJ/LShiftExpr.java | 4 - .../jastadd/soot/JastAddJ/LTExpr.java | 4 - .../jastadd/soot/JastAddJ/LUBType.java | 4 - .../jastadd/soot/JastAddJ/LabeledStmt.java | 4 - .../generated/jastadd/soot/JastAddJ/List.java | 4 - .../jastadd/soot/JastAddJ/Literal.java | 4 - .../soot/JastAddJ/LocalClassDeclStmt.java | 4 - .../jastadd/soot/JastAddJ/LogNotExpr.java | 4 - .../jastadd/soot/JastAddJ/LogicalExpr.java | 4 - .../jastadd/soot/JastAddJ/LongLiteral.java | 4 - .../jastadd/soot/JastAddJ/LongType.java | 4 - .../soot/JastAddJ/MemberClassDecl.java | 4 - .../jastadd/soot/JastAddJ/MemberDecl.java | 4 - .../soot/JastAddJ/MemberInterfaceDecl.java | 4 - .../soot/JastAddJ/MemberSubstitutor.java | 4 - .../jastadd/soot/JastAddJ/MemberTypeDecl.java | 4 - .../jastadd/soot/JastAddJ/MethodAccess.java | 4 - .../jastadd/soot/JastAddJ/MethodDecl.java | 3 +- .../soot/JastAddJ/MethodDeclSubstituted.java | 4 - .../soot/JastAddJ/MethodDescriptor.java | 4 - .../jastadd/soot/JastAddJ/MethodInfo.java | 4 - .../jastadd/soot/JastAddJ/MinusExpr.java | 4 - .../jastadd/soot/JastAddJ/ModExpr.java | 4 - .../jastadd/soot/JastAddJ/Modifier.java | 4 - .../jastadd/soot/JastAddJ/Modifiers.java | 4 - .../jastadd/soot/JastAddJ/MulExpr.java | 4 - .../jastadd/soot/JastAddJ/MultiCatch.java | 4 - .../soot/JastAddJ/MultiplicativeExpr.java | 4 - .../jastadd/soot/JastAddJ/NEExpr.java | 4 - .../jastadd/soot/JastAddJ/NameType.java | 4 - .../jastadd/soot/JastAddJ/NullLiteral.java | 4 - .../jastadd/soot/JastAddJ/NullType.java | 4 - .../jastadd/soot/JastAddJ/NumericLiteral.java | 4 - .../jastadd/soot/JastAddJ/NumericType.java | 4 - .../generated/jastadd/soot/JastAddJ/Opt.java | 4 - .../jastadd/soot/JastAddJ/Options.java | 4 - .../jastadd/soot/JastAddJ/OrBitwiseExpr.java | 4 - .../jastadd/soot/JastAddJ/OrLogicalExpr.java | 4 - .../jastadd/soot/JastAddJ/PackageAccess.java | 4 - .../soot/JastAddJ/PackageOrTypeAccess.java | 4 - .../jastadd/soot/JastAddJ/ParClassDecl.java | 4 - .../soot/JastAddJ/ParClassInstanceExpr.java | 4 - .../soot/JastAddJ/ParConstructorAccess.java | 4 - .../soot/JastAddJ/ParConstructorDecl.java | 4 - .../jastadd/soot/JastAddJ/ParExpr.java | 4 - .../soot/JastAddJ/ParInterfaceDecl.java | 4 - .../soot/JastAddJ/ParMethodAccess.java | 4 - .../jastadd/soot/JastAddJ/ParMethodDecl.java | 4 - .../JastAddJ/ParSuperConstructorAccess.java | 4 - .../jastadd/soot/JastAddJ/ParTypeAccess.java | 4 - .../jastadd/soot/JastAddJ/ParTypeDecl.java | 4 - .../soot/JastAddJ/ParameterDeclaration.java | 4 - .../ParameterDeclarationSubstituted.java | 4 - .../soot/JastAddJ/Parameterization.java | 4 - .../jastadd/soot/JastAddJ/ParseName.java | 4 - .../soot/JastAddJ/PlaceholderMethodDecl.java | 4 - .../jastadd/soot/JastAddJ/PlusExpr.java | 4 - .../jastadd/soot/JastAddJ/PostDecExpr.java | 4 - .../jastadd/soot/JastAddJ/PostIncExpr.java | 4 - .../jastadd/soot/JastAddJ/PostfixExpr.java | 4 - .../jastadd/soot/JastAddJ/PreDecExpr.java | 4 - .../jastadd/soot/JastAddJ/PreIncExpr.java | 4 - .../jastadd/soot/JastAddJ/PrimaryExpr.java | 4 - .../JastAddJ/PrimitiveCompilationUnit.java | 4 - .../jastadd/soot/JastAddJ/PrimitiveType.java | 4 - .../soot/JastAddJ/PrimitiveTypeAccess.java | 4 - .../jastadd/soot/JastAddJ/Problem.java | 4 - .../jastadd/soot/JastAddJ/RShiftExpr.java | 4 - .../jastadd/soot/JastAddJ/RawClassDecl.java | 4 - .../soot/JastAddJ/RawConstructorDecl.java | 4 - .../soot/JastAddJ/RawInterfaceDecl.java | 4 - .../jastadd/soot/JastAddJ/RawMethodDecl.java | 4 - .../jastadd/soot/JastAddJ/ReferenceType.java | 4 - .../jastadd/soot/JastAddJ/RelationalExpr.java | 4 - .../soot/JastAddJ/ResourceDeclaration.java | 4 - .../soot/JastAddJ/ResourceModifiers.java | 4 - .../jastadd/soot/JastAddJ/ReturnStmt.java | 4 - .../jastadd/soot/JastAddJ/ShiftExpr.java | 4 - .../jastadd/soot/JastAddJ/ShortType.java | 4 - .../jastadd/soot/JastAddJ/Signatures.java | 4 - .../jastadd/soot/JastAddJ/SimpleSet.java | 4 - .../soot/JastAddJ/SingleStaticImportDecl.java | 4 - .../soot/JastAddJ/SingleTypeImportDecl.java | 4 - .../soot/JastAddJ/StaticImportDecl.java | 4 - .../JastAddJ/StaticImportOnDemandDecl.java | 4 - .../soot/JastAddJ/StaticInitializer.java | 4 - .../generated/jastadd/soot/JastAddJ/Stmt.java | 4 - .../jastadd/soot/JastAddJ/StringLiteral.java | 4 - .../jastadd/soot/JastAddJ/SubExpr.java | 4 - .../jastadd/soot/JastAddJ/SuperAccess.java | 4 - .../soot/JastAddJ/SuperConstructorAccess.java | 4 - .../jastadd/soot/JastAddJ/SwitchStmt.java | 4 - .../soot/JastAddJ/SynchronizedStmt.java | 4 - .../jastadd/soot/JastAddJ/ThisAccess.java | 4 - .../jastadd/soot/JastAddJ/ThrowStmt.java | 4 - .../jastadd/soot/JastAddJ/TryStmt.java | 4 - .../soot/JastAddJ/TryWithResources.java | 4 - .../jastadd/soot/JastAddJ/TypeAccess.java | 4 - .../jastadd/soot/JastAddJ/TypeDescriptor.java | 4 - .../soot/JastAddJ/TypeImportOnDemandDecl.java | 4 - .../jastadd/soot/JastAddJ/TypeVariable.java | 4 - .../jastadd/soot/JastAddJ/URShiftExpr.java | 4 - .../jastadd/soot/JastAddJ/Unary.java | 4 - .../jastadd/soot/JastAddJ/UnknownType.java | 4 - .../jastadd/soot/JastAddJ/VarAccess.java | 4 - .../jastadd/soot/JastAddJ/VarDeclStmt.java | 4 - .../jastadd/soot/JastAddJ/Variable.java | 4 - .../VariableArityParameterDeclaration.java | 4 - ...eArityParameterDeclarationSubstituted.java | 4 - .../jastadd/soot/JastAddJ/VariableDecl.java | 4 - .../soot/JastAddJ/VariableDeclaration.java | 4 - .../jastadd/soot/JastAddJ/VariableScope.java | 4 - .../jastadd/soot/JastAddJ/VoidType.java | 4 - .../jastadd/soot/JastAddJ/WhileStmt.java | 4 - .../jastadd/soot/JastAddJ/Wildcard.java | 4 - .../soot/JastAddJ/WildcardExtends.java | 4 - .../soot/JastAddJ/WildcardExtendsType.java | 4 - .../jastadd/soot/JastAddJ/WildcardSuper.java | 4 - .../soot/JastAddJ/WildcardSuperType.java | 4 - .../jastadd/soot/JastAddJ/WildcardType.java | 4 - .../JastAddJ/WildcardsCompilationUnit.java | 4 - .../jastadd/soot/JastAddJ/XorBitwiseExpr.java | 4 - src/main/generated/options/soot/AntTask.java | 4 - .../options/soot/options/ABCOptions.java | 201 +- .../options/soot/options/AETOptions.java | 55 +- .../options/soot/options/BCMOptions.java | 68 +- .../options/soot/options/CGGOptions.java | 41 +- .../options/soot/options/CGOptions.java | 413 +- .../options/soot/options/CHAOptions.java | 66 +- .../options/soot/options/CPOptions.java | 59 +- .../options/soot/options/FRWOptions.java | 45 +- .../options/soot/options/JBOptions.java | 110 +- .../options/soot/options/JBTROptions.java | 89 +- .../options/soot/options/JJOptions.java | 45 +- .../options/soot/options/LCMOptions.java | 115 +- .../options/soot/options/LockAllocator.java | 219 +- .../options/soot/options/MhpTransformer.java | 23 +- .../options/soot/options/NPCOptions.java | 64 +- .../options/soot/options/Options.java | 9 - .../options/soot/options/PaddleOptions.java | 1146 +- .../soot/options/ProfilingOptions.java | 49 +- .../options/soot/options/PurityOptions.java | 98 +- .../soot/options/RenameDuplicatedClasses.java | 50 +- .../options/soot/options/SETOptions.java | 48 +- .../options/soot/options/SIOptions.java | 204 +- .../options/soot/options/SMBOptions.java | 116 +- .../options/soot/options/ShimpleOptions.java | 101 +- .../options/soot/options/SparkOptions.java | 1333 +- .../soot/jimple/parser/parser/Parser.java | 14738 ++++++++-------- .../generated/singletons/soot/Singletons.java | 70 - src/main/java/soot/ClassLoaderFoundFile.java | 76 + src/main/java/soot/CoffiClassProvider.java | 39 - src/main/java/soot/CoffiClassSource.java | 126 - src/main/java/soot/G.java | 3 - src/main/java/soot/PackManager.java | 72 +- src/main/java/soot/SourceLocator.java | 7 +- src/main/java/soot/asm/AsmClassSource.java | 2 +- src/main/java/soot/asm/AsmMethodSource.java | 3 +- src/main/java/soot/asm/AsmUtil.java | 128 + .../coffi/AnnotationDefault_attribute.java | 36 - src/main/java/soot/coffi/BBQ.java | 109 - src/main/java/soot/coffi/BasicBlock.java | 149 - .../coffi/BootstrapMethods_attribute.java | 39 - src/main/java/soot/coffi/ByteCode.java | 1132 -- src/main/java/soot/coffi/CFG.java | 4137 ----- .../java/soot/coffi/CONSTANT_Class_info.java | 96 - .../java/soot/coffi/CONSTANT_Double_info.java | 102 - .../soot/coffi/CONSTANT_Fieldref_info.java | 121 - .../java/soot/coffi/CONSTANT_Float_info.java | 100 - .../soot/coffi/CONSTANT_Integer_info.java | 93 - .../CONSTANT_InterfaceMethodref_info.java | 118 - .../coffi/CONSTANT_InvokeDynamic_info.java | 99 - .../java/soot/coffi/CONSTANT_Long_info.java | 102 - .../coffi/CONSTANT_MethodHandle_info.java | 96 - .../soot/coffi/CONSTANT_Methodref_info.java | 146 - .../soot/coffi/CONSTANT_NameAndType_info.java | 110 - .../java/soot/coffi/CONSTANT_String_info.java | 99 - .../soot/coffi/CONSTANT_Utf8_collector.java | 57 - .../java/soot/coffi/CONSTANT_Utf8_info.java | 243 - src/main/java/soot/coffi/ClassFile.java | 1869 -- src/main/java/soot/coffi/Code_attribute.java | 95 - .../java/soot/coffi/CoffiMethodSource.java | 125 - .../soot/coffi/ConstantValue_attribute.java | 35 - .../java/soot/coffi/Deprecated_attribute.java | 32 - .../java/soot/coffi/Double2ndHalfType.java | 46 - .../soot/coffi/EnclosingMethod_attribute.java | 35 - .../java/soot/coffi/Exception_attribute.java | 42 - src/main/java/soot/coffi/FutureStmt.java | 62 - .../java/soot/coffi/Generic_attribute.java | 34 - .../soot/coffi/ICONSTANT_Methodref_info.java | 34 - src/main/java/soot/coffi/Info.java | 74 - .../soot/coffi/InnerClasses_attribute.java | 45 - src/main/java/soot/coffi/Instruction.java | 326 - .../java/soot/coffi/Instruction_Aaload.java | 61 - .../java/soot/coffi/Instruction_Aastore.java | 61 - .../soot/coffi/Instruction_Aconst_null.java | 61 - .../java/soot/coffi/Instruction_Aload.java | 61 - .../java/soot/coffi/Instruction_Aload_0.java | 61 - .../java/soot/coffi/Instruction_Aload_1.java | 61 - .../java/soot/coffi/Instruction_Aload_2.java | 61 - .../java/soot/coffi/Instruction_Aload_3.java | 61 - .../soot/coffi/Instruction_Anewarray.java | 61 - .../java/soot/coffi/Instruction_Areturn.java | 63 - .../soot/coffi/Instruction_Arraylength.java | 61 - .../java/soot/coffi/Instruction_Astore.java | 65 - .../java/soot/coffi/Instruction_Astore_0.java | 65 - .../java/soot/coffi/Instruction_Astore_1.java | 65 - .../java/soot/coffi/Instruction_Astore_2.java | 65 - .../java/soot/coffi/Instruction_Astore_3.java | 65 - .../java/soot/coffi/Instruction_Athrow.java | 68 - .../java/soot/coffi/Instruction_Baload.java | 61 - .../java/soot/coffi/Instruction_Bastore.java | 61 - .../java/soot/coffi/Instruction_Bipush.java | 66 - .../soot/coffi/Instruction_Breakpoint.java | 61 - .../java/soot/coffi/Instruction_Caload.java | 61 - .../java/soot/coffi/Instruction_Castore.java | 61 - .../soot/coffi/Instruction_Checkcast.java | 61 - src/main/java/soot/coffi/Instruction_D2f.java | 61 - src/main/java/soot/coffi/Instruction_D2i.java | 61 - src/main/java/soot/coffi/Instruction_D2l.java | 61 - .../java/soot/coffi/Instruction_Dadd.java | 61 - .../java/soot/coffi/Instruction_Daload.java | 61 - .../java/soot/coffi/Instruction_Dastore.java | 61 - .../java/soot/coffi/Instruction_Dcmpg.java | 61 - .../java/soot/coffi/Instruction_Dcmpl.java | 61 - .../java/soot/coffi/Instruction_Dconst_0.java | 61 - .../java/soot/coffi/Instruction_Dconst_1.java | 61 - .../java/soot/coffi/Instruction_Ddiv.java | 61 - .../java/soot/coffi/Instruction_Dload.java | 61 - .../java/soot/coffi/Instruction_Dload_0.java | 61 - .../java/soot/coffi/Instruction_Dload_1.java | 61 - .../java/soot/coffi/Instruction_Dload_2.java | 61 - .../java/soot/coffi/Instruction_Dload_3.java | 61 - .../java/soot/coffi/Instruction_Dmul.java | 61 - .../java/soot/coffi/Instruction_Dneg.java | 61 - .../java/soot/coffi/Instruction_Drem.java | 61 - .../java/soot/coffi/Instruction_Dreturn.java | 63 - .../java/soot/coffi/Instruction_Dstore.java | 61 - .../java/soot/coffi/Instruction_Dstore_0.java | 61 - .../java/soot/coffi/Instruction_Dstore_1.java | 61 - .../java/soot/coffi/Instruction_Dstore_2.java | 61 - .../java/soot/coffi/Instruction_Dstore_3.java | 61 - .../java/soot/coffi/Instruction_Dsub.java | 61 - src/main/java/soot/coffi/Instruction_Dup.java | 61 - .../java/soot/coffi/Instruction_Dup2.java | 61 - .../java/soot/coffi/Instruction_Dup2_x1.java | 61 - .../java/soot/coffi/Instruction_Dup2_x2.java | 61 - .../java/soot/coffi/Instruction_Dup_x1.java | 61 - .../java/soot/coffi/Instruction_Dup_x2.java | 61 - src/main/java/soot/coffi/Instruction_F2d.java | 61 - src/main/java/soot/coffi/Instruction_F2i.java | 61 - src/main/java/soot/coffi/Instruction_F2l.java | 61 - .../java/soot/coffi/Instruction_Fadd.java | 61 - .../java/soot/coffi/Instruction_Faload.java | 61 - .../java/soot/coffi/Instruction_Fastore.java | 61 - .../java/soot/coffi/Instruction_Fcmpg.java | 61 - .../java/soot/coffi/Instruction_Fcmpl.java | 61 - .../java/soot/coffi/Instruction_Fconst_0.java | 61 - .../java/soot/coffi/Instruction_Fconst_1.java | 61 - .../java/soot/coffi/Instruction_Fconst_2.java | 61 - .../java/soot/coffi/Instruction_Fdiv.java | 61 - .../java/soot/coffi/Instruction_Fload.java | 61 - .../java/soot/coffi/Instruction_Fload_0.java | 61 - .../java/soot/coffi/Instruction_Fload_1.java | 61 - .../java/soot/coffi/Instruction_Fload_2.java | 61 - .../java/soot/coffi/Instruction_Fload_3.java | 61 - .../java/soot/coffi/Instruction_Fmul.java | 61 - .../java/soot/coffi/Instruction_Fneg.java | 61 - .../java/soot/coffi/Instruction_Frem.java | 61 - .../java/soot/coffi/Instruction_Freturn.java | 63 - .../java/soot/coffi/Instruction_Fstore.java | 61 - .../java/soot/coffi/Instruction_Fstore_0.java | 61 - .../java/soot/coffi/Instruction_Fstore_1.java | 61 - .../java/soot/coffi/Instruction_Fstore_2.java | 61 - .../java/soot/coffi/Instruction_Fstore_3.java | 61 - .../java/soot/coffi/Instruction_Fsub.java | 61 - .../java/soot/coffi/Instruction_Getfield.java | 61 - .../soot/coffi/Instruction_Getstatic.java | 61 - .../java/soot/coffi/Instruction_Goto.java | 67 - .../java/soot/coffi/Instruction_Goto_w.java | 67 - src/main/java/soot/coffi/Instruction_I2d.java | 61 - src/main/java/soot/coffi/Instruction_I2f.java | 61 - src/main/java/soot/coffi/Instruction_I2l.java | 61 - .../java/soot/coffi/Instruction_Iadd.java | 61 - .../java/soot/coffi/Instruction_Iaload.java | 61 - .../java/soot/coffi/Instruction_Iand.java | 61 - .../java/soot/coffi/Instruction_Iastore.java | 61 - .../java/soot/coffi/Instruction_Iconst_0.java | 61 - .../java/soot/coffi/Instruction_Iconst_1.java | 61 - .../java/soot/coffi/Instruction_Iconst_2.java | 61 - .../java/soot/coffi/Instruction_Iconst_3.java | 61 - .../java/soot/coffi/Instruction_Iconst_4.java | 61 - .../java/soot/coffi/Instruction_Iconst_5.java | 61 - .../soot/coffi/Instruction_Iconst_m1.java | 61 - .../java/soot/coffi/Instruction_Idiv.java | 61 - .../soot/coffi/Instruction_If_acmpeq.java | 61 - .../soot/coffi/Instruction_If_acmpne.java | 61 - .../soot/coffi/Instruction_If_icmpeq.java | 61 - .../soot/coffi/Instruction_If_icmpge.java | 61 - .../soot/coffi/Instruction_If_icmpgt.java | 61 - .../soot/coffi/Instruction_If_icmple.java | 61 - .../soot/coffi/Instruction_If_icmplt.java | 61 - .../soot/coffi/Instruction_If_icmpne.java | 61 - .../java/soot/coffi/Instruction_Ifeq.java | 61 - .../java/soot/coffi/Instruction_Ifge.java | 61 - .../java/soot/coffi/Instruction_Ifgt.java | 61 - .../java/soot/coffi/Instruction_Ifle.java | 61 - .../java/soot/coffi/Instruction_Iflt.java | 61 - .../java/soot/coffi/Instruction_Ifne.java | 61 - .../soot/coffi/Instruction_Ifnonnull.java | 61 - .../java/soot/coffi/Instruction_Ifnull.java | 61 - .../java/soot/coffi/Instruction_Iinc.java | 93 - .../java/soot/coffi/Instruction_Iload.java | 61 - .../java/soot/coffi/Instruction_Iload_0.java | 61 - .../java/soot/coffi/Instruction_Iload_1.java | 61 - .../java/soot/coffi/Instruction_Iload_2.java | 61 - .../java/soot/coffi/Instruction_Iload_3.java | 61 - .../java/soot/coffi/Instruction_Imul.java | 61 - .../java/soot/coffi/Instruction_Ineg.java | 61 - .../soot/coffi/Instruction_Instanceof.java | 61 - .../java/soot/coffi/Instruction_Int2byte.java | 61 - .../java/soot/coffi/Instruction_Int2char.java | 61 - .../soot/coffi/Instruction_Int2short.java | 61 - .../soot/coffi/Instruction_Invokedynamic.java | 98 - .../coffi/Instruction_Invokeinterface.java | 92 - .../coffi/Instruction_Invokenonvirtual.java | 66 - .../soot/coffi/Instruction_Invokestatic.java | 66 - .../soot/coffi/Instruction_Invokevirtual.java | 66 - src/main/java/soot/coffi/Instruction_Ior.java | 61 - .../java/soot/coffi/Instruction_Irem.java | 61 - .../java/soot/coffi/Instruction_Ireturn.java | 63 - .../java/soot/coffi/Instruction_Ishl.java | 61 - .../java/soot/coffi/Instruction_Ishr.java | 61 - .../java/soot/coffi/Instruction_Istore.java | 61 - .../java/soot/coffi/Instruction_Istore_0.java | 61 - .../java/soot/coffi/Instruction_Istore_1.java | 61 - .../java/soot/coffi/Instruction_Istore_2.java | 61 - .../java/soot/coffi/Instruction_Istore_3.java | 61 - .../java/soot/coffi/Instruction_Isub.java | 61 - .../java/soot/coffi/Instruction_Iushr.java | 61 - .../java/soot/coffi/Instruction_Ixor.java | 61 - src/main/java/soot/coffi/Instruction_Jsr.java | 67 - .../java/soot/coffi/Instruction_Jsr_w.java | 68 - src/main/java/soot/coffi/Instruction_L2d.java | 61 - src/main/java/soot/coffi/Instruction_L2f.java | 61 - src/main/java/soot/coffi/Instruction_L2i.java | 61 - .../java/soot/coffi/Instruction_Ladd.java | 61 - .../java/soot/coffi/Instruction_Laload.java | 61 - .../java/soot/coffi/Instruction_Land.java | 61 - .../java/soot/coffi/Instruction_Lastore.java | 61 - .../java/soot/coffi/Instruction_Lcmp.java | 61 - .../java/soot/coffi/Instruction_Lconst_0.java | 61 - .../java/soot/coffi/Instruction_Lconst_1.java | 61 - .../java/soot/coffi/Instruction_Ldc1.java | 61 - .../java/soot/coffi/Instruction_Ldc2.java | 61 - .../java/soot/coffi/Instruction_Ldc2w.java | 61 - .../java/soot/coffi/Instruction_Ldiv.java | 61 - .../java/soot/coffi/Instruction_Lload.java | 61 - .../java/soot/coffi/Instruction_Lload_0.java | 61 - .../java/soot/coffi/Instruction_Lload_1.java | 61 - .../java/soot/coffi/Instruction_Lload_2.java | 61 - .../java/soot/coffi/Instruction_Lload_3.java | 61 - .../java/soot/coffi/Instruction_Lmul.java | 61 - .../java/soot/coffi/Instruction_Lneg.java | 61 - .../soot/coffi/Instruction_Lookupswitch.java | 182 - src/main/java/soot/coffi/Instruction_Lor.java | 61 - .../java/soot/coffi/Instruction_Lrem.java | 61 - .../java/soot/coffi/Instruction_Lreturn.java | 63 - .../java/soot/coffi/Instruction_Lshl.java | 61 - .../java/soot/coffi/Instruction_Lshr.java | 61 - .../java/soot/coffi/Instruction_Lstore.java | 61 - .../java/soot/coffi/Instruction_Lstore_0.java | 61 - .../java/soot/coffi/Instruction_Lstore_1.java | 61 - .../java/soot/coffi/Instruction_Lstore_2.java | 61 - .../java/soot/coffi/Instruction_Lstore_3.java | 61 - .../java/soot/coffi/Instruction_Lsub.java | 61 - .../java/soot/coffi/Instruction_Lushr.java | 61 - .../java/soot/coffi/Instruction_Lxor.java | 61 - .../soot/coffi/Instruction_Monitorenter.java | 61 - .../soot/coffi/Instruction_Monitorexit.java | 61 - .../coffi/Instruction_Multianewarray.java | 83 - src/main/java/soot/coffi/Instruction_New.java | 68 - .../java/soot/coffi/Instruction_Newarray.java | 121 - src/main/java/soot/coffi/Instruction_Nop.java | 61 - src/main/java/soot/coffi/Instruction_Pop.java | 61 - .../java/soot/coffi/Instruction_Pop2.java | 61 - .../java/soot/coffi/Instruction_Putfield.java | 61 - .../soot/coffi/Instruction_Putstatic.java | 61 - src/main/java/soot/coffi/Instruction_Ret.java | 63 - .../java/soot/coffi/Instruction_Ret_w.java | 63 - .../java/soot/coffi/Instruction_Return.java | 63 - .../java/soot/coffi/Instruction_Saload.java | 61 - .../java/soot/coffi/Instruction_Sastore.java | 61 - .../java/soot/coffi/Instruction_Sipush.java | 66 - .../java/soot/coffi/Instruction_Swap.java | 61 - .../soot/coffi/Instruction_Tableswitch.java | 183 - .../java/soot/coffi/Instruction_Unknown.java | 61 - .../java/soot/coffi/Instruction_Wide.java | 61 - .../java/soot/coffi/Instruction_branch.java | 95 - .../java/soot/coffi/Instruction_byte.java | 85 - .../soot/coffi/Instruction_byteindex.java | 96 - .../java/soot/coffi/Instruction_bytevar.java | 99 - src/main/java/soot/coffi/Instruction_int.java | 81 - .../soot/coffi/Instruction_intbranch.java | 79 - .../java/soot/coffi/Instruction_intindex.java | 89 - .../java/soot/coffi/Instruction_intvar.java | 85 - .../soot/coffi/Instruction_longbranch.java | 79 - .../java/soot/coffi/Instruction_noargs.java | 69 - .../java/soot/coffi/Interface_Astore.java | 27 - .../java/soot/coffi/Interface_OneIntArg.java | 27 - .../soot/coffi/LineNumberTable_attribute.java | 53 - .../coffi/LocalVariableTable_attribute.java | 141 - .../LocalVariableTypeTable_attribute.java | 105 - src/main/java/soot/coffi/Long2ndHalfType.java | 46 - ...RuntimeInvisibleAnnotations_attribute.java | 41 - ...visibleParameterAnnotations_attribute.java | 40 - .../RuntimeVisibleAnnotations_attribute.java | 41 - ...VisibleParameterAnnotations_attribute.java | 40 - .../java/soot/coffi/Signature_attribute.java | 34 - .../java/soot/coffi/SourceFile_attribute.java | 38 - .../java/soot/coffi/Synthetic_attribute.java | 32 - src/main/java/soot/coffi/TypeArray.java | 117 - src/main/java/soot/coffi/TypeStack.java | 161 - src/main/java/soot/coffi/UnusuableType.java | 46 - .../java/soot/coffi/Utf8_Enumeration.java | 114 - src/main/java/soot/coffi/Util.java | 1069 -- src/main/java/soot/coffi/annotation.java | 40 - .../soot/coffi/annotation_element_value.java | 33 - .../java/soot/coffi/array_element_value.java | 34 - src/main/java/soot/coffi/attribute_info.java | 169 - .../java/soot/coffi/class_element_value.java | 33 - .../soot/coffi/constant_element_value.java | 33 - src/main/java/soot/coffi/cp_info.java | 303 - src/main/java/soot/coffi/element_value.java | 34 - .../coffi/enum_constant_element_value.java | 34 - .../soot/coffi/exception_table_entry.java | 85 - src/main/java/soot/coffi/field_info.java | 106 - .../java/soot/coffi/inner_class_entry.java | 40 - .../soot/coffi/line_number_table_entry.java | 38 - .../coffi/local_variable_table_entry.java | 56 - .../local_variable_type_table_entry.java | 56 - src/main/java/soot/coffi/method_info.java | 152 - src/main/java/soot/coffi/package.html | 30 - .../java/soot/coffi/parameter_annotation.java | 38 - .../soot/tagkit/StringConstantValueTag.java | 5 +- src/main/xml/options/soot_options.xml | 5 - src/main/xml/singletons/singletons.xml | 5 - 603 files changed, 10210 insertions(+), 38395 deletions(-) create mode 100644 src/main/java/soot/ClassLoaderFoundFile.java delete mode 100644 src/main/java/soot/CoffiClassProvider.java delete mode 100644 src/main/java/soot/CoffiClassSource.java delete mode 100644 src/main/java/soot/coffi/AnnotationDefault_attribute.java delete mode 100644 src/main/java/soot/coffi/BBQ.java delete mode 100644 src/main/java/soot/coffi/BasicBlock.java delete mode 100644 src/main/java/soot/coffi/BootstrapMethods_attribute.java delete mode 100644 src/main/java/soot/coffi/ByteCode.java delete mode 100644 src/main/java/soot/coffi/CFG.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_Class_info.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_Double_info.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_Fieldref_info.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_Float_info.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_Integer_info.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_InterfaceMethodref_info.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_InvokeDynamic_info.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_Long_info.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_MethodHandle_info.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_Methodref_info.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_NameAndType_info.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_String_info.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_Utf8_collector.java delete mode 100644 src/main/java/soot/coffi/CONSTANT_Utf8_info.java delete mode 100644 src/main/java/soot/coffi/ClassFile.java delete mode 100644 src/main/java/soot/coffi/Code_attribute.java delete mode 100644 src/main/java/soot/coffi/CoffiMethodSource.java delete mode 100644 src/main/java/soot/coffi/ConstantValue_attribute.java delete mode 100644 src/main/java/soot/coffi/Deprecated_attribute.java delete mode 100644 src/main/java/soot/coffi/Double2ndHalfType.java delete mode 100644 src/main/java/soot/coffi/EnclosingMethod_attribute.java delete mode 100644 src/main/java/soot/coffi/Exception_attribute.java delete mode 100644 src/main/java/soot/coffi/FutureStmt.java delete mode 100644 src/main/java/soot/coffi/Generic_attribute.java delete mode 100644 src/main/java/soot/coffi/ICONSTANT_Methodref_info.java delete mode 100644 src/main/java/soot/coffi/Info.java delete mode 100644 src/main/java/soot/coffi/InnerClasses_attribute.java delete mode 100644 src/main/java/soot/coffi/Instruction.java delete mode 100644 src/main/java/soot/coffi/Instruction_Aaload.java delete mode 100644 src/main/java/soot/coffi/Instruction_Aastore.java delete mode 100644 src/main/java/soot/coffi/Instruction_Aconst_null.java delete mode 100644 src/main/java/soot/coffi/Instruction_Aload.java delete mode 100644 src/main/java/soot/coffi/Instruction_Aload_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Aload_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Aload_2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Aload_3.java delete mode 100644 src/main/java/soot/coffi/Instruction_Anewarray.java delete mode 100644 src/main/java/soot/coffi/Instruction_Areturn.java delete mode 100644 src/main/java/soot/coffi/Instruction_Arraylength.java delete mode 100644 src/main/java/soot/coffi/Instruction_Astore.java delete mode 100644 src/main/java/soot/coffi/Instruction_Astore_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Astore_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Astore_2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Astore_3.java delete mode 100644 src/main/java/soot/coffi/Instruction_Athrow.java delete mode 100644 src/main/java/soot/coffi/Instruction_Baload.java delete mode 100644 src/main/java/soot/coffi/Instruction_Bastore.java delete mode 100644 src/main/java/soot/coffi/Instruction_Bipush.java delete mode 100644 src/main/java/soot/coffi/Instruction_Breakpoint.java delete mode 100644 src/main/java/soot/coffi/Instruction_Caload.java delete mode 100644 src/main/java/soot/coffi/Instruction_Castore.java delete mode 100644 src/main/java/soot/coffi/Instruction_Checkcast.java delete mode 100644 src/main/java/soot/coffi/Instruction_D2f.java delete mode 100644 src/main/java/soot/coffi/Instruction_D2i.java delete mode 100644 src/main/java/soot/coffi/Instruction_D2l.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dadd.java delete mode 100644 src/main/java/soot/coffi/Instruction_Daload.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dastore.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dcmpg.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dcmpl.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dconst_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dconst_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ddiv.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dload.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dload_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dload_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dload_2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dload_3.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dmul.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dneg.java delete mode 100644 src/main/java/soot/coffi/Instruction_Drem.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dreturn.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dstore.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dstore_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dstore_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dstore_2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dstore_3.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dsub.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dup.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dup2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dup2_x1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dup2_x2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dup_x1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Dup_x2.java delete mode 100644 src/main/java/soot/coffi/Instruction_F2d.java delete mode 100644 src/main/java/soot/coffi/Instruction_F2i.java delete mode 100644 src/main/java/soot/coffi/Instruction_F2l.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fadd.java delete mode 100644 src/main/java/soot/coffi/Instruction_Faload.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fastore.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fcmpg.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fcmpl.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fconst_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fconst_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fconst_2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fdiv.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fload.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fload_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fload_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fload_2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fload_3.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fmul.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fneg.java delete mode 100644 src/main/java/soot/coffi/Instruction_Frem.java delete mode 100644 src/main/java/soot/coffi/Instruction_Freturn.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fstore.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fstore_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fstore_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fstore_2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fstore_3.java delete mode 100644 src/main/java/soot/coffi/Instruction_Fsub.java delete mode 100644 src/main/java/soot/coffi/Instruction_Getfield.java delete mode 100644 src/main/java/soot/coffi/Instruction_Getstatic.java delete mode 100644 src/main/java/soot/coffi/Instruction_Goto.java delete mode 100644 src/main/java/soot/coffi/Instruction_Goto_w.java delete mode 100644 src/main/java/soot/coffi/Instruction_I2d.java delete mode 100644 src/main/java/soot/coffi/Instruction_I2f.java delete mode 100644 src/main/java/soot/coffi/Instruction_I2l.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iadd.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iaload.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iand.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iastore.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iconst_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iconst_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iconst_2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iconst_3.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iconst_4.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iconst_5.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iconst_m1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Idiv.java delete mode 100644 src/main/java/soot/coffi/Instruction_If_acmpeq.java delete mode 100644 src/main/java/soot/coffi/Instruction_If_acmpne.java delete mode 100644 src/main/java/soot/coffi/Instruction_If_icmpeq.java delete mode 100644 src/main/java/soot/coffi/Instruction_If_icmpge.java delete mode 100644 src/main/java/soot/coffi/Instruction_If_icmpgt.java delete mode 100644 src/main/java/soot/coffi/Instruction_If_icmple.java delete mode 100644 src/main/java/soot/coffi/Instruction_If_icmplt.java delete mode 100644 src/main/java/soot/coffi/Instruction_If_icmpne.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ifeq.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ifge.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ifgt.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ifle.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iflt.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ifne.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ifnonnull.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ifnull.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iinc.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iload.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iload_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iload_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iload_2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iload_3.java delete mode 100644 src/main/java/soot/coffi/Instruction_Imul.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ineg.java delete mode 100644 src/main/java/soot/coffi/Instruction_Instanceof.java delete mode 100644 src/main/java/soot/coffi/Instruction_Int2byte.java delete mode 100644 src/main/java/soot/coffi/Instruction_Int2char.java delete mode 100644 src/main/java/soot/coffi/Instruction_Int2short.java delete mode 100644 src/main/java/soot/coffi/Instruction_Invokedynamic.java delete mode 100644 src/main/java/soot/coffi/Instruction_Invokeinterface.java delete mode 100644 src/main/java/soot/coffi/Instruction_Invokenonvirtual.java delete mode 100644 src/main/java/soot/coffi/Instruction_Invokestatic.java delete mode 100644 src/main/java/soot/coffi/Instruction_Invokevirtual.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ior.java delete mode 100644 src/main/java/soot/coffi/Instruction_Irem.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ireturn.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ishl.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ishr.java delete mode 100644 src/main/java/soot/coffi/Instruction_Istore.java delete mode 100644 src/main/java/soot/coffi/Instruction_Istore_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Istore_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Istore_2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Istore_3.java delete mode 100644 src/main/java/soot/coffi/Instruction_Isub.java delete mode 100644 src/main/java/soot/coffi/Instruction_Iushr.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ixor.java delete mode 100644 src/main/java/soot/coffi/Instruction_Jsr.java delete mode 100644 src/main/java/soot/coffi/Instruction_Jsr_w.java delete mode 100644 src/main/java/soot/coffi/Instruction_L2d.java delete mode 100644 src/main/java/soot/coffi/Instruction_L2f.java delete mode 100644 src/main/java/soot/coffi/Instruction_L2i.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ladd.java delete mode 100644 src/main/java/soot/coffi/Instruction_Laload.java delete mode 100644 src/main/java/soot/coffi/Instruction_Land.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lastore.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lcmp.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lconst_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lconst_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ldc1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ldc2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ldc2w.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ldiv.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lload.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lload_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lload_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lload_2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lload_3.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lmul.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lneg.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lookupswitch.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lor.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lrem.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lreturn.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lshl.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lshr.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lstore.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lstore_0.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lstore_1.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lstore_2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lstore_3.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lsub.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lushr.java delete mode 100644 src/main/java/soot/coffi/Instruction_Lxor.java delete mode 100644 src/main/java/soot/coffi/Instruction_Monitorenter.java delete mode 100644 src/main/java/soot/coffi/Instruction_Monitorexit.java delete mode 100644 src/main/java/soot/coffi/Instruction_Multianewarray.java delete mode 100644 src/main/java/soot/coffi/Instruction_New.java delete mode 100644 src/main/java/soot/coffi/Instruction_Newarray.java delete mode 100644 src/main/java/soot/coffi/Instruction_Nop.java delete mode 100644 src/main/java/soot/coffi/Instruction_Pop.java delete mode 100644 src/main/java/soot/coffi/Instruction_Pop2.java delete mode 100644 src/main/java/soot/coffi/Instruction_Putfield.java delete mode 100644 src/main/java/soot/coffi/Instruction_Putstatic.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ret.java delete mode 100644 src/main/java/soot/coffi/Instruction_Ret_w.java delete mode 100644 src/main/java/soot/coffi/Instruction_Return.java delete mode 100644 src/main/java/soot/coffi/Instruction_Saload.java delete mode 100644 src/main/java/soot/coffi/Instruction_Sastore.java delete mode 100644 src/main/java/soot/coffi/Instruction_Sipush.java delete mode 100644 src/main/java/soot/coffi/Instruction_Swap.java delete mode 100644 src/main/java/soot/coffi/Instruction_Tableswitch.java delete mode 100644 src/main/java/soot/coffi/Instruction_Unknown.java delete mode 100644 src/main/java/soot/coffi/Instruction_Wide.java delete mode 100644 src/main/java/soot/coffi/Instruction_branch.java delete mode 100644 src/main/java/soot/coffi/Instruction_byte.java delete mode 100644 src/main/java/soot/coffi/Instruction_byteindex.java delete mode 100644 src/main/java/soot/coffi/Instruction_bytevar.java delete mode 100644 src/main/java/soot/coffi/Instruction_int.java delete mode 100644 src/main/java/soot/coffi/Instruction_intbranch.java delete mode 100644 src/main/java/soot/coffi/Instruction_intindex.java delete mode 100644 src/main/java/soot/coffi/Instruction_intvar.java delete mode 100644 src/main/java/soot/coffi/Instruction_longbranch.java delete mode 100644 src/main/java/soot/coffi/Instruction_noargs.java delete mode 100644 src/main/java/soot/coffi/Interface_Astore.java delete mode 100644 src/main/java/soot/coffi/Interface_OneIntArg.java delete mode 100644 src/main/java/soot/coffi/LineNumberTable_attribute.java delete mode 100644 src/main/java/soot/coffi/LocalVariableTable_attribute.java delete mode 100644 src/main/java/soot/coffi/LocalVariableTypeTable_attribute.java delete mode 100644 src/main/java/soot/coffi/Long2ndHalfType.java delete mode 100644 src/main/java/soot/coffi/RuntimeInvisibleAnnotations_attribute.java delete mode 100644 src/main/java/soot/coffi/RuntimeInvisibleParameterAnnotations_attribute.java delete mode 100644 src/main/java/soot/coffi/RuntimeVisibleAnnotations_attribute.java delete mode 100644 src/main/java/soot/coffi/RuntimeVisibleParameterAnnotations_attribute.java delete mode 100644 src/main/java/soot/coffi/Signature_attribute.java delete mode 100644 src/main/java/soot/coffi/SourceFile_attribute.java delete mode 100644 src/main/java/soot/coffi/Synthetic_attribute.java delete mode 100644 src/main/java/soot/coffi/TypeArray.java delete mode 100644 src/main/java/soot/coffi/TypeStack.java delete mode 100644 src/main/java/soot/coffi/UnusuableType.java delete mode 100644 src/main/java/soot/coffi/Utf8_Enumeration.java delete mode 100644 src/main/java/soot/coffi/Util.java delete mode 100644 src/main/java/soot/coffi/annotation.java delete mode 100644 src/main/java/soot/coffi/annotation_element_value.java delete mode 100644 src/main/java/soot/coffi/array_element_value.java delete mode 100644 src/main/java/soot/coffi/attribute_info.java delete mode 100644 src/main/java/soot/coffi/class_element_value.java delete mode 100644 src/main/java/soot/coffi/constant_element_value.java delete mode 100644 src/main/java/soot/coffi/cp_info.java delete mode 100644 src/main/java/soot/coffi/element_value.java delete mode 100644 src/main/java/soot/coffi/enum_constant_element_value.java delete mode 100644 src/main/java/soot/coffi/exception_table_entry.java delete mode 100644 src/main/java/soot/coffi/field_info.java delete mode 100644 src/main/java/soot/coffi/inner_class_entry.java delete mode 100644 src/main/java/soot/coffi/line_number_table_entry.java delete mode 100644 src/main/java/soot/coffi/local_variable_table_entry.java delete mode 100644 src/main/java/soot/coffi/local_variable_type_table_entry.java delete mode 100644 src/main/java/soot/coffi/method_info.java delete mode 100644 src/main/java/soot/coffi/package.html delete mode 100644 src/main/java/soot/coffi/parameter_annotation.java diff --git a/doc/soot_options.html b/doc/soot_options.html index 8ea22061cce..317375a587c 100644 --- a/doc/soot_options.html +++ b/doc/soot_options.html @@ -445,10 +445,6 @@

DESCRIPTION

OPTIONS

General Options

- - - - diff --git a/eclipse/ca.mcgill.sable.soot/src/ca/mcgill/sable/soot/ui/PhaseOptionsDialog.java b/eclipse/ca.mcgill.sable.soot/src/ca/mcgill/sable/soot/ui/PhaseOptionsDialog.java index d146207fc71..bd0f04499be 100644 --- a/eclipse/ca.mcgill.sable.soot/src/ca/mcgill/sable/soot/ui/PhaseOptionsDialog.java +++ b/eclipse/ca.mcgill.sable.soot/src/ca/mcgill/sable/soot/ui/PhaseOptionsDialog.java @@ -996,12 +996,6 @@ private boolean createNewConfig() { String nextListToken; - boolRes = getGeneral_Optionscoffi_widget().getButton().getSelection(); - defBoolRes = false; - - if (boolRes != defBoolRes) { - getConfig().put(getGeneral_Optionscoffi_widget().getAlias(), new Boolean(boolRes)); - } boolRes = getGeneral_Optionsjasmin_backend_widget().getButton().getSelection(); defBoolRes = false; @@ -4553,16 +4547,6 @@ protected SootOption getInitialInput() { - private BooleanOptionWidget General_Optionscoffi_widget; - - private void setGeneral_Optionscoffi_widget(BooleanOptionWidget widget) { - General_Optionscoffi_widget = widget; - } - - public BooleanOptionWidget getGeneral_Optionscoffi_widget() { - return General_Optionscoffi_widget; - } - private BooleanOptionWidget General_Optionsjasmin_backend_widget; private void setGeneral_Optionsjasmin_backend_widget(BooleanOptionWidget widget) { @@ -8620,17 +8604,6 @@ private Composite General_OptionsCreate(Composite parent) { - defKey = ""+" "+""+" "+"coffi"; - defKey = defKey.trim(); - - if (isInDefList(defKey)) { - defaultBool = getBoolDef(defKey); - } else { - defaultBool = false; - } - - setGeneral_Optionscoffi_widget(new BooleanOptionWidget(editGroupGeneral_Options, SWT.NONE, new OptionData("Coffi Frontend", "", "","coffi", "\n", defaultBool))); - defKey = ""+" "+""+" "+"jasmin-backend"; defKey = defKey.trim(); diff --git a/src/main/generated/jastadd/soot/JastAddJ/ASTNode$State.java b/src/main/generated/jastadd/soot/JastAddJ/ASTNode$State.java index 359755c5fcb..57a906057e6 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ASTNode$State.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ASTNode$State.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @apilevel internal * @ast class diff --git a/src/main/generated/jastadd/soot/JastAddJ/ASTNode.java b/src/main/generated/jastadd/soot/JastAddJ/ASTNode.java index bf1aeb09347..c8b938e41e9 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ASTNode.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ASTNode.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ASTNode; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AbstractDot.java b/src/main/generated/jastadd/soot/JastAddJ/AbstractDot.java index 82b37dafb3c..d1949897fdb 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AbstractDot.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AbstractDot.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AbstractDot : {@link Access} ::= Left:{@link Expr}Right:{@link Access}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AbstractWildcard.java b/src/main/generated/jastadd/soot/JastAddJ/AbstractWildcard.java index 88c0cadd867..f823a41dfab 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AbstractWildcard.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AbstractWildcard.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AbstractWildcard : {@link Access}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AbstractWildcardType.java b/src/main/generated/jastadd/soot/JastAddJ/AbstractWildcardType.java index 6876950e3f6..7822842d809 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AbstractWildcardType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AbstractWildcardType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AbstractWildcardType : {@link TypeDecl}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Access.java b/src/main/generated/jastadd/soot/JastAddJ/Access.java index c6d59da9e2e..b3de5f3252f 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Access.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Access.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Access : {@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AddExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AddExpr.java index ed30c598a1b..21aceea7a41 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AddExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AddExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AddExpr : {@link AdditiveExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AdditiveExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AdditiveExpr.java index e0b597e6b07..fec0e478dab 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AdditiveExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AdditiveExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AdditiveExpr : {@link ArithmeticExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AmbiguousAccess.java b/src/main/generated/jastadd/soot/JastAddJ/AmbiguousAccess.java index 01cf2c78b66..1cc70135ebe 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AmbiguousAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AmbiguousAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AmbiguousAccess : {@link Access} ::= <ID:String>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AndBitwiseExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AndBitwiseExpr.java index 5f5049a6537..97b9ec78ce6 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AndBitwiseExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AndBitwiseExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AndBitwiseExpr : {@link BitwiseExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AndLogicalExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AndLogicalExpr.java index 8977ca7eef9..aa77bef4fe8 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AndLogicalExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AndLogicalExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AndLogicalExpr : {@link LogicalExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AnnotatedCompilationUnit.java b/src/main/generated/jastadd/soot/JastAddJ/AnnotatedCompilationUnit.java index 1b832984d06..06fc99a348c 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AnnotatedCompilationUnit.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AnnotatedCompilationUnit.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AnnotatedCompilationUnit : {@link CompilationUnit} ::= {@link Modifiers}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/Annotation.java b/src/main/generated/jastadd/soot/JastAddJ/Annotation.java index e5c53b9767a..b32ecb973f1 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Annotation.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Annotation.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Annotation : {@link Modifier} ::= <ID:String>{@link Access}{@link ElementValuePair}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/AnnotationDecl.java b/src/main/generated/jastadd/soot/JastAddJ/AnnotationDecl.java index 062fcb22dc7..336099246fa 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AnnotationDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AnnotationDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AnnotationDecl : {@link InterfaceDecl} ::= SuperInterfaceId:{@link Access}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/AnnotationMethodDecl.java b/src/main/generated/jastadd/soot/JastAddJ/AnnotationMethodDecl.java index 56bf2fa0035..fa2071a3486 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AnnotationMethodDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AnnotationMethodDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AnnotationMethodDecl : {@link MethodDecl} ::= [DefaultValue:{@link ElementValue}]; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AnonymousDecl.java b/src/main/generated/jastadd/soot/JastAddJ/AnonymousDecl.java index a93109ae2cf..56e38733e0b 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AnonymousDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AnonymousDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AnonymousDecl : {@link ClassDecl} ::= {@link Modifiers}<ID:String>[SuperClassAccess:{@link Access}]Implements:{@link Access}*{@link BodyDecl}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ArithmeticExpr.java b/src/main/generated/jastadd/soot/JastAddJ/ArithmeticExpr.java index 1751ed4bb9d..38dfd47dbab 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ArithmeticExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ArithmeticExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ArithmeticExpr : {@link Binary}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ArrayAccess.java b/src/main/generated/jastadd/soot/JastAddJ/ArrayAccess.java index e00699a4dd8..e97814ff503 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ArrayAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ArrayAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ArrayAccess : {@link Access} ::= {@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ArrayCreationExpr.java b/src/main/generated/jastadd/soot/JastAddJ/ArrayCreationExpr.java index dcb85b110e4..10f27a6e4c0 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ArrayCreationExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ArrayCreationExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ArrayCreationExpr : {@link PrimaryExpr} ::= TypeAccess:{@link Access}[{@link ArrayInit}]; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ArrayDecl.java b/src/main/generated/jastadd/soot/JastAddJ/ArrayDecl.java index 0290362c1cd..c28d4e6554f 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ArrayDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ArrayDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ArrayDecl : {@link ClassDecl}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ArrayInit.java b/src/main/generated/jastadd/soot/JastAddJ/ArrayInit.java index 010d0114abf..f7444ead535 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ArrayInit.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ArrayInit.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ArrayInit : {@link Expr} ::= Init:{@link Expr}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ArrayTypeAccess.java b/src/main/generated/jastadd/soot/JastAddJ/ArrayTypeAccess.java index 43a85f357ac..fc7aa6863b2 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ArrayTypeAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ArrayTypeAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ArrayTypeAccess : {@link TypeAccess} ::= <Package:String><ID:String>{@link Access}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ArrayTypeWithSizeAccess.java b/src/main/generated/jastadd/soot/JastAddJ/ArrayTypeWithSizeAccess.java index 1a8e6070301..39240613f7a 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ArrayTypeWithSizeAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ArrayTypeWithSizeAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ArrayTypeWithSizeAccess : {@link ArrayTypeAccess} ::= {@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssertStmt.java b/src/main/generated/jastadd/soot/JastAddJ/AssertStmt.java index 135ddba3476..91ab919df0c 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssertStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssertStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssertStmt : {@link Stmt} ::= first:{@link Expr}[{@link Expr}]; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignAdditiveExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignAdditiveExpr.java index c455d24dca6..44cc705565d 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignAdditiveExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignAdditiveExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignAdditiveExpr : {@link AssignExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignAndExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignAndExpr.java index fcaa20786e6..2899155c821 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignAndExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignAndExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignAndExpr : {@link AssignBitwiseExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignBitwiseExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignBitwiseExpr.java index 3adff9e3ec3..d967e75174c 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignBitwiseExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignBitwiseExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignBitwiseExpr : {@link AssignExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignDivExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignDivExpr.java index 3b5750082f9..6a216a55ce3 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignDivExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignDivExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignDivExpr : {@link AssignMultiplicativeExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignExpr.java index 710c43e91e4..af815b7b6f3 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignExpr : {@link Expr} ::= Dest:{@link Expr}Source:{@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignLShiftExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignLShiftExpr.java index 2443e4f678a..e80f7ac36b2 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignLShiftExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignLShiftExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignLShiftExpr : {@link AssignShiftExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignMinusExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignMinusExpr.java index ac824815d7e..d841c2036e5 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignMinusExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignMinusExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignMinusExpr : {@link AssignAdditiveExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignModExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignModExpr.java index daf6ff63ffd..f6275b1cc46 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignModExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignModExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignModExpr : {@link AssignMultiplicativeExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignMulExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignMulExpr.java index 80987ac61aa..f28a47896ee 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignMulExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignMulExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignMulExpr : {@link AssignMultiplicativeExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignMultiplicativeExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignMultiplicativeExpr.java index a65a83a4579..7389b8dd990 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignMultiplicativeExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignMultiplicativeExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignMultiplicativeExpr : {@link AssignExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignOrExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignOrExpr.java index 3dcfb7273c2..fe85bc1ffd3 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignOrExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignOrExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignOrExpr : {@link AssignBitwiseExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignPlusExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignPlusExpr.java index 19dd62efb63..f5a8582b31f 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignPlusExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignPlusExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignPlusExpr : {@link AssignAdditiveExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignRShiftExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignRShiftExpr.java index 45a699093f2..f5cb2d75930 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignRShiftExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignRShiftExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignRShiftExpr : {@link AssignShiftExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignShiftExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignShiftExpr.java index 0552271873f..905409e2f8f 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignShiftExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignShiftExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignShiftExpr : {@link AssignExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignSimpleExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignSimpleExpr.java index a21d73dea3e..89dc539d9db 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignSimpleExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignSimpleExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignSimpleExpr : {@link AssignExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignURShiftExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignURShiftExpr.java index 2039e6a4f6e..6af9146a976 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignURShiftExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignURShiftExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignURShiftExpr : {@link AssignShiftExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/AssignXorExpr.java b/src/main/generated/jastadd/soot/JastAddJ/AssignXorExpr.java index a7acc59374b..4e0de9e1713 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/AssignXorExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/AssignXorExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production AssignXorExpr : {@link AssignBitwiseExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Attributes.java b/src/main/generated/jastadd/soot/JastAddJ/Attributes.java index b464fb79a84..de844e07144 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Attributes.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Attributes.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/BasicCatch.java b/src/main/generated/jastadd/soot/JastAddJ/BasicCatch.java index a8ff8c5be01..f4bff6217dd 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BasicCatch.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BasicCatch.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * A catch clause that can catch a single exception type. * @production BasicCatch : {@link CatchClause} ::= Parameter:{@link ParameterDeclaration}{@link Block}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/Binary.java b/src/main/generated/jastadd/soot/JastAddJ/Binary.java index c3915f4326f..abcb6cba5a5 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Binary.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Binary.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Binary : {@link Expr} ::= LeftOperand:{@link Expr}RightOperand:{@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/BitNotExpr.java b/src/main/generated/jastadd/soot/JastAddJ/BitNotExpr.java index 0ca20a54f6f..6200e017ed7 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BitNotExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BitNotExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production BitNotExpr : {@link Unary}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/BitwiseExpr.java b/src/main/generated/jastadd/soot/JastAddJ/BitwiseExpr.java index 3131ce03535..d4e7da31ee8 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BitwiseExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BitwiseExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production BitwiseExpr : {@link Binary}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Block.java b/src/main/generated/jastadd/soot/JastAddJ/Block.java index 45d17c84504..e23e0c19363 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Block.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Block.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Block : {@link Stmt} ::= {@link Stmt}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/Body.java b/src/main/generated/jastadd/soot/JastAddJ/Body.java index 06231207e71..0633b025280 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Body.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Body.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/BodyDecl.java b/src/main/generated/jastadd/soot/JastAddJ/BodyDecl.java index 2637d679a07..1e9f1dba9f2 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BodyDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BodyDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production BodyDecl : {@link ASTNode}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/BodyDeclList.java b/src/main/generated/jastadd/soot/JastAddJ/BodyDeclList.java index 979fb1cefda..bb6e0f42f3a 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BodyDeclList.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BodyDeclList.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production BodyDeclList : {@link List}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/BooleanLiteral.java b/src/main/generated/jastadd/soot/JastAddJ/BooleanLiteral.java index de4c98402d3..dfc0040fecc 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BooleanLiteral.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BooleanLiteral.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * Represents a Java boolean; either "true" or "false". * @production BooleanLiteral : {@link Literal}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/BooleanType.java b/src/main/generated/jastadd/soot/JastAddJ/BooleanType.java index ee785f7d26e..fd85a7c79df 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BooleanType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BooleanType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production BooleanType : {@link PrimitiveType}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/BoundFieldAccess.java b/src/main/generated/jastadd/soot/JastAddJ/BoundFieldAccess.java index 4c81520f84f..159efc94743 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BoundFieldAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BoundFieldAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production BoundFieldAccess : {@link VarAccess} ::= <FieldDeclaration:FieldDeclaration>; diff --git a/src/main/generated/jastadd/soot/JastAddJ/BoundMethodAccess.java b/src/main/generated/jastadd/soot/JastAddJ/BoundMethodAccess.java index 32adde3ee37..e91685045e5 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BoundMethodAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BoundMethodAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production BoundMethodAccess : {@link MethodAccess}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/BoundTypeAccess.java b/src/main/generated/jastadd/soot/JastAddJ/BoundTypeAccess.java index c8bd02f9211..a8e717c1920 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BoundTypeAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BoundTypeAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production BoundTypeAccess : {@link TypeAccess} ::= <TypeDecl:TypeDecl>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/BranchPropagation.java b/src/main/generated/jastadd/soot/JastAddJ/BranchPropagation.java index 4254f98cbdf..9d8f3b90813 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BranchPropagation.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BranchPropagation.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast interface diff --git a/src/main/generated/jastadd/soot/JastAddJ/BranchTargetStmt.java b/src/main/generated/jastadd/soot/JastAddJ/BranchTargetStmt.java index 002af545468..cae252c2a4b 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BranchTargetStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BranchTargetStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production BranchTargetStmt : {@link Stmt}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/BreakStmt.java b/src/main/generated/jastadd/soot/JastAddJ/BreakStmt.java index d085ebf4c02..cf6109a2844 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BreakStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BreakStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production BreakStmt : {@link Stmt} ::= <Label:String>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/BridgeMethodDecl.java b/src/main/generated/jastadd/soot/JastAddJ/BridgeMethodDecl.java index 7415482f238..6a97f2d59dd 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BridgeMethodDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BridgeMethodDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production BridgeMethodDecl : {@link MethodDecl}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ByteType.java b/src/main/generated/jastadd/soot/JastAddJ/ByteType.java index 6bffacd18b5..8bd5998a56d 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ByteType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ByteType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ByteType : {@link IntegralType}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/BytecodeParser.java b/src/main/generated/jastadd/soot/JastAddJ/BytecodeParser.java index e33967a5498..fa0c9db6daf 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BytecodeParser.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BytecodeParser.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/BytecodeReader.java b/src/main/generated/jastadd/soot/JastAddJ/BytecodeReader.java index 91310aa3cd3..36deffcfe0b 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BytecodeReader.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BytecodeReader.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast interface * diff --git a/src/main/generated/jastadd/soot/JastAddJ/BytecodeTypeAccess.java b/src/main/generated/jastadd/soot/JastAddJ/BytecodeTypeAccess.java index f4f677a5410..95131a48b92 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/BytecodeTypeAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/BytecodeTypeAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production BytecodeTypeAccess : {@link TypeAccess}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Class_Info.java b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Class_Info.java index 5a0df8633e4..fe35a240457 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Class_Info.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Class_Info.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Double_Info.java b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Double_Info.java index a4321e3a2a9..9f4e599dd4c 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Double_Info.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Double_Info.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Fieldref_Info.java b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Fieldref_Info.java index 2e31dff860d..70a7460282e 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Fieldref_Info.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Fieldref_Info.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Float_Info.java b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Float_Info.java index ce99a7ec711..20e31be44b5 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Float_Info.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Float_Info.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Info.java b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Info.java index 727b7b9e817..a00e0576c22 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Info.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Info.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Integer_Info.java b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Integer_Info.java index a39a26988d5..57c43c271cd 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Integer_Info.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Integer_Info.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_InterfaceMethodref_Info.java b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_InterfaceMethodref_Info.java index 5daa063ea99..37fe5f5caf0 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_InterfaceMethodref_Info.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_InterfaceMethodref_Info.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Long_Info.java b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Long_Info.java index 9dcf70b3768..a4f92c66f05 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Long_Info.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Long_Info.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Methodref_Info.java b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Methodref_Info.java index 1c1d76e3c55..8874cc4b11d 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Methodref_Info.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Methodref_Info.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_NameAndType_Info.java b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_NameAndType_Info.java index fa43a8b7bbf..73892055586 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_NameAndType_Info.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_NameAndType_Info.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_String_Info.java b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_String_Info.java index e4df85ac50d..ff61545cb99 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_String_Info.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_String_Info.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Utf8_Info.java b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Utf8_Info.java index 48113a279f9..6a72a205b5e 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Utf8_Info.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CONSTANT_Utf8_Info.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/Case.java b/src/main/generated/jastadd/soot/JastAddJ/Case.java index dc7efdd9c04..61f4fe555c8 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Case.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Case.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Case : {@link Stmt}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/CastExpr.java b/src/main/generated/jastadd/soot/JastAddJ/CastExpr.java index 284d44d5a8f..c43fabca806 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CastExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CastExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production CastExpr : {@link Expr} ::= TypeAccess:{@link Access}{@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/CatchClause.java b/src/main/generated/jastadd/soot/JastAddJ/CatchClause.java index 67ffdc35796..e6572b18515 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CatchClause.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CatchClause.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * Abstract superclass for catch clauses. * @production CatchClause : {@link ASTNode} ::= {@link Block}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/CatchParameterDeclaration.java b/src/main/generated/jastadd/soot/JastAddJ/CatchParameterDeclaration.java index ed0f9c5b029..5530113670f 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CatchParameterDeclaration.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CatchParameterDeclaration.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * A catch parameter with disjunct exception type. * @production CatchParameterDeclaration : {@link ASTNode} ::= {@link Modifiers}TypeAccess:{@link Access}*<ID:String>; diff --git a/src/main/generated/jastadd/soot/JastAddJ/CharType.java b/src/main/generated/jastadd/soot/JastAddJ/CharType.java index c0be2418388..8dd54f4054c 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CharType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CharType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production CharType : {@link IntegralType}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/CharacterLiteral.java b/src/main/generated/jastadd/soot/JastAddJ/CharacterLiteral.java index b9a6163c83d..e7b87339207 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CharacterLiteral.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CharacterLiteral.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * Represents a single character. * May not contain a Unicode escape sequence (Unicode escapes diff --git a/src/main/generated/jastadd/soot/JastAddJ/ClassAccess.java b/src/main/generated/jastadd/soot/JastAddJ/ClassAccess.java index 9821a808fa0..3fd87560957 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ClassAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ClassAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ClassAccess : {@link Access}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ClassDecl.java b/src/main/generated/jastadd/soot/JastAddJ/ClassDecl.java index d0f82d91444..797d2f0d5f4 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ClassDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ClassDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ClassDecl : {@link ReferenceType} ::= {@link Modifiers}<ID:String>[SuperClassAccess:{@link Access}]Implements:{@link Access}*{@link BodyDecl}*; @@ -907,17 +903,6 @@ private SootClass refined_EmitJimpleRefinements_ClassDecl_sootClass() SootClass sc = null; if(Scene.v().containsClass(jvmName())) { SootClass cl = Scene.v().getSootClass(jvmName()); - //fix for test case 653: if there's a class java.lang.Object etc. on the command line - //prefer that class over the Coffi class that may already have been loaded from bytecode - try { - MethodSource source = cl.getMethodByName("").getSource(); - if(source instanceof CoffiMethodSource) { - Scene.v().removeClass(cl); - needAddclass = true; - } - } catch(RuntimeException e) { - //method not found - } sc = cl; } else { diff --git a/src/main/generated/jastadd/soot/JastAddJ/ClassDeclSubstituted.java b/src/main/generated/jastadd/soot/JastAddJ/ClassDeclSubstituted.java index 89d66b24d67..a671a493a9f 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ClassDeclSubstituted.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ClassDeclSubstituted.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ClassDeclSubstituted : {@link ClassDecl} ::= <Original:TypeDecl> {@link BodyDecl}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/ClassInstanceExpr.java b/src/main/generated/jastadd/soot/JastAddJ/ClassInstanceExpr.java index bdfc54b284c..65e2a3ec487 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ClassInstanceExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ClassInstanceExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ClassInstanceExpr : {@link Access} ::= {@link Access} Arg:{@link Expr}* [{@link TypeDecl}]; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/CompilationUnit.java b/src/main/generated/jastadd/soot/JastAddJ/CompilationUnit.java index d6323625df5..cd141338ad7 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/CompilationUnit.java +++ b/src/main/generated/jastadd/soot/JastAddJ/CompilationUnit.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production CompilationUnit : {@link ASTNode} ::= <PackageDecl:java.lang.String> {@link ImportDecl}* {@link TypeDecl}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/ConditionalExpr.java b/src/main/generated/jastadd/soot/JastAddJ/ConditionalExpr.java index e62bf1d6eb6..15b63760720 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ConditionalExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ConditionalExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ConditionalExpr : {@link Expr} ::= Condition:{@link Expr} TrueExpr:{@link Expr} FalseExpr:{@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ConstCase.java b/src/main/generated/jastadd/soot/JastAddJ/ConstCase.java index 769a523204e..e44a0e6bdaf 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ConstCase.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ConstCase.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ConstCase : {@link Case} ::= Value:{@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Constant.java b/src/main/generated/jastadd/soot/JastAddJ/Constant.java index ca8ec14205e..467e82a6e0e 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Constant.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Constant.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/Constraints.java b/src/main/generated/jastadd/soot/JastAddJ/Constraints.java index 05dbd2c54a0..42a54a907b4 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Constraints.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Constraints.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/ConstructorAccess.java b/src/main/generated/jastadd/soot/JastAddJ/ConstructorAccess.java index 2486f30aade..a2aa328202a 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ConstructorAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ConstructorAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ConstructorAccess : {@link Access} ::= <ID:String> Arg:{@link Expr}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ConstructorDecl.java b/src/main/generated/jastadd/soot/JastAddJ/ConstructorDecl.java index 36f66486471..2d3bd784b80 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ConstructorDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ConstructorDecl.java @@ -1153,8 +1153,7 @@ public Block getBlockNoTransform() { * @declaredat /Users/eric/Documents/workspaces/clara-soot/JastAddExtensions/SootJastAddJ/EmitJimpleRefinements.jrag:121 */ public void jimplify2() { - if (!generate() || sootMethod().hasActiveBody() || (sootMethod().getSource() != null - && (sootMethod().getSource() instanceof soot.coffi.CoffiMethodSource))) + if (!generate() || sootMethod().hasActiveBody()) return; JimpleBody body = Jimple.v().newBody(sootMethod()); sootMethod().setActiveBody(body); diff --git a/src/main/generated/jastadd/soot/JastAddJ/ConstructorDeclSubstituted.java b/src/main/generated/jastadd/soot/JastAddJ/ConstructorDeclSubstituted.java index b5ca901e990..bd6e51ddc77 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ConstructorDeclSubstituted.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ConstructorDeclSubstituted.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ConstructorDeclSubstituted : {@link ConstructorDecl} ::= <Original:ConstructorDecl>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ContinueStmt.java b/src/main/generated/jastadd/soot/JastAddJ/ContinueStmt.java index 6d814951048..f36ccccf76f 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ContinueStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ContinueStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ContinueStmt : {@link Stmt} ::= <Label:String>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/DefaultCase.java b/src/main/generated/jastadd/soot/JastAddJ/DefaultCase.java index 2282645bc99..8d4ff70eaec 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/DefaultCase.java +++ b/src/main/generated/jastadd/soot/JastAddJ/DefaultCase.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production DefaultCase : {@link Case}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/DiamondAccess.java b/src/main/generated/jastadd/soot/JastAddJ/DiamondAccess.java index 4acffe22390..1f596faf92a 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/DiamondAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/DiamondAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * Type access for a generic class with an empty type parameter list. * @production DiamondAccess : {@link Access} ::= TypeAccess:{@link Access}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/Dims.java b/src/main/generated/jastadd/soot/JastAddJ/Dims.java index cf46bf54415..6d10bf006bc 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Dims.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Dims.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Dims : {@link ASTNode} ::= [{@link Expr}]; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/DivExpr.java b/src/main/generated/jastadd/soot/JastAddJ/DivExpr.java index 06b589b8171..5396b65b262 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/DivExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/DivExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production DivExpr : {@link MultiplicativeExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/DoStmt.java b/src/main/generated/jastadd/soot/JastAddJ/DoStmt.java index da38b7d174d..38d293a2c0d 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/DoStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/DoStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production DoStmt : {@link BranchTargetStmt} ::= {@link Stmt} Condition:{@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Dot.java b/src/main/generated/jastadd/soot/JastAddJ/Dot.java index 07b91250af7..94d29d83975 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Dot.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Dot.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Dot : {@link AbstractDot}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/DoubleLiteral.java b/src/main/generated/jastadd/soot/JastAddJ/DoubleLiteral.java index 52f26d1e59c..7f0977ea945 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/DoubleLiteral.java +++ b/src/main/generated/jastadd/soot/JastAddJ/DoubleLiteral.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * Java double-precision floating point literal. * Can store any value representable as an diff --git a/src/main/generated/jastadd/soot/JastAddJ/DoubleType.java b/src/main/generated/jastadd/soot/JastAddJ/DoubleType.java index ec2e5502ba8..dccd2869800 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/DoubleType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/DoubleType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production DoubleType : {@link FloatingPointType}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/EQExpr.java b/src/main/generated/jastadd/soot/JastAddJ/EQExpr.java index 65ab3897260..6c9da4acf5e 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/EQExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/EQExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production EQExpr : {@link EqualityExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ElementAnnotationValue.java b/src/main/generated/jastadd/soot/JastAddJ/ElementAnnotationValue.java index 18b0158ba9b..1420d23e44c 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ElementAnnotationValue.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ElementAnnotationValue.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ElementAnnotationValue : {@link ElementValue} ::= {@link Annotation}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ElementArrayValue.java b/src/main/generated/jastadd/soot/JastAddJ/ElementArrayValue.java index 001abce3b94..ec18aecb6d7 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ElementArrayValue.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ElementArrayValue.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ElementArrayValue : {@link ElementValue} ::= {@link ElementValue}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ElementConstantValue.java b/src/main/generated/jastadd/soot/JastAddJ/ElementConstantValue.java index 21ee475cbbc..1123dd15c11 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ElementConstantValue.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ElementConstantValue.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ElementConstantValue : {@link ElementValue} ::= {@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ElementValue.java b/src/main/generated/jastadd/soot/JastAddJ/ElementValue.java index a3578c79565..e3bd227e068 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ElementValue.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ElementValue.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ElementValue : {@link ASTNode}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ElementValuePair.java b/src/main/generated/jastadd/soot/JastAddJ/ElementValuePair.java index f2169771673..5bd30df5f4a 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ElementValuePair.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ElementValuePair.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ElementValuePair : {@link ASTNode} ::= <Name:String> {@link ElementValue}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/EmptyStmt.java b/src/main/generated/jastadd/soot/JastAddJ/EmptyStmt.java index e202f760327..9581716736b 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/EmptyStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/EmptyStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production EmptyStmt : {@link Stmt}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/EmptyType.java b/src/main/generated/jastadd/soot/JastAddJ/EmptyType.java index 34c5f395c5a..58e7f757f86 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/EmptyType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/EmptyType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production EmptyType : {@link PrimitiveType}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/EnhancedForStmt.java b/src/main/generated/jastadd/soot/JastAddJ/EnhancedForStmt.java index 545a38b040e..5fd069e08ca 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/EnhancedForStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/EnhancedForStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production EnhancedForStmt : {@link BranchTargetStmt} ::= {@link VariableDeclaration} {@link Expr} {@link Stmt}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/EnumConstant.java b/src/main/generated/jastadd/soot/JastAddJ/EnumConstant.java index 6db18204a09..65f80e9fcdb 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/EnumConstant.java +++ b/src/main/generated/jastadd/soot/JastAddJ/EnumConstant.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production EnumConstant : {@link FieldDeclaration} ::= {@link Modifiers} <ID:String> Arg:{@link Expr}* [Init:{@link Expr}] TypeAccess:{@link Access}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/EnumDecl.java b/src/main/generated/jastadd/soot/JastAddJ/EnumDecl.java index 0a1b170fa31..c09e417a348 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/EnumDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/EnumDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production EnumDecl : {@link ClassDecl} ::= {@link Modifiers} <ID:String> [SuperClassAccess:{@link Access}] Implements:{@link Access}* {@link BodyDecl}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/EnumInstanceExpr.java b/src/main/generated/jastadd/soot/JastAddJ/EnumInstanceExpr.java index 7d3012be033..c8b79910801 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/EnumInstanceExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/EnumInstanceExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production EnumInstanceExpr : {@link ClassInstanceExpr} ::= {@link Access} Arg:{@link Expr}* [{@link TypeDecl}]; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/EqualityExpr.java b/src/main/generated/jastadd/soot/JastAddJ/EqualityExpr.java index 51c77cc4d91..861d8d8b6c0 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/EqualityExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/EqualityExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production EqualityExpr : {@link RelationalExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Expr.java b/src/main/generated/jastadd/soot/JastAddJ/Expr.java index fb34930de67..6bcd064402f 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Expr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Expr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Expr : {@link ASTNode}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ExprStmt.java b/src/main/generated/jastadd/soot/JastAddJ/ExprStmt.java index e27387bbb68..3e1e31a33ce 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ExprStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ExprStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ExprStmt : {@link Stmt} ::= {@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/FieldDecl.java b/src/main/generated/jastadd/soot/JastAddJ/FieldDecl.java index d504cd88d1f..7d1d881f028 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/FieldDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/FieldDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production FieldDecl : {@link MemberDecl} ::= {@link Modifiers} TypeAccess:{@link Access} {@link VariableDecl}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/FieldDeclarationSubstituted.java b/src/main/generated/jastadd/soot/JastAddJ/FieldDeclarationSubstituted.java index c629b3bd635..ce026e1a0ca 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/FieldDeclarationSubstituted.java +++ b/src/main/generated/jastadd/soot/JastAddJ/FieldDeclarationSubstituted.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production FieldDeclarationSubstituted : {@link FieldDeclaration} ::= <Original:FieldDeclaration>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/FieldDescriptor.java b/src/main/generated/jastadd/soot/JastAddJ/FieldDescriptor.java index 67b803ce544..8872f85faa9 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/FieldDescriptor.java +++ b/src/main/generated/jastadd/soot/JastAddJ/FieldDescriptor.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/FieldInfo.java b/src/main/generated/jastadd/soot/JastAddJ/FieldInfo.java index 43edc6c46ed..352d05c3871 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/FieldInfo.java +++ b/src/main/generated/jastadd/soot/JastAddJ/FieldInfo.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/FileNamesPart.java b/src/main/generated/jastadd/soot/JastAddJ/FileNamesPart.java index 1a177682727..905ce627b03 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/FileNamesPart.java +++ b/src/main/generated/jastadd/soot/JastAddJ/FileNamesPart.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class diff --git a/src/main/generated/jastadd/soot/JastAddJ/FinallyHost.java b/src/main/generated/jastadd/soot/JastAddJ/FinallyHost.java index b4276600d00..c02eb0f810a 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/FinallyHost.java +++ b/src/main/generated/jastadd/soot/JastAddJ/FinallyHost.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast interface * diff --git a/src/main/generated/jastadd/soot/JastAddJ/Flags.java b/src/main/generated/jastadd/soot/JastAddJ/Flags.java index 0ddb0b5ab23..9573ba2db0e 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Flags.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Flags.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast interface * diff --git a/src/main/generated/jastadd/soot/JastAddJ/FloatType.java b/src/main/generated/jastadd/soot/JastAddJ/FloatType.java index ce13dc8a11e..e2885da5053 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/FloatType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/FloatType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production FloatType : {@link FloatingPointType}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/FloatingPointLiteral.java b/src/main/generated/jastadd/soot/JastAddJ/FloatingPointLiteral.java index aca1ac14379..a576af82c32 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/FloatingPointLiteral.java +++ b/src/main/generated/jastadd/soot/JastAddJ/FloatingPointLiteral.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * Java floating point literal. Can store any value representable as an * IEEE 754 32-bit single-precision floating point number. diff --git a/src/main/generated/jastadd/soot/JastAddJ/FloatingPointType.java b/src/main/generated/jastadd/soot/JastAddJ/FloatingPointType.java index 7b4433d4945..f58e7332b39 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/FloatingPointType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/FloatingPointType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production FloatingPointType : {@link NumericType}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/FolderPart.java b/src/main/generated/jastadd/soot/JastAddJ/FolderPart.java index dfba4f8fc24..b12bd4e158c 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/FolderPart.java +++ b/src/main/generated/jastadd/soot/JastAddJ/FolderPart.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class diff --git a/src/main/generated/jastadd/soot/JastAddJ/ForStmt.java b/src/main/generated/jastadd/soot/JastAddJ/ForStmt.java index 405d51a988b..be0a562a893 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ForStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ForStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ForStmt : {@link BranchTargetStmt} ::= InitStmt:{@link Stmt}* [Condition:{@link Expr}] UpdateStmt:{@link Stmt}* {@link Stmt}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Frontend.java b/src/main/generated/jastadd/soot/JastAddJ/Frontend.java index 49099cb95bf..8d7724efe53 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Frontend.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Frontend.java @@ -14,11 +14,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/GEExpr.java b/src/main/generated/jastadd/soot/JastAddJ/GEExpr.java index 8a3aef143c9..a6712fc2bf5 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/GEExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/GEExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production GEExpr : {@link RelationalExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/GLBType.java b/src/main/generated/jastadd/soot/JastAddJ/GLBType.java index 13e3c4881d5..61e8ae032dc 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/GLBType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/GLBType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production GLBType : {@link ReferenceType} ::= {@link Modifiers} <ID:String> {@link BodyDecl}* TypeBound:{@link Access}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/GLBTypeFactory.java b/src/main/generated/jastadd/soot/JastAddJ/GLBTypeFactory.java index 361d8214338..71adbdc8900 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/GLBTypeFactory.java +++ b/src/main/generated/jastadd/soot/JastAddJ/GLBTypeFactory.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/GTExpr.java b/src/main/generated/jastadd/soot/JastAddJ/GTExpr.java index 3fd8b580f72..20473db4605 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/GTExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/GTExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production GTExpr : {@link RelationalExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/GenericClassDecl.java b/src/main/generated/jastadd/soot/JastAddJ/GenericClassDecl.java index 6e2f34460af..9cc1d21b644 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/GenericClassDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/GenericClassDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production GenericClassDecl : {@link ClassDecl} ::= {@link Modifiers} <ID:String> [SuperClassAccess:{@link Access}] Implements:{@link Access}* {@link BodyDecl}* TypeParameter:{@link TypeVariable}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/GenericClassDeclSubstituted.java b/src/main/generated/jastadd/soot/JastAddJ/GenericClassDeclSubstituted.java index bce0e1bcae9..3db497e308b 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/GenericClassDeclSubstituted.java +++ b/src/main/generated/jastadd/soot/JastAddJ/GenericClassDeclSubstituted.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production GenericClassDeclSubstituted : {@link GenericClassDecl} ::= <Original:TypeDecl> {@link BodyDecl}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/GenericConstructorDecl.java b/src/main/generated/jastadd/soot/JastAddJ/GenericConstructorDecl.java index 33129db1bb8..af3d005e589 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/GenericConstructorDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/GenericConstructorDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production GenericConstructorDecl : {@link ConstructorDecl} ::= TypeParameter:{@link TypeVariable}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/GenericInterfaceDecl.java b/src/main/generated/jastadd/soot/JastAddJ/GenericInterfaceDecl.java index 154723f1607..1b8162123fa 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/GenericInterfaceDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/GenericInterfaceDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production GenericInterfaceDecl : {@link InterfaceDecl} ::= {@link Modifiers} <ID:String> SuperInterfaceId:{@link Access}* {@link BodyDecl}* TypeParameter:{@link TypeVariable}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/GenericInterfaceDeclSubstituted.java b/src/main/generated/jastadd/soot/JastAddJ/GenericInterfaceDeclSubstituted.java index 71e4e445b7b..26ed8e0a851 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/GenericInterfaceDeclSubstituted.java +++ b/src/main/generated/jastadd/soot/JastAddJ/GenericInterfaceDeclSubstituted.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production GenericInterfaceDeclSubstituted : {@link GenericInterfaceDecl} ::= <Original:TypeDecl> {@link BodyDecl}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/GenericMethodDecl.java b/src/main/generated/jastadd/soot/JastAddJ/GenericMethodDecl.java index e0eef89979b..bd19bdd4a75 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/GenericMethodDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/GenericMethodDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production GenericMethodDecl : {@link MethodDecl} ::= TypeParameter:{@link TypeVariable}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/GenericTypeDecl.java b/src/main/generated/jastadd/soot/JastAddJ/GenericTypeDecl.java index 00461f8c82a..95f7bb3513a 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/GenericTypeDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/GenericTypeDecl.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast interface * diff --git a/src/main/generated/jastadd/soot/JastAddJ/IdUse.java b/src/main/generated/jastadd/soot/JastAddJ/IdUse.java index 8fcd6453b0a..1e53c270ffe 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/IdUse.java +++ b/src/main/generated/jastadd/soot/JastAddJ/IdUse.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production IdUse : {@link ASTNode} ::= <ID:String>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/IfStmt.java b/src/main/generated/jastadd/soot/JastAddJ/IfStmt.java index 3d6ae4a0adb..a93ef435c43 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/IfStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/IfStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production IfStmt : {@link Stmt} ::= Condition:{@link Expr} Then:{@link Stmt} [Else:{@link Stmt}]; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/IllegalLiteral.java b/src/main/generated/jastadd/soot/JastAddJ/IllegalLiteral.java index 9a2c88a5035..6e99a1b1f5c 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/IllegalLiteral.java +++ b/src/main/generated/jastadd/soot/JastAddJ/IllegalLiteral.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * Literal produced when the compiler tries to parse * a malformatted NumericLiteral. diff --git a/src/main/generated/jastadd/soot/JastAddJ/ImportDecl.java b/src/main/generated/jastadd/soot/JastAddJ/ImportDecl.java index 06237d1be00..209e2cd4274 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ImportDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ImportDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ImportDecl : {@link ASTNode} ::= {@link Access}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/InstanceInitializer.java b/src/main/generated/jastadd/soot/JastAddJ/InstanceInitializer.java index 5b137f4904d..fa352f70892 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/InstanceInitializer.java +++ b/src/main/generated/jastadd/soot/JastAddJ/InstanceInitializer.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production InstanceInitializer : {@link BodyDecl} ::= {@link Block}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/InstanceOfExpr.java b/src/main/generated/jastadd/soot/JastAddJ/InstanceOfExpr.java index 1adca2a3bc8..7d0ca201bec 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/InstanceOfExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/InstanceOfExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production InstanceOfExpr : {@link Expr} ::= {@link Expr} TypeAccess:{@link Access}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/IntType.java b/src/main/generated/jastadd/soot/JastAddJ/IntType.java index 22241bcfad1..035e847acbd 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/IntType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/IntType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production IntType : {@link IntegralType}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/IntegerLiteral.java b/src/main/generated/jastadd/soot/JastAddJ/IntegerLiteral.java index ccff8457695..1abf44c3924 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/IntegerLiteral.java +++ b/src/main/generated/jastadd/soot/JastAddJ/IntegerLiteral.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * Default Java integer literal. Should only be used for numbers * that can be stored in 32 bits binary. diff --git a/src/main/generated/jastadd/soot/JastAddJ/IntegralType.java b/src/main/generated/jastadd/soot/JastAddJ/IntegralType.java index 02c1ed512f3..72ef6b5102a 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/IntegralType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/IntegralType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production IntegralType : {@link NumericType}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/InterfaceDecl.java b/src/main/generated/jastadd/soot/JastAddJ/InterfaceDecl.java index f1b4cbbfc2e..5273108adfb 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/InterfaceDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/InterfaceDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production InterfaceDecl : {@link ReferenceType} ::= {@link Modifiers} <ID:String> SuperInterfaceId:{@link Access}* {@link BodyDecl}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/InterfaceDeclSubstituted.java b/src/main/generated/jastadd/soot/JastAddJ/InterfaceDeclSubstituted.java index 9aec1d43cba..1db4c0f8b80 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/InterfaceDeclSubstituted.java +++ b/src/main/generated/jastadd/soot/JastAddJ/InterfaceDeclSubstituted.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production InterfaceDeclSubstituted : {@link InterfaceDecl} ::= <Original:TypeDecl> {@link BodyDecl}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/JavaParser.java b/src/main/generated/jastadd/soot/JastAddJ/JavaParser.java index f944bd81e75..c129dc9f760 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/JavaParser.java +++ b/src/main/generated/jastadd/soot/JastAddJ/JavaParser.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast interface * diff --git a/src/main/generated/jastadd/soot/JastAddJ/LEExpr.java b/src/main/generated/jastadd/soot/JastAddJ/LEExpr.java index fd9ab235a5c..23e650d7ca8 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/LEExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/LEExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production LEExpr : {@link RelationalExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/LShiftExpr.java b/src/main/generated/jastadd/soot/JastAddJ/LShiftExpr.java index 648434f740b..274cd8d2aa7 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/LShiftExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/LShiftExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production LShiftExpr : {@link ShiftExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/LTExpr.java b/src/main/generated/jastadd/soot/JastAddJ/LTExpr.java index c9a01e86eb6..e8734fc4c24 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/LTExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/LTExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production LTExpr : {@link RelationalExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/LUBType.java b/src/main/generated/jastadd/soot/JastAddJ/LUBType.java index 3fa9105aa0a..5708912c183 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/LUBType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/LUBType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production LUBType : {@link ReferenceType} ::= {@link Modifiers} <ID:String> {@link BodyDecl}* TypeBound:{@link Access}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/LabeledStmt.java b/src/main/generated/jastadd/soot/JastAddJ/LabeledStmt.java index 23c0b37f46d..cea5b0451d2 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/LabeledStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/LabeledStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production LabeledStmt : {@link BranchTargetStmt} ::= <Label:String> {@link Stmt}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/List.java b/src/main/generated/jastadd/soot/JastAddJ/List.java index f46d10fbb44..327ac9cd690 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/List.java +++ b/src/main/generated/jastadd/soot/JastAddJ/List.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production List : {@link ASTNode}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Literal.java b/src/main/generated/jastadd/soot/JastAddJ/Literal.java index 3302e0866d3..338cbfa91ec 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Literal.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Literal.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * The abstract base class for all literals. * @production Literal : {@link PrimaryExpr} ::= <LITERAL:String>; diff --git a/src/main/generated/jastadd/soot/JastAddJ/LocalClassDeclStmt.java b/src/main/generated/jastadd/soot/JastAddJ/LocalClassDeclStmt.java index e199b7c1b77..33842d9b4b4 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/LocalClassDeclStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/LocalClassDeclStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production LocalClassDeclStmt : {@link Stmt} ::= {@link ClassDecl}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/LogNotExpr.java b/src/main/generated/jastadd/soot/JastAddJ/LogNotExpr.java index ed46e894a9a..1477bd6dbff 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/LogNotExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/LogNotExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production LogNotExpr : {@link Unary}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/LogicalExpr.java b/src/main/generated/jastadd/soot/JastAddJ/LogicalExpr.java index 7f90cf6f933..7b4c95ab8f9 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/LogicalExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/LogicalExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production LogicalExpr : {@link Binary}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/LongLiteral.java b/src/main/generated/jastadd/soot/JastAddJ/LongLiteral.java index 35aa39a814c..cc3a8b90ab7 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/LongLiteral.java +++ b/src/main/generated/jastadd/soot/JastAddJ/LongLiteral.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * Java long integer literal. Can store any number that fits in 64 bits * of data, or less. diff --git a/src/main/generated/jastadd/soot/JastAddJ/LongType.java b/src/main/generated/jastadd/soot/JastAddJ/LongType.java index 5f56092c8a5..b57db419480 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/LongType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/LongType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production LongType : {@link IntegralType}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/MemberClassDecl.java b/src/main/generated/jastadd/soot/JastAddJ/MemberClassDecl.java index d8cc98e5df9..82c93e25bf2 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MemberClassDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MemberClassDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production MemberClassDecl : {@link MemberTypeDecl} ::= {@link ClassDecl}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/MemberDecl.java b/src/main/generated/jastadd/soot/JastAddJ/MemberDecl.java index 8062d0c6630..e8cf9ebc786 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MemberDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MemberDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production MemberDecl : {@link BodyDecl}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/MemberInterfaceDecl.java b/src/main/generated/jastadd/soot/JastAddJ/MemberInterfaceDecl.java index 45722f7246d..0142b15dc61 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MemberInterfaceDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MemberInterfaceDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production MemberInterfaceDecl : {@link MemberTypeDecl} ::= {@link InterfaceDecl}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/MemberSubstitutor.java b/src/main/generated/jastadd/soot/JastAddJ/MemberSubstitutor.java index 6895841fb18..edd721fb642 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MemberSubstitutor.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MemberSubstitutor.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast interface * diff --git a/src/main/generated/jastadd/soot/JastAddJ/MemberTypeDecl.java b/src/main/generated/jastadd/soot/JastAddJ/MemberTypeDecl.java index fcf361de1ac..cf35f9672e7 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MemberTypeDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MemberTypeDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production MemberTypeDecl : {@link MemberDecl}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/MethodAccess.java b/src/main/generated/jastadd/soot/JastAddJ/MethodAccess.java index daeda572cca..dbc6412a6db 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MethodAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MethodAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production MethodAccess : {@link Access} ::= <ID:String> Arg:{@link Expr}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/MethodDecl.java b/src/main/generated/jastadd/soot/JastAddJ/MethodDecl.java index 7b191f2a8ef..a4d9f181f60 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MethodDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MethodDecl.java @@ -1258,8 +1258,7 @@ else if (isFinal()) * @declaredat /Users/eric/Documents/workspaces/clara-soot/JastAddExtensions/SootJastAddJ/EmitJimpleRefinements.jrag:100 */ public void jimplify2() { - if (!generate() || sootMethod().hasActiveBody() || (sootMethod().getSource() != null - && (sootMethod().getSource() instanceof soot.coffi.CoffiMethodSource))) + if (!generate() || sootMethod().hasActiveBody()) return; try { if (hasBlock() && !(hostType().isInterfaceDecl())) { diff --git a/src/main/generated/jastadd/soot/JastAddJ/MethodDeclSubstituted.java b/src/main/generated/jastadd/soot/JastAddJ/MethodDeclSubstituted.java index 65907c0877e..ad6e534010e 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MethodDeclSubstituted.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MethodDeclSubstituted.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production MethodDeclSubstituted : {@link MethodDecl} ::= <Original:MethodDecl>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/MethodDescriptor.java b/src/main/generated/jastadd/soot/JastAddJ/MethodDescriptor.java index 22448c30602..b71a25876f3 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MethodDescriptor.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MethodDescriptor.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/MethodInfo.java b/src/main/generated/jastadd/soot/JastAddJ/MethodInfo.java index b6ad17d13aa..01e7fdfc17b 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MethodInfo.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MethodInfo.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/MinusExpr.java b/src/main/generated/jastadd/soot/JastAddJ/MinusExpr.java index 64b4535f57d..fe293226959 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MinusExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MinusExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production MinusExpr : {@link Unary}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ModExpr.java b/src/main/generated/jastadd/soot/JastAddJ/ModExpr.java index 0ea83f23146..3d4c6382c68 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ModExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ModExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ModExpr : {@link MultiplicativeExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Modifier.java b/src/main/generated/jastadd/soot/JastAddJ/Modifier.java index ec92c3d3a2e..316632c4f94 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Modifier.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Modifier.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Modifier : {@link ASTNode} ::= <ID:String>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Modifiers.java b/src/main/generated/jastadd/soot/JastAddJ/Modifiers.java index 6219dce8833..cb45317c90d 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Modifiers.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Modifiers.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Modifiers : {@link ASTNode} ::= {@link Modifier}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/MulExpr.java b/src/main/generated/jastadd/soot/JastAddJ/MulExpr.java index f3616b11e97..35070633f43 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MulExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MulExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production MulExpr : {@link MultiplicativeExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/MultiCatch.java b/src/main/generated/jastadd/soot/JastAddJ/MultiCatch.java index d5bcd777311..21062057289 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MultiCatch.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MultiCatch.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * A catch clause that can catch a multiple exception types. * @production MultiCatch : {@link CatchClause} ::= Parameter:{@link CatchParameterDeclaration} {@link Block}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/MultiplicativeExpr.java b/src/main/generated/jastadd/soot/JastAddJ/MultiplicativeExpr.java index 91227a8eb28..354cdc88b9f 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/MultiplicativeExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/MultiplicativeExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production MultiplicativeExpr : {@link ArithmeticExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/NEExpr.java b/src/main/generated/jastadd/soot/JastAddJ/NEExpr.java index 7d1a1a30c99..a9fd742b120 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/NEExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/NEExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production NEExpr : {@link EqualityExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/NameType.java b/src/main/generated/jastadd/soot/JastAddJ/NameType.java index d481cb26065..b2d27cb7d35 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/NameType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/NameType.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class diff --git a/src/main/generated/jastadd/soot/JastAddJ/NullLiteral.java b/src/main/generated/jastadd/soot/JastAddJ/NullLiteral.java index 9398acc5960..6d4ec800260 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/NullLiteral.java +++ b/src/main/generated/jastadd/soot/JastAddJ/NullLiteral.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * Java null literal. * @production NullLiteral : {@link Literal}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/NullType.java b/src/main/generated/jastadd/soot/JastAddJ/NullType.java index c3dd55d8e66..17d8e335289 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/NullType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/NullType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production NullType : {@link TypeDecl}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/NumericLiteral.java b/src/main/generated/jastadd/soot/JastAddJ/NumericLiteral.java index 6477b620eb5..06bf67768f0 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/NumericLiteral.java +++ b/src/main/generated/jastadd/soot/JastAddJ/NumericLiteral.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * A NumericLiteral is a raw literal, produced by the parser. * NumericLiterals are rewritten to the best matching concrete diff --git a/src/main/generated/jastadd/soot/JastAddJ/NumericType.java b/src/main/generated/jastadd/soot/JastAddJ/NumericType.java index 7e652d80f15..e7600a46d86 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/NumericType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/NumericType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production NumericType : {@link PrimitiveType}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/Opt.java b/src/main/generated/jastadd/soot/JastAddJ/Opt.java index 6e3c3e5eb25..71c051b3115 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Opt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Opt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Opt : {@link ASTNode}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Options.java b/src/main/generated/jastadd/soot/JastAddJ/Options.java index 067ac3cad96..914853b1da5 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Options.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Options.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/OrBitwiseExpr.java b/src/main/generated/jastadd/soot/JastAddJ/OrBitwiseExpr.java index 7cc43912bdd..a8a992845f3 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/OrBitwiseExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/OrBitwiseExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production OrBitwiseExpr : {@link BitwiseExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/OrLogicalExpr.java b/src/main/generated/jastadd/soot/JastAddJ/OrLogicalExpr.java index caa94a6a0a0..cb0a7b0a1c3 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/OrLogicalExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/OrLogicalExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production OrLogicalExpr : {@link LogicalExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/PackageAccess.java b/src/main/generated/jastadd/soot/JastAddJ/PackageAccess.java index 1f85f6d9221..1f7df002231 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/PackageAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/PackageAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production PackageAccess : {@link Access} ::= <Package:String>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/PackageOrTypeAccess.java b/src/main/generated/jastadd/soot/JastAddJ/PackageOrTypeAccess.java index 9ebe2924bb2..c531ffbd2b8 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/PackageOrTypeAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/PackageOrTypeAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production PackageOrTypeAccess : {@link Access} ::= <ID:String>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParClassDecl.java b/src/main/generated/jastadd/soot/JastAddJ/ParClassDecl.java index e1342190ee0..8e8e6fa4bbc 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParClassDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParClassDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ParClassDecl : {@link ClassDecl} ::= Argument:{@link Access}* [SuperClassAccess:{@link Access}] Implements:{@link Access}* {@link BodyDecl}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParClassInstanceExpr.java b/src/main/generated/jastadd/soot/JastAddJ/ParClassInstanceExpr.java index 0f18ed57b11..94f26199a41 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParClassInstanceExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParClassInstanceExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ParClassInstanceExpr : {@link ClassInstanceExpr} ::= TypeArgument:{@link Access}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParConstructorAccess.java b/src/main/generated/jastadd/soot/JastAddJ/ParConstructorAccess.java index d0a0ae9f8e1..617e5d030d2 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParConstructorAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParConstructorAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ParConstructorAccess : {@link ConstructorAccess} ::= TypeArgument:{@link Access}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParConstructorDecl.java b/src/main/generated/jastadd/soot/JastAddJ/ParConstructorDecl.java index 6f995d8b229..3d6841de8e4 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParConstructorDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParConstructorDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ParConstructorDecl : {@link ConstructorDecl} ::= TypeArgument:{@link Access}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParExpr.java b/src/main/generated/jastadd/soot/JastAddJ/ParExpr.java index 10eb77bdedd..d32c7bad3c3 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ParExpr : {@link PrimaryExpr} ::= {@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParInterfaceDecl.java b/src/main/generated/jastadd/soot/JastAddJ/ParInterfaceDecl.java index 6ce422b2d4a..7031b16c368 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParInterfaceDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParInterfaceDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ParInterfaceDecl : {@link InterfaceDecl} ::= Argument:{@link Access}* SuperInterfaceId:{@link Access}* {@link BodyDecl}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParMethodAccess.java b/src/main/generated/jastadd/soot/JastAddJ/ParMethodAccess.java index 5246232ef59..b23db4b9b3a 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParMethodAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParMethodAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ParMethodAccess : {@link MethodAccess} ::= TypeArgument:{@link Access}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParMethodDecl.java b/src/main/generated/jastadd/soot/JastAddJ/ParMethodDecl.java index 44e17d18d9c..70ff251073a 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParMethodDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParMethodDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ParMethodDecl : {@link MethodDecl} ::= TypeArgument:{@link Access}* <GenericMethodDecl:GenericMethodDecl>; diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParSuperConstructorAccess.java b/src/main/generated/jastadd/soot/JastAddJ/ParSuperConstructorAccess.java index fb301757871..a667801b902 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParSuperConstructorAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParSuperConstructorAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ParSuperConstructorAccess : {@link SuperConstructorAccess} ::= TypeArgument:{@link Access}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParTypeAccess.java b/src/main/generated/jastadd/soot/JastAddJ/ParTypeAccess.java index 924ed9fc6fb..856644bd02e 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParTypeAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParTypeAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ParTypeAccess : {@link Access} ::= TypeAccess:{@link Access} TypeArgument:{@link Access}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParTypeDecl.java b/src/main/generated/jastadd/soot/JastAddJ/ParTypeDecl.java index 4e9437cf327..d88a7212fbf 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParTypeDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParTypeDecl.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast interface * diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParameterDeclaration.java b/src/main/generated/jastadd/soot/JastAddJ/ParameterDeclaration.java index c8ffedc5e45..703938b06d2 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParameterDeclaration.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParameterDeclaration.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * A parameter declaration as used in either method parameter lists * or as a catch clause parameter. diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParameterDeclarationSubstituted.java b/src/main/generated/jastadd/soot/JastAddJ/ParameterDeclarationSubstituted.java index b26639aad6e..3adfa888c4c 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParameterDeclarationSubstituted.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParameterDeclarationSubstituted.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ParameterDeclarationSubstituted : {@link ParameterDeclaration} ::= <Original:ParameterDeclaration>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Parameterization.java b/src/main/generated/jastadd/soot/JastAddJ/Parameterization.java index 21d66dd9a4b..25d5403a2f5 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Parameterization.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Parameterization.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast interface * diff --git a/src/main/generated/jastadd/soot/JastAddJ/ParseName.java b/src/main/generated/jastadd/soot/JastAddJ/ParseName.java index 2b2baac951e..dfbe349684b 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ParseName.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ParseName.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ParseName : {@link Access} ::= <ID:String>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/PlaceholderMethodDecl.java b/src/main/generated/jastadd/soot/JastAddJ/PlaceholderMethodDecl.java index ecfc05a917d..e474ac21c0b 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/PlaceholderMethodDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/PlaceholderMethodDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * Placeholder method for type inference on generic instance creation. * @production PlaceholderMethodDecl : {@link GenericMethodDecl}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/PlusExpr.java b/src/main/generated/jastadd/soot/JastAddJ/PlusExpr.java index 2bdce33e071..7f8f8a51d9d 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/PlusExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/PlusExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production PlusExpr : {@link Unary}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/PostDecExpr.java b/src/main/generated/jastadd/soot/JastAddJ/PostDecExpr.java index c18dbc14e16..accd1f37595 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/PostDecExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/PostDecExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production PostDecExpr : {@link PostfixExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/PostIncExpr.java b/src/main/generated/jastadd/soot/JastAddJ/PostIncExpr.java index 9dd84459892..7a41bb93aab 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/PostIncExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/PostIncExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production PostIncExpr : {@link PostfixExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/PostfixExpr.java b/src/main/generated/jastadd/soot/JastAddJ/PostfixExpr.java index 562fb749c1f..3985f7e414a 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/PostfixExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/PostfixExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production PostfixExpr : {@link Unary}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/PreDecExpr.java b/src/main/generated/jastadd/soot/JastAddJ/PreDecExpr.java index 9e07606b91f..1674762370b 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/PreDecExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/PreDecExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production PreDecExpr : {@link Unary}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/PreIncExpr.java b/src/main/generated/jastadd/soot/JastAddJ/PreIncExpr.java index 7e77b40c911..f232cb37e23 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/PreIncExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/PreIncExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production PreIncExpr : {@link Unary}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/PrimaryExpr.java b/src/main/generated/jastadd/soot/JastAddJ/PrimaryExpr.java index 3274d640de4..6ad50971263 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/PrimaryExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/PrimaryExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production PrimaryExpr : {@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/PrimitiveCompilationUnit.java b/src/main/generated/jastadd/soot/JastAddJ/PrimitiveCompilationUnit.java index 991d80809fa..d1bfa92cd4c 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/PrimitiveCompilationUnit.java +++ b/src/main/generated/jastadd/soot/JastAddJ/PrimitiveCompilationUnit.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production PrimitiveCompilationUnit : {@link CompilationUnit}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/PrimitiveType.java b/src/main/generated/jastadd/soot/JastAddJ/PrimitiveType.java index 9b7420c7e26..3bfebe64443 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/PrimitiveType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/PrimitiveType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production PrimitiveType : {@link TypeDecl} ::= {@link Modifiers} <ID:String> [SuperClassAccess:{@link Access}] {@link BodyDecl}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/PrimitiveTypeAccess.java b/src/main/generated/jastadd/soot/JastAddJ/PrimitiveTypeAccess.java index 1aa0a55e1c6..8a915b06f21 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/PrimitiveTypeAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/PrimitiveTypeAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production PrimitiveTypeAccess : {@link TypeAccess} ::= <Package:String> <ID:String> <Name:String>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Problem.java b/src/main/generated/jastadd/soot/JastAddJ/Problem.java index 22ce5b5e609..e95c076ec20 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Problem.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Problem.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/RShiftExpr.java b/src/main/generated/jastadd/soot/JastAddJ/RShiftExpr.java index 1d0b0afe6a8..68dcf13dd30 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/RShiftExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/RShiftExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production RShiftExpr : {@link ShiftExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/RawClassDecl.java b/src/main/generated/jastadd/soot/JastAddJ/RawClassDecl.java index bec121f8646..f2fb3f5013b 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/RawClassDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/RawClassDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production RawClassDecl : {@link ParClassDecl} ::= Argument:{@link Access}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/RawConstructorDecl.java b/src/main/generated/jastadd/soot/JastAddJ/RawConstructorDecl.java index dbc9afbeb20..974f9239113 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/RawConstructorDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/RawConstructorDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production RawConstructorDecl : {@link ParConstructorDecl}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/RawInterfaceDecl.java b/src/main/generated/jastadd/soot/JastAddJ/RawInterfaceDecl.java index 25ef1281827..9dd6a27c0c0 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/RawInterfaceDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/RawInterfaceDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production RawInterfaceDecl : {@link ParInterfaceDecl} ::= Argument:{@link Access}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/RawMethodDecl.java b/src/main/generated/jastadd/soot/JastAddJ/RawMethodDecl.java index 14f42b86ee6..25692e2b010 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/RawMethodDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/RawMethodDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production RawMethodDecl : {@link ParMethodDecl}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ReferenceType.java b/src/main/generated/jastadd/soot/JastAddJ/ReferenceType.java index da35d95970a..1218c564612 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ReferenceType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ReferenceType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ReferenceType : {@link TypeDecl}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/RelationalExpr.java b/src/main/generated/jastadd/soot/JastAddJ/RelationalExpr.java index 62fc15cce3d..152187a1396 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/RelationalExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/RelationalExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production RelationalExpr : {@link Binary}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ResourceDeclaration.java b/src/main/generated/jastadd/soot/JastAddJ/ResourceDeclaration.java index b4e438fa370..2602089cb55 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ResourceDeclaration.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ResourceDeclaration.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * A resource declaration in a try with resources statement. * @production ResourceDeclaration : {@link VariableDeclaration}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/ResourceModifiers.java b/src/main/generated/jastadd/soot/JastAddJ/ResourceModifiers.java index 621f8be7601..a5853152935 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ResourceModifiers.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ResourceModifiers.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * Subclass of Modifiers for resource declarations. * This subclass is added as a convenient method of making resource diff --git a/src/main/generated/jastadd/soot/JastAddJ/ReturnStmt.java b/src/main/generated/jastadd/soot/JastAddJ/ReturnStmt.java index 4574c9faebc..f6e844b3559 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ReturnStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ReturnStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ReturnStmt : {@link Stmt} ::= [Result:{@link Expr}]; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ShiftExpr.java b/src/main/generated/jastadd/soot/JastAddJ/ShiftExpr.java index d1918fdb1c3..0b0ab29a0c6 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ShiftExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ShiftExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ShiftExpr : {@link Binary}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ShortType.java b/src/main/generated/jastadd/soot/JastAddJ/ShortType.java index 6208cdfed46..c1be806eaba 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ShortType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ShortType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ShortType : {@link IntegralType}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Signatures.java b/src/main/generated/jastadd/soot/JastAddJ/Signatures.java index 78745df0fc9..bcde0b98870 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Signatures.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Signatures.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/SimpleSet.java b/src/main/generated/jastadd/soot/JastAddJ/SimpleSet.java index 76d965dc4aa..7075dfd8cab 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/SimpleSet.java +++ b/src/main/generated/jastadd/soot/JastAddJ/SimpleSet.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast interface diff --git a/src/main/generated/jastadd/soot/JastAddJ/SingleStaticImportDecl.java b/src/main/generated/jastadd/soot/JastAddJ/SingleStaticImportDecl.java index 3c80be10a6c..d5e60ccbaaf 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/SingleStaticImportDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/SingleStaticImportDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * 7.5.3 A single-static-import declaration imports all accessible (\ufffd\ufffd6.6) static members * with a given simple name from a type. This makes these static members available diff --git a/src/main/generated/jastadd/soot/JastAddJ/SingleTypeImportDecl.java b/src/main/generated/jastadd/soot/JastAddJ/SingleTypeImportDecl.java index 408823427b7..5531eeca6b8 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/SingleTypeImportDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/SingleTypeImportDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production SingleTypeImportDecl : {@link ImportDecl}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/StaticImportDecl.java b/src/main/generated/jastadd/soot/JastAddJ/StaticImportDecl.java index 60a7ee5432c..27819a67202 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/StaticImportDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/StaticImportDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * 7.5 Import Declarations * @production StaticImportDecl : {@link ImportDecl}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/StaticImportOnDemandDecl.java b/src/main/generated/jastadd/soot/JastAddJ/StaticImportOnDemandDecl.java index c635ea3266c..84131d9f76f 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/StaticImportOnDemandDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/StaticImportOnDemandDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * 7.5.4 A static-import-on-demand declaration allows all accessible (\ufffd\ufffd6.6) static * members declared in the type named by a canonical name to be imported as diff --git a/src/main/generated/jastadd/soot/JastAddJ/StaticInitializer.java b/src/main/generated/jastadd/soot/JastAddJ/StaticInitializer.java index 5c9ca96f2c7..48c931f75fa 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/StaticInitializer.java +++ b/src/main/generated/jastadd/soot/JastAddJ/StaticInitializer.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production StaticInitializer : {@link BodyDecl} ::= {@link Block}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Stmt.java b/src/main/generated/jastadd/soot/JastAddJ/Stmt.java index 7caecc4ab19..e21901453d0 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Stmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Stmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Stmt : {@link ASTNode}; diff --git a/src/main/generated/jastadd/soot/JastAddJ/StringLiteral.java b/src/main/generated/jastadd/soot/JastAddJ/StringLiteral.java index 9a9baa01675..770288894e8 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/StringLiteral.java +++ b/src/main/generated/jastadd/soot/JastAddJ/StringLiteral.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * String literal. * May not contain Unicode escape sequences (Unicode escapes diff --git a/src/main/generated/jastadd/soot/JastAddJ/SubExpr.java b/src/main/generated/jastadd/soot/JastAddJ/SubExpr.java index 50b96c7ee3d..857676083af 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/SubExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/SubExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production SubExpr : {@link AdditiveExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/SuperAccess.java b/src/main/generated/jastadd/soot/JastAddJ/SuperAccess.java index 62d83ef6766..bed468a71b3 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/SuperAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/SuperAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production SuperAccess : {@link Access} ::= <ID:String>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/SuperConstructorAccess.java b/src/main/generated/jastadd/soot/JastAddJ/SuperConstructorAccess.java index 317017959e5..5cea6f837e7 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/SuperConstructorAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/SuperConstructorAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production SuperConstructorAccess : {@link ConstructorAccess}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/SwitchStmt.java b/src/main/generated/jastadd/soot/JastAddJ/SwitchStmt.java index ea45b8988a3..8a7c315f8d9 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/SwitchStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/SwitchStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production SwitchStmt : {@link BranchTargetStmt} ::= {@link Expr} {@link Block}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/SynchronizedStmt.java b/src/main/generated/jastadd/soot/JastAddJ/SynchronizedStmt.java index e311b9336e4..46f83735f9e 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/SynchronizedStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/SynchronizedStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production SynchronizedStmt : {@link Stmt} ::= {@link Expr} {@link Block}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ThisAccess.java b/src/main/generated/jastadd/soot/JastAddJ/ThisAccess.java index 543a0d4091d..c5da46c04a0 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ThisAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ThisAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ThisAccess : {@link Access} ::= <ID:String>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/ThrowStmt.java b/src/main/generated/jastadd/soot/JastAddJ/ThrowStmt.java index 11dcd04413d..e2be543306f 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/ThrowStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/ThrowStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production ThrowStmt : {@link Stmt} ::= {@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/TryStmt.java b/src/main/generated/jastadd/soot/JastAddJ/TryStmt.java index 79253024cc3..8038479e5b2 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/TryStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/TryStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production TryStmt : {@link Stmt} ::= {@link Block} {@link CatchClause}* [Finally:{@link Block}]; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/TryWithResources.java b/src/main/generated/jastadd/soot/JastAddJ/TryWithResources.java index 61072361325..a838811b814 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/TryWithResources.java +++ b/src/main/generated/jastadd/soot/JastAddJ/TryWithResources.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * The JSR 334 try with resources statement. * @production TryWithResources : {@link TryStmt} ::= Resource:{@link ResourceDeclaration}* {@link Block} {@link CatchClause}* [Finally:{@link Block}]; diff --git a/src/main/generated/jastadd/soot/JastAddJ/TypeAccess.java b/src/main/generated/jastadd/soot/JastAddJ/TypeAccess.java index 9c22dca51f6..9585cd40800 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/TypeAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/TypeAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production TypeAccess : {@link Access} ::= <Package:String> <ID:String>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/TypeDescriptor.java b/src/main/generated/jastadd/soot/JastAddJ/TypeDescriptor.java index e32e0dd7f14..253531d7922 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/TypeDescriptor.java +++ b/src/main/generated/jastadd/soot/JastAddJ/TypeDescriptor.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast class * diff --git a/src/main/generated/jastadd/soot/JastAddJ/TypeImportOnDemandDecl.java b/src/main/generated/jastadd/soot/JastAddJ/TypeImportOnDemandDecl.java index c8b0bfc1718..405fcbdfc3b 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/TypeImportOnDemandDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/TypeImportOnDemandDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production TypeImportOnDemandDecl : {@link ImportDecl}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/TypeVariable.java b/src/main/generated/jastadd/soot/JastAddJ/TypeVariable.java index 052853bdff3..6ca673e9688 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/TypeVariable.java +++ b/src/main/generated/jastadd/soot/JastAddJ/TypeVariable.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production TypeVariable : {@link ReferenceType} ::= {@link Modifiers} <ID:String> {@link BodyDecl}* TypeBound:{@link Access}*; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/URShiftExpr.java b/src/main/generated/jastadd/soot/JastAddJ/URShiftExpr.java index 0261d2bcccd..08b7ed4cad6 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/URShiftExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/URShiftExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production URShiftExpr : {@link ShiftExpr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Unary.java b/src/main/generated/jastadd/soot/JastAddJ/Unary.java index 2bbc00b122f..c2501450d6f 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Unary.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Unary.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Unary : {@link Expr} ::= Operand:{@link Expr}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/UnknownType.java b/src/main/generated/jastadd/soot/JastAddJ/UnknownType.java index 8236676bbc3..ca649dd27c4 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/UnknownType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/UnknownType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production UnknownType : {@link ClassDecl}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/VarAccess.java b/src/main/generated/jastadd/soot/JastAddJ/VarAccess.java index b8092f911ec..848009a63c7 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/VarAccess.java +++ b/src/main/generated/jastadd/soot/JastAddJ/VarAccess.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production VarAccess : {@link Access} ::= <ID:String>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/VarDeclStmt.java b/src/main/generated/jastadd/soot/JastAddJ/VarDeclStmt.java index 01a8ac369f5..8fe12e06130 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/VarDeclStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/VarDeclStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production VarDeclStmt : {@link Stmt} ::= {@link Modifiers} TypeAccess:{@link Access} {@link VariableDecl}*; diff --git a/src/main/generated/jastadd/soot/JastAddJ/Variable.java b/src/main/generated/jastadd/soot/JastAddJ/Variable.java index fa7ecb3ea02..e180a0fcaa0 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Variable.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Variable.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast interface * diff --git a/src/main/generated/jastadd/soot/JastAddJ/VariableArityParameterDeclaration.java b/src/main/generated/jastadd/soot/JastAddJ/VariableArityParameterDeclaration.java index d04418f5182..4b934b9e741 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/VariableArityParameterDeclaration.java +++ b/src/main/generated/jastadd/soot/JastAddJ/VariableArityParameterDeclaration.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production VariableArityParameterDeclaration : {@link ParameterDeclaration}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/VariableArityParameterDeclarationSubstituted.java b/src/main/generated/jastadd/soot/JastAddJ/VariableArityParameterDeclarationSubstituted.java index 199cdb5e9fa..6c2a3226ba5 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/VariableArityParameterDeclarationSubstituted.java +++ b/src/main/generated/jastadd/soot/JastAddJ/VariableArityParameterDeclarationSubstituted.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production VariableArityParameterDeclarationSubstituted : {@link VariableArityParameterDeclaration} ::= <Original:VariableArityParameterDeclaration>; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/VariableDecl.java b/src/main/generated/jastadd/soot/JastAddJ/VariableDecl.java index d9a1adec207..de266e9b195 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/VariableDecl.java +++ b/src/main/generated/jastadd/soot/JastAddJ/VariableDecl.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production VariableDecl : {@link ASTNode} ::= <ID:String> {@link Dims}* [Init:{@link Expr}]; diff --git a/src/main/generated/jastadd/soot/JastAddJ/VariableDeclaration.java b/src/main/generated/jastadd/soot/JastAddJ/VariableDeclaration.java index 184cf8a2bcd..71bd8d74aa3 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/VariableDeclaration.java +++ b/src/main/generated/jastadd/soot/JastAddJ/VariableDeclaration.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production VariableDeclaration : {@link Stmt} ::= {@link Modifiers} TypeAccess:{@link Access} <ID:String> [Init:{@link Expr}]; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/VariableScope.java b/src/main/generated/jastadd/soot/JastAddJ/VariableScope.java index a71030d5fef..b08fd116528 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/VariableScope.java +++ b/src/main/generated/jastadd/soot/JastAddJ/VariableScope.java @@ -12,11 +12,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @ast interface * diff --git a/src/main/generated/jastadd/soot/JastAddJ/VoidType.java b/src/main/generated/jastadd/soot/JastAddJ/VoidType.java index 13ffcc41996..2cd5fc2d80a 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/VoidType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/VoidType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production VoidType : {@link TypeDecl}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/WhileStmt.java b/src/main/generated/jastadd/soot/JastAddJ/WhileStmt.java index 29facbdedfe..0182f614ee3 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/WhileStmt.java +++ b/src/main/generated/jastadd/soot/JastAddJ/WhileStmt.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production WhileStmt : {@link BranchTargetStmt} ::= Condition:{@link Expr} {@link Stmt}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/Wildcard.java b/src/main/generated/jastadd/soot/JastAddJ/Wildcard.java index 5a559b3bc92..f303172000c 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/Wildcard.java +++ b/src/main/generated/jastadd/soot/JastAddJ/Wildcard.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production Wildcard : {@link AbstractWildcard}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/WildcardExtends.java b/src/main/generated/jastadd/soot/JastAddJ/WildcardExtends.java index 946a86889a7..1a3291f1675 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/WildcardExtends.java +++ b/src/main/generated/jastadd/soot/JastAddJ/WildcardExtends.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production WildcardExtends : {@link AbstractWildcard} ::= {@link Access}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/WildcardExtendsType.java b/src/main/generated/jastadd/soot/JastAddJ/WildcardExtendsType.java index 1053eb01b60..6b8d110d831 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/WildcardExtendsType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/WildcardExtendsType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production WildcardExtendsType : {@link AbstractWildcardType} ::= {@link Access}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/WildcardSuper.java b/src/main/generated/jastadd/soot/JastAddJ/WildcardSuper.java index a301443cf73..5987c1e25c4 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/WildcardSuper.java +++ b/src/main/generated/jastadd/soot/JastAddJ/WildcardSuper.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production WildcardSuper : {@link AbstractWildcard} ::= {@link Access}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/WildcardSuperType.java b/src/main/generated/jastadd/soot/JastAddJ/WildcardSuperType.java index d00f09fbac2..7b6c6f0935a 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/WildcardSuperType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/WildcardSuperType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production WildcardSuperType : {@link AbstractWildcardType} ::= {@link Access}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/WildcardType.java b/src/main/generated/jastadd/soot/JastAddJ/WildcardType.java index a17e7436d83..6c8a730d3c8 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/WildcardType.java +++ b/src/main/generated/jastadd/soot/JastAddJ/WildcardType.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production WildcardType : {@link AbstractWildcardType}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/WildcardsCompilationUnit.java b/src/main/generated/jastadd/soot/JastAddJ/WildcardsCompilationUnit.java index 2f24cb0a767..780a9198ff3 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/WildcardsCompilationUnit.java +++ b/src/main/generated/jastadd/soot/JastAddJ/WildcardsCompilationUnit.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production WildcardsCompilationUnit : {@link CompilationUnit}; * @ast node diff --git a/src/main/generated/jastadd/soot/JastAddJ/XorBitwiseExpr.java b/src/main/generated/jastadd/soot/JastAddJ/XorBitwiseExpr.java index e8418addade..e473273dfc0 100644 --- a/src/main/generated/jastadd/soot/JastAddJ/XorBitwiseExpr.java +++ b/src/main/generated/jastadd/soot/JastAddJ/XorBitwiseExpr.java @@ -13,11 +13,7 @@ import soot.*; import soot.util.*; import soot.jimple.*; -import soot.coffi.ClassFile; -import soot.coffi.method_info; -import soot.coffi.CONSTANT_Utf8_info; import soot.tagkit.SourceFileTag; -import soot.coffi.CoffiMethodSource; /** * @production XorBitwiseExpr : {@link BitwiseExpr}; * @ast node diff --git a/src/main/generated/options/soot/AntTask.java b/src/main/generated/options/soot/AntTask.java index 936a8c3e24b..04d2f359f65 100644 --- a/src/main/generated/options/soot/AntTask.java +++ b/src/main/generated/options/soot/AntTask.java @@ -114,10 +114,6 @@ public void execute() throws BuildException { - public void setcoffi(boolean arg) { - if(arg) addArg("-coffi"); - } - public void setjasmin_backend(boolean arg) { if(arg) addArg("-jasmin-backend"); } diff --git a/src/main/generated/options/soot/options/ABCOptions.java b/src/main/generated/options/soot/options/ABCOptions.java index bc51142725e..68226aa5626 100644 --- a/src/main/generated/options/soot/options/ABCOptions.java +++ b/src/main/generated/options/soot/options/ABCOptions.java @@ -23,98 +23,123 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Array Bound Checker. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class ABCOptions { - private Map options; - - public ABCOptions(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * With All Setting the With All option to true is equivalent to setting each of With CSE, With Array Ref, With Field Ref, - * With Class Field, and With Rectangular Array to true. - */ - public boolean with_all() { - return soot.PhaseOptions.getBoolean(options, "with-all"); - } - - /** - * With Common Sub-expressions The analysis will consider common subexpressions. For example, consider the situation where - * r1 is assigned a*b; later, r2 is assigned a*b, where neither a nor b have changed between the two statements. The - * analysis can conclude that r2 has the same value as r1. Experiments show that this option can improve the result - * slightly. - */ - public boolean with_cse() { - return soot.PhaseOptions.getBoolean(options, "with-cse"); - } - - /** - * With Array References With this option enabled, array references can be considered as common subexpressions; however, we - * are more conservative when writing into an array, because array objects may be aliased. We also assume that the - * application is single-threaded or that the array references occur in a synchronized block. That is, we assume that an - * array element may not be changed by other threads between two array references. - */ - public boolean with_arrayref() { - return soot.PhaseOptions.getBoolean(options, "with-arrayref"); - } - - /** - * With Field References The analysis treats field references (static and instance) as common subexpressions; however, we - * are more conservative when writing to a field, because the base of the field reference may be aliased. We also assume - * that the application is single-threaded or that the field references occur in a synchronized block. That is, we assume - * that a field may not be changed by other threads between two field references. - */ - public boolean with_fieldref() { - return soot.PhaseOptions.getBoolean(options, "with-fieldref"); - } - - /** - * With Class Field This option makes the analysis work on the class level. The algorithm analyzes final or private class - * fields first. It can recognize the fields that hold array objects of constant length. In an application using lots of - * array fields, this option can improve the analysis results dramatically. - */ - public boolean with_classfield() { - return soot.PhaseOptions.getBoolean(options, "with-classfield"); - } - - /** - * With Rectangular Array This option is used together with wjap.ra to make Soot run the whole-program analysis for - * rectangular array objects. This analysis is based on the call graph, and it usually takes a long time. If the - * application uses rectangular arrays, these options can improve the analysis result. - */ - public boolean with_rectarray() { - return soot.PhaseOptions.getBoolean(options, "with-rectarray"); - } - - /** - * Profiling -- Profile the results of array bounds check analysis. - * - * Profile the results of array bounds check analysis. The inserted profiling code assumes the existence of a MultiCounter - * class implementing the methods invoked. For details, see the ArrayBoundsChecker source code. - */ - public boolean profiling() { - return soot.PhaseOptions.getBoolean(options, "profiling"); - } - - /** - * Add Color Tags -- Add color tags to results of array bound check analysis. - * - * Add color tags to the results of the array bounds check analysis. - */ - public boolean add_color_tags() { - return soot.PhaseOptions.getBoolean(options, "add-color-tags"); - } + private Map options; + + public ABCOptions(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * With All + * Setting the With All option to true is equivalent to setting + * each of With CSE, With Array Ref, With Field Ref, With Class + * Field, and With Rectangular Array to true. + */ + public boolean with_all() { + return soot.PhaseOptions.getBoolean(options, "with-all"); + } + + /** + * With Common Sub-expressions + * The analysis will consider common subexpressions. For example, + * consider the situation where r1 is assigned a*b; later, r2 is + * assigned a*b, where neither a nor b have changed between the two + * statements. The analysis can conclude that r2 has the same value + * as r1. Experiments show that this option can improve the result + * slightly. + */ + public boolean with_cse() { + return soot.PhaseOptions.getBoolean(options, "with-cse"); + } + + /** + * With Array References + * With this option enabled, array references can be considered as + * common subexpressions; however, we are more conservative when + * writing into an array, because array objects may be aliased. We + * also assume that the application is single-threaded or that the + * array references occur in a synchronized block. That is, we + * assume that an array element may not be changed by other threads + * between two array references. + */ + public boolean with_arrayref() { + return soot.PhaseOptions.getBoolean(options, "with-arrayref"); + } + + /** + * With Field References + * The analysis treats field references (static and instance) as + * common subexpressions; however, we are more conservative when + * writing to a field, because the base of the field reference may + * be aliased. We also assume that the application is + * single-threaded or that the field references occur in a + * synchronized block. That is, we assume that a field may not be + * changed by other threads between two field references. + */ + public boolean with_fieldref() { + return soot.PhaseOptions.getBoolean(options, "with-fieldref"); + } + + /** + * With Class Field + * This option makes the analysis work on the class level. The + * algorithm analyzes final or private class fields first. It can + * recognize the fields that hold array objects of constant length. + * In an application using lots of array fields, this option can + * improve the analysis results dramatically. + */ + public boolean with_classfield() { + return soot.PhaseOptions.getBoolean(options, "with-classfield"); + } + + /** + * With Rectangular Array + * This option is used together with wjap.ra to make Soot run the + * whole-program analysis for rectangular array objects. This + * analysis is based on the call graph, and it usually takes a long + * time. If the application uses rectangular arrays, these options + * can improve the analysis result. + */ + public boolean with_rectarray() { + return soot.PhaseOptions.getBoolean(options, "with-rectarray"); + } + + /** + * Profiling -- + * Profile the results of array bounds check analysis. + * + * Profile the results of array bounds check analysis. The inserted + * profiling code assumes the existence of a MultiCounter class + * implementing the methods invoked. For details, see the + * ArrayBoundsChecker source code. + */ + public boolean profiling() { + return soot.PhaseOptions.getBoolean(options, "profiling"); + } + + /** + * Add Color Tags -- + * Add color tags to results of array bound check analysis. + * + * Add color tags to the results of the array bounds check + * analysis. + */ + public boolean add_color_tags() { + return soot.PhaseOptions.getBoolean(options, "add-color-tags"); + } } diff --git a/src/main/generated/options/soot/options/AETOptions.java b/src/main/generated/options/soot/options/AETOptions.java index cf7c59fc668..439080c6b94 100644 --- a/src/main/generated/options/soot/options/AETOptions.java +++ b/src/main/generated/options/soot/options/AETOptions.java @@ -23,42 +23,43 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Available Expressions Tagger. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class AETOptions { - private Map options; - - public AETOptions(Map options) { - this.options = options; - } + private Map options; - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } + public AETOptions(Map options) { + this.options = options; + } - public static final int kind_optimistic = 1; - public static final int kind_pessimistic = 2; + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } - /** - * Kind - */ - public int kind() { - String s = soot.PhaseOptions.getString(options, "kind"); - if (s == null || s.isEmpty()) - return kind_optimistic; + public static final int kind_optimistic = 1; + public static final int kind_pessimistic = 2; - if (s.equalsIgnoreCase("optimistic")) - return kind_optimistic; - if (s.equalsIgnoreCase("pessimistic")) - return kind_pessimistic; + /** + * Kind + */ + public int kind() { + String s = soot.PhaseOptions.getString(options, "kind"); + if (s == null || s.isEmpty()) + return kind_optimistic; + + if (s.equalsIgnoreCase("optimistic")) + return kind_optimistic; + if (s.equalsIgnoreCase("pessimistic")) + return kind_pessimistic; - throw new RuntimeException(String.format("Invalid value %s of phase option kind", s)); - } + throw new RuntimeException(String.format("Invalid value %s of phase option kind", s)); + } } diff --git a/src/main/generated/options/soot/options/BCMOptions.java b/src/main/generated/options/soot/options/BCMOptions.java index 0430d6e14d9..f6246de0528 100644 --- a/src/main/generated/options/soot/options/BCMOptions.java +++ b/src/main/generated/options/soot/options/BCMOptions.java @@ -23,39 +23,49 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Busy Code Motion. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class BCMOptions { - private Map options; - - public BCMOptions(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * Naive Side Effect Tester -- Use a naive side effect analysis even if interprocedural information is available. - * - * If Naive Side Effect Tester is set to true, Busy Code Motion uses the conservative side effect information provided by - * the NaiveSideEffectTester class, even if interprocedural information about side effects is available. The naive side - * effect analysis is based solely on the information available locally about a statement. It assumes, for example, that - * any method call has the potential to write and read all instance and static fields in the program. If Naive Side Effect - * Tester is set to false and Soot is in whole program mode, then Busy Code Motion uses the side effect information - * provided by the PASideEffectTester class. PASideEffectTester uses a points-to analysis to determine which fields and - * statics may be written or read by a given statement. If whole program analysis is not performed, naive side effect - * information is used regardless of the setting of Naive Side Effect Tester. - */ - public boolean naive_side_effect() { - return soot.PhaseOptions.getBoolean(options, "naive-side-effect"); - } + private Map options; + + public BCMOptions(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * Naive Side Effect Tester -- + * Use a naive side effect analysis even if interprocedural + * information is available. + * + * If Naive Side Effect Tester is set to true, Busy Code Motion + * uses the conservative side effect information provided by the + * NaiveSideEffectTester class, even if interprocedural information + * about side effects is available. The naive side effect analysis + * is based solely on the information available locally about a + * statement. It assumes, for example, that any method call has the + * potential to write and read all instance and static fields in + * the program. If Naive Side Effect Tester is set to false and + * Soot is in whole program mode, then Busy Code Motion uses the + * side effect information provided by the PASideEffectTester + * class. PASideEffectTester uses a points-to analysis to determine + * which fields and statics may be written or read by a given + * statement. If whole program analysis is not performed, naive + * side effect information is used regardless of the setting of + * Naive Side Effect Tester. + */ + public boolean naive_side_effect() { + return soot.PhaseOptions.getBoolean(options, "naive-side-effect"); + } } diff --git a/src/main/generated/options/soot/options/CGGOptions.java b/src/main/generated/options/soot/options/CGGOptions.java index 2c9af317f5d..c9eb8d2f4bf 100644 --- a/src/main/generated/options/soot/options/CGGOptions.java +++ b/src/main/generated/options/soot/options/CGGOptions.java @@ -23,30 +23,31 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Call Graph Grapher. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class CGGOptions { - private Map options; - - public CGGOptions(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * Show Library Methods - */ - public boolean show_lib_meths() { - return soot.PhaseOptions.getBoolean(options, "show-lib-meths"); - } + private Map options; + + public CGGOptions(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * Show Library Methods + */ + public boolean show_lib_meths() { + return soot.PhaseOptions.getBoolean(options, "show-lib-meths"); + } } diff --git a/src/main/generated/options/soot/options/CGOptions.java b/src/main/generated/options/soot/options/CGOptions.java index 2eb09b229fb..9aaaebd9e08 100644 --- a/src/main/generated/options/soot/options/CGOptions.java +++ b/src/main/generated/options/soot/options/CGOptions.java @@ -23,186 +23,247 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Call Graph Constructor. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class CGOptions { - private Map options; - - public CGOptions(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * Safe forName -- Handle Class.forName() calls conservatively. - * - * When a program calls Class.forName(), the named class is resolved, and its static initializer executed. In many cases, - * it cannot be determined statically which class will be loaded, and which static initializer executed. When this option - * is set to true, Soot will conservatively assume that any static initializer could be executed. This may make the call - * graph very large. When this option is set to false, any calls to Class.forName() for which the class cannot be - * determined statically are assumed to call no static initializers. - */ - public boolean safe_forname() { - return soot.PhaseOptions.getBoolean(options, "safe-forname"); - } - - /** - * Safe newInstance -- Handle Class.newInstance() calls conservatively. - * - * When a program calls Class.newInstance(), a new object is created and its constructor executed. Soot does not determine - * statically which type of object will be created, and which constructor executed. When this option is set to true, Soot - * will conservatively assume that any constructor could be executed. This may make the call graph very large. When this - * option is set to false, any calls to Class.newInstance() are assumed not to call the constructor of the created object. - */ - public boolean safe_newinstance() { - return soot.PhaseOptions.getBoolean(options, "safe-newinstance"); - } - - /** - * Verbose -- Print warnings about where the call graph may be incomplete. - * - * Due to the effects of native methods and reflection, it may not always be possible to construct a fully conservative - * call graph. Setting this option to true causes Soot to point out the parts of the call graph that may be incomplete, so - * that they can be checked by hand. - */ - public boolean verbose() { - return soot.PhaseOptions.getBoolean(options, "verbose"); - } - - /** - * All Application Class Methods Reachable -- Assume all methods of application classes are reachable. - * - * When this option is false, the call graph is built starting at a set of entry points, and only methods reachable from - * those entry points are processed. Unreachable methods will not have any call graph edges generated out of them. Setting - * this option to true makes Soot consider all methods of application classes to be reachable, so call edges are generated - * for all of them. This leads to a larger call graph. For program visualization purposes, it is sometimes desirable to - * include edges from unreachable methods; although these methods are unreachable in the version being analyzed, they may - * become reachable if the program is modified. - */ - public boolean all_reachable() { - return soot.PhaseOptions.getBoolean(options, "all-reachable"); - } - - /** - * Implicit Entry Points -- Include methods called implicitly by the VM as entry points. - * - * When this option is true, methods that are called implicitly by the VM are considered entry points of the call graph. - * When it is false, these methods are not considered entry points, leading to a possibly incomplete call graph. - */ - public boolean implicit_entry() { - return soot.PhaseOptions.getBoolean(options, "implicit-entry"); - } - - /** - * Trim Static Initializer Edges -- Removes redundant static initializer calls. - * - * The call graph contains an edge from each statement that could trigger execution of a static initializer to that static - * initializer. However, each static initializer is triggered only once. When this option is enabled, after the call graph - * is built, an intra-procedural analysis is performed to detect static initializer edges leading to methods that must have - * already been executed. Since these static initializers cannot be executed again, the corresponding call graph edges are - * removed from the call graph. - */ - public boolean trim_clinit() { - return soot.PhaseOptions.getBoolean(options, "trim-clinit"); - } - - /** - * Types for invoke -- Uses reaching types inferred by the pointer analysis to resolve reflective calls.. - * - * For each call to Method.invoke(), use the possible types of the first receiver argument and the possible types stored in - * the second argument array to resolve calls to Method.invoke(). This strategy makes no attempt to resolve reflectively - * invoked static methods. Currently only works for context insensitive pointer analyses. - */ - public boolean types_for_invoke() { - return soot.PhaseOptions.getBoolean(options, "types-for-invoke"); - } - - /** - * Resolve Abstract Classes with No Children -- Causes methods invoked on abstract classes to be resolved even if there are - * no non-abstract children of the classes in the Scene.. - * - * Normally, if a method is invoked on a class that is abstract and said class does not have any children in the Scene, the - * method invoke will not be resolved to any concrete methods even if the abstract class or its parent classes contain a - * concrete declaration of the method. This is because without any non-abstract children it is impossible to tell if the - * resolution is correct (since any child may override any non-private method in any of its parent classes). However, - * sometimes it is necessary to resolve methods in such situations (e.g. when analyzing libraries or incomplete code). This - * forces all methods invoked on abstract classes to be resolved if there exists a parent class with a concrete definition - * of the method even if there are no non-abstract children of the abstract class. - */ - public boolean resolve_all_abstract_invokes() { - return soot.PhaseOptions.getBoolean(options, "resolve-all-abstract-invokes"); - } - - /** - * JDK version -- JDK version for native methods. - * - * This option sets the JDK version of the standard library being analyzed so that Soot can simulate the native methods in - * the specific version of the library. The default, 3, refers to Java 1.3.x. - */ - public int jdkver() { - return soot.PhaseOptions.getInt(options, "jdkver"); - } - - /** - * Reflection Log -- Uses a reflection log to resolve reflective calls. - * - * Load a reflection log from the given file and use this log to resolve reflective call sites. Note that when a log is - * given, the following other options have no effect: safe-forname, safe-newinstance. - */ - public String reflection_log() { - return soot.PhaseOptions.getString(options, "reflection-log"); - } - - /** - * Guarding strategy -- Describes how to guard the program from unsound assumptions. - * - * Using a reflection log is only sound for method executions that were logged. Executing the program differently may be - * unsound. Soot can insert guards at program points for which the reflection log contains no information. When these - * points are reached (because the program is executed differently) then the follwing will happen, depending on the value - * of this flag. ignore: no guard is inserted, the program executes normally but under unsound assumptions. print: the - * program prints a stack trace when reaching a porgram location that was not traced but continues to run. throw (default): - * the program throws an Error instead. - */ - public String guards() { - return soot.PhaseOptions.getString(options, "guards"); - } - - public static final int library_disabled = 1; - public static final int library_any_subtype = 2; - public static final int library_signature_resolution = 3; - - /** - * Library mode -- Specifies whether the target classes should be treated as an application or a library.. - * - * Specifies whether the target classes should be treated as an application or a library. If library mode is disabled - * (default), the call graph construction assumes that the target is an application and starts the construction from the - * specified entry points (main method by default). Under the assumption that the target is a library, possible call edges - * might be missing in the call graph. The two different library modes add theses missing calls to the call graph and - * differ only in the view of the class hierachy (hierachy of target library or possible extended hierachy). If - * simulate-natives is also set, the results of native methods are also set to any sub type of the declared return type. - */ - public int library() { - String s = soot.PhaseOptions.getString(options, "library"); - if (s == null || s.isEmpty()) - return library_disabled; - - if (s.equalsIgnoreCase("disabled")) - return library_disabled; - if (s.equalsIgnoreCase("any-subtype")) - return library_any_subtype; - if (s.equalsIgnoreCase("signature-resolution")) - return library_signature_resolution; - - throw new RuntimeException(String.format("Invalid value %s of phase option library", s)); - } + private Map options; + + public CGOptions(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * Safe forName -- + * Handle Class.forName() calls conservatively. + * + * When a program calls Class.forName(), the named class is + * resolved, and its static initializer executed. In many cases, it + * cannot be determined statically which class will be loaded, and + * which static initializer executed. When this option is set to + * true, Soot will conservatively assume that any static + * initializer could be executed. This may make the call graph very + * large. When this option is set to false, any calls to + * Class.forName() for which the class cannot be determined + * statically are assumed to call no static initializers. + */ + public boolean safe_forname() { + return soot.PhaseOptions.getBoolean(options, "safe-forname"); + } + + /** + * Safe newInstance -- + * Handle Class.newInstance() calls conservatively. + * + * When a program calls Class.newInstance(), a new object is + * created and its constructor executed. Soot does not determine + * statically which type of object will be created, and which + * constructor executed. When this option is set to true, Soot will + * conservatively assume that any constructor could be executed. + * This may make the call graph very large. When this option is set + * to false, any calls to Class.newInstance() are assumed not to + * call the constructor of the created object. + */ + public boolean safe_newinstance() { + return soot.PhaseOptions.getBoolean(options, "safe-newinstance"); + } + + /** + * Verbose -- + * Print warnings about where the call graph may be incomplete. + * + * Due to the effects of native methods and reflection, it may not + * always be possible to construct a fully conservative call graph. + * Setting this option to true causes Soot to point out the parts + * of the call graph that may be incomplete, so that they can be + * checked by hand. + */ + public boolean verbose() { + return soot.PhaseOptions.getBoolean(options, "verbose"); + } + + /** + * All Application Class Methods Reachable -- + * Assume all methods of application classes are reachable. + * + * When this option is false, the call graph is built starting at a + * set of entry points, and only methods reachable from those entry + * points are processed. Unreachable methods will not have any call + * graph edges generated out of them. Setting this option to true + * makes Soot consider all methods of application classes to be + * reachable, so call edges are generated for all of them. This + * leads to a larger call graph. For program visualization + * purposes, it is sometimes desirable to include edges from + * unreachable methods; although these methods are unreachable in + * the version being analyzed, they may become reachable if the + * program is modified. + */ + public boolean all_reachable() { + return soot.PhaseOptions.getBoolean(options, "all-reachable"); + } + + /** + * Implicit Entry Points -- + * Include methods called implicitly by the VM as entry points. + * + * When this option is true, methods that are called implicitly by + * the VM are considered entry points of the call graph. When it is + * false, these methods are not considered entry points, leading to + * a possibly incomplete call graph. + */ + public boolean implicit_entry() { + return soot.PhaseOptions.getBoolean(options, "implicit-entry"); + } + + /** + * Trim Static Initializer Edges -- + * Removes redundant static initializer calls. + * + * The call graph contains an edge from each statement that could + * trigger execution of a static initializer to that static + * initializer. However, each static initializer is triggered only + * once. When this option is enabled, after the call graph is + * built, an intra-procedural analysis is performed to detect + * static initializer edges leading to methods that must have + * already been executed. Since these static initializers cannot be + * executed again, the corresponding call graph edges are removed + * from the call graph. + */ + public boolean trim_clinit() { + return soot.PhaseOptions.getBoolean(options, "trim-clinit"); + } + + /** + * Types for invoke -- + * Uses reaching types inferred by the pointer analysis to resolve + * reflective calls.. + * + * For each call to Method.invoke(), use the possible types of the + * first receiver argument and the possible types stored in the + * second argument array to resolve calls to Method.invoke(). This + * strategy makes no attempt to resolve reflectively invoked static + * methods. Currently only works for context insensitive pointer + * analyses. + */ + public boolean types_for_invoke() { + return soot.PhaseOptions.getBoolean(options, "types-for-invoke"); + } + + /** + * Resolve Abstract Classes with No Children -- + * Causes methods invoked on abstract classes to be resolved even + * if there are no non-abstract children of the classes in the + * Scene.. + * + * Normally, if a method is invoked on a class that is abstract and + * said class does not have any children in the Scene, the method + * invoke will not be resolved to any concrete methods even if the + * abstract class or its parent classes contain a concrete + * declaration of the method. This is because without any + * non-abstract children it is impossible to tell if the resolution + * is correct (since any child may override any non-private method + * in any of its parent classes). However, sometimes it is + * necessary to resolve methods in such situations (e.g. when + * analyzing libraries or incomplete code). This forces all methods + * invoked on abstract classes to be resolved if there exists a + * parent class with a concrete definition of the method even if + * there are no non-abstract children of the abstract class. + */ + public boolean resolve_all_abstract_invokes() { + return soot.PhaseOptions.getBoolean(options, "resolve-all-abstract-invokes"); + } + + /** + * JDK version -- + * JDK version for native methods. + * + * This option sets the JDK version of the standard library being + * analyzed so that Soot can simulate the native methods in the + * specific version of the library. The default, 3, refers to Java + * 1.3.x. + */ + public int jdkver() { + return soot.PhaseOptions.getInt(options, "jdkver"); + } + + /** + * Reflection Log -- + * Uses a reflection log to resolve reflective calls. + * + * Load a reflection log from the given file and use this log to + * resolve reflective call sites. Note that when a log is given, + * the following other options have no effect: safe-forname, + * safe-newinstance. + */ + public String reflection_log() { + return soot.PhaseOptions.getString(options, "reflection-log"); + } + + /** + * Guarding strategy -- + * Describes how to guard the program from unsound assumptions. + * + * Using a reflection log is only sound for method executions that + * were logged. Executing the program differently may be unsound. + * Soot can insert guards at program points for which the + * reflection log contains no information. When these points are + * reached (because the program is executed differently) then the + * follwing will happen, depending on the value of this flag. + * ignore: no guard is inserted, the program executes normally but + * under unsound assumptions. print: the program prints a stack + * trace when reaching a porgram location that was not traced but + * continues to run. throw (default): the program throws an Error + * instead. + */ + public String guards() { + return soot.PhaseOptions.getString(options, "guards"); + } + + public static final int library_disabled = 1; + public static final int library_any_subtype = 2; + public static final int library_signature_resolution = 3; + + /** + * Library mode -- + * Specifies whether the target classes should be treated as an + * application or a library.. + * + * Specifies whether the target classes should be treated as an + * application or a library. If library mode is disabled (default), + * the call graph construction assumes that the target is an + * application and starts the construction from the specified entry + * points (main method by default). Under the assumption that the + * target is a library, possible call edges might be missing in the + * call graph. The two different library modes add theses missing + * calls to the call graph and differ only in the view of the class + * hierachy (hierachy of target library or possible extended + * hierachy). If simulate-natives is also set, the results of + * native methods are also set to any sub type of the declared + * return type. + */ + public int library() { + String s = soot.PhaseOptions.getString(options, "library"); + if (s == null || s.isEmpty()) + return library_disabled; + + if (s.equalsIgnoreCase("disabled")) + return library_disabled; + if (s.equalsIgnoreCase("any-subtype")) + return library_any_subtype; + if (s.equalsIgnoreCase("signature-resolution")) + return library_signature_resolution; + + throw new RuntimeException(String.format("Invalid value %s of phase option library", s)); + } } diff --git a/src/main/generated/options/soot/options/CHAOptions.java b/src/main/generated/options/soot/options/CHAOptions.java index dc6b0e50dbe..3a643e4aed5 100644 --- a/src/main/generated/options/soot/options/CHAOptions.java +++ b/src/main/generated/options/soot/options/CHAOptions.java @@ -23,44 +23,50 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Class Hierarchy Analysis. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class CHAOptions { - private Map options; + private Map options; - public CHAOptions(Map options) { - this.options = options; - } + public CHAOptions(Map options) { + this.options = options; + } - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } - /** - * Verbose -- Print statistics about the resulting call graph. - * - * Setting this option to true causes Soot to print out statistics about the call graph computed by this phase, such as the - * number of methods determined to be reachable. - */ - public boolean verbose() { - return soot.PhaseOptions.getBoolean(options, "verbose"); - } + /** + * Verbose -- + * Print statistics about the resulting call graph. + * + * Setting this option to true causes Soot to print out statistics + * about the call graph computed by this phase, such as the number + * of methods determined to be reachable. + */ + public boolean verbose() { + return soot.PhaseOptions.getBoolean(options, "verbose"); + } - /** - * AppOnly -- Consider only application classes. - * - * Setting this option to true causes Soot to only consider application classes when building the callgraph. The resulting - * callgraph will be inherently unsound. Still, this option can make sense if performance optimization and memory reduction - * are your primary goal. - */ - public boolean apponly() { - return soot.PhaseOptions.getBoolean(options, "apponly"); - } + /** + * AppOnly -- + * Consider only application classes. + * + * Setting this option to true causes Soot to only consider + * application classes when building the callgraph. The resulting + * callgraph will be inherently unsound. Still, this option can + * make sense if performance optimization and memory reduction are + * your primary goal. + */ + public boolean apponly() { + return soot.PhaseOptions.getBoolean(options, "apponly"); + } } diff --git a/src/main/generated/options/soot/options/CPOptions.java b/src/main/generated/options/soot/options/CPOptions.java index 548da92af47..068a83282fc 100644 --- a/src/main/generated/options/soot/options/CPOptions.java +++ b/src/main/generated/options/soot/options/CPOptions.java @@ -23,37 +23,42 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Copy Propagator. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class CPOptions { - private Map options; - - public CPOptions(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * Only Regular Locals Only propagate copies through ``regular'' locals, that is, those declared in the source bytecode. - */ - public boolean only_regular_locals() { - return soot.PhaseOptions.getBoolean(options, "only-regular-locals"); - } - - /** - * Only Stack Locals Only propagate copies through locals that represent stack locations in the original bytecode. - */ - public boolean only_stack_locals() { - return soot.PhaseOptions.getBoolean(options, "only-stack-locals"); - } + private Map options; + + public CPOptions(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * Only Regular Locals + * Only propagate copies through ``regular'' locals, that is, those + * declared in the source bytecode. + */ + public boolean only_regular_locals() { + return soot.PhaseOptions.getBoolean(options, "only-regular-locals"); + } + + /** + * Only Stack Locals + * Only propagate copies through locals that represent stack + * locations in the original bytecode. + */ + public boolean only_stack_locals() { + return soot.PhaseOptions.getBoolean(options, "only-stack-locals"); + } } diff --git a/src/main/generated/options/soot/options/FRWOptions.java b/src/main/generated/options/soot/options/FRWOptions.java index 4c6a8167074..3af70f0d08a 100644 --- a/src/main/generated/options/soot/options/FRWOptions.java +++ b/src/main/generated/options/soot/options/FRWOptions.java @@ -23,31 +23,34 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Field Read/Write Tagger. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class FRWOptions { - private Map options; - - public FRWOptions(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * Maximum number of fields If a statement reads/writes more than this number of fields, no tag will be produced for it, in - * order to keep the size of the tags reasonable. - */ - public int threshold() { - return soot.PhaseOptions.getInt(options, "threshold"); - } + private Map options; + + public FRWOptions(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * Maximum number of fields + * If a statement reads/writes more than this number of fields, no + * tag will be produced for it, in order to keep the size of the + * tags reasonable. + */ + public int threshold() { + return soot.PhaseOptions.getInt(options, "threshold"); + } } diff --git a/src/main/generated/options/soot/options/JBOptions.java b/src/main/generated/options/soot/options/JBOptions.java index 75352ac24be..712b503a2d1 100644 --- a/src/main/generated/options/soot/options/JBOptions.java +++ b/src/main/generated/options/soot/options/JBOptions.java @@ -23,64 +23,78 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Jimple Body Creation. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class JBOptions { - private Map options; + private Map options; - public JBOptions(Map options) { - this.options = options; - } + public JBOptions(Map options) { + this.options = options; + } - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } - /** - * Use Original Names Retain the original names for local variables when the source includes those names. Otherwise, Soot - * gives variables generic names based on their types. - */ - public boolean use_original_names() { - return soot.PhaseOptions.getBoolean(options, "use-original-names"); - } + /** + * Use Original Names + * Retain the original names for local variables when the source + * includes those names. Otherwise, Soot gives variables generic + * names based on their types. + */ + public boolean use_original_names() { + return soot.PhaseOptions.getBoolean(options, "use-original-names"); + } - /** - * Preserve source-level annotations Preserves annotations of retention type SOURCE. (for everything but package and local - * variable annotations) - */ - public boolean preserve_source_annotations() { - return soot.PhaseOptions.getBoolean(options, "preserve-source-annotations"); - } + /** + * Preserve source-level annotations + * Preserves annotations of retention type SOURCE. (for everything + * but package and local variable annotations) + */ + public boolean preserve_source_annotations() { + return soot.PhaseOptions.getBoolean(options, "preserve-source-annotations"); + } - /** - * Stabilize local names Make sure that local names are stable between runs. This requires re-normalizing all local names - * after the standard transformations, sorting them, and padding all local names with leading zeros up to the maximum - * number of digits in the local with the highest integer value. This can negatively impact performance. This option - * automatically sets "sort-locals" in "jb.lns" during the second re-normalization pass. - */ - public boolean stabilize_local_names() { - return soot.PhaseOptions.getBoolean(options, "stabilize-local-names"); - } + /** + * Stabilize local names + * Make sure that local names are stable between runs. This + * requires re-normalizing all local names after the standard + * transformations, sorting them, and padding all local names with + * leading zeros up to the maximum number of digits in the local + * with the highest integer value. This can negatively impact + * performance. This option automatically sets "sort-locals" in + * "jb.lns" during the second re-normalization pass. + */ + public boolean stabilize_local_names() { + return soot.PhaseOptions.getBoolean(options, "stabilize-local-names"); + } - /** - * Model LambdaMetafactory -- Replace dynamic invoke instructions to the LambdaMetafactory by static invokes to a synthetic - * LambdaMetafactory implementation.. - * - * When the asm bytecode frontend is used and this option is set to true, Soot creates an implementation of the - * LambdaMetafactory for each dynamic invoke and replaces the original dynamic invoke by a static invocation of the - * factory's bootstrap method. This allows the call-graph generation to find the lambda body reachable, i.e., call-graphs - * contain paths from the invocation of a functional interface to the lambda body implementing this interface. Note that - * this procedure is not reversed when writing-out. Therefore, written-out code will contain the created - * LambdaMetafactories and instrumented calls to the corresponding bootstrap methods. - */ - public boolean model_lambdametafactory() { - return soot.PhaseOptions.getBoolean(options, "model-lambdametafactory"); - } + /** + * Model LambdaMetafactory -- + * Replace dynamic invoke instructions to the LambdaMetafactory by + * static invokes to a synthetic LambdaMetafactory implementation.. + * + * When the asm bytecode frontend is used and this option is set to + * true, Soot creates an implementation of the LambdaMetafactory + * for each dynamic invoke and replaces the original dynamic invoke + * by a static invocation of the factory's bootstrap method. This + * allows the call-graph generation to find the lambda body + * reachable, i.e., call-graphs contain paths from the invocation + * of a functional interface to the lambda body implementing this + * interface. Note that this procedure is not reversed when + * writing-out. Therefore, written-out code will contain the + * created LambdaMetafactories and instrumented calls to the + * corresponding bootstrap methods. + */ + public boolean model_lambdametafactory() { + return soot.PhaseOptions.getBoolean(options, "model-lambdametafactory"); + } } diff --git a/src/main/generated/options/soot/options/JBTROptions.java b/src/main/generated/options/soot/options/JBTROptions.java index da9c155f99d..4196212acb5 100644 --- a/src/main/generated/options/soot/options/JBTROptions.java +++ b/src/main/generated/options/soot/options/JBTROptions.java @@ -23,55 +23,64 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Type Assigner. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class JBTROptions { - private Map options; + private Map options; - public JBTROptions(Map options) { - this.options = options; - } + public JBTROptions(Map options) { + this.options = options; + } - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } - /** - * Use older type assigner -- Enables the older type assigner. - * - * This enables the older type assigner that was in use until May 2008. The current type assigner is a reimplementation by - * Ben Bellamy that uses an entirely new and faster algorithm which always assigns the most narrow type possible. If - * compare-type-assigners is on, this option causes the older type assigner to execute first. (Otherwise the newer one is - * executed first.) - */ - public boolean use_older_type_assigner() { - return soot.PhaseOptions.getBoolean(options, "use-older-type-assigner"); - } + /** + * Use older type assigner -- + * Enables the older type assigner. + * + * This enables the older type assigner that was in use until May + * 2008. The current type assigner is a reimplementation by Ben + * Bellamy that uses an entirely new and faster algorithm which + * always assigns the most narrow type possible. If + * compare-type-assigners is on, this option causes the older type + * assigner to execute first. (Otherwise the newer one is executed + * first.) + */ + public boolean use_older_type_assigner() { + return soot.PhaseOptions.getBoolean(options, "use-older-type-assigner"); + } - /** - * Compare type assigners -- Compares Ben Bellamy's and the older type assigner. - * - * Enables comparison (both runtime and results) of Ben Bellamy's type assigner with the older type assigner that was in - * Soot. - */ - public boolean compare_type_assigners() { - return soot.PhaseOptions.getBoolean(options, "compare-type-assigners"); - } + /** + * Compare type assigners -- + * Compares Ben Bellamy's and the older type assigner. + * + * Enables comparison (both runtime and results) of Ben Bellamy's + * type assigner with the older type assigner that was in Soot. + */ + public boolean compare_type_assigners() { + return soot.PhaseOptions.getBoolean(options, "compare-type-assigners"); + } - /** - * Ignore Nullpointer Dereferences -- Ignores virtual method calls on base objects that may only be null. - * - * If this option is enabled, Soot wiil not check whether the base object of a virtual method call can only be null. This - * will lead to the null_type pseudo type being used in your Jimple code. - */ - public boolean ignore_nullpointer_dereferences() { - return soot.PhaseOptions.getBoolean(options, "ignore-nullpointer-dereferences"); - } + /** + * Ignore Nullpointer Dereferences -- + * Ignores virtual method calls on base objects that may only be + * null. + * + * If this option is enabled, Soot wiil not check whether the base + * object of a virtual method call can only be null. This will lead + * to the null_type pseudo type being used in your Jimple code. + */ + public boolean ignore_nullpointer_dereferences() { + return soot.PhaseOptions.getBoolean(options, "ignore-nullpointer-dereferences"); + } } diff --git a/src/main/generated/options/soot/options/JJOptions.java b/src/main/generated/options/soot/options/JJOptions.java index 9699500b26a..55e6d8eb928 100644 --- a/src/main/generated/options/soot/options/JJOptions.java +++ b/src/main/generated/options/soot/options/JJOptions.java @@ -23,31 +23,34 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Java To Jimple Body Creation. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class JJOptions { - private Map options; - - public JJOptions(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * Use Original Names Retain the original names for local variables when the source includes those names. Otherwise, Soot - * gives variables generic names based on their types. - */ - public boolean use_original_names() { - return soot.PhaseOptions.getBoolean(options, "use-original-names"); - } + private Map options; + + public JJOptions(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * Use Original Names + * Retain the original names for local variables when the source + * includes those names. Otherwise, Soot gives variables generic + * names based on their types. + */ + public boolean use_original_names() { + return soot.PhaseOptions.getBoolean(options, "use-original-names"); + } } diff --git a/src/main/generated/options/soot/options/LCMOptions.java b/src/main/generated/options/soot/options/LCMOptions.java index 7ffac3bc832..96838237a6e 100644 --- a/src/main/generated/options/soot/options/LCMOptions.java +++ b/src/main/generated/options/soot/options/LCMOptions.java @@ -23,68 +23,81 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Lazy Code Motion. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class LCMOptions { - private Map options; - - public LCMOptions(Map options) { - this.options = options; - } + private Map options; - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } + public LCMOptions(Map options) { + this.options = options; + } - /** - * Unroll If true, perform loop inversion before doing the transformation. - */ - public boolean unroll() { - return soot.PhaseOptions.getBoolean(options, "unroll"); - } + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } - /** - * Naive Side Effect Tester -- Use a naive side effect analysis even if interprocedural information is available. - * - * If Naive Side Effect Tester is set to true, Lazy Code Motion uses the conservative side effect information provided by - * the NaiveSideEffectTester class, even if interprocedural information about side effects is available. The naive side - * effect analysis is based solely on the information available locally about a statement. It assumes, for example, that - * any method call has the potential to write and read all instance and static fields in the program. If Naive Side Effect - * Tester is set to false and Soot is in whole program mode, then Lazy Code Motion uses the side effect information - * provided by the PASideEffectTester class. PASideEffectTester uses a points-to analysis to determine which fields and - * statics may be written or read by a given statement. If whole program analysis is not performed, naive side effect - * information is used regardless of the setting of Naive Side Effect Tester. - */ - public boolean naive_side_effect() { - return soot.PhaseOptions.getBoolean(options, "naive-side-effect"); - } + /** + * Unroll + * If true, perform loop inversion before doing the transformation. + */ + public boolean unroll() { + return soot.PhaseOptions.getBoolean(options, "unroll"); + } - public static final int safety_safe = 1; - public static final int safety_medium = 2; - public static final int safety_unsafe = 3; + /** + * Naive Side Effect Tester -- + * Use a naive side effect analysis even if interprocedural + * information is available. + * + * If Naive Side Effect Tester is set to true, Lazy Code Motion + * uses the conservative side effect information provided by the + * NaiveSideEffectTester class, even if interprocedural information + * about side effects is available. The naive side effect analysis + * is based solely on the information available locally about a + * statement. It assumes, for example, that any method call has the + * potential to write and read all instance and static fields in + * the program. If Naive Side Effect Tester is set to false and + * Soot is in whole program mode, then Lazy Code Motion uses the + * side effect information provided by the PASideEffectTester + * class. PASideEffectTester uses a points-to analysis to determine + * which fields and statics may be written or read by a given + * statement. If whole program analysis is not performed, naive + * side effect information is used regardless of the setting of + * Naive Side Effect Tester. + */ + public boolean naive_side_effect() { + return soot.PhaseOptions.getBoolean(options, "naive-side-effect"); + } - /** - * Safety This option controls which fields and statements are candidates for code motion. - */ - public int safety() { - String s = soot.PhaseOptions.getString(options, "safety"); - if (s == null || s.isEmpty()) - return safety_safe; + public static final int safety_safe = 1; + public static final int safety_medium = 2; + public static final int safety_unsafe = 3; - if (s.equalsIgnoreCase("safe")) - return safety_safe; - if (s.equalsIgnoreCase("medium")) - return safety_medium; - if (s.equalsIgnoreCase("unsafe")) - return safety_unsafe; + /** + * Safety + * This option controls which fields and statements are candidates + * for code motion. + */ + public int safety() { + String s = soot.PhaseOptions.getString(options, "safety"); + if (s == null || s.isEmpty()) + return safety_safe; + + if (s.equalsIgnoreCase("safe")) + return safety_safe; + if (s.equalsIgnoreCase("medium")) + return safety_medium; + if (s.equalsIgnoreCase("unsafe")) + return safety_unsafe; - throw new RuntimeException(String.format("Invalid value %s of phase option safety", s)); - } + throw new RuntimeException(String.format("Invalid value %s of phase option safety", s)); + } } diff --git a/src/main/generated/options/soot/options/LockAllocator.java b/src/main/generated/options/soot/options/LockAllocator.java index dedc490681b..2092645af08 100644 --- a/src/main/generated/options/soot/options/LockAllocator.java +++ b/src/main/generated/options/soot/options/LockAllocator.java @@ -23,113 +23,126 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Lock Allocator. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class LockAllocator { - private Map options; - - public LockAllocator(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * Perform Deadlock Avoidance -- Perform Deadlock Avoidance. - * - * Perform Deadlock Avoidance by enforcing a lock ordering where necessary. - */ - public boolean avoid_deadlock() { - return soot.PhaseOptions.getBoolean(options, "avoid-deadlock"); - } - - /** - * Use Open Nesting -- Use an open nesting model. - * - * Use an open nesting model, where inner transactions are allowed to commit independently of any outer transaction. - */ - public boolean open_nesting() { - return soot.PhaseOptions.getBoolean(options, "open-nesting"); - } - - /** - * Perform May-Happen-in-Parallel Analysis -- Perform a May-Happen-in-Parallel analysis. - * - * Perform a May-Happen-in-Parallel analysis to assist in allocating locks. - */ - public boolean do_mhp() { - return soot.PhaseOptions.getBoolean(options, "do-mhp"); - } - - /** - * Perform Local Objects Analysis -- Perform a Local-Objects analysis. - * - * Perform a Local-Objects analysis to assist in allocating locks. - */ - public boolean do_tlo() { - return soot.PhaseOptions.getBoolean(options, "do-tlo"); - } - - /** - * Print Topological Graph -- Print topological graph of transactions. - * - * Print a topological graph of the program's transactions in the format used by the graphviz package. - */ - public boolean print_graph() { - return soot.PhaseOptions.getBoolean(options, "print-graph"); - } - - /** - * Print Table -- Print table of transactions. - * - * Print a table of information about the program's transactions. - */ - public boolean print_table() { - return soot.PhaseOptions.getBoolean(options, "print-table"); - } - - /** - * Print Debugging Info -- Print debugging info. - * - * Print debugging info, including every statement visited. - */ - public boolean print_debug() { - return soot.PhaseOptions.getBoolean(options, "print-debug"); - } - - public static final int locking_scheme_medium_grained = 1; - public static final int locking_scheme_coarse_grained = 2; - public static final int locking_scheme_single_static = 3; - public static final int locking_scheme_leave_original = 4; - - /** - * Locking Scheme -- Selects the granularity of the generated lock allocation. - * - * Selects the granularity of the generated lock allocation - */ - public int locking_scheme() { - String s = soot.PhaseOptions.getString(options, "locking-scheme"); - if (s == null || s.isEmpty()) - return locking_scheme_medium_grained; - - if (s.equalsIgnoreCase("medium-grained")) - return locking_scheme_medium_grained; - if (s.equalsIgnoreCase("coarse-grained")) - return locking_scheme_coarse_grained; - if (s.equalsIgnoreCase("single-static")) - return locking_scheme_single_static; - if (s.equalsIgnoreCase("leave-original")) - return locking_scheme_leave_original; - - throw new RuntimeException(String.format("Invalid value %s of phase option locking-scheme", s)); - } + private Map options; + + public LockAllocator(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * Perform Deadlock Avoidance -- + * Perform Deadlock Avoidance. + * + * Perform Deadlock Avoidance by enforcing a lock ordering where + * necessary. + */ + public boolean avoid_deadlock() { + return soot.PhaseOptions.getBoolean(options, "avoid-deadlock"); + } + + /** + * Use Open Nesting -- + * Use an open nesting model. + * + * Use an open nesting model, where inner transactions are allowed + * to commit independently of any outer transaction. + */ + public boolean open_nesting() { + return soot.PhaseOptions.getBoolean(options, "open-nesting"); + } + + /** + * Perform May-Happen-in-Parallel Analysis -- + * Perform a May-Happen-in-Parallel analysis. + * + * Perform a May-Happen-in-Parallel analysis to assist in + * allocating locks. + */ + public boolean do_mhp() { + return soot.PhaseOptions.getBoolean(options, "do-mhp"); + } + + /** + * Perform Local Objects Analysis -- + * Perform a Local-Objects analysis. + * + * Perform a Local-Objects analysis to assist in allocating locks. + */ + public boolean do_tlo() { + return soot.PhaseOptions.getBoolean(options, "do-tlo"); + } + + /** + * Print Topological Graph -- + * Print topological graph of transactions. + * + * Print a topological graph of the program's transactions in the + * format used by the graphviz package. + */ + public boolean print_graph() { + return soot.PhaseOptions.getBoolean(options, "print-graph"); + } + + /** + * Print Table -- + * Print table of transactions. + * + * Print a table of information about the program's transactions. + */ + public boolean print_table() { + return soot.PhaseOptions.getBoolean(options, "print-table"); + } + + /** + * Print Debugging Info -- + * Print debugging info. + * + * Print debugging info, including every statement visited. + */ + public boolean print_debug() { + return soot.PhaseOptions.getBoolean(options, "print-debug"); + } + + public static final int locking_scheme_medium_grained = 1; + public static final int locking_scheme_coarse_grained = 2; + public static final int locking_scheme_single_static = 3; + public static final int locking_scheme_leave_original = 4; + + /** + * Locking Scheme -- + * Selects the granularity of the generated lock allocation. + * + * Selects the granularity of the generated lock allocation + */ + public int locking_scheme() { + String s = soot.PhaseOptions.getString(options, "locking-scheme"); + if (s == null || s.isEmpty()) + return locking_scheme_medium_grained; + + if (s.equalsIgnoreCase("medium-grained")) + return locking_scheme_medium_grained; + if (s.equalsIgnoreCase("coarse-grained")) + return locking_scheme_coarse_grained; + if (s.equalsIgnoreCase("single-static")) + return locking_scheme_single_static; + if (s.equalsIgnoreCase("leave-original")) + return locking_scheme_leave_original; + + throw new RuntimeException(String.format("Invalid value %s of phase option locking-scheme", s)); + } } diff --git a/src/main/generated/options/soot/options/MhpTransformer.java b/src/main/generated/options/soot/options/MhpTransformer.java index d7f150d9d62..037da58ccfa 100644 --- a/src/main/generated/options/soot/options/MhpTransformer.java +++ b/src/main/generated/options/soot/options/MhpTransformer.java @@ -23,23 +23,24 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for May Happen in Parallel Analyses. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class MhpTransformer { - private Map options; + private Map options; - public MhpTransformer(Map options) { - this.options = options; - } + public MhpTransformer(Map options) { + this.options = options; + } - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } } diff --git a/src/main/generated/options/soot/options/NPCOptions.java b/src/main/generated/options/soot/options/NPCOptions.java index 401a89aeaf5..13e9c92e7c1 100644 --- a/src/main/generated/options/soot/options/NPCOptions.java +++ b/src/main/generated/options/soot/options/NPCOptions.java @@ -23,43 +23,49 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Null Pointer Checker. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class NPCOptions { - private Map options; + private Map options; - public NPCOptions(Map options) { - this.options = options; - } + public NPCOptions(Map options) { + this.options = options; + } - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } - /** - * Only Array Ref -- Annotate only array references. - * - * Annotate only array-referencing instructions, instead of all instructions that need null pointer checks. - */ - public boolean only_array_ref() { - return soot.PhaseOptions.getBoolean(options, "only-array-ref"); - } + /** + * Only Array Ref -- + * Annotate only array references. + * + * Annotate only array-referencing instructions, instead of all + * instructions that need null pointer checks. + */ + public boolean only_array_ref() { + return soot.PhaseOptions.getBoolean(options, "only-array-ref"); + } - /** - * Profiling -- Insert instructions to count safe pointer accesses. - * - * Insert profiling instructions that at runtime count the number of eliminated safe null pointer checks. The inserted - * profiling code assumes the existence of a MultiCounter class implementing the methods invoked. For details, see the - * NullPointerChecker source code. - */ - public boolean profiling() { - return soot.PhaseOptions.getBoolean(options, "profiling"); - } + /** + * Profiling -- + * Insert instructions to count safe pointer accesses. + * + * Insert profiling instructions that at runtime count the number + * of eliminated safe null pointer checks. The inserted profiling + * code assumes the existence of a MultiCounter class implementing + * the methods invoked. For details, see the NullPointerChecker + * source code. + */ + public boolean profiling() { + return soot.PhaseOptions.getBoolean(options, "profiling"); + } } diff --git a/src/main/generated/options/soot/options/Options.java b/src/main/generated/options/soot/options/Options.java index 9a5d5c2e99f..f46fb026593 100644 --- a/src/main/generated/options/soot/options/Options.java +++ b/src/main/generated/options/soot/options/Options.java @@ -146,10 +146,6 @@ public boolean parse(String[] argv) { } if (false); - else if (false - || option.equals("coffi") - ) - coffi = true; else if (false || option.equals("jasmin-backend") ) @@ -1467,10 +1463,6 @@ else if (false return true; } - public boolean coffi() { return coffi; } - private boolean coffi = false; - public void set_coffi(boolean setting) { coffi = setting; } - public boolean jasmin_backend() { return jasmin_backend; } private boolean jasmin_backend = false; public void set_jasmin_backend(boolean setting) { jasmin_backend = setting; } @@ -1844,7 +1836,6 @@ public List dynamic_package() { public String getUsage() { return "" + "\nGeneral Options:\n" - + padOpt("-coffi", "Use the good old Coffi front end for parsing Java bytecode (instead of using ASM).") + padOpt("-jasmin-backend", "Use the Jasmin back end for generating Java bytecode (instead of using ASM).") + padOpt("-h, -help", "Display help and exit") + padOpt("-pl, -phase-list", "Print list of available phases") diff --git a/src/main/generated/options/soot/options/PaddleOptions.java b/src/main/generated/options/soot/options/PaddleOptions.java index c333607c7d6..5f3f251f1a6 100644 --- a/src/main/generated/options/soot/options/PaddleOptions.java +++ b/src/main/generated/options/soot/options/PaddleOptions.java @@ -23,544 +23,622 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Paddle. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class PaddleOptions { - private Map options; - - public PaddleOptions(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * Verbose -- Print detailed information about the execution of Paddle. - * - * When this option is set to true, Paddle prints detailed information about its execution. - */ - public boolean verbose() { - return soot.PhaseOptions.getBoolean(options, "verbose"); - } - - /** - * Use BDDs -- Use BDD version of Paddle. - * - * Causes Paddle to use BDD versions of its components - */ - public boolean bdd() { - return soot.PhaseOptions.getBoolean(options, "bdd"); - } - - /** - * Dynamic reordering Allows the BDD package to perform dynamic variable ordering. - */ - public boolean dynamic_order() { - return soot.PhaseOptions.getBoolean(options, "dynamic-order"); - } - - /** - * Profile -- Profile BDDs using JeddProfiler. - * - * Turns on JeddProfiler for profiling BDD operations. - */ - public boolean profile() { - return soot.PhaseOptions.getBoolean(options, "profile"); - } - - /** - * Verbose GC -- Print memory usage at each BDD garbage collection. - * - * Print memory usage at each BDD garbage collection. - */ - public boolean verbosegc() { - return soot.PhaseOptions.getBoolean(options, "verbosegc"); - } - - /** - * Ignore Types Entirely -- Make Paddle completely ignore declared types of variables. - * - * When this option is set to true, all parts of Paddle completely ignore declared types of variables and casts. - */ - public boolean ignore_types() { - return soot.PhaseOptions.getBoolean(options, "ignore-types"); - } - - /** - * Pre Jimplify -- Jimplify all methods before starting Paddle. - * - * When this option is set to true, Paddle converts all available methods to Jimple before starting the points-to analysis. - * This allows the Jimplification time to be separated from the points-to time. However, it increases the total time and - * memory requirement, because all methods are Jimplified, rather than only those deemed reachable by the points-to - * analysis. - */ - public boolean pre_jimplify() { - return soot.PhaseOptions.getBoolean(options, "pre-jimplify"); - } - - /** - * Context-sensitive Heap Locations -- Treat allocation sites context-sensitively. - * - * When this option is set to true, the context-sensitivity level that is set for the context-sensitive call graph and for - * pointer variables is also used to model heap locations context-sensitively. When this option is false, heap locations - * are modelled context-insensitively regardless of the context-sensitivity level. - */ - public boolean context_heap() { - return soot.PhaseOptions.getBoolean(options, "context-heap"); - } - - /** - * RTA -- Emulate Rapid Type Analysis. - * - * Setting RTA to true sets types-for-sites to true, and causes Paddle to use a single points-to set for all variables, - * giving Rapid Type Analysis. - */ - public boolean rta() { - return soot.PhaseOptions.getBoolean(options, "rta"); - } - - /** - * Field Based -- Use a field-based rather than field-sensitive representation. - * - * When this option is set to true, fields are represented by variable (Green) nodes, and the object that the field belongs - * to is ignored (all objects are lumped together), giving a field-based analysis. Otherwise, fields are represented by - * field reference (Red) nodes, and the objects that they belong to are distinguished, giving a field-sensitive analysis. - */ - public boolean field_based() { - return soot.PhaseOptions.getBoolean(options, "field-based"); - } - - /** - * Types For Sites -- Represent objects by their actual type rather than allocation site. - * - * When this option is set to true, types rather than allocation sites are used as the elements of the points-to sets. - */ - public boolean types_for_sites() { - return soot.PhaseOptions.getBoolean(options, "types-for-sites"); - } - - /** - * Merge String Buffer -- Represent all StringBuffers as one object. - * - * When this option is set to true, all allocation sites creating java.lang.StringBuffer objects are grouped together as a - * single allocation site. Allocation sites creating a java.lang.StringBuilder object are also grouped together as a single - * allocation site. - */ - public boolean merge_stringbuffer() { - return soot.PhaseOptions.getBoolean(options, "merge-stringbuffer"); - } - - /** - * Propagate All String Constants -- Propagate all string constants, not just class names. - * - * When this option is set to false, Paddle only distinguishes string constants that may be the name of a class loaded - * dynamically using reflection, and all other string constants are lumped together into a single string constant node. - * Setting this option to true causes all string constants to be propagated individually. - */ - public boolean string_constants() { - return soot.PhaseOptions.getBoolean(options, "string-constants"); - } - - /** - * Simulate Natives -- Simulate effects of native methods in standard class library. - * - * When this option is set to true, the effects of native methods in the standard Java class library are simulated. - */ - public boolean simulate_natives() { - return soot.PhaseOptions.getBoolean(options, "simulate-natives"); - } - - /** - * Global Nodes in Simulated Natives -- Use global node to model variables in simulations of native methods. - * - * The simulations of native methods such as System.arraycopy() use temporary local variable nodes. Setting this switch to - * true causes them to use global variable nodes instead, reducing precision. The switch exists only to make it possible to - * measure this effect on precision; there is no other practical reason to set it to true. - */ - public boolean global_nodes_in_natives() { - return soot.PhaseOptions.getBoolean(options, "global-nodes-in-natives"); - } - - /** - * Simple Edges Bidirectional -- Equality-based analysis between variable nodes. - * - * When this option is set to true, all edges connecting variable (Green) nodes are made bidirectional, as in Steensgaard's - * analysis. - */ - public boolean simple_edges_bidirectional() { - return soot.PhaseOptions.getBoolean(options, "simple-edges-bidirectional"); - } - - /** - * this Pointer Assignment Edge -- Use pointer assignment edges to model this parameters. - * - * When constructing a call graph on-the-fly during points-to analysis, Paddle normally propagates only those receivers - * that cause a method to be invoked to the this pointer of the method. When this option is set to true, however, Paddle - * instead models flow of receivers as an assignnment edge from the receiver at the call site to the this pointer of the - * method, reducing precision. - */ - public boolean this_edges() { - return soot.PhaseOptions.getBoolean(options, "this-edges"); - } - - /** - * Precise newInstance -- Make newInstance only allocate objects of dynamic classes. - * - * Normally, newInstance() calls are treated as if they may return an object of any type. Setting this option to true - * causes them to be treated as if they return only objects of the type of some dynamic class. - */ - public boolean precise_newinstance() { - return soot.PhaseOptions.getBoolean(options, "precise-newinstance"); - } - - /** - * Print Context Counts -- Print number of contexts for each method. - * - * Causes Paddle to print the number of contexts for each method and call edge, and the number of equivalence classes of - * contexts for each variable node. - */ - public boolean context_counts() { - return soot.PhaseOptions.getBoolean(options, "context-counts"); - } - - /** - * Print Context Counts (Totals only) -- Print total number of contexts. - * - * Causes Paddle to print the number of contexts and number of context equivalence classes. - */ - public boolean total_context_counts() { - return soot.PhaseOptions.getBoolean(options, "total-context-counts"); - } - - /** - * Method Context Counts (Totals only) -- Print number of contexts for each method. - * - * Causes Paddle to print the number of contexts and number of context equivalence classes split out by method. Requires - * total-context-counts to also be turned on. - */ - public boolean method_context_counts() { - return soot.PhaseOptions.getBoolean(options, "method-context-counts"); - } - - /** - * Calculate Set Mass -- Calculate statistics about points-to set sizes. - * - * When this option is set to true, Paddle computes and prints various cryptic statistics about the size of the points-to - * sets computed. - */ - public boolean set_mass() { - return soot.PhaseOptions.getBoolean(options, "set-mass"); - } - - /** - * Number nodes -- Print node numbers in dumps. - * - * When printing debug information about nodes, this option causes the node number of each node to be printed. - */ - public boolean number_nodes() { - return soot.PhaseOptions.getBoolean(options, "number-nodes"); - } - - /** - * Variable ordering Selects one of the BDD variable orderings hard-coded in Paddle. - */ - public int order() { - return soot.PhaseOptions.getInt(options, "order"); - } - - /** - * BDD Nodes -- Number of BDD nodes to allocate (0=unlimited). - * - * This option specifies the number of BDD nodes to be used by the BDD backend. A value of 0 causes the backend to start - * with one million nodes, and allocate more as required. A value other than zero causes the backend to start with the - * specified size, and prevents it from ever allocating any more nodes. - */ - public int bdd_nodes() { - return soot.PhaseOptions.getInt(options, "bdd-nodes"); - } - - /** - * Context length (k) The maximum length of call string or receiver object string used as context. - */ - public int k() { - return soot.PhaseOptions.getInt(options, "k"); - } - - public static final int conf_ofcg = 1; - public static final int conf_cha = 2; - public static final int conf_cha_aot = 3; - public static final int conf_ofcg_aot = 4; - public static final int conf_cha_context_aot = 5; - public static final int conf_ofcg_context_aot = 6; - public static final int conf_cha_context = 7; - public static final int conf_ofcg_context = 8; - - /** - * Configuration -- Select Paddle configuration. - * - * Selects the configuration of points-to analysis and call graph construction to be used in Paddle. - */ - public int conf() { - String s = soot.PhaseOptions.getString(options, "conf"); - if (s == null || s.isEmpty()) - return conf_ofcg; - - if (s.equalsIgnoreCase("ofcg")) - return conf_ofcg; - if (s.equalsIgnoreCase("cha")) - return conf_cha; - if (s.equalsIgnoreCase("cha-aot")) - return conf_cha_aot; - if (s.equalsIgnoreCase("ofcg-aot")) - return conf_ofcg_aot; - if (s.equalsIgnoreCase("cha-context-aot")) - return conf_cha_context_aot; - if (s.equalsIgnoreCase("ofcg-context-aot")) - return conf_ofcg_context_aot; - if (s.equalsIgnoreCase("cha-context")) - return conf_cha_context; - if (s.equalsIgnoreCase("ofcg-context")) - return conf_ofcg_context; - - throw new RuntimeException(String.format("Invalid value %s of phase option conf", s)); - } - - public static final int q_auto = 1; - public static final int q_trad = 2; - public static final int q_bdd = 3; - public static final int q_debug = 4; - public static final int q_trace = 5; - public static final int q_numtrace = 6; - - /** - * Worklist Implementation -- Select queue implementation. - * - * Select the implementation of worklists to be used in Paddle. - */ - public int q() { - String s = soot.PhaseOptions.getString(options, "q"); - if (s == null || s.isEmpty()) - return q_auto; - - if (s.equalsIgnoreCase("auto")) - return q_auto; - if (s.equalsIgnoreCase("trad")) - return q_trad; - if (s.equalsIgnoreCase("bdd")) - return q_bdd; - if (s.equalsIgnoreCase("debug")) - return q_debug; - if (s.equalsIgnoreCase("trace")) - return q_trace; - if (s.equalsIgnoreCase("numtrace")) - return q_numtrace; - - throw new RuntimeException(String.format("Invalid value %s of phase option q", s)); - } - - public static final int backend_auto = 1; - public static final int backend_buddy = 2; - public static final int backend_cudd = 3; - public static final int backend_sable = 4; - public static final int backend_javabdd = 5; - public static final int backend_none = 6; - - /** - * Backend -- Select BDD backend. - * - * This option tells Paddle which implementation of BDDs to use. - */ - public int backend() { - String s = soot.PhaseOptions.getString(options, "backend"); - if (s == null || s.isEmpty()) - return backend_auto; - - if (s.equalsIgnoreCase("auto")) - return backend_auto; - if (s.equalsIgnoreCase("buddy")) - return backend_buddy; - if (s.equalsIgnoreCase("cudd")) - return backend_cudd; - if (s.equalsIgnoreCase("sable")) - return backend_sable; - if (s.equalsIgnoreCase("javabdd")) - return backend_javabdd; - if (s.equalsIgnoreCase("none")) - return backend_none; - - throw new RuntimeException(String.format("Invalid value %s of phase option backend", s)); - } - - public static final int context_insens = 1; - public static final int context_1cfa = 2; - public static final int context_kcfa = 3; - public static final int context_objsens = 4; - public static final int context_kobjsens = 5; - public static final int context_uniqkobjsens = 6; - public static final int context_threadkobjsens = 7; - - /** - * Context abstraction -- Select context-sensitivity level. - * - * This option tells Paddle which level of context-sensitivity to use in constructing the call graph. - */ - public int context() { - String s = soot.PhaseOptions.getString(options, "context"); - if (s == null || s.isEmpty()) - return context_insens; - - if (s.equalsIgnoreCase("insens")) - return context_insens; - if (s.equalsIgnoreCase("1cfa")) - return context_1cfa; - if (s.equalsIgnoreCase("kcfa")) - return context_kcfa; - if (s.equalsIgnoreCase("objsens")) - return context_objsens; - if (s.equalsIgnoreCase("kobjsens")) - return context_kobjsens; - if (s.equalsIgnoreCase("uniqkobjsens")) - return context_uniqkobjsens; - if (s.equalsIgnoreCase("threadkobjsens")) - return context_threadkobjsens; - - throw new RuntimeException(String.format("Invalid value %s of phase option context", s)); - } - - public static final int propagator_auto = 1; - public static final int propagator_iter = 2; - public static final int propagator_worklist = 3; - public static final int propagator_alias = 4; - public static final int propagator_bdd = 5; - public static final int propagator_incbdd = 6; - - /** - * Propagator -- Select propagation algorithm. - * - * This option tells Paddle which propagation algorithm to use. - */ - public int propagator() { - String s = soot.PhaseOptions.getString(options, "propagator"); - if (s == null || s.isEmpty()) - return propagator_auto; - - if (s.equalsIgnoreCase("auto")) - return propagator_auto; - if (s.equalsIgnoreCase("iter")) - return propagator_iter; - if (s.equalsIgnoreCase("worklist")) - return propagator_worklist; - if (s.equalsIgnoreCase("alias")) - return propagator_alias; - if (s.equalsIgnoreCase("bdd")) - return propagator_bdd; - if (s.equalsIgnoreCase("incbdd")) - return propagator_incbdd; - - throw new RuntimeException(String.format("Invalid value %s of phase option propagator", s)); - } - - public static final int set_impl_hash = 1; - public static final int set_impl_bit = 2; - public static final int set_impl_hybrid = 3; - public static final int set_impl_array = 4; - public static final int set_impl_heintze = 5; - public static final int set_impl_double = 6; - - /** - * Set Implementation -- Select points-to set implementation. - * - * Select an implementation of points-to sets for Paddle to use. - */ - public int set_impl() { - String s = soot.PhaseOptions.getString(options, "set-impl"); - if (s == null || s.isEmpty()) - return set_impl_double; - - if (s.equalsIgnoreCase("hash")) - return set_impl_hash; - if (s.equalsIgnoreCase("bit")) - return set_impl_bit; - if (s.equalsIgnoreCase("hybrid")) - return set_impl_hybrid; - if (s.equalsIgnoreCase("array")) - return set_impl_array; - if (s.equalsIgnoreCase("heintze")) - return set_impl_heintze; - if (s.equalsIgnoreCase("double")) - return set_impl_double; - - throw new RuntimeException(String.format("Invalid value %s of phase option set-impl", s)); - } - - public static final int double_set_old_hash = 1; - public static final int double_set_old_bit = 2; - public static final int double_set_old_hybrid = 3; - public static final int double_set_old_array = 4; - public static final int double_set_old_heintze = 5; - - /** - * Double Set Old -- Select implementation of points-to set for old part of double set. - * - * Select an implementation for sets of old objects in the double points-to set implementation. This option has no effect - * unless Set Implementation is set to double. - */ - public int double_set_old() { - String s = soot.PhaseOptions.getString(options, "double-set-old"); - if (s == null || s.isEmpty()) - return double_set_old_hybrid; - - if (s.equalsIgnoreCase("hash")) - return double_set_old_hash; - if (s.equalsIgnoreCase("bit")) - return double_set_old_bit; - if (s.equalsIgnoreCase("hybrid")) - return double_set_old_hybrid; - if (s.equalsIgnoreCase("array")) - return double_set_old_array; - if (s.equalsIgnoreCase("heintze")) - return double_set_old_heintze; - - throw new RuntimeException(String.format("Invalid value %s of phase option double-set-old", s)); - } - - public static final int double_set_new_hash = 1; - public static final int double_set_new_bit = 2; - public static final int double_set_new_hybrid = 3; - public static final int double_set_new_array = 4; - public static final int double_set_new_heintze = 5; - - /** - * Double Set New -- Select implementation of points-to set for new part of double set. - * - * Select an implementation for sets of new objects in the double points-to set implementation. This option has no effect - * unless Set Implementation is set to double. - */ - public int double_set_new() { - String s = soot.PhaseOptions.getString(options, "double-set-new"); - if (s == null || s.isEmpty()) - return double_set_new_hybrid; - - if (s.equalsIgnoreCase("hash")) - return double_set_new_hash; - if (s.equalsIgnoreCase("bit")) - return double_set_new_bit; - if (s.equalsIgnoreCase("hybrid")) - return double_set_new_hybrid; - if (s.equalsIgnoreCase("array")) - return double_set_new_array; - if (s.equalsIgnoreCase("heintze")) - return double_set_new_heintze; - - throw new RuntimeException(String.format("Invalid value %s of phase option double-set-new", s)); - } + private Map options; + + public PaddleOptions(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * Verbose -- + * Print detailed information about the execution of Paddle. + * + * When this option is set to true, Paddle prints detailed + * information about its execution. + */ + public boolean verbose() { + return soot.PhaseOptions.getBoolean(options, "verbose"); + } + + /** + * Use BDDs -- + * Use BDD version of Paddle. + * + * Causes Paddle to use BDD versions of its components + */ + public boolean bdd() { + return soot.PhaseOptions.getBoolean(options, "bdd"); + } + + /** + * Dynamic reordering + * Allows the BDD package to perform dynamic variable ordering. + */ + public boolean dynamic_order() { + return soot.PhaseOptions.getBoolean(options, "dynamic-order"); + } + + /** + * Profile -- + * Profile BDDs using JeddProfiler. + * + * Turns on JeddProfiler for profiling BDD operations. + */ + public boolean profile() { + return soot.PhaseOptions.getBoolean(options, "profile"); + } + + /** + * Verbose GC -- + * Print memory usage at each BDD garbage collection. + * + * Print memory usage at each BDD garbage collection. + */ + public boolean verbosegc() { + return soot.PhaseOptions.getBoolean(options, "verbosegc"); + } + + /** + * Ignore Types Entirely -- + * Make Paddle completely ignore declared types of variables. + * + * When this option is set to true, all parts of Paddle completely + * ignore declared types of variables and casts. + */ + public boolean ignore_types() { + return soot.PhaseOptions.getBoolean(options, "ignore-types"); + } + + /** + * Pre Jimplify -- + * Jimplify all methods before starting Paddle. + * + * When this option is set to true, Paddle converts all available + * methods to Jimple before starting the points-to analysis. This + * allows the Jimplification time to be separated from the + * points-to time. However, it increases the total time and memory + * requirement, because all methods are Jimplified, rather than + * only those deemed reachable by the points-to analysis. + */ + public boolean pre_jimplify() { + return soot.PhaseOptions.getBoolean(options, "pre-jimplify"); + } + + /** + * Context-sensitive Heap Locations -- + * Treat allocation sites context-sensitively. + * + * When this option is set to true, the context-sensitivity level + * that is set for the context-sensitive call graph and for pointer + * variables is also used to model heap locations + * context-sensitively. When this option is false, heap locations + * are modelled context-insensitively regardless of the + * context-sensitivity level. + */ + public boolean context_heap() { + return soot.PhaseOptions.getBoolean(options, "context-heap"); + } + + /** + * RTA -- + * Emulate Rapid Type Analysis. + * + * Setting RTA to true sets types-for-sites to true, and causes + * Paddle to use a single points-to set for all variables, giving + * Rapid Type Analysis. + */ + public boolean rta() { + return soot.PhaseOptions.getBoolean(options, "rta"); + } + + /** + * Field Based -- + * Use a field-based rather than field-sensitive representation. + * + * When this option is set to true, fields are represented by + * variable (Green) nodes, and the object that the field belongs to + * is ignored (all objects are lumped together), giving a + * field-based analysis. Otherwise, fields are represented by field + * reference (Red) nodes, and the objects that they belong to are + * distinguished, giving a field-sensitive analysis. + */ + public boolean field_based() { + return soot.PhaseOptions.getBoolean(options, "field-based"); + } + + /** + * Types For Sites -- + * Represent objects by their actual type rather than allocation + * site. + * + * When this option is set to true, types rather than allocation + * sites are used as the elements of the points-to sets. + */ + public boolean types_for_sites() { + return soot.PhaseOptions.getBoolean(options, "types-for-sites"); + } + + /** + * Merge String Buffer -- + * Represent all StringBuffers as one object. + * + * When this option is set to true, all allocation sites creating + * java.lang.StringBuffer objects are grouped together as a single + * allocation site. Allocation sites creating a + * java.lang.StringBuilder object are also grouped together as a + * single allocation site. + */ + public boolean merge_stringbuffer() { + return soot.PhaseOptions.getBoolean(options, "merge-stringbuffer"); + } + + /** + * Propagate All String Constants -- + * Propagate all string constants, not just class names. + * + * When this option is set to false, Paddle only distinguishes + * string constants that may be the name of a class loaded + * dynamically using reflection, and all other string constants are + * lumped together into a single string constant node. Setting this + * option to true causes all string constants to be propagated + * individually. + */ + public boolean string_constants() { + return soot.PhaseOptions.getBoolean(options, "string-constants"); + } + + /** + * Simulate Natives -- + * Simulate effects of native methods in standard class library. + * + * When this option is set to true, the effects of native methods + * in the standard Java class library are simulated. + */ + public boolean simulate_natives() { + return soot.PhaseOptions.getBoolean(options, "simulate-natives"); + } + + /** + * Global Nodes in Simulated Natives -- + * Use global node to model variables in simulations of native + * methods. + * + * The simulations of native methods such as System.arraycopy() use + * temporary local variable nodes. Setting this switch to true + * causes them to use global variable nodes instead, reducing + * precision. The switch exists only to make it possible to measure + * this effect on precision; there is no other practical reason to + * set it to true. + */ + public boolean global_nodes_in_natives() { + return soot.PhaseOptions.getBoolean(options, "global-nodes-in-natives"); + } + + /** + * Simple Edges Bidirectional -- + * Equality-based analysis between variable nodes. + * + * When this option is set to true, all edges connecting variable + * (Green) nodes are made bidirectional, as in Steensgaard's + * analysis. + */ + public boolean simple_edges_bidirectional() { + return soot.PhaseOptions.getBoolean(options, "simple-edges-bidirectional"); + } + + /** + * this Pointer Assignment Edge -- + * Use pointer assignment edges to model this parameters. + * + * When constructing a call graph on-the-fly during points-to + * analysis, Paddle normally propagates only those receivers that + * cause a method to be invoked to the this pointer of the method. + * When this option is set to true, however, Paddle instead models + * flow of receivers as an assignnment edge from the receiver at + * the call site to the this pointer of the method, reducing + * precision. + */ + public boolean this_edges() { + return soot.PhaseOptions.getBoolean(options, "this-edges"); + } + + /** + * Precise newInstance -- + * Make newInstance only allocate objects of dynamic classes. + * + * Normally, newInstance() calls are treated as if they may return + * an object of any type. Setting this option to true causes them + * to be treated as if they return only objects of the type of some + * dynamic class. + */ + public boolean precise_newinstance() { + return soot.PhaseOptions.getBoolean(options, "precise-newinstance"); + } + + /** + * Print Context Counts -- + * Print number of contexts for each method. + * + * Causes Paddle to print the number of contexts for each method + * and call edge, and the number of equivalence classes of contexts + * for each variable node. + */ + public boolean context_counts() { + return soot.PhaseOptions.getBoolean(options, "context-counts"); + } + + /** + * Print Context Counts (Totals only) -- + * Print total number of contexts. + * + * Causes Paddle to print the number of contexts and number of + * context equivalence classes. + */ + public boolean total_context_counts() { + return soot.PhaseOptions.getBoolean(options, "total-context-counts"); + } + + /** + * Method Context Counts (Totals only) -- + * Print number of contexts for each method. + * + * Causes Paddle to print the number of contexts and number of + * context equivalence classes split out by method. Requires + * total-context-counts to also be turned on. + */ + public boolean method_context_counts() { + return soot.PhaseOptions.getBoolean(options, "method-context-counts"); + } + + /** + * Calculate Set Mass -- + * Calculate statistics about points-to set sizes. + * + * When this option is set to true, Paddle computes and prints + * various cryptic statistics about the size of the points-to sets + * computed. + */ + public boolean set_mass() { + return soot.PhaseOptions.getBoolean(options, "set-mass"); + } + + /** + * Number nodes -- + * Print node numbers in dumps. + * + * When printing debug information about nodes, this option causes + * the node number of each node to be printed. + */ + public boolean number_nodes() { + return soot.PhaseOptions.getBoolean(options, "number-nodes"); + } + + /** + * Variable ordering + * Selects one of the BDD variable orderings hard-coded in Paddle. + */ + public int order() { + return soot.PhaseOptions.getInt(options, "order"); + } + + /** + * BDD Nodes -- + * Number of BDD nodes to allocate (0=unlimited). + * + * This option specifies the number of BDD nodes to be used by the + * BDD backend. A value of 0 causes the backend to start with one + * million nodes, and allocate more as required. A value other than + * zero causes the backend to start with the specified size, and + * prevents it from ever allocating any more nodes. + */ + public int bdd_nodes() { + return soot.PhaseOptions.getInt(options, "bdd-nodes"); + } + + /** + * Context length (k) + * The maximum length of call string or receiver object string used + * as context. + */ + public int k() { + return soot.PhaseOptions.getInt(options, "k"); + } + + public static final int conf_ofcg = 1; + public static final int conf_cha = 2; + public static final int conf_cha_aot = 3; + public static final int conf_ofcg_aot = 4; + public static final int conf_cha_context_aot = 5; + public static final int conf_ofcg_context_aot = 6; + public static final int conf_cha_context = 7; + public static final int conf_ofcg_context = 8; + + /** + * Configuration -- + * Select Paddle configuration. + * + * Selects the configuration of points-to analysis and call graph + * construction to be used in Paddle. + */ + public int conf() { + String s = soot.PhaseOptions.getString(options, "conf"); + if (s == null || s.isEmpty()) + return conf_ofcg; + + if (s.equalsIgnoreCase("ofcg")) + return conf_ofcg; + if (s.equalsIgnoreCase("cha")) + return conf_cha; + if (s.equalsIgnoreCase("cha-aot")) + return conf_cha_aot; + if (s.equalsIgnoreCase("ofcg-aot")) + return conf_ofcg_aot; + if (s.equalsIgnoreCase("cha-context-aot")) + return conf_cha_context_aot; + if (s.equalsIgnoreCase("ofcg-context-aot")) + return conf_ofcg_context_aot; + if (s.equalsIgnoreCase("cha-context")) + return conf_cha_context; + if (s.equalsIgnoreCase("ofcg-context")) + return conf_ofcg_context; + + throw new RuntimeException(String.format("Invalid value %s of phase option conf", s)); + } + + public static final int q_auto = 1; + public static final int q_trad = 2; + public static final int q_bdd = 3; + public static final int q_debug = 4; + public static final int q_trace = 5; + public static final int q_numtrace = 6; + + /** + * Worklist Implementation -- + * Select queue implementation. + * + * Select the implementation of worklists to be used in Paddle. + */ + public int q() { + String s = soot.PhaseOptions.getString(options, "q"); + if (s == null || s.isEmpty()) + return q_auto; + + if (s.equalsIgnoreCase("auto")) + return q_auto; + if (s.equalsIgnoreCase("trad")) + return q_trad; + if (s.equalsIgnoreCase("bdd")) + return q_bdd; + if (s.equalsIgnoreCase("debug")) + return q_debug; + if (s.equalsIgnoreCase("trace")) + return q_trace; + if (s.equalsIgnoreCase("numtrace")) + return q_numtrace; + + throw new RuntimeException(String.format("Invalid value %s of phase option q", s)); + } + + public static final int backend_auto = 1; + public static final int backend_buddy = 2; + public static final int backend_cudd = 3; + public static final int backend_sable = 4; + public static final int backend_javabdd = 5; + public static final int backend_none = 6; + + /** + * Backend -- + * Select BDD backend. + * + * This option tells Paddle which implementation of BDDs to use. + */ + public int backend() { + String s = soot.PhaseOptions.getString(options, "backend"); + if (s == null || s.isEmpty()) + return backend_auto; + + if (s.equalsIgnoreCase("auto")) + return backend_auto; + if (s.equalsIgnoreCase("buddy")) + return backend_buddy; + if (s.equalsIgnoreCase("cudd")) + return backend_cudd; + if (s.equalsIgnoreCase("sable")) + return backend_sable; + if (s.equalsIgnoreCase("javabdd")) + return backend_javabdd; + if (s.equalsIgnoreCase("none")) + return backend_none; + + throw new RuntimeException(String.format("Invalid value %s of phase option backend", s)); + } + + public static final int context_insens = 1; + public static final int context_1cfa = 2; + public static final int context_kcfa = 3; + public static final int context_objsens = 4; + public static final int context_kobjsens = 5; + public static final int context_uniqkobjsens = 6; + public static final int context_threadkobjsens = 7; + + /** + * Context abstraction -- + * Select context-sensitivity level. + * + * This option tells Paddle which level of context-sensitivity to + * use in constructing the call graph. + */ + public int context() { + String s = soot.PhaseOptions.getString(options, "context"); + if (s == null || s.isEmpty()) + return context_insens; + + if (s.equalsIgnoreCase("insens")) + return context_insens; + if (s.equalsIgnoreCase("1cfa")) + return context_1cfa; + if (s.equalsIgnoreCase("kcfa")) + return context_kcfa; + if (s.equalsIgnoreCase("objsens")) + return context_objsens; + if (s.equalsIgnoreCase("kobjsens")) + return context_kobjsens; + if (s.equalsIgnoreCase("uniqkobjsens")) + return context_uniqkobjsens; + if (s.equalsIgnoreCase("threadkobjsens")) + return context_threadkobjsens; + + throw new RuntimeException(String.format("Invalid value %s of phase option context", s)); + } + + public static final int propagator_auto = 1; + public static final int propagator_iter = 2; + public static final int propagator_worklist = 3; + public static final int propagator_alias = 4; + public static final int propagator_bdd = 5; + public static final int propagator_incbdd = 6; + + /** + * Propagator -- + * Select propagation algorithm. + * + * This option tells Paddle which propagation algorithm to use. + */ + public int propagator() { + String s = soot.PhaseOptions.getString(options, "propagator"); + if (s == null || s.isEmpty()) + return propagator_auto; + + if (s.equalsIgnoreCase("auto")) + return propagator_auto; + if (s.equalsIgnoreCase("iter")) + return propagator_iter; + if (s.equalsIgnoreCase("worklist")) + return propagator_worklist; + if (s.equalsIgnoreCase("alias")) + return propagator_alias; + if (s.equalsIgnoreCase("bdd")) + return propagator_bdd; + if (s.equalsIgnoreCase("incbdd")) + return propagator_incbdd; + + throw new RuntimeException(String.format("Invalid value %s of phase option propagator", s)); + } + + public static final int set_impl_hash = 1; + public static final int set_impl_bit = 2; + public static final int set_impl_hybrid = 3; + public static final int set_impl_array = 4; + public static final int set_impl_heintze = 5; + public static final int set_impl_double = 6; + + /** + * Set Implementation -- + * Select points-to set implementation. + * + * Select an implementation of points-to sets for Paddle to use. + */ + public int set_impl() { + String s = soot.PhaseOptions.getString(options, "set-impl"); + if (s == null || s.isEmpty()) + return set_impl_double; + + if (s.equalsIgnoreCase("hash")) + return set_impl_hash; + if (s.equalsIgnoreCase("bit")) + return set_impl_bit; + if (s.equalsIgnoreCase("hybrid")) + return set_impl_hybrid; + if (s.equalsIgnoreCase("array")) + return set_impl_array; + if (s.equalsIgnoreCase("heintze")) + return set_impl_heintze; + if (s.equalsIgnoreCase("double")) + return set_impl_double; + + throw new RuntimeException(String.format("Invalid value %s of phase option set-impl", s)); + } + + public static final int double_set_old_hash = 1; + public static final int double_set_old_bit = 2; + public static final int double_set_old_hybrid = 3; + public static final int double_set_old_array = 4; + public static final int double_set_old_heintze = 5; + + /** + * Double Set Old -- + * Select implementation of points-to set for old part of double + * set. + * + * Select an implementation for sets of old objects in the double + * points-to set implementation. This option has no effect unless + * Set Implementation is set to double. + */ + public int double_set_old() { + String s = soot.PhaseOptions.getString(options, "double-set-old"); + if (s == null || s.isEmpty()) + return double_set_old_hybrid; + + if (s.equalsIgnoreCase("hash")) + return double_set_old_hash; + if (s.equalsIgnoreCase("bit")) + return double_set_old_bit; + if (s.equalsIgnoreCase("hybrid")) + return double_set_old_hybrid; + if (s.equalsIgnoreCase("array")) + return double_set_old_array; + if (s.equalsIgnoreCase("heintze")) + return double_set_old_heintze; + + throw new RuntimeException(String.format("Invalid value %s of phase option double-set-old", s)); + } + + public static final int double_set_new_hash = 1; + public static final int double_set_new_bit = 2; + public static final int double_set_new_hybrid = 3; + public static final int double_set_new_array = 4; + public static final int double_set_new_heintze = 5; + + /** + * Double Set New -- + * Select implementation of points-to set for new part of double + * set. + * + * Select an implementation for sets of new objects in the double + * points-to set implementation. This option has no effect unless + * Set Implementation is set to double. + */ + public int double_set_new() { + String s = soot.PhaseOptions.getString(options, "double-set-new"); + if (s == null || s.isEmpty()) + return double_set_new_hybrid; + + if (s.equalsIgnoreCase("hash")) + return double_set_new_hash; + if (s.equalsIgnoreCase("bit")) + return double_set_new_bit; + if (s.equalsIgnoreCase("hybrid")) + return double_set_new_hybrid; + if (s.equalsIgnoreCase("array")) + return double_set_new_array; + if (s.equalsIgnoreCase("heintze")) + return double_set_new_heintze; + + throw new RuntimeException(String.format("Invalid value %s of phase option double-set-new", s)); + } } diff --git a/src/main/generated/options/soot/options/ProfilingOptions.java b/src/main/generated/options/soot/options/ProfilingOptions.java index 20adae1856d..5080616f5e8 100644 --- a/src/main/generated/options/soot/options/ProfilingOptions.java +++ b/src/main/generated/options/soot/options/ProfilingOptions.java @@ -23,33 +23,36 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Profiling Generator. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class ProfilingOptions { - private Map options; - - public ProfilingOptions(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * Not Main Entry -- Instrument runBenchmark() instead of main(). - * - * Insert the calls to the MultiCounter at the beginning and end of methods with the signature long - * runBenchmark(java.lang.String[]) instead of the signature void main(java.lang.String[]). - */ - public boolean notmainentry() { - return soot.PhaseOptions.getBoolean(options, "notmainentry"); - } + private Map options; + + public ProfilingOptions(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * Not Main Entry -- + * Instrument runBenchmark() instead of main(). + * + * Insert the calls to the MultiCounter at the beginning and end of + * methods with the signature long runBenchmark(java.lang.String[]) + * instead of the signature void main(java.lang.String[]). + */ + public boolean notmainentry() { + return soot.PhaseOptions.getBoolean(options, "notmainentry"); + } } diff --git a/src/main/generated/options/soot/options/PurityOptions.java b/src/main/generated/options/soot/options/PurityOptions.java index 8fe67aa565b..715b1b0683e 100644 --- a/src/main/generated/options/soot/options/PurityOptions.java +++ b/src/main/generated/options/soot/options/PurityOptions.java @@ -23,66 +23,68 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Purity Analysis [AM]. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class PurityOptions { - private Map options; + private Map options; - public PurityOptions(Map options) { - this.options = options; - } + public PurityOptions(Map options) { + this.options = options; + } - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } - /** - * Dump one .dot files for each method summary - */ - public boolean dump_summaries() { - return soot.PhaseOptions.getBoolean(options, "dump-summaries"); - } + /** + * Dump one .dot files for each method summary + */ + public boolean dump_summaries() { + return soot.PhaseOptions.getBoolean(options, "dump-summaries"); + } - /** - * Dump .dot call-graph annotated with method summaries (huge) - */ - public boolean dump_cg() { - return soot.PhaseOptions.getBoolean(options, "dump-cg"); - } + /** + * Dump .dot call-graph annotated with method summaries (huge) + */ + public boolean dump_cg() { + return soot.PhaseOptions.getBoolean(options, "dump-cg"); + } - /** - * Dump one .dot for each intra-procedural method analysis (long) - */ - public boolean dump_intra() { - return soot.PhaseOptions.getBoolean(options, "dump-intra"); - } + /** + * Dump one .dot for each intra-procedural method analysis (long) + */ + public boolean dump_intra() { + return soot.PhaseOptions.getBoolean(options, "dump-intra"); + } - /** - * Print analysis results - */ - public boolean print() { - return soot.PhaseOptions.getBoolean(options, "print"); - } + /** + * Print analysis results + */ + public boolean print() { + return soot.PhaseOptions.getBoolean(options, "print"); + } - /** - * Annotate class files -- Marks pure methods with a purity bytecode attribute. - * - */ - public boolean annotate() { - return soot.PhaseOptions.getBoolean(options, "annotate"); - } + /** + * Annotate class files -- + * Marks pure methods with a purity bytecode attribute. + * + */ + public boolean annotate() { + return soot.PhaseOptions.getBoolean(options, "annotate"); + } - /** - * Be (quite) verbose - */ - public boolean verbose() { - return soot.PhaseOptions.getBoolean(options, "verbose"); - } + /** + * Be (quite) verbose + */ + public boolean verbose() { + return soot.PhaseOptions.getBoolean(options, "verbose"); + } } diff --git a/src/main/generated/options/soot/options/RenameDuplicatedClasses.java b/src/main/generated/options/soot/options/RenameDuplicatedClasses.java index 8609004ab08..12e3fd02b03 100644 --- a/src/main/generated/options/soot/options/RenameDuplicatedClasses.java +++ b/src/main/generated/options/soot/options/RenameDuplicatedClasses.java @@ -23,33 +23,37 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Rename duplicated classes. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class RenameDuplicatedClasses { - private Map options; - - public RenameDuplicatedClasses(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * FixedClassNames -- Set for the fixed class names.. - * - * Use this parameter to set some class names unchangable even they are duplicated. The fixed class name list cannot - * contain duplicated class names. Using '-' to split multiple class names (e.g., fcn:a.b.c-a.b.d). - */ - public String fixed_class_names() { - return soot.PhaseOptions.getString(options, "fcn fixed-class-names"); - } + private Map options; + + public RenameDuplicatedClasses(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * FixedClassNames -- + * Set for the fixed class names.. + * + * Use this parameter to set some class names unchangable even they + * are duplicated. The fixed class name list cannot contain + * duplicated class names. Using '-' to split multiple class names + * (e.g., fcn:a.b.c-a.b.d). + */ + public String fixed_class_names() { + return soot.PhaseOptions.getString(options, "fcn fixed-class-names"); + } } diff --git a/src/main/generated/options/soot/options/SETOptions.java b/src/main/generated/options/soot/options/SETOptions.java index a3feb166667..ebe95edb0fb 100644 --- a/src/main/generated/options/soot/options/SETOptions.java +++ b/src/main/generated/options/soot/options/SETOptions.java @@ -23,32 +23,36 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Side Effect tagger. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class SETOptions { - private Map options; - - public SETOptions(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * Build naive dependence graph When set to true, the dependence graph is built with a node for each statement, without - * merging the nodes for equivalent statements. This makes it possible to measure the effect of merging nodes for - * equivalent statements on the size of the dependence graph. - */ - public boolean naive() { - return soot.PhaseOptions.getBoolean(options, "naive"); - } + private Map options; + + public SETOptions(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * Build naive dependence graph + * When set to true, the dependence graph is built with a node for + * each statement, without merging the nodes for equivalent + * statements. This makes it possible to measure the effect of + * merging nodes for equivalent statements on the size of the + * dependence graph. + */ + public boolean naive() { + return soot.PhaseOptions.getBoolean(options, "naive"); + } } diff --git a/src/main/generated/options/soot/options/SIOptions.java b/src/main/generated/options/soot/options/SIOptions.java index 885a4f3c7a9..c7c70e0dbcb 100644 --- a/src/main/generated/options/soot/options/SIOptions.java +++ b/src/main/generated/options/soot/options/SIOptions.java @@ -23,102 +23,122 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Static Inliner. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class SIOptions { - private Map options; - - public SIOptions(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * Reconstruct Jimple body after inlining When a method with array parameters is inlined, its variables may need to be - * assigned different types than they had in the original method to produce compilable code. When this option is set, Soot - * re-runs the Jimple Body pack on each method body which has had another method inlined into it so that the typing - * algorithm can reassign the types. - */ - public boolean rerun_jb() { - return soot.PhaseOptions.getBoolean(options, "rerun-jb"); - } - - /** - * Insert Null Checks Insert, before the inlined body of the target method, a check that throws a NullPointerException if - * the receiver object is null. This ensures that inlining will not eliminate exceptions which would have occurred in its - * absence. - */ - public boolean insert_null_checks() { - return soot.PhaseOptions.getBoolean(options, "insert-null-checks"); - } - - /** - * Insert Redundant Casts Insert extra casts for the Java bytecode verifier. The verifier may complain if the inlined - * method uses this and the declared type of the receiver of the call being inlined is different from the type implementing - * the target method being inlined. Say, for example, that Singer is an interface declaring the sing() method and that the - * call graph shows that all receiver objects at a particular call site, singer.sing() (with singer declared as a Singer) - * are in fact Bird objects ( Bird being a class that implements Singer). The implementation of Bird.sing() may perform - * operations on this which are only allowed on Birds, rather than Singers. The Insert Redundant Casts option ensures that - * this cannot lead to verification errors, by inserting a cast of bird to the Bird type before inlining the body of - * Bird.sing(). - */ - public boolean insert_redundant_casts() { - return soot.PhaseOptions.getBoolean(options, "insert-redundant-casts"); - } - - /** - * Max Container Size Determines the maximum number of Jimple statements for a container method. If a method has more than - * this number of Jimple statements, then no methods will be inlined into it. - */ - public int max_container_size() { - return soot.PhaseOptions.getInt(options, "max-container-size"); - } - - /** - * Max Inlinee Size Determines the maximum number of Jimple statements for an inlinee method. If a method has more than - * this number of Jimple statements, then it will not be inlined into other methods. - */ - public int max_inlinee_size() { - return soot.PhaseOptions.getInt(options, "max-inlinee-size"); - } - - /** - * Expansion Factor Determines the maximum allowed expansion of a method. Inlining will cause the method to grow by a - * factor of no more than the Expansion Factor. - */ - public float expansion_factor() { - return soot.PhaseOptions.getFloat(options, "expansion-factor"); - } - - public static final int allowed_modifier_changes_unsafe = 1; - public static final int allowed_modifier_changes_safe = 2; - public static final int allowed_modifier_changes_none = 3; - - /** - * Allowed Modifier Changes Specify which changes in visibility modifiers are allowed. - */ - public int allowed_modifier_changes() { - String s = soot.PhaseOptions.getString(options, "allowed-modifier-changes"); - if (s == null || s.isEmpty()) - return allowed_modifier_changes_unsafe; - - if (s.equalsIgnoreCase("unsafe")) - return allowed_modifier_changes_unsafe; - if (s.equalsIgnoreCase("safe")) - return allowed_modifier_changes_safe; - if (s.equalsIgnoreCase("none")) - return allowed_modifier_changes_none; - - throw new RuntimeException(String.format("Invalid value %s of phase option allowed-modifier-changes", s)); - } + private Map options; + + public SIOptions(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * Reconstruct Jimple body after inlining + * When a method with array parameters is inlined, its variables + * may need to be assigned different types than they had in the + * original method to produce compilable code. When this option is + * set, Soot re-runs the Jimple Body pack on each method body which + * has had another method inlined into it so that the typing + * algorithm can reassign the types. + */ + public boolean rerun_jb() { + return soot.PhaseOptions.getBoolean(options, "rerun-jb"); + } + + /** + * Insert Null Checks + * Insert, before the inlined body of the target method, a check + * that throws a NullPointerException if the receiver object is + * null. This ensures that inlining will not eliminate exceptions + * which would have occurred in its absence. + */ + public boolean insert_null_checks() { + return soot.PhaseOptions.getBoolean(options, "insert-null-checks"); + } + + /** + * Insert Redundant Casts + * Insert extra casts for the Java bytecode verifier. The verifier + * may complain if the inlined method uses this and the declared + * type of the receiver of the call being inlined is different from + * the type implementing the target method being inlined. Say, for + * example, that Singer is an interface declaring the sing() method + * and that the call graph shows that all receiver objects at a + * particular call site, singer.sing() (with singer declared as a + * Singer) are in fact Bird objects ( Bird being a class that + * implements Singer). The implementation of Bird.sing() may + * perform operations on this which are only allowed on Birds, + * rather than Singers. The Insert Redundant Casts option ensures + * that this cannot lead to verification errors, by inserting a + * cast of bird to the Bird type before inlining the body of + * Bird.sing(). + */ + public boolean insert_redundant_casts() { + return soot.PhaseOptions.getBoolean(options, "insert-redundant-casts"); + } + + /** + * Max Container Size + * Determines the maximum number of Jimple statements for a + * container method. If a method has more than this number of + * Jimple statements, then no methods will be inlined into it. + */ + public int max_container_size() { + return soot.PhaseOptions.getInt(options, "max-container-size"); + } + + /** + * Max Inlinee Size + * Determines the maximum number of Jimple statements for an + * inlinee method. If a method has more than this number of Jimple + * statements, then it will not be inlined into other methods. + */ + public int max_inlinee_size() { + return soot.PhaseOptions.getInt(options, "max-inlinee-size"); + } + + /** + * Expansion Factor + * Determines the maximum allowed expansion of a method. Inlining + * will cause the method to grow by a factor of no more than the + * Expansion Factor. + */ + public float expansion_factor() { + return soot.PhaseOptions.getFloat(options, "expansion-factor"); + } + + public static final int allowed_modifier_changes_unsafe = 1; + public static final int allowed_modifier_changes_safe = 2; + public static final int allowed_modifier_changes_none = 3; + + /** + * Allowed Modifier Changes + * Specify which changes in visibility modifiers are allowed. + */ + public int allowed_modifier_changes() { + String s = soot.PhaseOptions.getString(options, "allowed-modifier-changes"); + if (s == null || s.isEmpty()) + return allowed_modifier_changes_unsafe; + + if (s.equalsIgnoreCase("unsafe")) + return allowed_modifier_changes_unsafe; + if (s.equalsIgnoreCase("safe")) + return allowed_modifier_changes_safe; + if (s.equalsIgnoreCase("none")) + return allowed_modifier_changes_none; + + throw new RuntimeException(String.format("Invalid value %s of phase option allowed-modifier-changes", s)); + } } diff --git a/src/main/generated/options/soot/options/SMBOptions.java b/src/main/generated/options/soot/options/SMBOptions.java index 67ceee98d9c..a1ca534b756 100644 --- a/src/main/generated/options/soot/options/SMBOptions.java +++ b/src/main/generated/options/soot/options/SMBOptions.java @@ -23,69 +23,81 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Static Method Binder. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class SMBOptions { - private Map options; - - public SMBOptions(Map options) { - this.options = options; - } + private Map options; - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } + public SMBOptions(Map options) { + this.options = options; + } - /** - * Insert Null Checks Insert a check that, before invoking the static copy of the target method, throws a - * NullPointerException if the receiver object is null. This ensures that static method binding does not eliminate - * exceptions which would have occurred in its absence. - */ - public boolean insert_null_checks() { - return soot.PhaseOptions.getBoolean(options, "insert-null-checks"); - } + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } - /** - * Insert Redundant Casts Insert extra casts for the Java bytecode verifier. If the target method uses its this parameter, - * a reference to the receiver object must be passed to the static copy of the target method. The verifier may complain if - * the declared type of the receiver parameter does not match the type implementing the target method. Say, for example, - * that Singer is an interface declaring the sing() method and that the call graph shows all receiver objects at a - * particular call site, singer.sing() (with singer declared as a Singer) are in fact Bird objects ( Bird being a class - * that implements Singer). The virtual call singer.sing() is effectively replaced with the static call - * Bird.staticsing(singer). Bird.staticsing() may perform operations on its parameter which are only allowed on Birds, - * rather than Singers. The Insert Redundant Casts option inserts a cast of singer to the Bird type, to prevent complaints - * from the verifier. - */ - public boolean insert_redundant_casts() { - return soot.PhaseOptions.getBoolean(options, "insert-redundant-casts"); - } + /** + * Insert Null Checks + * Insert a check that, before invoking the static copy of the + * target method, throws a NullPointerException if the receiver + * object is null. This ensures that static method binding does not + * eliminate exceptions which would have occurred in its absence. + */ + public boolean insert_null_checks() { + return soot.PhaseOptions.getBoolean(options, "insert-null-checks"); + } - public static final int allowed_modifier_changes_unsafe = 1; - public static final int allowed_modifier_changes_safe = 2; - public static final int allowed_modifier_changes_none = 3; + /** + * Insert Redundant Casts + * Insert extra casts for the Java bytecode verifier. If the target + * method uses its this parameter, a reference to the receiver + * object must be passed to the static copy of the target method. + * The verifier may complain if the declared type of the receiver + * parameter does not match the type implementing the target + * method. Say, for example, that Singer is an interface declaring + * the sing() method and that the call graph shows all receiver + * objects at a particular call site, singer.sing() (with singer + * declared as a Singer) are in fact Bird objects ( Bird being a + * class that implements Singer). The virtual call singer.sing() is + * effectively replaced with the static call + * Bird.staticsing(singer). Bird.staticsing() may perform + * operations on its parameter which are only allowed on Birds, + * rather than Singers. The Insert Redundant Casts option inserts a + * cast of singer to the Bird type, to prevent complaints from the + * verifier. + */ + public boolean insert_redundant_casts() { + return soot.PhaseOptions.getBoolean(options, "insert-redundant-casts"); + } - /** - * Allowed Modifier Changes Specify which changes in visibility modifiers are allowed. - */ - public int allowed_modifier_changes() { - String s = soot.PhaseOptions.getString(options, "allowed-modifier-changes"); - if (s == null || s.isEmpty()) - return allowed_modifier_changes_unsafe; + public static final int allowed_modifier_changes_unsafe = 1; + public static final int allowed_modifier_changes_safe = 2; + public static final int allowed_modifier_changes_none = 3; - if (s.equalsIgnoreCase("unsafe")) - return allowed_modifier_changes_unsafe; - if (s.equalsIgnoreCase("safe")) - return allowed_modifier_changes_safe; - if (s.equalsIgnoreCase("none")) - return allowed_modifier_changes_none; + /** + * Allowed Modifier Changes + * Specify which changes in visibility modifiers are allowed. + */ + public int allowed_modifier_changes() { + String s = soot.PhaseOptions.getString(options, "allowed-modifier-changes"); + if (s == null || s.isEmpty()) + return allowed_modifier_changes_unsafe; + + if (s.equalsIgnoreCase("unsafe")) + return allowed_modifier_changes_unsafe; + if (s.equalsIgnoreCase("safe")) + return allowed_modifier_changes_safe; + if (s.equalsIgnoreCase("none")) + return allowed_modifier_changes_none; - throw new RuntimeException(String.format("Invalid value %s of phase option allowed-modifier-changes", s)); - } + throw new RuntimeException(String.format("Invalid value %s of phase option allowed-modifier-changes", s)); + } } diff --git a/src/main/generated/options/soot/options/ShimpleOptions.java b/src/main/generated/options/soot/options/ShimpleOptions.java index f40c3071638..0350c216a76 100644 --- a/src/main/generated/options/soot/options/ShimpleOptions.java +++ b/src/main/generated/options/soot/options/ShimpleOptions.java @@ -23,62 +23,71 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Shimple Control. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class ShimpleOptions { - private Map options; + private Map options; - public ShimpleOptions(Map options) { - this.options = options; - } + public ShimpleOptions(Map options) { + this.options = options; + } - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } - /** - * Shimple Node Elimination Optimizations -- Node elimination optimizations. - * - * Perform some optimizations, such as dead code elimination and local aggregation, before/after eliminating nodes. - */ - public boolean node_elim_opt() { - return soot.PhaseOptions.getBoolean(options, "node-elim-opt"); - } + /** + * Shimple Node Elimination Optimizations -- + * Node elimination optimizations. + * + * Perform some optimizations, such as dead code elimination and + * local aggregation, before/after eliminating nodes. + */ + public boolean node_elim_opt() { + return soot.PhaseOptions.getBoolean(options, "node-elim-opt"); + } - /** - * Local Name Standardization -- Uses naming scheme of the Local Name Standardizer.. - * - * If enabled, the Local Name Standardizer is applied whenever Shimple creates new locals. Normally, Shimple will retain - * the original local names as far as possible and use an underscore notation to denote SSA subscripts. This transformation - * does not otherwise affect Shimple behaviour. - */ - public boolean standard_local_names() { - return soot.PhaseOptions.getBoolean(options, "standard-local-names"); - } + /** + * Local Name Standardization -- + * Uses naming scheme of the Local Name Standardizer.. + * + * If enabled, the Local Name Standardizer is applied whenever + * Shimple creates new locals. Normally, Shimple will retain the + * original local names as far as possible and use an underscore + * notation to denote SSA subscripts. This transformation does not + * otherwise affect Shimple behaviour. + */ + public boolean standard_local_names() { + return soot.PhaseOptions.getBoolean(options, "standard-local-names"); + } - /** - * Extended SSA (SSI) -- Compute extended SSA (SSI) form. - * - * If enabled, Shimple will create extended SSA (SSI) form. - */ - public boolean extended() { - return soot.PhaseOptions.getBoolean(options, "extended"); - } + /** + * Extended SSA (SSI) -- + * Compute extended SSA (SSI) form. + * + * If enabled, Shimple will create extended SSA (SSI) form. + */ + public boolean extended() { + return soot.PhaseOptions.getBoolean(options, "extended"); + } - /** - * Debugging Output -- Enables debugging output, if any. - * - * If enabled, Soot may print out warnings and messages useful for debugging the Shimple module. Automatically enabled by - * the global debug switch. - */ - public boolean debug() { - return soot.PhaseOptions.getBoolean(options, "debug"); - } + /** + * Debugging Output -- + * Enables debugging output, if any. + * + * If enabled, Soot may print out warnings and messages useful for + * debugging the Shimple module. Automatically enabled by the + * global debug switch. + */ + public boolean debug() { + return soot.PhaseOptions.getBoolean(options, "debug"); + } } diff --git a/src/main/generated/options/soot/options/SparkOptions.java b/src/main/generated/options/soot/options/SparkOptions.java index 80d34b0f7f0..bedc0a5c9c6 100644 --- a/src/main/generated/options/soot/options/SparkOptions.java +++ b/src/main/generated/options/soot/options/SparkOptions.java @@ -23,616 +23,737 @@ */ /* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */ -import java.util.Map; + +import java.util.*; /** Option parser for Spark. */ @jakarta.annotation.Generated(value = "Saxonica v3.0", comments = "from soot_options.xml") public class SparkOptions { - private Map options; - - public SparkOptions(Map options) { - this.options = options; - } - - /** - * Enabled - */ - public boolean enabled() { - return soot.PhaseOptions.getBoolean(options, "enabled"); - } - - /** - * Verbose -- Print detailed information about the execution of Spark. - * - * When this option is set to true, Spark prints detailed information about its execution. - */ - public boolean verbose() { - return soot.PhaseOptions.getBoolean(options, "verbose"); - } - - /** - * Ignore Types Entirely -- Make Spark completely ignore declared types of variables. - * - * When this option is set to true, all parts of Spark completely ignore declared types of variables and casts. - */ - public boolean ignore_types() { - return soot.PhaseOptions.getBoolean(options, "ignore-types"); - } - - /** - * Force Garbage Collections -- Force garbage collection for measuring memory usage. - * - * When this option is set to true, calls to System.gc() will be made at various points to allow memory usage to be - * measured. - */ - public boolean force_gc() { - return soot.PhaseOptions.getBoolean(options, "force-gc"); - } - - /** - * Pre Jimplify -- Jimplify all methods before starting Spark. - * - * When this option is set to true, Spark converts all available methods to Jimple before starting the points-to analysis. - * This allows the Jimplification time to be separated from the points-to time. However, it increases the total time and - * memory requirement, because all methods are Jimplified, rather than only those deemed reachable by the points-to - * analysis. - */ - public boolean pre_jimplify() { - return soot.PhaseOptions.getBoolean(options, "pre-jimplify"); - } - - /** - * AppOnly -- Consider only application classes. - * - * Setting this option to true causes Soot to only consider application classes when building the callgraph. The resulting - * callgraph will be inherently unsound. Still, this option can make sense if performance optimization and memory reduction - * are your primary goal. - */ - public boolean apponly() { - return soot.PhaseOptions.getBoolean(options, "apponly"); - } - - /** - * VTA -- Emulate Variable Type Analysis. - * - * Setting VTA to true has the effect of setting field-based, types-for-sites, and simplify-sccs to true, and on-fly-cg to - * false, to simulate Variable Type Analysis, described in our OOPSLA 2000 paper. Note that the algorithm differs from the - * original VTA in that it handles array elements more precisely. - */ - public boolean vta() { - return soot.PhaseOptions.getBoolean(options, "vta"); - } - - /** - * RTA -- Emulate Rapid Type Analysis. - * - * Setting RTA to true sets types-for-sites to true, and causes Spark to use a single points-to set for all variables, - * giving Rapid Type Analysis. - */ - public boolean rta() { - return soot.PhaseOptions.getBoolean(options, "rta"); - } - - /** - * Field Based -- Use a field-based rather than field-sensitive representation. - * - * When this option is set to true, fields are represented by variable (Green) nodes, and the object that the field belongs - * to is ignored (all objects are lumped together), giving a field-based analysis. Otherwise, fields are represented by - * field reference (Red) nodes, and the objects that they belong to are distinguished, giving a field-sensitive analysis. - */ - public boolean field_based() { - return soot.PhaseOptions.getBoolean(options, "field-based"); - } - - /** - * Types For Sites -- Represent objects by their actual type rather than allocation site. - * - * When this option is set to true, types rather than allocation sites are used as the elements of the points-to sets. - */ - public boolean types_for_sites() { - return soot.PhaseOptions.getBoolean(options, "types-for-sites"); - } - - /** - * Merge String Buffer -- Represent all StringBuffers as one object. - * - * When this option is set to true, all allocation sites creating java.lang.StringBuffer objects are grouped together as a - * single allocation site. - */ - public boolean merge_stringbuffer() { - return soot.PhaseOptions.getBoolean(options, "merge-stringbuffer"); - } - - /** - * Propagate All String Constants -- Propagate all string constants, not just class names. - * - * When this option is set to false, Spark only distinguishes string constants that may be the name of a class loaded - * dynamically using reflection, and all other string constants are lumped together into a single string constant node. - * Setting this option to true causes all string constants to be propagated individually. - */ - public boolean string_constants() { - return soot.PhaseOptions.getBoolean(options, "string-constants"); - } - - /** - * Simulate Natives -- Simulate effects of native methods in standard class library. - * - * When this option is set to true, the effects of native methods in the standard Java class library are simulated. - */ - public boolean simulate_natives() { - return soot.PhaseOptions.getBoolean(options, "simulate-natives"); - } - - /** - * Treat EMPTY as Alloc -- Treat singletons for empty sets etc. as allocation sites. - * - * When this option is set to true, Spark treats references to EMPTYSET, EMPTYMAP, and EMPTYLIST as allocation sites for - * HashSet, HashMap and LinkedList objects respectively, and references to Hashtable.emptyIterator as allocation sites for - * Hashtable.EmptyIterator. This enables subsequent analyses to differentiate different uses of Java's immutable empty - * collections. - */ - public boolean empties_as_allocs() { - return soot.PhaseOptions.getBoolean(options, "empties-as-allocs"); - } - - /** - * Simple Edges Bidirectional -- Equality-based analysis between variable nodes. - * - * When this option is set to true, all edges connecting variable (Green) nodes are made bidirectional, as in Steensgaard's - * analysis. - */ - public boolean simple_edges_bidirectional() { - return soot.PhaseOptions.getBoolean(options, "simple-edges-bidirectional"); - } - - /** - * On Fly Call Graph -- Build call graph as receiver types become known. - * - * When this option is set to true, the call graph is computed on-the-fly as points-to information is computed. Otherwise, - * an initial CHA approximation to the call graph is used. - */ - public boolean on_fly_cg() { - return soot.PhaseOptions.getBoolean(options, "on-fly-cg"); - } - - /** - * Simplify Offline -- Collapse single-entry subgraphs of the PAG. - * - * When this option is set to true, variable (Green) nodes which form single-entry subgraphs (so they must have the same - * points-to set) are merged before propagation begins. - */ - public boolean simplify_offline() { - return soot.PhaseOptions.getBoolean(options, "simplify-offline"); - } - - /** - * Simplify SCCs -- Collapse strongly-connected components of the PAG. - * - * When this option is set to true, variable (Green) nodes which form strongly-connected components (so they must have the - * same points-to set) are merged before propagation begins. - */ - public boolean simplify_sccs() { - return soot.PhaseOptions.getBoolean(options, "simplify-sccs"); - } - - /** - * Ignore Types For SCCs -- Ignore declared types when determining node equivalence for SCCs. - * - * When this option is set to true, when collapsing strongly-connected components, nodes forming SCCs are collapsed - * regardless of their declared type. The collapsed SCC is given the most general type of all the nodes in the component. - * When this option is set to false, only edges connecting nodes of the same type are considered when detecting SCCs. This - * option has no effect unless simplify-sccs is true. - */ - public boolean ignore_types_for_sccs() { - return soot.PhaseOptions.getBoolean(options, "ignore-types-for-sccs"); - } - - /** - * Dump HTML -- Dump pointer assignment graph to HTML for debugging. - * - * When this option is set to true, a browseable HTML representation of the pointer assignment graph is output to a file - * called pag.jar after the analysis completes. Note that this representation is typically very large. - */ - public boolean dump_html() { - return soot.PhaseOptions.getBoolean(options, "dump-html"); - } - - /** - * Dump PAG -- Dump pointer assignment graph for other solvers. - * - * When this option is set to true, a representation of the pointer assignment graph suitable for processing with other - * solvers (such as the BDD-based solver) is output before the analysis begins. - */ - public boolean dump_pag() { - return soot.PhaseOptions.getBoolean(options, "dump-pag"); - } - - /** - * Dump Solution -- Dump final solution for comparison with other solvers. - * - * When this option is set to true, a representation of the resulting points-to sets is dumped. The format is similar to - * that of the Dump PAG option, and is therefore suitable for comparison with the results of other solvers. - */ - public boolean dump_solution() { - return soot.PhaseOptions.getBoolean(options, "dump-solution"); - } - - /** - * Topological Sort -- Sort variable nodes in dump. - * - * When this option is set to true, the representation dumped by the Dump PAG option is dumped with the variable (green) - * nodes in (pseudo-)topological order. This option has no effect unless Dump PAG is true. - */ - public boolean topo_sort() { - return soot.PhaseOptions.getBoolean(options, "topo-sort"); - } - - /** - * Dump Types -- Include declared types in dump. - * - * When this option is set to true, the representation dumped by the Dump PAG option includes type information for all - * nodes. This option has no effect unless Dump PAG is true. - */ - public boolean dump_types() { - return soot.PhaseOptions.getBoolean(options, "dump-types"); - } - - /** - * Class Method Var -- In dump, label variables by class and method. - * - * When this option is set to true, the representation dumped by the Dump PAG option represents nodes by numbering each - * class, method, and variable within the method separately, rather than assigning a single integer to each node. This - * option has no effect unless Dump PAG is true. Setting Class Method Var to true has the effect of setting Topological - * Sort to false. - */ - public boolean class_method_var() { - return soot.PhaseOptions.getBoolean(options, "class-method-var"); - } - - /** - * Dump Answer -- Dump computed reaching types for comparison with other solvers. - * - * When this option is set to true, the computed reaching types for each variable are dumped to a file, so that they can be - * compared with the results of other analyses (such as the old VTA). - */ - public boolean dump_answer() { - return soot.PhaseOptions.getBoolean(options, "dump-answer"); - } - - /** - * Add Tags -- Output points-to results in tags for viewing with the Jimple. - * - * When this option is set to true, the results of the analysis are encoded within tags and printed with the resulting - * Jimple code. - */ - public boolean add_tags() { - return soot.PhaseOptions.getBoolean(options, "add-tags"); - } - - /** - * Calculate Set Mass -- Calculate statistics about points-to set sizes. - * - * When this option is set to true, Spark computes and prints various cryptic statistics about the size of the points-to - * sets computed. - */ - public boolean set_mass() { - return soot.PhaseOptions.getBoolean(options, "set-mass"); - } - - /** - * Demand-driven refinement-based context-sensitive points-to analysis -- After running Spark, refine points-to sets on - * demand with context information. - * - * When this option is set to true, Manu Sridharan's demand-driven, refinement-based points-to analysis (PLDI 06) is - * applied after Spark was run. - */ - public boolean cs_demand() { - return soot.PhaseOptions.getBoolean(options, "cs-demand"); - } - - /** - * Create lazy points-to sets -- Create lazy points-to sets that create context information only when needed.. - * - * When this option is disabled, context information is computed for every query to the reachingObjects method. When it is - * enabled, a call to reachingObjects returns a lazy wrapper object that contains a context-insensitive points-to set. This - * set is then automatically refined with context information when necessary, i.e. when we try to determine the - * intersection with another points-to set and this intersection seems to be non-empty. - */ - public boolean lazy_pts() { - return soot.PhaseOptions.getBoolean(options, "lazy-pts"); - } - - /** - * Geometric, context-sensitive points-to analysis -- This switch enables/disables the geometric analysis. - * - * This switch enables/disables the geometric analysis. - */ - public boolean geom_pta() { - return soot.PhaseOptions.getBoolean(options, "geom-pta"); - } - - /** - * Transform to context-insensitive result -- Transform to context-insensitive result. - * - * If you stick to working with SPARK, you can use this option to transform the context sensitive result to insensitive - * result. After the transformation, the context sensitive points-to quries cannot be answered. - */ - public boolean geom_trans() { - return soot.PhaseOptions.getBoolean(options, "geom-trans"); - } - - /** - * Blocking strategy for recursive calls -- Enable blocking strategy for recursive calls. - * - * Blocking strategy is a 1CFA model for recursive calls. This model significantly improves the precision. - */ - public boolean geom_blocking() { - return soot.PhaseOptions.getBoolean(options, "geom-blocking"); - } - - /** - * Pointers processed by geomPTA -- Processing pointers that impact pointers in application code only. - * - * When this option is true, geomPTA only processes the pointers in library functions ( java.*, sun.*, and etc.) that - * potentially impact the points-to information of pointers in application code, the pointers in application code, and the - * base pointers at virtual callsites. - */ - public boolean geom_app_only() { - return soot.PhaseOptions.getBoolean(options, "geom-app-only"); - } - - /** - * Maximal traversal -- Make the analysis traverse at most this number of nodes per query. - * - * Make the analysis traverse at most this number of nodes per query. This quota is evenly shared between multiple passes - * (see next option). - */ - public int traversal() { - return soot.PhaseOptions.getInt(options, "traversal"); - } - - /** - * Maximal number of passes -- Perform at most this number of refinement iterations. - * - * Perform at most this number of refinement iterations. Each iteration traverses at most ( traverse / passes ) nodes. - */ - public int passes() { - return soot.PhaseOptions.getInt(options, "passes"); - } - - /** - * Precision evaluation methodologies -- Precision evaluation methodologies. - * - * We internally provide some precision evaluation methodologies and classify the evaluation strength into three levels. If - * level is 0, we do nothing. If level is 1, we report the statistical information about the points-to result. If level is - * 2, we perform the virtual callsite resolution, static cast safety and all-pairs alias evaluations. - */ - public int geom_eval() { - return soot.PhaseOptions.getInt(options, "geom-eval"); - } - - /** - * Fractional parameter -- Fractional parameter for precision/performance trade-off. - * - * This option specifies the fractional parameter, which manually balances the precision and the performance. Smaller value - * means better performance and worse precision. - */ - public int geom_frac_base() { - return soot.PhaseOptions.getInt(options, "geom-frac-base"); - } - - /** - * Iterations -- Iterations of analysis. - * - * We can run multiple times of the geometric analysis to continuously improve the analysis precision. - */ - public int geom_runs() { - return soot.PhaseOptions.getInt(options, "geom-runs"); - } - - /** - * Verbose dump file -- Filename for detailed execution log. - * - * If you want to save the geomPTA analysis information for future analysis, please provide a file name. - */ - public String geom_dump_verbose() { - return soot.PhaseOptions.getString(options, "geom-dump-verbose"); - } - - /** - * Verification file -- Filename for verification file. - * - * If you want to compare the precision of the points-to results with other solvers (e.g. Paddle), you can use the - * 'verify-file' to specify the list of methods (soot method signature format) that are reachable by that solver. During - * the internal evaluations (see the option geom-eval), we only consider the methods that are common to both solvers. - */ - public String geom_verify_name() { - return soot.PhaseOptions.getString(options, "geom-verify-name"); - } - - public static final int propagator_iter = 1; - public static final int propagator_worklist = 2; - public static final int propagator_cycle = 3; - public static final int propagator_merge = 4; - public static final int propagator_alias = 5; - public static final int propagator_none = 6; - - /** - * Propagator -- Select propagation algorithm. - * - * This option tells Spark which propagation algorithm to use. - */ - public int propagator() { - String s = soot.PhaseOptions.getString(options, "propagator"); - if (s == null || s.isEmpty()) - return propagator_worklist; - - if (s.equalsIgnoreCase("iter")) - return propagator_iter; - if (s.equalsIgnoreCase("worklist")) - return propagator_worklist; - if (s.equalsIgnoreCase("cycle")) - return propagator_cycle; - if (s.equalsIgnoreCase("merge")) - return propagator_merge; - if (s.equalsIgnoreCase("alias")) - return propagator_alias; - if (s.equalsIgnoreCase("none")) - return propagator_none; - - throw new RuntimeException(String.format("Invalid value %s of phase option propagator", s)); - } - - public static final int set_impl_hash = 1; - public static final int set_impl_bit = 2; - public static final int set_impl_hybrid = 3; - public static final int set_impl_array = 4; - public static final int set_impl_heintze = 5; - public static final int set_impl_sharedlist = 6; - public static final int set_impl_double = 7; - - /** - * Set Implementation -- Select points-to set implementation. - * - * Select an implementation of points-to sets for Spark to use. - */ - public int set_impl() { - String s = soot.PhaseOptions.getString(options, "set-impl"); - if (s == null || s.isEmpty()) - return set_impl_double; - - if (s.equalsIgnoreCase("hash")) - return set_impl_hash; - if (s.equalsIgnoreCase("bit")) - return set_impl_bit; - if (s.equalsIgnoreCase("hybrid")) - return set_impl_hybrid; - if (s.equalsIgnoreCase("array")) - return set_impl_array; - if (s.equalsIgnoreCase("heintze")) - return set_impl_heintze; - if (s.equalsIgnoreCase("sharedlist")) - return set_impl_sharedlist; - if (s.equalsIgnoreCase("double")) - return set_impl_double; - - throw new RuntimeException(String.format("Invalid value %s of phase option set-impl", s)); - } - - public static final int double_set_old_hash = 1; - public static final int double_set_old_bit = 2; - public static final int double_set_old_hybrid = 3; - public static final int double_set_old_array = 4; - public static final int double_set_old_heintze = 5; - public static final int double_set_old_sharedlist = 6; - - /** - * Double Set Old -- Select implementation of points-to set for old part of double set. - * - * Select an implementation for sets of old objects in the double points-to set implementation. This option has no effect - * unless Set Implementation is set to double. - */ - public int double_set_old() { - String s = soot.PhaseOptions.getString(options, "double-set-old"); - if (s == null || s.isEmpty()) - return double_set_old_hybrid; - - if (s.equalsIgnoreCase("hash")) - return double_set_old_hash; - if (s.equalsIgnoreCase("bit")) - return double_set_old_bit; - if (s.equalsIgnoreCase("hybrid")) - return double_set_old_hybrid; - if (s.equalsIgnoreCase("array")) - return double_set_old_array; - if (s.equalsIgnoreCase("heintze")) - return double_set_old_heintze; - if (s.equalsIgnoreCase("sharedlist")) - return double_set_old_sharedlist; - - throw new RuntimeException(String.format("Invalid value %s of phase option double-set-old", s)); - } - - public static final int double_set_new_hash = 1; - public static final int double_set_new_bit = 2; - public static final int double_set_new_hybrid = 3; - public static final int double_set_new_array = 4; - public static final int double_set_new_heintze = 5; - public static final int double_set_new_sharedlist = 6; - - /** - * Double Set New -- Select implementation of points-to set for new part of double set. - * - * Select an implementation for sets of new objects in the double points-to set implementation. This option has no effect - * unless Set Implementation is set to double. - */ - public int double_set_new() { - String s = soot.PhaseOptions.getString(options, "double-set-new"); - if (s == null || s.isEmpty()) - return double_set_new_hybrid; - - if (s.equalsIgnoreCase("hash")) - return double_set_new_hash; - if (s.equalsIgnoreCase("bit")) - return double_set_new_bit; - if (s.equalsIgnoreCase("hybrid")) - return double_set_new_hybrid; - if (s.equalsIgnoreCase("array")) - return double_set_new_array; - if (s.equalsIgnoreCase("heintze")) - return double_set_new_heintze; - if (s.equalsIgnoreCase("sharedlist")) - return double_set_new_sharedlist; - - throw new RuntimeException(String.format("Invalid value %s of phase option double-set-new", s)); - } - - public static final int geom_encoding_Geom = 1; - public static final int geom_encoding_HeapIns = 2; - public static final int geom_encoding_PtIns = 3; - - /** - * Encoding methodology used -- Encoding methodology. - * - * This switch specifies the encoding methodology used in the analysis. All possible options are: Geom, HeapIns, PtIns. The - * efficiency order is (from slow to fast) Geom - HeapIns - PtIns, but the precision order is the reverse. - */ - public int geom_encoding() { - String s = soot.PhaseOptions.getString(options, "geom-encoding"); - if (s == null || s.isEmpty()) - return geom_encoding_Geom; - - if (s.equalsIgnoreCase("Geom")) - return geom_encoding_Geom; - if (s.equalsIgnoreCase("HeapIns")) - return geom_encoding_HeapIns; - if (s.equalsIgnoreCase("PtIns")) - return geom_encoding_PtIns; - - throw new RuntimeException(String.format("Invalid value %s of phase option geom-encoding", s)); - } - - public static final int geom_worklist_PQ = 1; - public static final int geom_worklist_FIFO = 2; - - /** - * Worklist type -- Worklist type. - * - * Specifies the worklist used for selecting the next propagation pointer. All possible options are: PQ, FIFO. They stand - * for the priority queue (sorted by the last fire time and topology order) and FIFO queue. - */ - public int geom_worklist() { - String s = soot.PhaseOptions.getString(options, "geom-worklist"); - if (s == null || s.isEmpty()) - return geom_worklist_PQ; - - if (s.equalsIgnoreCase("PQ")) - return geom_worklist_PQ; - if (s.equalsIgnoreCase("FIFO")) - return geom_worklist_FIFO; - - throw new RuntimeException(String.format("Invalid value %s of phase option geom-worklist", s)); - } + private Map options; + + public SparkOptions(Map options) { + this.options = options; + } + + /** + * Enabled + */ + public boolean enabled() { + return soot.PhaseOptions.getBoolean(options, "enabled"); + } + + /** + * Verbose -- + * Print detailed information about the execution of Spark. + * + * When this option is set to true, Spark prints detailed + * information about its execution. + */ + public boolean verbose() { + return soot.PhaseOptions.getBoolean(options, "verbose"); + } + + /** + * Ignore Types Entirely -- + * Make Spark completely ignore declared types of variables. + * + * When this option is set to true, all parts of Spark completely + * ignore declared types of variables and casts. + */ + public boolean ignore_types() { + return soot.PhaseOptions.getBoolean(options, "ignore-types"); + } + + /** + * Force Garbage Collections -- + * Force garbage collection for measuring memory usage. + * + * When this option is set to true, calls to System.gc() will be + * made at various points to allow memory usage to be measured. + */ + public boolean force_gc() { + return soot.PhaseOptions.getBoolean(options, "force-gc"); + } + + /** + * Pre Jimplify -- + * Jimplify all methods before starting Spark. + * + * When this option is set to true, Spark converts all available + * methods to Jimple before starting the points-to analysis. This + * allows the Jimplification time to be separated from the + * points-to time. However, it increases the total time and memory + * requirement, because all methods are Jimplified, rather than + * only those deemed reachable by the points-to analysis. + */ + public boolean pre_jimplify() { + return soot.PhaseOptions.getBoolean(options, "pre-jimplify"); + } + + /** + * AppOnly -- + * Consider only application classes. + * + * Setting this option to true causes Soot to only consider + * application classes when building the callgraph. The resulting + * callgraph will be inherently unsound. Still, this option can + * make sense if performance optimization and memory reduction are + * your primary goal. + */ + public boolean apponly() { + return soot.PhaseOptions.getBoolean(options, "apponly"); + } + + /** + * VTA -- + * Emulate Variable Type Analysis. + * + * Setting VTA to true has the effect of setting field-based, + * types-for-sites, and simplify-sccs to true, and on-fly-cg to + * false, to simulate Variable Type Analysis, described in our + * OOPSLA 2000 paper. Note that the algorithm differs from the + * original VTA in that it handles array elements more precisely. + */ + public boolean vta() { + return soot.PhaseOptions.getBoolean(options, "vta"); + } + + /** + * RTA -- + * Emulate Rapid Type Analysis. + * + * Setting RTA to true sets types-for-sites to true, and causes + * Spark to use a single points-to set for all variables, giving + * Rapid Type Analysis. + */ + public boolean rta() { + return soot.PhaseOptions.getBoolean(options, "rta"); + } + + /** + * Field Based -- + * Use a field-based rather than field-sensitive representation. + * + * When this option is set to true, fields are represented by + * variable (Green) nodes, and the object that the field belongs to + * is ignored (all objects are lumped together), giving a + * field-based analysis. Otherwise, fields are represented by field + * reference (Red) nodes, and the objects that they belong to are + * distinguished, giving a field-sensitive analysis. + */ + public boolean field_based() { + return soot.PhaseOptions.getBoolean(options, "field-based"); + } + + /** + * Types For Sites -- + * Represent objects by their actual type rather than allocation + * site. + * + * When this option is set to true, types rather than allocation + * sites are used as the elements of the points-to sets. + */ + public boolean types_for_sites() { + return soot.PhaseOptions.getBoolean(options, "types-for-sites"); + } + + /** + * Merge String Buffer -- + * Represent all StringBuffers as one object. + * + * When this option is set to true, all allocation sites creating + * java.lang.StringBuffer objects are grouped together as a single + * allocation site. + */ + public boolean merge_stringbuffer() { + return soot.PhaseOptions.getBoolean(options, "merge-stringbuffer"); + } + + /** + * Propagate All String Constants -- + * Propagate all string constants, not just class names. + * + * When this option is set to false, Spark only distinguishes + * string constants that may be the name of a class loaded + * dynamically using reflection, and all other string constants are + * lumped together into a single string constant node. Setting this + * option to true causes all string constants to be propagated + * individually. + */ + public boolean string_constants() { + return soot.PhaseOptions.getBoolean(options, "string-constants"); + } + + /** + * Simulate Natives -- + * Simulate effects of native methods in standard class library. + * + * When this option is set to true, the effects of native methods + * in the standard Java class library are simulated. + */ + public boolean simulate_natives() { + return soot.PhaseOptions.getBoolean(options, "simulate-natives"); + } + + /** + * Treat EMPTY as Alloc -- + * Treat singletons for empty sets etc. as allocation sites. + * + * When this option is set to true, Spark treats references to + * EMPTYSET, EMPTYMAP, and EMPTYLIST as allocation sites for + * HashSet, HashMap and LinkedList objects respectively, and + * references to Hashtable.emptyIterator as allocation sites for + * Hashtable.EmptyIterator. This enables subsequent analyses to + * differentiate different uses of Java's immutable empty + * collections. + */ + public boolean empties_as_allocs() { + return soot.PhaseOptions.getBoolean(options, "empties-as-allocs"); + } + + /** + * Simple Edges Bidirectional -- + * Equality-based analysis between variable nodes. + * + * When this option is set to true, all edges connecting variable + * (Green) nodes are made bidirectional, as in Steensgaard's + * analysis. + */ + public boolean simple_edges_bidirectional() { + return soot.PhaseOptions.getBoolean(options, "simple-edges-bidirectional"); + } + + /** + * On Fly Call Graph -- + * Build call graph as receiver types become known. + * + * When this option is set to true, the call graph is computed + * on-the-fly as points-to information is computed. Otherwise, an + * initial CHA approximation to the call graph is used. + */ + public boolean on_fly_cg() { + return soot.PhaseOptions.getBoolean(options, "on-fly-cg"); + } + + /** + * Simplify Offline -- + * Collapse single-entry subgraphs of the PAG. + * + * When this option is set to true, variable (Green) nodes which + * form single-entry subgraphs (so they must have the same + * points-to set) are merged before propagation begins. + */ + public boolean simplify_offline() { + return soot.PhaseOptions.getBoolean(options, "simplify-offline"); + } + + /** + * Simplify SCCs -- + * Collapse strongly-connected components of the PAG. + * + * When this option is set to true, variable (Green) nodes which + * form strongly-connected components (so they must have the same + * points-to set) are merged before propagation begins. + */ + public boolean simplify_sccs() { + return soot.PhaseOptions.getBoolean(options, "simplify-sccs"); + } + + /** + * Ignore Types For SCCs -- + * Ignore declared types when determining node equivalence for SCCs. + * + * When this option is set to true, when collapsing + * strongly-connected components, nodes forming SCCs are collapsed + * regardless of their declared type. The collapsed SCC is given + * the most general type of all the nodes in the component. When + * this option is set to false, only edges connecting nodes of the + * same type are considered when detecting SCCs. This option has no + * effect unless simplify-sccs is true. + */ + public boolean ignore_types_for_sccs() { + return soot.PhaseOptions.getBoolean(options, "ignore-types-for-sccs"); + } + + /** + * Dump HTML -- + * Dump pointer assignment graph to HTML for debugging. + * + * When this option is set to true, a browseable HTML + * representation of the pointer assignment graph is output to a + * file called pag.jar after the analysis completes. Note that this + * representation is typically very large. + */ + public boolean dump_html() { + return soot.PhaseOptions.getBoolean(options, "dump-html"); + } + + /** + * Dump PAG -- + * Dump pointer assignment graph for other solvers. + * + * When this option is set to true, a representation of the pointer + * assignment graph suitable for processing with other solvers + * (such as the BDD-based solver) is output before the analysis + * begins. + */ + public boolean dump_pag() { + return soot.PhaseOptions.getBoolean(options, "dump-pag"); + } + + /** + * Dump Solution -- + * Dump final solution for comparison with other solvers. + * + * When this option is set to true, a representation of the + * resulting points-to sets is dumped. The format is similar to + * that of the Dump PAG option, and is therefore suitable for + * comparison with the results of other solvers. + */ + public boolean dump_solution() { + return soot.PhaseOptions.getBoolean(options, "dump-solution"); + } + + /** + * Topological Sort -- + * Sort variable nodes in dump. + * + * When this option is set to true, the representation dumped by + * the Dump PAG option is dumped with the variable (green) nodes in + * (pseudo-)topological order. This option has no effect unless + * Dump PAG is true. + */ + public boolean topo_sort() { + return soot.PhaseOptions.getBoolean(options, "topo-sort"); + } + + /** + * Dump Types -- + * Include declared types in dump. + * + * When this option is set to true, the representation dumped by + * the Dump PAG option includes type information for all nodes. + * This option has no effect unless Dump PAG is true. + */ + public boolean dump_types() { + return soot.PhaseOptions.getBoolean(options, "dump-types"); + } + + /** + * Class Method Var -- + * In dump, label variables by class and method. + * + * When this option is set to true, the representation dumped by + * the Dump PAG option represents nodes by numbering each class, + * method, and variable within the method separately, rather than + * assigning a single integer to each node. This option has no + * effect unless Dump PAG is true. Setting Class Method Var to true + * has the effect of setting Topological Sort to false. + */ + public boolean class_method_var() { + return soot.PhaseOptions.getBoolean(options, "class-method-var"); + } + + /** + * Dump Answer -- + * Dump computed reaching types for comparison with other solvers. + * + * When this option is set to true, the computed reaching types for + * each variable are dumped to a file, so that they can be compared + * with the results of other analyses (such as the old VTA). + */ + public boolean dump_answer() { + return soot.PhaseOptions.getBoolean(options, "dump-answer"); + } + + /** + * Add Tags -- + * Output points-to results in tags for viewing with the Jimple. + * + * When this option is set to true, the results of the analysis are + * encoded within tags and printed with the resulting Jimple code. + */ + public boolean add_tags() { + return soot.PhaseOptions.getBoolean(options, "add-tags"); + } + + /** + * Calculate Set Mass -- + * Calculate statistics about points-to set sizes. + * + * When this option is set to true, Spark computes and prints + * various cryptic statistics about the size of the points-to sets + * computed. + */ + public boolean set_mass() { + return soot.PhaseOptions.getBoolean(options, "set-mass"); + } + + /** + * Demand-driven refinement-based context-sensitive points-to analysis -- + * After running Spark, refine points-to sets on demand with + * context information. + * + * When this option is set to true, Manu Sridharan's demand-driven, + * refinement-based points-to analysis (PLDI 06) is applied after + * Spark was run. + */ + public boolean cs_demand() { + return soot.PhaseOptions.getBoolean(options, "cs-demand"); + } + + /** + * Create lazy points-to sets -- + * Create lazy points-to sets that create context information only + * when needed.. + * + * When this option is disabled, context information is computed + * for every query to the reachingObjects method. When it is + * enabled, a call to reachingObjects returns a lazy wrapper object + * that contains a context-insensitive points-to set. This set is + * then automatically refined with context information when + * necessary, i.e. when we try to determine the intersection with + * another points-to set and this intersection seems to be + * non-empty. + */ + public boolean lazy_pts() { + return soot.PhaseOptions.getBoolean(options, "lazy-pts"); + } + + /** + * Geometric, context-sensitive points-to analysis -- + * This switch enables/disables the geometric analysis. + * + * This switch enables/disables the geometric analysis. + */ + public boolean geom_pta() { + return soot.PhaseOptions.getBoolean(options, "geom-pta"); + } + + /** + * Transform to context-insensitive result -- + * Transform to context-insensitive result. + * + * If you stick to working with SPARK, you can use this option to + * transform the context sensitive result to insensitive result. + * After the transformation, the context sensitive points-to quries + * cannot be answered. + */ + public boolean geom_trans() { + return soot.PhaseOptions.getBoolean(options, "geom-trans"); + } + + /** + * Blocking strategy for recursive calls -- + * Enable blocking strategy for recursive calls. + * + * Blocking strategy is a 1CFA model for recursive calls. This + * model significantly improves the precision. + */ + public boolean geom_blocking() { + return soot.PhaseOptions.getBoolean(options, "geom-blocking"); + } + + /** + * Pointers processed by geomPTA -- + * Processing pointers that impact pointers in application code + * only. + * + * When this option is true, geomPTA only processes the pointers in + * library functions ( java.*, sun.*, and etc.) that potentially + * impact the points-to information of pointers in application + * code, the pointers in application code, and the base pointers at + * virtual callsites. + */ + public boolean geom_app_only() { + return soot.PhaseOptions.getBoolean(options, "geom-app-only"); + } + + /** + * Maximal traversal -- + * Make the analysis traverse at most this number of nodes per + * query. + * + * Make the analysis traverse at most this number of nodes per + * query. This quota is evenly shared between multiple passes (see + * next option). + */ + public int traversal() { + return soot.PhaseOptions.getInt(options, "traversal"); + } + + /** + * Maximal number of passes -- + * Perform at most this number of refinement iterations. + * + * Perform at most this number of refinement iterations. Each + * iteration traverses at most ( traverse / passes ) nodes. + */ + public int passes() { + return soot.PhaseOptions.getInt(options, "passes"); + } + + /** + * Precision evaluation methodologies -- + * Precision evaluation methodologies. + * + * We internally provide some precision evaluation methodologies + * and classify the evaluation strength into three levels. If level + * is 0, we do nothing. If level is 1, we report the statistical + * information about the points-to result. If level is 2, we + * perform the virtual callsite resolution, static cast safety and + * all-pairs alias evaluations. + */ + public int geom_eval() { + return soot.PhaseOptions.getInt(options, "geom-eval"); + } + + /** + * Fractional parameter -- + * Fractional parameter for precision/performance trade-off. + * + * This option specifies the fractional parameter, which manually + * balances the precision and the performance. Smaller value means + * better performance and worse precision. + */ + public int geom_frac_base() { + return soot.PhaseOptions.getInt(options, "geom-frac-base"); + } + + /** + * Iterations -- + * Iterations of analysis. + * + * We can run multiple times of the geometric analysis to + * continuously improve the analysis precision. + */ + public int geom_runs() { + return soot.PhaseOptions.getInt(options, "geom-runs"); + } + + /** + * Verbose dump file -- + * Filename for detailed execution log. + * + * If you want to save the geomPTA analysis information for future + * analysis, please provide a file name. + */ + public String geom_dump_verbose() { + return soot.PhaseOptions.getString(options, "geom-dump-verbose"); + } + + /** + * Verification file -- + * Filename for verification file. + * + * If you want to compare the precision of the points-to results + * with other solvers (e.g. Paddle), you can use the 'verify-file' + * to specify the list of methods (soot method signature format) + * that are reachable by that solver. During the internal + * evaluations (see the option geom-eval), we only consider the + * methods that are common to both solvers. + */ + public String geom_verify_name() { + return soot.PhaseOptions.getString(options, "geom-verify-name"); + } + + public static final int propagator_iter = 1; + public static final int propagator_worklist = 2; + public static final int propagator_cycle = 3; + public static final int propagator_merge = 4; + public static final int propagator_alias = 5; + public static final int propagator_none = 6; + + /** + * Propagator -- + * Select propagation algorithm. + * + * This option tells Spark which propagation algorithm to use. + */ + public int propagator() { + String s = soot.PhaseOptions.getString(options, "propagator"); + if (s == null || s.isEmpty()) + return propagator_worklist; + + if (s.equalsIgnoreCase("iter")) + return propagator_iter; + if (s.equalsIgnoreCase("worklist")) + return propagator_worklist; + if (s.equalsIgnoreCase("cycle")) + return propagator_cycle; + if (s.equalsIgnoreCase("merge")) + return propagator_merge; + if (s.equalsIgnoreCase("alias")) + return propagator_alias; + if (s.equalsIgnoreCase("none")) + return propagator_none; + + throw new RuntimeException(String.format("Invalid value %s of phase option propagator", s)); + } + + public static final int set_impl_hash = 1; + public static final int set_impl_bit = 2; + public static final int set_impl_hybrid = 3; + public static final int set_impl_array = 4; + public static final int set_impl_heintze = 5; + public static final int set_impl_sharedlist = 6; + public static final int set_impl_double = 7; + + /** + * Set Implementation -- + * Select points-to set implementation. + * + * Select an implementation of points-to sets for Spark to use. + */ + public int set_impl() { + String s = soot.PhaseOptions.getString(options, "set-impl"); + if (s == null || s.isEmpty()) + return set_impl_double; + + if (s.equalsIgnoreCase("hash")) + return set_impl_hash; + if (s.equalsIgnoreCase("bit")) + return set_impl_bit; + if (s.equalsIgnoreCase("hybrid")) + return set_impl_hybrid; + if (s.equalsIgnoreCase("array")) + return set_impl_array; + if (s.equalsIgnoreCase("heintze")) + return set_impl_heintze; + if (s.equalsIgnoreCase("sharedlist")) + return set_impl_sharedlist; + if (s.equalsIgnoreCase("double")) + return set_impl_double; + + throw new RuntimeException(String.format("Invalid value %s of phase option set-impl", s)); + } + + public static final int double_set_old_hash = 1; + public static final int double_set_old_bit = 2; + public static final int double_set_old_hybrid = 3; + public static final int double_set_old_array = 4; + public static final int double_set_old_heintze = 5; + public static final int double_set_old_sharedlist = 6; + + /** + * Double Set Old -- + * Select implementation of points-to set for old part of double + * set. + * + * Select an implementation for sets of old objects in the double + * points-to set implementation. This option has no effect unless + * Set Implementation is set to double. + */ + public int double_set_old() { + String s = soot.PhaseOptions.getString(options, "double-set-old"); + if (s == null || s.isEmpty()) + return double_set_old_hybrid; + + if (s.equalsIgnoreCase("hash")) + return double_set_old_hash; + if (s.equalsIgnoreCase("bit")) + return double_set_old_bit; + if (s.equalsIgnoreCase("hybrid")) + return double_set_old_hybrid; + if (s.equalsIgnoreCase("array")) + return double_set_old_array; + if (s.equalsIgnoreCase("heintze")) + return double_set_old_heintze; + if (s.equalsIgnoreCase("sharedlist")) + return double_set_old_sharedlist; + + throw new RuntimeException(String.format("Invalid value %s of phase option double-set-old", s)); + } + + public static final int double_set_new_hash = 1; + public static final int double_set_new_bit = 2; + public static final int double_set_new_hybrid = 3; + public static final int double_set_new_array = 4; + public static final int double_set_new_heintze = 5; + public static final int double_set_new_sharedlist = 6; + + /** + * Double Set New -- + * Select implementation of points-to set for new part of double + * set. + * + * Select an implementation for sets of new objects in the double + * points-to set implementation. This option has no effect unless + * Set Implementation is set to double. + */ + public int double_set_new() { + String s = soot.PhaseOptions.getString(options, "double-set-new"); + if (s == null || s.isEmpty()) + return double_set_new_hybrid; + + if (s.equalsIgnoreCase("hash")) + return double_set_new_hash; + if (s.equalsIgnoreCase("bit")) + return double_set_new_bit; + if (s.equalsIgnoreCase("hybrid")) + return double_set_new_hybrid; + if (s.equalsIgnoreCase("array")) + return double_set_new_array; + if (s.equalsIgnoreCase("heintze")) + return double_set_new_heintze; + if (s.equalsIgnoreCase("sharedlist")) + return double_set_new_sharedlist; + + throw new RuntimeException(String.format("Invalid value %s of phase option double-set-new", s)); + } + + public static final int geom_encoding_Geom = 1; + public static final int geom_encoding_HeapIns = 2; + public static final int geom_encoding_PtIns = 3; + + /** + * Encoding methodology used -- + * Encoding methodology. + * + * This switch specifies the encoding methodology used in the + * analysis. All possible options are: Geom, HeapIns, PtIns. The + * efficiency order is (from slow to fast) Geom - HeapIns - PtIns, + * but the precision order is the reverse. + */ + public int geom_encoding() { + String s = soot.PhaseOptions.getString(options, "geom-encoding"); + if (s == null || s.isEmpty()) + return geom_encoding_Geom; + + if (s.equalsIgnoreCase("Geom")) + return geom_encoding_Geom; + if (s.equalsIgnoreCase("HeapIns")) + return geom_encoding_HeapIns; + if (s.equalsIgnoreCase("PtIns")) + return geom_encoding_PtIns; + + throw new RuntimeException(String.format("Invalid value %s of phase option geom-encoding", s)); + } + + public static final int geom_worklist_PQ = 1; + public static final int geom_worklist_FIFO = 2; + + /** + * Worklist type -- + * Worklist type. + * + * Specifies the worklist used for selecting the next propagation + * pointer. All possible options are: PQ, FIFO. They stand for the + * priority queue (sorted by the last fire time and topology order) + * and FIFO queue. + */ + public int geom_worklist() { + String s = soot.PhaseOptions.getString(options, "geom-worklist"); + if (s == null || s.isEmpty()) + return geom_worklist_PQ; + + if (s.equalsIgnoreCase("PQ")) + return geom_worklist_PQ; + if (s.equalsIgnoreCase("FIFO")) + return geom_worklist_FIFO; + + throw new RuntimeException(String.format("Invalid value %s of phase option geom-worklist", s)); + } } diff --git a/src/main/generated/sablecc/soot/jimple/parser/parser/Parser.java b/src/main/generated/sablecc/soot/jimple/parser/parser/Parser.java index 1e14ebd1293..5c0ab02628a 100644 --- a/src/main/generated/sablecc/soot/jimple/parser/parser/Parser.java +++ b/src/main/generated/sablecc/soot/jimple/parser/parser/Parser.java @@ -2,7590 +2,7614 @@ package soot.jimple.parser.parser; -import soot.jimple.parser.lexer.*; -import soot.jimple.parser.node.*; -import soot.jimple.parser.analysis.*; -import java.util.*; - -import java.io.DataInputStream; import java.io.BufferedInputStream; +import java.io.DataInputStream; import java.io.IOException; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.ListIterator; + +import soot.jimple.parser.analysis.Analysis; +import soot.jimple.parser.analysis.AnalysisAdapter; +import soot.jimple.parser.lexer.Lexer; +import soot.jimple.parser.lexer.LexerException; +import soot.jimple.parser.node.*; @SuppressWarnings("nls") -public class Parser -{ - public final Analysis ignoredTokens = new AnalysisAdapter(); - - protected ArrayList nodeList; - - private final Lexer lexer; - private final ListIterator stack = new LinkedList().listIterator(); - private int last_pos; - private int last_line; - private Token last_token; - private final TokenIndex converter = new TokenIndex(); - private final int[] action = new int[2]; - - private final static int SHIFT = 0; - private final static int REDUCE = 1; - private final static int ACCEPT = 2; - private final static int ERROR = 3; - - public Parser(@SuppressWarnings("hiding") Lexer lexer) - { - this.lexer = lexer; - } - - protected void filter() throws ParserException, LexerException, IOException - { - // Empty body - } - - private void push(int numstate, ArrayList listNode, boolean hidden) throws ParserException, LexerException, IOException - { - this.nodeList = listNode; - - if(!hidden) - { - filter(); - } - - if(!this.stack.hasNext()) - { - this.stack.add(new State(numstate, this.nodeList)); - return; - } - - State s = (State) this.stack.next(); - s.state = numstate; - s.nodes = this.nodeList; - } - - private int goTo(int index) - { - int state = state(); - int low = 1; - int high = gotoTable[index].length - 1; - int value = gotoTable[index][0][1]; - - while(low <= high) - { - // int middle = (low + high) / 2; - int middle = (low + high) >>> 1; - - if(state < gotoTable[index][middle][0]) +public class Parser { + public final Analysis ignoredTokens = new AnalysisAdapter(); + + protected ArrayList nodeList; + + private final Lexer lexer; + private final ListIterator stack = new LinkedList().listIterator(); + private int last_pos; + private int last_line; + private Token last_token; + private final TokenIndex converter = new TokenIndex(); + private final int[] action = new int[2]; + + private final static int SHIFT = 0; + private final static int REDUCE = 1; + private final static int ACCEPT = 2; + private final static int ERROR = 3; + + public Parser(@SuppressWarnings("hiding") Lexer lexer) { + this.lexer = lexer; + } + + protected void filter() throws ParserException, LexerException, IOException { + // Empty body + } + + private void push(int numstate, ArrayList listNode, boolean hidden) + throws ParserException, LexerException, IOException { + this.nodeList = listNode; + + if (!hidden) { + filter(); + } + + if (!this.stack.hasNext()) { + this.stack.add(new State(numstate, this.nodeList)); + return; + } + + State s = (State) this.stack.next(); + s.state = numstate; + s.nodes = this.nodeList; + } + + private int goTo(int index) { + int state = state(); + int low = 1; + int high = gotoTable[index].length - 1; + int value = gotoTable[index][0][1]; + + while (low <= high) { + // int middle = (low + high) / 2; + int middle = (low + high) >>> 1; + + if (state < gotoTable[index][middle][0]) { + high = middle - 1; + } else if (state > gotoTable[index][middle][0]) { + low = middle + 1; + } else { + value = gotoTable[index][middle][1]; + break; + } + } + + return value; + } + + private int state() { + State s = (State) this.stack.previous(); + this.stack.next(); + return s.state; + } + + private ArrayList pop() { + return ((State) this.stack.previous()).nodes; + } + + private int index(Switchable token) { + this.converter.index = -1; + token.apply(this.converter); + return this.converter.index; + } + + @SuppressWarnings("unchecked") + public Start parse() throws ParserException, LexerException, IOException { + push(0, null, true); + List ign = null; + while (true) { + while (index(this.lexer.peek()) == -1) { + if (ign == null) { + ign = new LinkedList(); + } + + ign.add(this.lexer.next()); + } + + if (ign != null) { + this.ignoredTokens.setIn(this.lexer.peek(), ign); + ign = null; + } + + this.last_pos = this.lexer.peek().getPos(); + this.last_line = this.lexer.peek().getLine(); + this.last_token = this.lexer.peek(); + + int index = index(this.lexer.peek()); + this.action[0] = Parser.actionTable[state()][0][1]; + this.action[1] = Parser.actionTable[state()][0][2]; + + int low = 1; + int high = Parser.actionTable[state()].length - 1; + + while (low <= high) { + int middle = (low + high) / 2; + + if (index < Parser.actionTable[state()][middle][0]) { + high = middle - 1; + } else if (index > Parser.actionTable[state()][middle][0]) { + low = middle + 1; + } else { + this.action[0] = Parser.actionTable[state()][middle][1]; + this.action[1] = Parser.actionTable[state()][middle][2]; + break; + } + } + + switch (this.action[0]) { + case SHIFT: { + ArrayList list = new ArrayList(); + list.add(this.lexer.next()); + push(this.action[1], list, false); + } + break; + case REDUCE: + switch (this.action[1]) { + case 0: /* reduce AAfile1File */ { - high = middle - 1; + ArrayList list = new0(); + push(goTo(0), list, false); } - else if(state > gotoTable[index][middle][0]) + break; + case 1: /* reduce AAfile2File */ { - low = middle + 1; + ArrayList list = new1(); + push(goTo(0), list, false); } - else + break; + case 2: /* reduce AAfile3File */ { - value = gotoTable[index][middle][1]; - break; + ArrayList list = new2(); + push(goTo(0), list, false); } - } - - return value; - } - - private int state() - { - State s = (State) this.stack.previous(); - this.stack.next(); - return s.state; - } - - private ArrayList pop() - { - return ((State) this.stack.previous()).nodes; - } - - private int index(Switchable token) - { - this.converter.index = -1; - token.apply(this.converter); - return this.converter.index; - } - - @SuppressWarnings("unchecked") - public Start parse() throws ParserException, LexerException, IOException - { - push(0, null, true); - List ign = null; - while(true) - { - while(index(this.lexer.peek()) == -1) - { - if(ign == null) - { - ign = new LinkedList(); - } - - ign.add(this.lexer.next()); - } - - if(ign != null) - { - this.ignoredTokens.setIn(this.lexer.peek(), ign); - ign = null; - } - - this.last_pos = this.lexer.peek().getPos(); - this.last_line = this.lexer.peek().getLine(); - this.last_token = this.lexer.peek(); - - int index = index(this.lexer.peek()); - this.action[0] = Parser.actionTable[state()][0][1]; - this.action[1] = Parser.actionTable[state()][0][2]; - - int low = 1; - int high = Parser.actionTable[state()].length - 1; - - while(low <= high) - { - int middle = (low + high) / 2; - - if(index < Parser.actionTable[state()][middle][0]) - { - high = middle - 1; - } - else if(index > Parser.actionTable[state()][middle][0]) - { - low = middle + 1; - } - else - { - this.action[0] = Parser.actionTable[state()][middle][1]; - this.action[1] = Parser.actionTable[state()][middle][2]; - break; - } - } - - switch(this.action[0]) - { - case SHIFT: - { - ArrayList list = new ArrayList(); - list.add(this.lexer.next()); - push(this.action[1], list, false); - } - break; - case REDUCE: - switch(this.action[1]) - { - case 0: /* reduce AAfile1File */ - { - ArrayList list = new0(); - push(goTo(0), list, false); - } - break; - case 1: /* reduce AAfile2File */ - { - ArrayList list = new1(); - push(goTo(0), list, false); - } - break; - case 2: /* reduce AAfile3File */ - { - ArrayList list = new2(); - push(goTo(0), list, false); - } - break; - case 3: /* reduce AAfile4File */ - { - ArrayList list = new3(); - push(goTo(0), list, false); - } - break; - case 4: /* reduce AAfile5File */ - { - ArrayList list = new4(); - push(goTo(0), list, false); - } - break; - case 5: /* reduce AAfile6File */ - { - ArrayList list = new5(); - push(goTo(0), list, false); - } - break; - case 6: /* reduce AAfile7File */ - { - ArrayList list = new6(); - push(goTo(0), list, false); - } - break; - case 7: /* reduce AAfile8File */ - { - ArrayList list = new7(); - push(goTo(0), list, false); - } - break; - case 8: /* reduce AAbstractModifier */ - { - ArrayList list = new8(); - push(goTo(1), list, false); - } - break; - case 9: /* reduce AFinalModifier */ - { - ArrayList list = new9(); - push(goTo(1), list, false); - } - break; - case 10: /* reduce ANativeModifier */ - { - ArrayList list = new10(); - push(goTo(1), list, false); - } - break; - case 11: /* reduce APublicModifier */ - { - ArrayList list = new11(); - push(goTo(1), list, false); - } - break; - case 12: /* reduce AProtectedModifier */ - { - ArrayList list = new12(); - push(goTo(1), list, false); - } - break; - case 13: /* reduce APrivateModifier */ - { - ArrayList list = new13(); - push(goTo(1), list, false); - } - break; - case 14: /* reduce AStaticModifier */ - { - ArrayList list = new14(); - push(goTo(1), list, false); - } - break; - case 15: /* reduce ASynchronizedModifier */ - { - ArrayList list = new15(); - push(goTo(1), list, false); - } - break; - case 16: /* reduce ATransientModifier */ - { - ArrayList list = new16(); - push(goTo(1), list, false); - } - break; - case 17: /* reduce AVolatileModifier */ - { - ArrayList list = new17(); - push(goTo(1), list, false); - } - break; - case 18: /* reduce AStrictfpModifier */ - { - ArrayList list = new18(); - push(goTo(1), list, false); - } - break; - case 19: /* reduce AEnumModifier */ - { - ArrayList list = new19(); - push(goTo(1), list, false); - } - break; - case 20: /* reduce AAnnotationModifier */ - { - ArrayList list = new20(); - push(goTo(1), list, false); - } - break; - case 21: /* reduce AClassFileType */ - { - ArrayList list = new21(); - push(goTo(2), list, false); - } - break; - case 22: /* reduce AInterfaceFileType */ - { - ArrayList list = new22(); - push(goTo(2), list, false); - } - break; - case 23: /* reduce AExtendsClause */ - { - ArrayList list = new23(); - push(goTo(3), list, false); - } - break; - case 24: /* reduce AImplementsClause */ - { - ArrayList list = new24(); - push(goTo(4), list, false); - } - break; - case 25: /* reduce AAfilebody1FileBody */ - { - ArrayList list = new25(); - push(goTo(5), list, false); - } - break; - case 26: /* reduce AAfilebody2FileBody */ - { - ArrayList list = new26(); - push(goTo(5), list, false); - } - break; - case 27: /* reduce ASingleNameList */ - { - ArrayList list = new27(); - push(goTo(6), list, false); - } - break; - case 28: /* reduce AMultiNameList */ - { - ArrayList list = new28(); - push(goTo(6), list, false); - } - break; - case 29: /* reduce AClassNameSingleClassNameList */ - { - ArrayList list = new29(); - push(goTo(7), list, false); - } - break; - case 30: /* reduce AClassNameMultiClassNameList */ - { - ArrayList list = new30(); - push(goTo(7), list, false); - } - break; - case 31: /* reduce AAfieldmember1Member */ - { - ArrayList list = new31(); - push(goTo(8), list, false); - } - break; - case 32: /* reduce AAfieldmember2Member */ - { - ArrayList list = new32(); - push(goTo(8), list, false); - } - break; - case 33: /* reduce AAmethodmember1Member */ - { - ArrayList list = new33(); - push(goTo(8), list, false); - } - break; - case 34: /* reduce AAmethodmember2Member */ - { - ArrayList list = new34(); - push(goTo(8), list, false); - } - break; - case 35: /* reduce AAmethodmember3Member */ - { - ArrayList list = new35(); - push(goTo(8), list, false); - } - break; - case 36: /* reduce AAmethodmember4Member */ - { - ArrayList list = new36(); - push(goTo(8), list, false); - } - break; - case 37: /* reduce AAmethodmember5Member */ - { - ArrayList list = new37(); - push(goTo(8), list, false); - } - break; - case 38: /* reduce AAmethodmember6Member */ - { - ArrayList list = new38(); - push(goTo(8), list, false); - } - break; - case 39: /* reduce AAmethodmember7Member */ - { - ArrayList list = new39(); - push(goTo(8), list, false); - } - break; - case 40: /* reduce AAmethodmember8Member */ - { - ArrayList list = new40(); - push(goTo(8), list, false); - } - break; - case 41: /* reduce AVoidType */ - { - ArrayList list = new41(); - push(goTo(9), list, false); - } - break; - case 42: /* reduce ANovoidType */ - { - ArrayList list = new42(); - push(goTo(9), list, false); - } - break; - case 43: /* reduce ASingleParameterList */ - { - ArrayList list = new43(); - push(goTo(10), list, false); - } - break; - case 44: /* reduce AMultiParameterList */ - { - ArrayList list = new44(); - push(goTo(10), list, false); - } - break; - case 45: /* reduce AParameter */ - { - ArrayList list = new45(); - push(goTo(11), list, false); - } - break; - case 46: /* reduce AThrowsClause */ - { - ArrayList list = new46(); - push(goTo(12), list, false); - } - break; - case 47: /* reduce ABooleanBaseTypeNoName */ - { - ArrayList list = new47(); - push(goTo(13), list, false); - } - break; - case 48: /* reduce AByteBaseTypeNoName */ - { - ArrayList list = new48(); - push(goTo(13), list, false); - } - break; - case 49: /* reduce ACharBaseTypeNoName */ - { - ArrayList list = new49(); - push(goTo(13), list, false); - } - break; - case 50: /* reduce AShortBaseTypeNoName */ - { - ArrayList list = new50(); - push(goTo(13), list, false); - } - break; - case 51: /* reduce AIntBaseTypeNoName */ - { - ArrayList list = new51(); - push(goTo(13), list, false); - } - break; - case 52: /* reduce ALongBaseTypeNoName */ - { - ArrayList list = new52(); - push(goTo(13), list, false); - } - break; - case 53: /* reduce AFloatBaseTypeNoName */ - { - ArrayList list = new53(); - push(goTo(13), list, false); - } - break; - case 54: /* reduce ADoubleBaseTypeNoName */ - { - ArrayList list = new54(); - push(goTo(13), list, false); - } - break; - case 55: /* reduce ANullBaseTypeNoName */ - { - ArrayList list = new55(); - push(goTo(13), list, false); - } - break; - case 56: /* reduce ABooleanBaseType */ - { - ArrayList list = new56(); - push(goTo(14), list, false); - } - break; - case 57: /* reduce AByteBaseType */ - { - ArrayList list = new57(); - push(goTo(14), list, false); - } - break; - case 58: /* reduce ACharBaseType */ - { - ArrayList list = new58(); - push(goTo(14), list, false); - } - break; - case 59: /* reduce AShortBaseType */ - { - ArrayList list = new59(); - push(goTo(14), list, false); - } - break; - case 60: /* reduce AIntBaseType */ - { - ArrayList list = new60(); - push(goTo(14), list, false); - } - break; - case 61: /* reduce ALongBaseType */ - { - ArrayList list = new61(); - push(goTo(14), list, false); - } - break; - case 62: /* reduce AFloatBaseType */ - { - ArrayList list = new62(); - push(goTo(14), list, false); - } - break; - case 63: /* reduce ADoubleBaseType */ - { - ArrayList list = new63(); - push(goTo(14), list, false); - } - break; - case 64: /* reduce ANullBaseType */ - { - ArrayList list = new64(); - push(goTo(14), list, false); - } - break; - case 65: /* reduce AClassNameBaseType */ - { - ArrayList list = new65(); - push(goTo(14), list, false); - } - break; - case 66: /* reduce AAbasenonvoidtype1NonvoidType */ - { - ArrayList list = new66(); - push(goTo(15), list, false); - } - break; - case 67: /* reduce AAbasenonvoidtype2NonvoidType */ - { - ArrayList list = new67(); - push(goTo(15), list, false); - } - break; - case 68: /* reduce AAquotednonvoidtype1NonvoidType */ - { - ArrayList list = new68(); - push(goTo(15), list, false); - } - break; - case 69: /* reduce AAquotednonvoidtype2NonvoidType */ - { - ArrayList list = new69(); - push(goTo(15), list, false); - } - break; - case 70: /* reduce AAidentnonvoidtype1NonvoidType */ - { - ArrayList list = new70(); - push(goTo(15), list, false); - } - break; - case 71: /* reduce AAidentnonvoidtype2NonvoidType */ - { - ArrayList list = new71(); - push(goTo(15), list, false); - } - break; - case 72: /* reduce AAfullidentnonvoidtype1NonvoidType */ - { - ArrayList list = new72(); - push(goTo(15), list, false); - } - break; - case 73: /* reduce AAfullidentnonvoidtype2NonvoidType */ - { - ArrayList list = new73(); - push(goTo(15), list, false); - } - break; - case 74: /* reduce AArrayBrackets */ - { - ArrayList list = new74(); - push(goTo(16), list, false); - } - break; - case 75: /* reduce AEmptyMethodBody */ - { - ArrayList list = new75(); - push(goTo(17), list, false); - } - break; - case 76: /* reduce AAfullmethodbody1MethodBody */ - { - ArrayList list = new76(); - push(goTo(17), list, false); - } - break; - case 77: /* reduce AAfullmethodbody2MethodBody */ - { - ArrayList list = new77(); - push(goTo(17), list, false); - } - break; - case 78: /* reduce AAfullmethodbody3MethodBody */ - { - ArrayList list = new78(); - push(goTo(17), list, false); - } - break; - case 79: /* reduce AAfullmethodbody4MethodBody */ - { - ArrayList list = new79(); - push(goTo(17), list, false); - } - break; - case 80: /* reduce AAfullmethodbody5MethodBody */ - { - ArrayList list = new80(); - push(goTo(17), list, false); - } - break; - case 81: /* reduce AAfullmethodbody6MethodBody */ - { - ArrayList list = new81(); - push(goTo(17), list, false); - } - break; - case 82: /* reduce AAfullmethodbody7MethodBody */ - { - ArrayList list = new82(); - push(goTo(17), list, false); - } - break; - case 83: /* reduce AAfullmethodbody8MethodBody */ - { - ArrayList list = new83(); - push(goTo(17), list, false); - } - break; - case 84: /* reduce ADeclaration */ - { - ArrayList list = new84(); - push(goTo(18), list, false); - } - break; - case 85: /* reduce AUnknownJimpleType */ - { - ArrayList list = new85(); - push(goTo(19), list, false); - } - break; - case 86: /* reduce ANonvoidJimpleType */ - { - ArrayList list = new86(); - push(goTo(19), list, false); - } - break; - case 87: /* reduce ALocalName */ - { - ArrayList list = new87(); - push(goTo(20), list, false); - } - break; - case 88: /* reduce ASingleLocalNameList */ - { - ArrayList list = new88(); - push(goTo(21), list, false); - } - break; - case 89: /* reduce AMultiLocalNameList */ - { - ArrayList list = new89(); - push(goTo(21), list, false); - } - break; - case 90: /* reduce ALabelStatement */ - { - ArrayList list = new90(); - push(goTo(22), list, false); - } - break; - case 91: /* reduce ABreakpointStatement */ - { - ArrayList list = new91(); - push(goTo(22), list, false); - } - break; - case 92: /* reduce AEntermonitorStatement */ - { - ArrayList list = new92(); - push(goTo(22), list, false); - } - break; - case 93: /* reduce AExitmonitorStatement */ - { - ArrayList list = new93(); - push(goTo(22), list, false); - } - break; - case 94: /* reduce ATableswitchStatement */ - { - ArrayList list = new94(); - push(goTo(22), list, false); - } - break; - case 95: /* reduce ALookupswitchStatement */ - { - ArrayList list = new95(); - push(goTo(22), list, false); - } - break; - case 96: /* reduce AIdentityStatement */ - { - ArrayList list = new96(); - push(goTo(22), list, false); - } - break; - case 97: /* reduce AIdentityNoTypeStatement */ - { - ArrayList list = new97(); - push(goTo(22), list, false); - } - break; - case 98: /* reduce AAssignStatement */ - { - ArrayList list = new98(); - push(goTo(22), list, false); - } - break; - case 99: /* reduce AIfStatement */ - { - ArrayList list = new99(); - push(goTo(22), list, false); - } - break; - case 100: /* reduce AGotoStatement */ - { - ArrayList list = new100(); - push(goTo(22), list, false); - } - break; - case 101: /* reduce ANopStatement */ - { - ArrayList list = new101(); - push(goTo(22), list, false); - } - break; - case 102: /* reduce AAretstatement1Statement */ - { - ArrayList list = new102(); - push(goTo(22), list, false); - } - break; - case 103: /* reduce AAretstatement2Statement */ - { - ArrayList list = new103(); - push(goTo(22), list, false); - } - break; - case 104: /* reduce AAreturnstatement1Statement */ - { - ArrayList list = new104(); - push(goTo(22), list, false); - } - break; - case 105: /* reduce AAreturnstatement2Statement */ - { - ArrayList list = new105(); - push(goTo(22), list, false); - } - break; - case 106: /* reduce AThrowStatement */ - { - ArrayList list = new106(); - push(goTo(22), list, false); - } - break; - case 107: /* reduce AInvokeStatement */ - { - ArrayList list = new107(); - push(goTo(22), list, false); - } - break; - case 108: /* reduce ALabelName */ - { - ArrayList list = new108(); - push(goTo(23), list, false); - } - break; - case 109: /* reduce ACaseStmt */ - { - ArrayList list = new109(); - push(goTo(24), list, false); - } - break; - case 110: /* reduce AAconstantcaselabel1CaseLabel */ - { - ArrayList list = new110(); - push(goTo(25), list, false); - } - break; - case 111: /* reduce AAconstantcaselabel2CaseLabel */ - { - ArrayList list = new111(); - push(goTo(25), list, false); - } - break; - case 112: /* reduce ADefaultCaseLabel */ - { - ArrayList list = new112(); - push(goTo(25), list, false); - } - break; - case 113: /* reduce AGotoStmt */ - { - ArrayList list = new113(); - push(goTo(26), list, false); - } - break; - case 114: /* reduce ACatchClause */ - { - ArrayList list = new114(); - push(goTo(27), list, false); - } - break; - case 115: /* reduce ANewExpression */ - { - ArrayList list = new115(); - push(goTo(28), list, false); - } - break; - case 116: /* reduce ACastExpression */ - { - ArrayList list = new116(); - push(goTo(28), list, false); - } - break; - case 117: /* reduce AInstanceofExpression */ - { - ArrayList list = new117(); - push(goTo(28), list, false); - } - break; - case 118: /* reduce AInvokeExpression */ - { - ArrayList list = new118(); - push(goTo(28), list, false); - } - break; - case 119: /* reduce AReferenceExpression */ - { - ArrayList list = new119(); - push(goTo(28), list, false); - } - break; - case 120: /* reduce ABinopExpression */ - { - ArrayList list = new120(); - push(goTo(28), list, false); - } - break; - case 121: /* reduce AUnopExpression */ - { - ArrayList list = new121(); - push(goTo(28), list, false); - } - break; - case 122: /* reduce AImmediateExpression */ - { - ArrayList list = new122(); - push(goTo(28), list, false); - } - break; - case 123: /* reduce ASimpleNewExpr */ - { - ArrayList list = new123(); - push(goTo(29), list, false); - } - break; - case 124: /* reduce AArrayNewExpr */ - { - ArrayList list = new124(); - push(goTo(29), list, false); - } - break; - case 125: /* reduce AMultiNewExpr */ - { - ArrayList list = new125(); - push(goTo(29), list, false); - } - break; - case 126: /* reduce AAarraydescriptor1ArrayDescriptor */ - { - ArrayList list = new126(); - push(goTo(30), list, false); - } - break; - case 127: /* reduce AAarraydescriptor2ArrayDescriptor */ - { - ArrayList list = new127(); - push(goTo(30), list, false); - } - break; - case 128: /* reduce AReferenceVariable */ - { - ArrayList list = new128(); - push(goTo(31), list, false); - } - break; - case 129: /* reduce ALocalVariable */ - { - ArrayList list = new129(); - push(goTo(31), list, false); - } - break; - case 130: /* reduce ABinopBoolExpr */ - { - ArrayList list = new130(); - push(goTo(32), list, false); - } - break; - case 131: /* reduce AUnopBoolExpr */ - { - ArrayList list = new131(); - push(goTo(32), list, false); - } - break; - case 132: /* reduce AAnonstaticinvokeexpr1InvokeExpr */ - { - ArrayList list = new132(); - push(goTo(33), list, false); - } - break; - case 133: /* reduce AAnonstaticinvokeexpr2InvokeExpr */ - { - ArrayList list = new133(); - push(goTo(33), list, false); - } - break; - case 134: /* reduce AAstaticinvokeexpr1InvokeExpr */ - { - ArrayList list = new134(); - push(goTo(33), list, false); - } - break; - case 135: /* reduce AAstaticinvokeexpr2InvokeExpr */ - { - ArrayList list = new135(); - push(goTo(33), list, false); - } - break; - case 136: /* reduce AAdynamicinvokeexpr1InvokeExpr */ - { - ArrayList list = new136(); - push(goTo(33), list, false); - } - break; - case 137: /* reduce AAdynamicinvokeexpr2InvokeExpr */ - { - ArrayList list = new137(); - push(goTo(33), list, false); - } - break; - case 138: /* reduce AAdynamicinvokeexpr3InvokeExpr */ - { - ArrayList list = new138(); - push(goTo(33), list, false); - } - break; - case 139: /* reduce AAdynamicinvokeexpr4InvokeExpr */ - { - ArrayList list = new139(); - push(goTo(33), list, false); - } - break; - case 140: /* reduce ABinopExpr */ - { - ArrayList list = new140(); - push(goTo(34), list, false); - } - break; - case 141: /* reduce AUnopExpr */ - { - ArrayList list = new141(); - push(goTo(35), list, false); - } - break; - case 142: /* reduce ASpecialNonstaticInvoke */ - { - ArrayList list = new142(); - push(goTo(36), list, false); - } - break; - case 143: /* reduce AVirtualNonstaticInvoke */ - { - ArrayList list = new143(); - push(goTo(36), list, false); - } - break; - case 144: /* reduce AInterfaceNonstaticInvoke */ - { - ArrayList list = new144(); - push(goTo(36), list, false); - } - break; - case 145: /* reduce AAunnamedmethodsignature1UnnamedMethodSignature */ - { - ArrayList list = new145(); - push(goTo(37), list, false); - } - break; - case 146: /* reduce AAunnamedmethodsignature2UnnamedMethodSignature */ - { - ArrayList list = new146(); - push(goTo(37), list, false); - } - break; - case 147: /* reduce AAmethodsignature1MethodSignature */ - { - ArrayList list = new147(); - push(goTo(38), list, false); - } - break; - case 148: /* reduce AAmethodsignature2MethodSignature */ - { - ArrayList list = new148(); - push(goTo(38), list, false); - } - break; - case 149: /* reduce AArrayReference */ - { - ArrayList list = new149(); - push(goTo(39), list, false); - } - break; - case 150: /* reduce AFieldReference */ - { - ArrayList list = new150(); - push(goTo(39), list, false); - } - break; - case 151: /* reduce AIdentArrayRef */ - { - ArrayList list = new151(); - push(goTo(40), list, false); - } - break; - case 152: /* reduce AQuotedArrayRef */ - { - ArrayList list = new152(); - push(goTo(40), list, false); - } - break; - case 153: /* reduce ALocalFieldRef */ - { - ArrayList list = new153(); - push(goTo(41), list, false); - } - break; - case 154: /* reduce ASigFieldRef */ - { - ArrayList list = new154(); - push(goTo(41), list, false); - } - break; - case 155: /* reduce AFieldSignature */ - { - ArrayList list = new155(); - push(goTo(42), list, false); - } - break; - case 156: /* reduce AFixedArrayDescriptor */ - { - ArrayList list = new156(); - push(goTo(43), list, false); - } - break; - case 157: /* reduce ASingleArgList */ - { - ArrayList list = new157(); - push(goTo(44), list, false); - } - break; - case 158: /* reduce AMultiArgList */ - { - ArrayList list = new158(); - push(goTo(44), list, false); - } - break; - case 159: /* reduce ALocalImmediate */ - { - ArrayList list = new159(); - push(goTo(45), list, false); - } - break; - case 160: /* reduce AConstantImmediate */ - { - ArrayList list = new160(); - push(goTo(45), list, false); - } - break; - case 161: /* reduce AAintegerconstant1Constant */ - { - ArrayList list = new161(); - push(goTo(46), list, false); - } - break; - case 162: /* reduce AAintegerconstant2Constant */ - { - ArrayList list = new162(); - push(goTo(46), list, false); - } - break; - case 163: /* reduce AAfloatconstant1Constant */ - { - ArrayList list = new163(); - push(goTo(46), list, false); - } - break; - case 164: /* reduce AAfloatconstant2Constant */ - { - ArrayList list = new164(); - push(goTo(46), list, false); - } - break; - case 165: /* reduce AStringConstant */ - { - ArrayList list = new165(); - push(goTo(46), list, false); - } - break; - case 166: /* reduce AClzzConstant */ - { - ArrayList list = new166(); - push(goTo(46), list, false); - } - break; - case 167: /* reduce ANullConstant */ - { - ArrayList list = new167(); - push(goTo(46), list, false); - } - break; - case 168: /* reduce AAndBinop */ - { - ArrayList list = new168(); - push(goTo(47), list, false); - } - break; - case 169: /* reduce AOrBinop */ - { - ArrayList list = new169(); - push(goTo(47), list, false); - } - break; - case 170: /* reduce AXorBinop */ - { - ArrayList list = new170(); - push(goTo(47), list, false); - } - break; - case 171: /* reduce AModBinop */ - { - ArrayList list = new171(); - push(goTo(47), list, false); - } - break; - case 172: /* reduce ACmpBinop */ - { - ArrayList list = new172(); - push(goTo(47), list, false); - } - break; - case 173: /* reduce ACmpgBinop */ - { - ArrayList list = new173(); - push(goTo(47), list, false); - } - break; - case 174: /* reduce ACmplBinop */ - { - ArrayList list = new174(); - push(goTo(47), list, false); - } - break; - case 175: /* reduce ACmpeqBinop */ - { - ArrayList list = new175(); - push(goTo(47), list, false); - } - break; - case 176: /* reduce ACmpneBinop */ - { - ArrayList list = new176(); - push(goTo(47), list, false); - } - break; - case 177: /* reduce ACmpgtBinop */ - { - ArrayList list = new177(); - push(goTo(47), list, false); - } - break; - case 178: /* reduce ACmpgeBinop */ - { - ArrayList list = new178(); - push(goTo(47), list, false); - } - break; - case 179: /* reduce ACmpltBinop */ - { - ArrayList list = new179(); - push(goTo(47), list, false); - } - break; - case 180: /* reduce ACmpleBinop */ - { - ArrayList list = new180(); - push(goTo(47), list, false); - } - break; - case 181: /* reduce AShlBinop */ - { - ArrayList list = new181(); - push(goTo(47), list, false); - } - break; - case 182: /* reduce AShrBinop */ - { - ArrayList list = new182(); - push(goTo(47), list, false); - } - break; - case 183: /* reduce AUshrBinop */ - { - ArrayList list = new183(); - push(goTo(47), list, false); - } - break; - case 184: /* reduce APlusBinop */ - { - ArrayList list = new184(); - push(goTo(47), list, false); - } - break; - case 185: /* reduce AMinusBinop */ - { - ArrayList list = new185(); - push(goTo(47), list, false); - } - break; - case 186: /* reduce AMultBinop */ - { - ArrayList list = new186(); - push(goTo(47), list, false); - } - break; - case 187: /* reduce ADivBinop */ - { - ArrayList list = new187(); - push(goTo(47), list, false); - } - break; - case 188: /* reduce ALengthofUnop */ - { - ArrayList list = new188(); - push(goTo(48), list, false); - } - break; - case 189: /* reduce ANegUnop */ - { - ArrayList list = new189(); - push(goTo(48), list, false); - } - break; - case 190: /* reduce AQuotedClassName */ - { - ArrayList list = new190(); - push(goTo(49), list, false); - } - break; - case 191: /* reduce AIdentClassName */ - { - ArrayList list = new191(); - push(goTo(49), list, false); - } - break; - case 192: /* reduce AFullIdentClassName */ - { - ArrayList list = new192(); - push(goTo(49), list, false); - } - break; - case 193: /* reduce AQuotedName */ - { - ArrayList list = new193(); - push(goTo(50), list, false); - } - break; - case 194: /* reduce AIdentName */ - { - ArrayList list = new194(); - push(goTo(50), list, false); - } - break; - case 195: /* reduce ATerminal$Modifier */ - { - ArrayList list = new195(); - push(goTo(51), list, true); - } - break; - case 196: /* reduce ANonTerminal$Modifier */ - { - ArrayList list = new196(); - push(goTo(51), list, true); - } - break; - case 197: /* reduce ATerminal$Member */ - { - ArrayList list = new197(); - push(goTo(52), list, true); - } - break; - case 198: /* reduce ANonTerminal$Member */ - { - ArrayList list = new198(); - push(goTo(52), list, true); - } - break; - case 199: /* reduce ATerminal$ArrayBrackets */ - { - ArrayList list = new199(); - push(goTo(53), list, true); - } - break; - case 200: /* reduce ANonTerminal$ArrayBrackets */ - { - ArrayList list = new200(); - push(goTo(53), list, true); - } - break; - case 201: /* reduce ATerminal$Declaration */ - { - ArrayList list = new201(); - push(goTo(54), list, true); - } - break; - case 202: /* reduce ANonTerminal$Declaration */ - { - ArrayList list = new202(); - push(goTo(54), list, true); - } - break; - case 203: /* reduce ATerminal$Statement */ - { - ArrayList list = new203(); - push(goTo(55), list, true); - } - break; - case 204: /* reduce ANonTerminal$Statement */ - { - ArrayList list = new204(); - push(goTo(55), list, true); - } - break; - case 205: /* reduce ATerminal$CatchClause */ - { - ArrayList list = new205(); - push(goTo(56), list, true); - } - break; - case 206: /* reduce ANonTerminal$CatchClause */ - { - ArrayList list = new206(); - push(goTo(56), list, true); - } - break; - case 207: /* reduce ATerminal$CaseStmt */ - { - ArrayList list = new207(); - push(goTo(57), list, true); - } - break; - case 208: /* reduce ANonTerminal$CaseStmt */ - { - ArrayList list = new208(); - push(goTo(57), list, true); - } - break; - case 209: /* reduce ATerminal$ArrayDescriptor */ - { - ArrayList list = new209(); - push(goTo(58), list, true); - } - break; - case 210: /* reduce ANonTerminal$ArrayDescriptor */ - { - ArrayList list = new210(); - push(goTo(58), list, true); - } - break; - } - break; - case ACCEPT: - { - EOF node2 = (EOF) this.lexer.next(); - PFile node1 = (PFile) pop().get(0); - Start node = new Start(node1, node2); - return node; - } - case ERROR: - throw new ParserException(this.last_token, - "[" + this.last_line + "," + this.last_pos + "] " + - Parser.errorMessages[Parser.errors[this.action[1]]]); + break; + case 3: /* reduce AAfile4File */ + { + ArrayList list = new3(); + push(goTo(0), list, false); } - } - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new0() /* reduce AAfile1File */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFile pfileNode1; - { - // Block - LinkedList listNode2 = new LinkedList(); - PFileType pfiletypeNode3; - PClassName pclassnameNode4; - @SuppressWarnings("unused") Object nullNode5 = null; - @SuppressWarnings("unused") Object nullNode6 = null; - PFileBody pfilebodyNode7; - { - // Block - } - pfiletypeNode3 = (PFileType)nodeArrayList1.get(0); - pclassnameNode4 = (PClassName)nodeArrayList2.get(0); - pfilebodyNode7 = (PFileBody)nodeArrayList3.get(0); - - pfileNode1 = new AFile(listNode2, pfiletypeNode3, pclassnameNode4, null, null, pfilebodyNode7); - } - nodeList.add(pfileNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new1() /* reduce AAfile2File */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFile pfileNode1; - { - // Block - LinkedList listNode3 = new LinkedList(); - PFileType pfiletypeNode4; - PClassName pclassnameNode5; - @SuppressWarnings("unused") Object nullNode6 = null; - @SuppressWarnings("unused") Object nullNode7 = null; - PFileBody pfilebodyNode8; - { - // Block - LinkedList listNode2 = new LinkedList(); - listNode2 = (LinkedList)nodeArrayList1.get(0); - if(listNode2 != null) - { - listNode3.addAll(listNode2); - } - } - pfiletypeNode4 = (PFileType)nodeArrayList2.get(0); - pclassnameNode5 = (PClassName)nodeArrayList3.get(0); - pfilebodyNode8 = (PFileBody)nodeArrayList4.get(0); - - pfileNode1 = new AFile(listNode3, pfiletypeNode4, pclassnameNode5, null, null, pfilebodyNode8); - } - nodeList.add(pfileNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new2() /* reduce AAfile3File */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFile pfileNode1; - { - // Block - LinkedList listNode2 = new LinkedList(); - PFileType pfiletypeNode3; - PClassName pclassnameNode4; - PExtendsClause pextendsclauseNode5; - @SuppressWarnings("unused") Object nullNode6 = null; - PFileBody pfilebodyNode7; - { - // Block - } - pfiletypeNode3 = (PFileType)nodeArrayList1.get(0); - pclassnameNode4 = (PClassName)nodeArrayList2.get(0); - pextendsclauseNode5 = (PExtendsClause)nodeArrayList3.get(0); - pfilebodyNode7 = (PFileBody)nodeArrayList4.get(0); - - pfileNode1 = new AFile(listNode2, pfiletypeNode3, pclassnameNode4, pextendsclauseNode5, null, pfilebodyNode7); - } - nodeList.add(pfileNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new3() /* reduce AAfile4File */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFile pfileNode1; - { - // Block - LinkedList listNode3 = new LinkedList(); - PFileType pfiletypeNode4; - PClassName pclassnameNode5; - PExtendsClause pextendsclauseNode6; - @SuppressWarnings("unused") Object nullNode7 = null; - PFileBody pfilebodyNode8; - { - // Block - LinkedList listNode2 = new LinkedList(); - listNode2 = (LinkedList)nodeArrayList1.get(0); - if(listNode2 != null) - { - listNode3.addAll(listNode2); - } - } - pfiletypeNode4 = (PFileType)nodeArrayList2.get(0); - pclassnameNode5 = (PClassName)nodeArrayList3.get(0); - pextendsclauseNode6 = (PExtendsClause)nodeArrayList4.get(0); - pfilebodyNode8 = (PFileBody)nodeArrayList5.get(0); - - pfileNode1 = new AFile(listNode3, pfiletypeNode4, pclassnameNode5, pextendsclauseNode6, null, pfilebodyNode8); - } - nodeList.add(pfileNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new4() /* reduce AAfile5File */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFile pfileNode1; - { - // Block - LinkedList listNode2 = new LinkedList(); - PFileType pfiletypeNode3; - PClassName pclassnameNode4; - @SuppressWarnings("unused") Object nullNode5 = null; - PImplementsClause pimplementsclauseNode6; - PFileBody pfilebodyNode7; - { - // Block - } - pfiletypeNode3 = (PFileType)nodeArrayList1.get(0); - pclassnameNode4 = (PClassName)nodeArrayList2.get(0); - pimplementsclauseNode6 = (PImplementsClause)nodeArrayList3.get(0); - pfilebodyNode7 = (PFileBody)nodeArrayList4.get(0); - - pfileNode1 = new AFile(listNode2, pfiletypeNode3, pclassnameNode4, null, pimplementsclauseNode6, pfilebodyNode7); - } - nodeList.add(pfileNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new5() /* reduce AAfile6File */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFile pfileNode1; - { - // Block - LinkedList listNode3 = new LinkedList(); - PFileType pfiletypeNode4; - PClassName pclassnameNode5; - @SuppressWarnings("unused") Object nullNode6 = null; - PImplementsClause pimplementsclauseNode7; - PFileBody pfilebodyNode8; - { - // Block - LinkedList listNode2 = new LinkedList(); - listNode2 = (LinkedList)nodeArrayList1.get(0); - if(listNode2 != null) - { - listNode3.addAll(listNode2); - } - } - pfiletypeNode4 = (PFileType)nodeArrayList2.get(0); - pclassnameNode5 = (PClassName)nodeArrayList3.get(0); - pimplementsclauseNode7 = (PImplementsClause)nodeArrayList4.get(0); - pfilebodyNode8 = (PFileBody)nodeArrayList5.get(0); - - pfileNode1 = new AFile(listNode3, pfiletypeNode4, pclassnameNode5, null, pimplementsclauseNode7, pfilebodyNode8); - } - nodeList.add(pfileNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new6() /* reduce AAfile7File */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFile pfileNode1; - { - // Block - LinkedList listNode2 = new LinkedList(); - PFileType pfiletypeNode3; - PClassName pclassnameNode4; - PExtendsClause pextendsclauseNode5; - PImplementsClause pimplementsclauseNode6; - PFileBody pfilebodyNode7; - { - // Block - } - pfiletypeNode3 = (PFileType)nodeArrayList1.get(0); - pclassnameNode4 = (PClassName)nodeArrayList2.get(0); - pextendsclauseNode5 = (PExtendsClause)nodeArrayList3.get(0); - pimplementsclauseNode6 = (PImplementsClause)nodeArrayList4.get(0); - pfilebodyNode7 = (PFileBody)nodeArrayList5.get(0); - - pfileNode1 = new AFile(listNode2, pfiletypeNode3, pclassnameNode4, pextendsclauseNode5, pimplementsclauseNode6, pfilebodyNode7); - } - nodeList.add(pfileNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new7() /* reduce AAfile8File */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFile pfileNode1; - { - // Block - LinkedList listNode3 = new LinkedList(); - PFileType pfiletypeNode4; - PClassName pclassnameNode5; - PExtendsClause pextendsclauseNode6; - PImplementsClause pimplementsclauseNode7; - PFileBody pfilebodyNode8; - { - // Block - LinkedList listNode2 = new LinkedList(); - listNode2 = (LinkedList)nodeArrayList1.get(0); - if(listNode2 != null) - { - listNode3.addAll(listNode2); - } - } - pfiletypeNode4 = (PFileType)nodeArrayList2.get(0); - pclassnameNode5 = (PClassName)nodeArrayList3.get(0); - pextendsclauseNode6 = (PExtendsClause)nodeArrayList4.get(0); - pimplementsclauseNode7 = (PImplementsClause)nodeArrayList5.get(0); - pfilebodyNode8 = (PFileBody)nodeArrayList6.get(0); - - pfileNode1 = new AFile(listNode3, pfiletypeNode4, pclassnameNode5, pextendsclauseNode6, pimplementsclauseNode7, pfilebodyNode8); - } - nodeList.add(pfileNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new8() /* reduce AAbstractModifier */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PModifier pmodifierNode1; - { - // Block - TAbstract tabstractNode2; - tabstractNode2 = (TAbstract)nodeArrayList1.get(0); - - pmodifierNode1 = new AAbstractModifier(tabstractNode2); - } - nodeList.add(pmodifierNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new9() /* reduce AFinalModifier */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PModifier pmodifierNode1; - { - // Block - TFinal tfinalNode2; - tfinalNode2 = (TFinal)nodeArrayList1.get(0); - - pmodifierNode1 = new AFinalModifier(tfinalNode2); - } - nodeList.add(pmodifierNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new10() /* reduce ANativeModifier */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PModifier pmodifierNode1; - { - // Block - TNative tnativeNode2; - tnativeNode2 = (TNative)nodeArrayList1.get(0); - - pmodifierNode1 = new ANativeModifier(tnativeNode2); - } - nodeList.add(pmodifierNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new11() /* reduce APublicModifier */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PModifier pmodifierNode1; - { - // Block - TPublic tpublicNode2; - tpublicNode2 = (TPublic)nodeArrayList1.get(0); - - pmodifierNode1 = new APublicModifier(tpublicNode2); - } - nodeList.add(pmodifierNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new12() /* reduce AProtectedModifier */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PModifier pmodifierNode1; - { - // Block - TProtected tprotectedNode2; - tprotectedNode2 = (TProtected)nodeArrayList1.get(0); - - pmodifierNode1 = new AProtectedModifier(tprotectedNode2); - } - nodeList.add(pmodifierNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new13() /* reduce APrivateModifier */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PModifier pmodifierNode1; - { - // Block - TPrivate tprivateNode2; - tprivateNode2 = (TPrivate)nodeArrayList1.get(0); - - pmodifierNode1 = new APrivateModifier(tprivateNode2); - } - nodeList.add(pmodifierNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new14() /* reduce AStaticModifier */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PModifier pmodifierNode1; - { - // Block - TStatic tstaticNode2; - tstaticNode2 = (TStatic)nodeArrayList1.get(0); - - pmodifierNode1 = new AStaticModifier(tstaticNode2); - } - nodeList.add(pmodifierNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new15() /* reduce ASynchronizedModifier */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PModifier pmodifierNode1; - { - // Block - TSynchronized tsynchronizedNode2; - tsynchronizedNode2 = (TSynchronized)nodeArrayList1.get(0); - - pmodifierNode1 = new ASynchronizedModifier(tsynchronizedNode2); - } - nodeList.add(pmodifierNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new16() /* reduce ATransientModifier */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PModifier pmodifierNode1; - { - // Block - TTransient ttransientNode2; - ttransientNode2 = (TTransient)nodeArrayList1.get(0); - - pmodifierNode1 = new ATransientModifier(ttransientNode2); - } - nodeList.add(pmodifierNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new17() /* reduce AVolatileModifier */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PModifier pmodifierNode1; - { - // Block - TVolatile tvolatileNode2; - tvolatileNode2 = (TVolatile)nodeArrayList1.get(0); - - pmodifierNode1 = new AVolatileModifier(tvolatileNode2); - } - nodeList.add(pmodifierNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new18() /* reduce AStrictfpModifier */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PModifier pmodifierNode1; - { - // Block - TStrictfp tstrictfpNode2; - tstrictfpNode2 = (TStrictfp)nodeArrayList1.get(0); - - pmodifierNode1 = new AStrictfpModifier(tstrictfpNode2); - } - nodeList.add(pmodifierNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new19() /* reduce AEnumModifier */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PModifier pmodifierNode1; - { - // Block - TEnum tenumNode2; - tenumNode2 = (TEnum)nodeArrayList1.get(0); - - pmodifierNode1 = new AEnumModifier(tenumNode2); - } - nodeList.add(pmodifierNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new20() /* reduce AAnnotationModifier */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PModifier pmodifierNode1; - { - // Block - TAnnotation tannotationNode2; - tannotationNode2 = (TAnnotation)nodeArrayList1.get(0); - - pmodifierNode1 = new AAnnotationModifier(tannotationNode2); - } - nodeList.add(pmodifierNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new21() /* reduce AClassFileType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFileType pfiletypeNode1; - { - // Block - TClass tclassNode2; - tclassNode2 = (TClass)nodeArrayList1.get(0); - - pfiletypeNode1 = new AClassFileType(tclassNode2); - } - nodeList.add(pfiletypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new22() /* reduce AInterfaceFileType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFileType pfiletypeNode1; - { - // Block - TInterface tinterfaceNode2; - tinterfaceNode2 = (TInterface)nodeArrayList1.get(0); - - pfiletypeNode1 = new AInterfaceFileType(tinterfaceNode2); - } - nodeList.add(pfiletypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new23() /* reduce AExtendsClause */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PExtendsClause pextendsclauseNode1; - { - // Block - TExtends textendsNode2; - PClassName pclassnameNode3; - textendsNode2 = (TExtends)nodeArrayList1.get(0); - pclassnameNode3 = (PClassName)nodeArrayList2.get(0); - - pextendsclauseNode1 = new AExtendsClause(textendsNode2, pclassnameNode3); - } - nodeList.add(pextendsclauseNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new24() /* reduce AImplementsClause */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PImplementsClause pimplementsclauseNode1; - { - // Block - TImplements timplementsNode2; - PClassNameList pclassnamelistNode3; - timplementsNode2 = (TImplements)nodeArrayList1.get(0); - pclassnamelistNode3 = (PClassNameList)nodeArrayList2.get(0); - - pimplementsclauseNode1 = new AImplementsClause(timplementsNode2, pclassnamelistNode3); - } - nodeList.add(pimplementsclauseNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new25() /* reduce AAfilebody1FileBody */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFileBody pfilebodyNode1; - { - // Block - TLBrace tlbraceNode2; - LinkedList listNode3 = new LinkedList(); - TRBrace trbraceNode4; - tlbraceNode2 = (TLBrace)nodeArrayList1.get(0); - { - // Block - } - trbraceNode4 = (TRBrace)nodeArrayList2.get(0); - - pfilebodyNode1 = new AFileBody(tlbraceNode2, listNode3, trbraceNode4); - } - nodeList.add(pfilebodyNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new26() /* reduce AAfilebody2FileBody */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFileBody pfilebodyNode1; - { - // Block - TLBrace tlbraceNode2; - LinkedList listNode4 = new LinkedList(); - TRBrace trbraceNode5; - tlbraceNode2 = (TLBrace)nodeArrayList1.get(0); - { - // Block - LinkedList listNode3 = new LinkedList(); - listNode3 = (LinkedList)nodeArrayList2.get(0); - if(listNode3 != null) - { - listNode4.addAll(listNode3); - } - } - trbraceNode5 = (TRBrace)nodeArrayList3.get(0); - - pfilebodyNode1 = new AFileBody(tlbraceNode2, listNode4, trbraceNode5); - } - nodeList.add(pfilebodyNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new27() /* reduce ASingleNameList */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNameList pnamelistNode1; - { - // Block - PName pnameNode2; - pnameNode2 = (PName)nodeArrayList1.get(0); - - pnamelistNode1 = new ASingleNameList(pnameNode2); - } - nodeList.add(pnamelistNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new28() /* reduce AMultiNameList */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNameList pnamelistNode1; - { - // Block - PName pnameNode2; - TComma tcommaNode3; - PNameList pnamelistNode4; - pnameNode2 = (PName)nodeArrayList1.get(0); - tcommaNode3 = (TComma)nodeArrayList2.get(0); - pnamelistNode4 = (PNameList)nodeArrayList3.get(0); - - pnamelistNode1 = new AMultiNameList(pnameNode2, tcommaNode3, pnamelistNode4); - } - nodeList.add(pnamelistNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new29() /* reduce AClassNameSingleClassNameList */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PClassNameList pclassnamelistNode1; - { - // Block - PClassName pclassnameNode2; - pclassnameNode2 = (PClassName)nodeArrayList1.get(0); - - pclassnamelistNode1 = new AClassNameSingleClassNameList(pclassnameNode2); - } - nodeList.add(pclassnamelistNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new30() /* reduce AClassNameMultiClassNameList */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PClassNameList pclassnamelistNode1; - { - // Block - PClassName pclassnameNode2; - TComma tcommaNode3; - PClassNameList pclassnamelistNode4; - pclassnameNode2 = (PClassName)nodeArrayList1.get(0); - tcommaNode3 = (TComma)nodeArrayList2.get(0); - pclassnamelistNode4 = (PClassNameList)nodeArrayList3.get(0); - - pclassnamelistNode1 = new AClassNameMultiClassNameList(pclassnameNode2, tcommaNode3, pclassnamelistNode4); - } - nodeList.add(pclassnamelistNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new31() /* reduce AAfieldmember1Member */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMember pmemberNode1; - { - // Block - LinkedList listNode2 = new LinkedList(); - PType ptypeNode3; - PName pnameNode4; - TSemicolon tsemicolonNode5; - { - // Block - } - ptypeNode3 = (PType)nodeArrayList1.get(0); - pnameNode4 = (PName)nodeArrayList2.get(0); - tsemicolonNode5 = (TSemicolon)nodeArrayList3.get(0); - - pmemberNode1 = new AFieldMember(listNode2, ptypeNode3, pnameNode4, tsemicolonNode5); - } - nodeList.add(pmemberNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new32() /* reduce AAfieldmember2Member */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMember pmemberNode1; - { - // Block - LinkedList listNode3 = new LinkedList(); - PType ptypeNode4; - PName pnameNode5; - TSemicolon tsemicolonNode6; - { - // Block - LinkedList listNode2 = new LinkedList(); - listNode2 = (LinkedList)nodeArrayList1.get(0); - if(listNode2 != null) - { - listNode3.addAll(listNode2); - } - } - ptypeNode4 = (PType)nodeArrayList2.get(0); - pnameNode5 = (PName)nodeArrayList3.get(0); - tsemicolonNode6 = (TSemicolon)nodeArrayList4.get(0); - - pmemberNode1 = new AFieldMember(listNode3, ptypeNode4, pnameNode5, tsemicolonNode6); - } - nodeList.add(pmemberNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new33() /* reduce AAmethodmember1Member */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMember pmemberNode1; - { - // Block - LinkedList listNode2 = new LinkedList(); - PType ptypeNode3; - PName pnameNode4; - TLParen tlparenNode5; - @SuppressWarnings("unused") Object nullNode6 = null; - TRParen trparenNode7; - @SuppressWarnings("unused") Object nullNode8 = null; - PMethodBody pmethodbodyNode9; - { - // Block - } - ptypeNode3 = (PType)nodeArrayList1.get(0); - pnameNode4 = (PName)nodeArrayList2.get(0); - tlparenNode5 = (TLParen)nodeArrayList3.get(0); - trparenNode7 = (TRParen)nodeArrayList4.get(0); - pmethodbodyNode9 = (PMethodBody)nodeArrayList5.get(0); - - pmemberNode1 = new AMethodMember(listNode2, ptypeNode3, pnameNode4, tlparenNode5, null, trparenNode7, null, pmethodbodyNode9); - } - nodeList.add(pmemberNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new34() /* reduce AAmethodmember2Member */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMember pmemberNode1; - { - // Block - LinkedList listNode3 = new LinkedList(); - PType ptypeNode4; - PName pnameNode5; - TLParen tlparenNode6; - @SuppressWarnings("unused") Object nullNode7 = null; - TRParen trparenNode8; - @SuppressWarnings("unused") Object nullNode9 = null; - PMethodBody pmethodbodyNode10; - { - // Block - LinkedList listNode2 = new LinkedList(); - listNode2 = (LinkedList)nodeArrayList1.get(0); - if(listNode2 != null) - { - listNode3.addAll(listNode2); - } - } - ptypeNode4 = (PType)nodeArrayList2.get(0); - pnameNode5 = (PName)nodeArrayList3.get(0); - tlparenNode6 = (TLParen)nodeArrayList4.get(0); - trparenNode8 = (TRParen)nodeArrayList5.get(0); - pmethodbodyNode10 = (PMethodBody)nodeArrayList6.get(0); - - pmemberNode1 = new AMethodMember(listNode3, ptypeNode4, pnameNode5, tlparenNode6, null, trparenNode8, null, pmethodbodyNode10); - } - nodeList.add(pmemberNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new35() /* reduce AAmethodmember3Member */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMember pmemberNode1; - { - // Block - LinkedList listNode2 = new LinkedList(); - PType ptypeNode3; - PName pnameNode4; - TLParen tlparenNode5; - PParameterList pparameterlistNode6; - TRParen trparenNode7; - @SuppressWarnings("unused") Object nullNode8 = null; - PMethodBody pmethodbodyNode9; - { - // Block - } - ptypeNode3 = (PType)nodeArrayList1.get(0); - pnameNode4 = (PName)nodeArrayList2.get(0); - tlparenNode5 = (TLParen)nodeArrayList3.get(0); - pparameterlistNode6 = (PParameterList)nodeArrayList4.get(0); - trparenNode7 = (TRParen)nodeArrayList5.get(0); - pmethodbodyNode9 = (PMethodBody)nodeArrayList6.get(0); - - pmemberNode1 = new AMethodMember(listNode2, ptypeNode3, pnameNode4, tlparenNode5, pparameterlistNode6, trparenNode7, null, pmethodbodyNode9); - } - nodeList.add(pmemberNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new36() /* reduce AAmethodmember4Member */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMember pmemberNode1; - { - // Block - LinkedList listNode3 = new LinkedList(); - PType ptypeNode4; - PName pnameNode5; - TLParen tlparenNode6; - PParameterList pparameterlistNode7; - TRParen trparenNode8; - @SuppressWarnings("unused") Object nullNode9 = null; - PMethodBody pmethodbodyNode10; - { - // Block - LinkedList listNode2 = new LinkedList(); - listNode2 = (LinkedList)nodeArrayList1.get(0); - if(listNode2 != null) - { - listNode3.addAll(listNode2); - } - } - ptypeNode4 = (PType)nodeArrayList2.get(0); - pnameNode5 = (PName)nodeArrayList3.get(0); - tlparenNode6 = (TLParen)nodeArrayList4.get(0); - pparameterlistNode7 = (PParameterList)nodeArrayList5.get(0); - trparenNode8 = (TRParen)nodeArrayList6.get(0); - pmethodbodyNode10 = (PMethodBody)nodeArrayList7.get(0); - - pmemberNode1 = new AMethodMember(listNode3, ptypeNode4, pnameNode5, tlparenNode6, pparameterlistNode7, trparenNode8, null, pmethodbodyNode10); - } - nodeList.add(pmemberNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new37() /* reduce AAmethodmember5Member */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMember pmemberNode1; - { - // Block - LinkedList listNode2 = new LinkedList(); - PType ptypeNode3; - PName pnameNode4; - TLParen tlparenNode5; - @SuppressWarnings("unused") Object nullNode6 = null; - TRParen trparenNode7; - PThrowsClause pthrowsclauseNode8; - PMethodBody pmethodbodyNode9; - { - // Block - } - ptypeNode3 = (PType)nodeArrayList1.get(0); - pnameNode4 = (PName)nodeArrayList2.get(0); - tlparenNode5 = (TLParen)nodeArrayList3.get(0); - trparenNode7 = (TRParen)nodeArrayList4.get(0); - pthrowsclauseNode8 = (PThrowsClause)nodeArrayList5.get(0); - pmethodbodyNode9 = (PMethodBody)nodeArrayList6.get(0); - - pmemberNode1 = new AMethodMember(listNode2, ptypeNode3, pnameNode4, tlparenNode5, null, trparenNode7, pthrowsclauseNode8, pmethodbodyNode9); - } - nodeList.add(pmemberNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new38() /* reduce AAmethodmember6Member */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMember pmemberNode1; - { - // Block - LinkedList listNode3 = new LinkedList(); - PType ptypeNode4; - PName pnameNode5; - TLParen tlparenNode6; - @SuppressWarnings("unused") Object nullNode7 = null; - TRParen trparenNode8; - PThrowsClause pthrowsclauseNode9; - PMethodBody pmethodbodyNode10; - { - // Block - LinkedList listNode2 = new LinkedList(); - listNode2 = (LinkedList)nodeArrayList1.get(0); - if(listNode2 != null) - { - listNode3.addAll(listNode2); - } - } - ptypeNode4 = (PType)nodeArrayList2.get(0); - pnameNode5 = (PName)nodeArrayList3.get(0); - tlparenNode6 = (TLParen)nodeArrayList4.get(0); - trparenNode8 = (TRParen)nodeArrayList5.get(0); - pthrowsclauseNode9 = (PThrowsClause)nodeArrayList6.get(0); - pmethodbodyNode10 = (PMethodBody)nodeArrayList7.get(0); - - pmemberNode1 = new AMethodMember(listNode3, ptypeNode4, pnameNode5, tlparenNode6, null, trparenNode8, pthrowsclauseNode9, pmethodbodyNode10); - } - nodeList.add(pmemberNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new39() /* reduce AAmethodmember7Member */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMember pmemberNode1; - { - // Block - LinkedList listNode2 = new LinkedList(); - PType ptypeNode3; - PName pnameNode4; - TLParen tlparenNode5; - PParameterList pparameterlistNode6; - TRParen trparenNode7; - PThrowsClause pthrowsclauseNode8; - PMethodBody pmethodbodyNode9; - { - // Block - } - ptypeNode3 = (PType)nodeArrayList1.get(0); - pnameNode4 = (PName)nodeArrayList2.get(0); - tlparenNode5 = (TLParen)nodeArrayList3.get(0); - pparameterlistNode6 = (PParameterList)nodeArrayList4.get(0); - trparenNode7 = (TRParen)nodeArrayList5.get(0); - pthrowsclauseNode8 = (PThrowsClause)nodeArrayList6.get(0); - pmethodbodyNode9 = (PMethodBody)nodeArrayList7.get(0); - - pmemberNode1 = new AMethodMember(listNode2, ptypeNode3, pnameNode4, tlparenNode5, pparameterlistNode6, trparenNode7, pthrowsclauseNode8, pmethodbodyNode9); - } - nodeList.add(pmemberNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new40() /* reduce AAmethodmember8Member */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList8 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMember pmemberNode1; - { - // Block - LinkedList listNode3 = new LinkedList(); - PType ptypeNode4; - PName pnameNode5; - TLParen tlparenNode6; - PParameterList pparameterlistNode7; - TRParen trparenNode8; - PThrowsClause pthrowsclauseNode9; - PMethodBody pmethodbodyNode10; - { - // Block - LinkedList listNode2 = new LinkedList(); - listNode2 = (LinkedList)nodeArrayList1.get(0); - if(listNode2 != null) - { - listNode3.addAll(listNode2); - } - } - ptypeNode4 = (PType)nodeArrayList2.get(0); - pnameNode5 = (PName)nodeArrayList3.get(0); - tlparenNode6 = (TLParen)nodeArrayList4.get(0); - pparameterlistNode7 = (PParameterList)nodeArrayList5.get(0); - trparenNode8 = (TRParen)nodeArrayList6.get(0); - pthrowsclauseNode9 = (PThrowsClause)nodeArrayList7.get(0); - pmethodbodyNode10 = (PMethodBody)nodeArrayList8.get(0); - - pmemberNode1 = new AMethodMember(listNode3, ptypeNode4, pnameNode5, tlparenNode6, pparameterlistNode7, trparenNode8, pthrowsclauseNode9, pmethodbodyNode10); - } - nodeList.add(pmemberNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new41() /* reduce AVoidType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PType ptypeNode1; - { - // Block - TVoid tvoidNode2; - tvoidNode2 = (TVoid)nodeArrayList1.get(0); - - ptypeNode1 = new AVoidType(tvoidNode2); - } - nodeList.add(ptypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new42() /* reduce ANovoidType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PType ptypeNode1; - { - // Block - PNonvoidType pnonvoidtypeNode2; - pnonvoidtypeNode2 = (PNonvoidType)nodeArrayList1.get(0); - - ptypeNode1 = new ANovoidType(pnonvoidtypeNode2); - } - nodeList.add(ptypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new43() /* reduce ASingleParameterList */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PParameterList pparameterlistNode1; - { - // Block - PParameter pparameterNode2; - pparameterNode2 = (PParameter)nodeArrayList1.get(0); - - pparameterlistNode1 = new ASingleParameterList(pparameterNode2); - } - nodeList.add(pparameterlistNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new44() /* reduce AMultiParameterList */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PParameterList pparameterlistNode1; - { - // Block - PParameter pparameterNode2; - TComma tcommaNode3; - PParameterList pparameterlistNode4; - pparameterNode2 = (PParameter)nodeArrayList1.get(0); - tcommaNode3 = (TComma)nodeArrayList2.get(0); - pparameterlistNode4 = (PParameterList)nodeArrayList3.get(0); - - pparameterlistNode1 = new AMultiParameterList(pparameterNode2, tcommaNode3, pparameterlistNode4); - } - nodeList.add(pparameterlistNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new45() /* reduce AParameter */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PParameter pparameterNode1; - { - // Block - PNonvoidType pnonvoidtypeNode2; - pnonvoidtypeNode2 = (PNonvoidType)nodeArrayList1.get(0); - - pparameterNode1 = new AParameter(pnonvoidtypeNode2); - } - nodeList.add(pparameterNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new46() /* reduce AThrowsClause */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PThrowsClause pthrowsclauseNode1; - { - // Block - TThrows tthrowsNode2; - PClassNameList pclassnamelistNode3; - tthrowsNode2 = (TThrows)nodeArrayList1.get(0); - pclassnamelistNode3 = (PClassNameList)nodeArrayList2.get(0); - - pthrowsclauseNode1 = new AThrowsClause(tthrowsNode2, pclassnamelistNode3); - } - nodeList.add(pthrowsclauseNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new47() /* reduce ABooleanBaseTypeNoName */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseTypeNoName pbasetypenonameNode1; - { - // Block - TBoolean tbooleanNode2; - tbooleanNode2 = (TBoolean)nodeArrayList1.get(0); - - pbasetypenonameNode1 = new ABooleanBaseTypeNoName(tbooleanNode2); - } - nodeList.add(pbasetypenonameNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new48() /* reduce AByteBaseTypeNoName */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseTypeNoName pbasetypenonameNode1; - { - // Block - TByte tbyteNode2; - tbyteNode2 = (TByte)nodeArrayList1.get(0); - - pbasetypenonameNode1 = new AByteBaseTypeNoName(tbyteNode2); - } - nodeList.add(pbasetypenonameNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new49() /* reduce ACharBaseTypeNoName */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseTypeNoName pbasetypenonameNode1; - { - // Block - TChar tcharNode2; - tcharNode2 = (TChar)nodeArrayList1.get(0); - - pbasetypenonameNode1 = new ACharBaseTypeNoName(tcharNode2); - } - nodeList.add(pbasetypenonameNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new50() /* reduce AShortBaseTypeNoName */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseTypeNoName pbasetypenonameNode1; - { - // Block - TShort tshortNode2; - tshortNode2 = (TShort)nodeArrayList1.get(0); - - pbasetypenonameNode1 = new AShortBaseTypeNoName(tshortNode2); - } - nodeList.add(pbasetypenonameNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new51() /* reduce AIntBaseTypeNoName */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseTypeNoName pbasetypenonameNode1; - { - // Block - TInt tintNode2; - tintNode2 = (TInt)nodeArrayList1.get(0); - - pbasetypenonameNode1 = new AIntBaseTypeNoName(tintNode2); - } - nodeList.add(pbasetypenonameNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new52() /* reduce ALongBaseTypeNoName */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseTypeNoName pbasetypenonameNode1; - { - // Block - TLong tlongNode2; - tlongNode2 = (TLong)nodeArrayList1.get(0); - - pbasetypenonameNode1 = new ALongBaseTypeNoName(tlongNode2); - } - nodeList.add(pbasetypenonameNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new53() /* reduce AFloatBaseTypeNoName */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseTypeNoName pbasetypenonameNode1; - { - // Block - TFloat tfloatNode2; - tfloatNode2 = (TFloat)nodeArrayList1.get(0); - - pbasetypenonameNode1 = new AFloatBaseTypeNoName(tfloatNode2); - } - nodeList.add(pbasetypenonameNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new54() /* reduce ADoubleBaseTypeNoName */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseTypeNoName pbasetypenonameNode1; - { - // Block - TDouble tdoubleNode2; - tdoubleNode2 = (TDouble)nodeArrayList1.get(0); - - pbasetypenonameNode1 = new ADoubleBaseTypeNoName(tdoubleNode2); - } - nodeList.add(pbasetypenonameNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new55() /* reduce ANullBaseTypeNoName */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseTypeNoName pbasetypenonameNode1; - { - // Block - TNullType tnulltypeNode2; - tnulltypeNode2 = (TNullType)nodeArrayList1.get(0); - - pbasetypenonameNode1 = new ANullBaseTypeNoName(tnulltypeNode2); - } - nodeList.add(pbasetypenonameNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new56() /* reduce ABooleanBaseType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseType pbasetypeNode1; - { - // Block - TBoolean tbooleanNode2; - tbooleanNode2 = (TBoolean)nodeArrayList1.get(0); - - pbasetypeNode1 = new ABooleanBaseType(tbooleanNode2); - } - nodeList.add(pbasetypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new57() /* reduce AByteBaseType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseType pbasetypeNode1; - { - // Block - TByte tbyteNode2; - tbyteNode2 = (TByte)nodeArrayList1.get(0); - - pbasetypeNode1 = new AByteBaseType(tbyteNode2); - } - nodeList.add(pbasetypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new58() /* reduce ACharBaseType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseType pbasetypeNode1; - { - // Block - TChar tcharNode2; - tcharNode2 = (TChar)nodeArrayList1.get(0); - - pbasetypeNode1 = new ACharBaseType(tcharNode2); - } - nodeList.add(pbasetypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new59() /* reduce AShortBaseType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseType pbasetypeNode1; - { - // Block - TShort tshortNode2; - tshortNode2 = (TShort)nodeArrayList1.get(0); - - pbasetypeNode1 = new AShortBaseType(tshortNode2); - } - nodeList.add(pbasetypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new60() /* reduce AIntBaseType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseType pbasetypeNode1; - { - // Block - TInt tintNode2; - tintNode2 = (TInt)nodeArrayList1.get(0); - - pbasetypeNode1 = new AIntBaseType(tintNode2); - } - nodeList.add(pbasetypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new61() /* reduce ALongBaseType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseType pbasetypeNode1; - { - // Block - TLong tlongNode2; - tlongNode2 = (TLong)nodeArrayList1.get(0); - - pbasetypeNode1 = new ALongBaseType(tlongNode2); - } - nodeList.add(pbasetypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new62() /* reduce AFloatBaseType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseType pbasetypeNode1; - { - // Block - TFloat tfloatNode2; - tfloatNode2 = (TFloat)nodeArrayList1.get(0); - - pbasetypeNode1 = new AFloatBaseType(tfloatNode2); - } - nodeList.add(pbasetypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new63() /* reduce ADoubleBaseType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseType pbasetypeNode1; - { - // Block - TDouble tdoubleNode2; - tdoubleNode2 = (TDouble)nodeArrayList1.get(0); - - pbasetypeNode1 = new ADoubleBaseType(tdoubleNode2); - } - nodeList.add(pbasetypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new64() /* reduce ANullBaseType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseType pbasetypeNode1; - { - // Block - TNullType tnulltypeNode2; - tnulltypeNode2 = (TNullType)nodeArrayList1.get(0); - - pbasetypeNode1 = new ANullBaseType(tnulltypeNode2); - } - nodeList.add(pbasetypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new65() /* reduce AClassNameBaseType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBaseType pbasetypeNode1; - { - // Block - PClassName pclassnameNode2; - pclassnameNode2 = (PClassName)nodeArrayList1.get(0); - - pbasetypeNode1 = new AClassNameBaseType(pclassnameNode2); - } - nodeList.add(pbasetypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new66() /* reduce AAbasenonvoidtype1NonvoidType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNonvoidType pnonvoidtypeNode1; - { - // Block - PBaseTypeNoName pbasetypenonameNode2; - LinkedList listNode3 = new LinkedList(); - pbasetypenonameNode2 = (PBaseTypeNoName)nodeArrayList1.get(0); - { - // Block - } - - pnonvoidtypeNode1 = new ABaseNonvoidType(pbasetypenonameNode2, listNode3); - } - nodeList.add(pnonvoidtypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new67() /* reduce AAbasenonvoidtype2NonvoidType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNonvoidType pnonvoidtypeNode1; - { - // Block - PBaseTypeNoName pbasetypenonameNode2; - LinkedList listNode4 = new LinkedList(); - pbasetypenonameNode2 = (PBaseTypeNoName)nodeArrayList1.get(0); - { - // Block - LinkedList listNode3 = new LinkedList(); - listNode3 = (LinkedList)nodeArrayList2.get(0); - if(listNode3 != null) - { - listNode4.addAll(listNode3); - } - } - - pnonvoidtypeNode1 = new ABaseNonvoidType(pbasetypenonameNode2, listNode4); - } - nodeList.add(pnonvoidtypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new68() /* reduce AAquotednonvoidtype1NonvoidType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNonvoidType pnonvoidtypeNode1; - { - // Block - TQuotedName tquotednameNode2; - LinkedList listNode3 = new LinkedList(); - tquotednameNode2 = (TQuotedName)nodeArrayList1.get(0); - { - // Block - } - - pnonvoidtypeNode1 = new AQuotedNonvoidType(tquotednameNode2, listNode3); - } - nodeList.add(pnonvoidtypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new69() /* reduce AAquotednonvoidtype2NonvoidType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNonvoidType pnonvoidtypeNode1; - { - // Block - TQuotedName tquotednameNode2; - LinkedList listNode4 = new LinkedList(); - tquotednameNode2 = (TQuotedName)nodeArrayList1.get(0); - { - // Block - LinkedList listNode3 = new LinkedList(); - listNode3 = (LinkedList)nodeArrayList2.get(0); - if(listNode3 != null) - { - listNode4.addAll(listNode3); - } - } - - pnonvoidtypeNode1 = new AQuotedNonvoidType(tquotednameNode2, listNode4); - } - nodeList.add(pnonvoidtypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new70() /* reduce AAidentnonvoidtype1NonvoidType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNonvoidType pnonvoidtypeNode1; - { - // Block - TIdentifier tidentifierNode2; - LinkedList listNode3 = new LinkedList(); - tidentifierNode2 = (TIdentifier)nodeArrayList1.get(0); - { - // Block - } - - pnonvoidtypeNode1 = new AIdentNonvoidType(tidentifierNode2, listNode3); - } - nodeList.add(pnonvoidtypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new71() /* reduce AAidentnonvoidtype2NonvoidType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNonvoidType pnonvoidtypeNode1; - { - // Block - TIdentifier tidentifierNode2; - LinkedList listNode4 = new LinkedList(); - tidentifierNode2 = (TIdentifier)nodeArrayList1.get(0); - { - // Block - LinkedList listNode3 = new LinkedList(); - listNode3 = (LinkedList)nodeArrayList2.get(0); - if(listNode3 != null) - { - listNode4.addAll(listNode3); - } - } - - pnonvoidtypeNode1 = new AIdentNonvoidType(tidentifierNode2, listNode4); - } - nodeList.add(pnonvoidtypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new72() /* reduce AAfullidentnonvoidtype1NonvoidType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNonvoidType pnonvoidtypeNode1; - { - // Block - TFullIdentifier tfullidentifierNode2; - LinkedList listNode3 = new LinkedList(); - tfullidentifierNode2 = (TFullIdentifier)nodeArrayList1.get(0); - { - // Block - } - - pnonvoidtypeNode1 = new AFullIdentNonvoidType(tfullidentifierNode2, listNode3); - } - nodeList.add(pnonvoidtypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new73() /* reduce AAfullidentnonvoidtype2NonvoidType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNonvoidType pnonvoidtypeNode1; - { - // Block - TFullIdentifier tfullidentifierNode2; - LinkedList listNode4 = new LinkedList(); - tfullidentifierNode2 = (TFullIdentifier)nodeArrayList1.get(0); - { - // Block - LinkedList listNode3 = new LinkedList(); - listNode3 = (LinkedList)nodeArrayList2.get(0); - if(listNode3 != null) - { - listNode4.addAll(listNode3); - } - } - - pnonvoidtypeNode1 = new AFullIdentNonvoidType(tfullidentifierNode2, listNode4); - } - nodeList.add(pnonvoidtypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new74() /* reduce AArrayBrackets */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PArrayBrackets parraybracketsNode1; - { - // Block - TLBracket tlbracketNode2; - TRBracket trbracketNode3; - tlbracketNode2 = (TLBracket)nodeArrayList1.get(0); - trbracketNode3 = (TRBracket)nodeArrayList2.get(0); - - parraybracketsNode1 = new AArrayBrackets(tlbracketNode2, trbracketNode3); - } - nodeList.add(parraybracketsNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new75() /* reduce AEmptyMethodBody */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMethodBody pmethodbodyNode1; - { - // Block - TSemicolon tsemicolonNode2; - tsemicolonNode2 = (TSemicolon)nodeArrayList1.get(0); - - pmethodbodyNode1 = new AEmptyMethodBody(tsemicolonNode2); - } - nodeList.add(pmethodbodyNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new76() /* reduce AAfullmethodbody1MethodBody */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMethodBody pmethodbodyNode1; - { - // Block - TLBrace tlbraceNode2; - LinkedList listNode3 = new LinkedList(); - LinkedList listNode4 = new LinkedList(); - LinkedList listNode5 = new LinkedList(); - TRBrace trbraceNode6; - tlbraceNode2 = (TLBrace)nodeArrayList1.get(0); - { - // Block - } - { - // Block - } - { - // Block - } - trbraceNode6 = (TRBrace)nodeArrayList2.get(0); - - pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode3, listNode4, listNode5, trbraceNode6); - } - nodeList.add(pmethodbodyNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new77() /* reduce AAfullmethodbody2MethodBody */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMethodBody pmethodbodyNode1; - { - // Block - TLBrace tlbraceNode2; - LinkedList listNode4 = new LinkedList(); - LinkedList listNode5 = new LinkedList(); - LinkedList listNode6 = new LinkedList(); - TRBrace trbraceNode7; - tlbraceNode2 = (TLBrace)nodeArrayList1.get(0); - { - // Block - LinkedList listNode3 = new LinkedList(); - listNode3 = (LinkedList)nodeArrayList2.get(0); - if(listNode3 != null) - { - listNode4.addAll(listNode3); - } - } - { - // Block - } - { - // Block - } - trbraceNode7 = (TRBrace)nodeArrayList3.get(0); - - pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode4, listNode5, listNode6, trbraceNode7); - } - nodeList.add(pmethodbodyNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new78() /* reduce AAfullmethodbody3MethodBody */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMethodBody pmethodbodyNode1; - { - // Block - TLBrace tlbraceNode2; - LinkedList listNode3 = new LinkedList(); - LinkedList listNode5 = new LinkedList(); - LinkedList listNode6 = new LinkedList(); - TRBrace trbraceNode7; - tlbraceNode2 = (TLBrace)nodeArrayList1.get(0); - { - // Block - } - { - // Block - LinkedList listNode4 = new LinkedList(); - listNode4 = (LinkedList)nodeArrayList2.get(0); - if(listNode4 != null) - { - listNode5.addAll(listNode4); - } - } - { - // Block - } - trbraceNode7 = (TRBrace)nodeArrayList3.get(0); - - pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode3, listNode5, listNode6, trbraceNode7); - } - nodeList.add(pmethodbodyNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new79() /* reduce AAfullmethodbody4MethodBody */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMethodBody pmethodbodyNode1; - { - // Block - TLBrace tlbraceNode2; - LinkedList listNode4 = new LinkedList(); - LinkedList listNode6 = new LinkedList(); - LinkedList listNode7 = new LinkedList(); - TRBrace trbraceNode8; - tlbraceNode2 = (TLBrace)nodeArrayList1.get(0); - { - // Block - LinkedList listNode3 = new LinkedList(); - listNode3 = (LinkedList)nodeArrayList2.get(0); - if(listNode3 != null) - { - listNode4.addAll(listNode3); - } - } - { - // Block - LinkedList listNode5 = new LinkedList(); - listNode5 = (LinkedList)nodeArrayList3.get(0); - if(listNode5 != null) - { - listNode6.addAll(listNode5); - } - } - { - // Block - } - trbraceNode8 = (TRBrace)nodeArrayList4.get(0); - - pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode4, listNode6, listNode7, trbraceNode8); - } - nodeList.add(pmethodbodyNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new80() /* reduce AAfullmethodbody5MethodBody */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMethodBody pmethodbodyNode1; - { - // Block - TLBrace tlbraceNode2; - LinkedList listNode3 = new LinkedList(); - LinkedList listNode4 = new LinkedList(); - LinkedList listNode6 = new LinkedList(); - TRBrace trbraceNode7; - tlbraceNode2 = (TLBrace)nodeArrayList1.get(0); - { - // Block - } - { - // Block - } - { - // Block - LinkedList listNode5 = new LinkedList(); - listNode5 = (LinkedList)nodeArrayList2.get(0); - if(listNode5 != null) - { - listNode6.addAll(listNode5); - } - } - trbraceNode7 = (TRBrace)nodeArrayList3.get(0); - - pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode3, listNode4, listNode6, trbraceNode7); - } - nodeList.add(pmethodbodyNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new81() /* reduce AAfullmethodbody6MethodBody */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMethodBody pmethodbodyNode1; - { - // Block - TLBrace tlbraceNode2; - LinkedList listNode4 = new LinkedList(); - LinkedList listNode5 = new LinkedList(); - LinkedList listNode7 = new LinkedList(); - TRBrace trbraceNode8; - tlbraceNode2 = (TLBrace)nodeArrayList1.get(0); - { - // Block - LinkedList listNode3 = new LinkedList(); - listNode3 = (LinkedList)nodeArrayList2.get(0); - if(listNode3 != null) - { - listNode4.addAll(listNode3); - } - } - { - // Block - } - { - // Block - LinkedList listNode6 = new LinkedList(); - listNode6 = (LinkedList)nodeArrayList3.get(0); - if(listNode6 != null) - { - listNode7.addAll(listNode6); - } - } - trbraceNode8 = (TRBrace)nodeArrayList4.get(0); - - pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode4, listNode5, listNode7, trbraceNode8); - } - nodeList.add(pmethodbodyNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new82() /* reduce AAfullmethodbody7MethodBody */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMethodBody pmethodbodyNode1; - { - // Block - TLBrace tlbraceNode2; - LinkedList listNode3 = new LinkedList(); - LinkedList listNode5 = new LinkedList(); - LinkedList listNode7 = new LinkedList(); - TRBrace trbraceNode8; - tlbraceNode2 = (TLBrace)nodeArrayList1.get(0); - { - // Block - } - { - // Block - LinkedList listNode4 = new LinkedList(); - listNode4 = (LinkedList)nodeArrayList2.get(0); - if(listNode4 != null) - { - listNode5.addAll(listNode4); - } - } - { - // Block - LinkedList listNode6 = new LinkedList(); - listNode6 = (LinkedList)nodeArrayList3.get(0); - if(listNode6 != null) - { - listNode7.addAll(listNode6); - } - } - trbraceNode8 = (TRBrace)nodeArrayList4.get(0); - - pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode3, listNode5, listNode7, trbraceNode8); - } - nodeList.add(pmethodbodyNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new83() /* reduce AAfullmethodbody8MethodBody */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMethodBody pmethodbodyNode1; - { - // Block - TLBrace tlbraceNode2; - LinkedList listNode4 = new LinkedList(); - LinkedList listNode6 = new LinkedList(); - LinkedList listNode8 = new LinkedList(); - TRBrace trbraceNode9; - tlbraceNode2 = (TLBrace)nodeArrayList1.get(0); - { - // Block - LinkedList listNode3 = new LinkedList(); - listNode3 = (LinkedList)nodeArrayList2.get(0); - if(listNode3 != null) - { - listNode4.addAll(listNode3); - } - } - { - // Block - LinkedList listNode5 = new LinkedList(); - listNode5 = (LinkedList)nodeArrayList3.get(0); - if(listNode5 != null) - { - listNode6.addAll(listNode5); - } - } - { - // Block - LinkedList listNode7 = new LinkedList(); - listNode7 = (LinkedList)nodeArrayList4.get(0); - if(listNode7 != null) - { - listNode8.addAll(listNode7); - } - } - trbraceNode9 = (TRBrace)nodeArrayList5.get(0); - - pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode4, listNode6, listNode8, trbraceNode9); - } - nodeList.add(pmethodbodyNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new84() /* reduce ADeclaration */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PDeclaration pdeclarationNode1; - { - // Block - PJimpleType pjimpletypeNode2; - PLocalNameList plocalnamelistNode3; - TSemicolon tsemicolonNode4; - pjimpletypeNode2 = (PJimpleType)nodeArrayList1.get(0); - plocalnamelistNode3 = (PLocalNameList)nodeArrayList2.get(0); - tsemicolonNode4 = (TSemicolon)nodeArrayList3.get(0); - - pdeclarationNode1 = new ADeclaration(pjimpletypeNode2, plocalnamelistNode3, tsemicolonNode4); - } - nodeList.add(pdeclarationNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new85() /* reduce AUnknownJimpleType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PJimpleType pjimpletypeNode1; - { - // Block - TUnknown tunknownNode2; - tunknownNode2 = (TUnknown)nodeArrayList1.get(0); - - pjimpletypeNode1 = new AUnknownJimpleType(tunknownNode2); - } - nodeList.add(pjimpletypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new86() /* reduce ANonvoidJimpleType */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PJimpleType pjimpletypeNode1; - { - // Block - PNonvoidType pnonvoidtypeNode2; - pnonvoidtypeNode2 = (PNonvoidType)nodeArrayList1.get(0); - - pjimpletypeNode1 = new ANonvoidJimpleType(pnonvoidtypeNode2); - } - nodeList.add(pjimpletypeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new87() /* reduce ALocalName */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PLocalName plocalnameNode1; - { - // Block - PName pnameNode2; - pnameNode2 = (PName)nodeArrayList1.get(0); - - plocalnameNode1 = new ALocalName(pnameNode2); - } - nodeList.add(plocalnameNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new88() /* reduce ASingleLocalNameList */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PLocalNameList plocalnamelistNode1; - { - // Block - PLocalName plocalnameNode2; - plocalnameNode2 = (PLocalName)nodeArrayList1.get(0); - - plocalnamelistNode1 = new ASingleLocalNameList(plocalnameNode2); - } - nodeList.add(plocalnamelistNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new89() /* reduce AMultiLocalNameList */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PLocalNameList plocalnamelistNode1; - { - // Block - PLocalName plocalnameNode2; - TComma tcommaNode3; - PLocalNameList plocalnamelistNode4; - plocalnameNode2 = (PLocalName)nodeArrayList1.get(0); - tcommaNode3 = (TComma)nodeArrayList2.get(0); - plocalnamelistNode4 = (PLocalNameList)nodeArrayList3.get(0); - - plocalnamelistNode1 = new AMultiLocalNameList(plocalnameNode2, tcommaNode3, plocalnamelistNode4); - } - nodeList.add(plocalnamelistNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new90() /* reduce ALabelStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - PLabelName plabelnameNode2; - TColon tcolonNode3; - plabelnameNode2 = (PLabelName)nodeArrayList1.get(0); - tcolonNode3 = (TColon)nodeArrayList2.get(0); - - pstatementNode1 = new ALabelStatement(plabelnameNode2, tcolonNode3); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new91() /* reduce ABreakpointStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - TBreakpoint tbreakpointNode2; - TSemicolon tsemicolonNode3; - tbreakpointNode2 = (TBreakpoint)nodeArrayList1.get(0); - tsemicolonNode3 = (TSemicolon)nodeArrayList2.get(0); - - pstatementNode1 = new ABreakpointStatement(tbreakpointNode2, tsemicolonNode3); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new92() /* reduce AEntermonitorStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - TEntermonitor tentermonitorNode2; - PImmediate pimmediateNode3; - TSemicolon tsemicolonNode4; - tentermonitorNode2 = (TEntermonitor)nodeArrayList1.get(0); - pimmediateNode3 = (PImmediate)nodeArrayList2.get(0); - tsemicolonNode4 = (TSemicolon)nodeArrayList3.get(0); - - pstatementNode1 = new AEntermonitorStatement(tentermonitorNode2, pimmediateNode3, tsemicolonNode4); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new93() /* reduce AExitmonitorStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - TExitmonitor texitmonitorNode2; - PImmediate pimmediateNode3; - TSemicolon tsemicolonNode4; - texitmonitorNode2 = (TExitmonitor)nodeArrayList1.get(0); - pimmediateNode3 = (PImmediate)nodeArrayList2.get(0); - tsemicolonNode4 = (TSemicolon)nodeArrayList3.get(0); - - pstatementNode1 = new AExitmonitorStatement(texitmonitorNode2, pimmediateNode3, tsemicolonNode4); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new94() /* reduce ATableswitchStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList8 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - TTableswitch ttableswitchNode2; - TLParen tlparenNode3; - PImmediate pimmediateNode4; - TRParen trparenNode5; - TLBrace tlbraceNode6; - LinkedList listNode8 = new LinkedList(); - TRBrace trbraceNode9; - TSemicolon tsemicolonNode10; - ttableswitchNode2 = (TTableswitch)nodeArrayList1.get(0); - tlparenNode3 = (TLParen)nodeArrayList2.get(0); - pimmediateNode4 = (PImmediate)nodeArrayList3.get(0); - trparenNode5 = (TRParen)nodeArrayList4.get(0); - tlbraceNode6 = (TLBrace)nodeArrayList5.get(0); - { - // Block - LinkedList listNode7 = new LinkedList(); - listNode7 = (LinkedList)nodeArrayList6.get(0); - if(listNode7 != null) - { - listNode8.addAll(listNode7); - } - } - trbraceNode9 = (TRBrace)nodeArrayList7.get(0); - tsemicolonNode10 = (TSemicolon)nodeArrayList8.get(0); - - pstatementNode1 = new ATableswitchStatement(ttableswitchNode2, tlparenNode3, pimmediateNode4, trparenNode5, tlbraceNode6, listNode8, trbraceNode9, tsemicolonNode10); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new95() /* reduce ALookupswitchStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList8 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - TLookupswitch tlookupswitchNode2; - TLParen tlparenNode3; - PImmediate pimmediateNode4; - TRParen trparenNode5; - TLBrace tlbraceNode6; - LinkedList listNode8 = new LinkedList(); - TRBrace trbraceNode9; - TSemicolon tsemicolonNode10; - tlookupswitchNode2 = (TLookupswitch)nodeArrayList1.get(0); - tlparenNode3 = (TLParen)nodeArrayList2.get(0); - pimmediateNode4 = (PImmediate)nodeArrayList3.get(0); - trparenNode5 = (TRParen)nodeArrayList4.get(0); - tlbraceNode6 = (TLBrace)nodeArrayList5.get(0); - { - // Block - LinkedList listNode7 = new LinkedList(); - listNode7 = (LinkedList)nodeArrayList6.get(0); - if(listNode7 != null) - { - listNode8.addAll(listNode7); - } - } - trbraceNode9 = (TRBrace)nodeArrayList7.get(0); - tsemicolonNode10 = (TSemicolon)nodeArrayList8.get(0); - - pstatementNode1 = new ALookupswitchStatement(tlookupswitchNode2, tlparenNode3, pimmediateNode4, trparenNode5, tlbraceNode6, listNode8, trbraceNode9, tsemicolonNode10); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new96() /* reduce AIdentityStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - PLocalName plocalnameNode2; - TColonEquals tcolonequalsNode3; - TAtIdentifier tatidentifierNode4; - PType ptypeNode5; - TSemicolon tsemicolonNode6; - plocalnameNode2 = (PLocalName)nodeArrayList1.get(0); - tcolonequalsNode3 = (TColonEquals)nodeArrayList2.get(0); - tatidentifierNode4 = (TAtIdentifier)nodeArrayList3.get(0); - ptypeNode5 = (PType)nodeArrayList4.get(0); - tsemicolonNode6 = (TSemicolon)nodeArrayList5.get(0); - - pstatementNode1 = new AIdentityStatement(plocalnameNode2, tcolonequalsNode3, tatidentifierNode4, ptypeNode5, tsemicolonNode6); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new97() /* reduce AIdentityNoTypeStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - PLocalName plocalnameNode2; - TColonEquals tcolonequalsNode3; - TAtIdentifier tatidentifierNode4; - TSemicolon tsemicolonNode5; - plocalnameNode2 = (PLocalName)nodeArrayList1.get(0); - tcolonequalsNode3 = (TColonEquals)nodeArrayList2.get(0); - tatidentifierNode4 = (TAtIdentifier)nodeArrayList3.get(0); - tsemicolonNode5 = (TSemicolon)nodeArrayList4.get(0); - - pstatementNode1 = new AIdentityNoTypeStatement(plocalnameNode2, tcolonequalsNode3, tatidentifierNode4, tsemicolonNode5); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new98() /* reduce AAssignStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - PVariable pvariableNode2; - TEquals tequalsNode3; - PExpression pexpressionNode4; - TSemicolon tsemicolonNode5; - pvariableNode2 = (PVariable)nodeArrayList1.get(0); - tequalsNode3 = (TEquals)nodeArrayList2.get(0); - pexpressionNode4 = (PExpression)nodeArrayList3.get(0); - tsemicolonNode5 = (TSemicolon)nodeArrayList4.get(0); - - pstatementNode1 = new AAssignStatement(pvariableNode2, tequalsNode3, pexpressionNode4, tsemicolonNode5); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new99() /* reduce AIfStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - TIf tifNode2; - PBoolExpr pboolexprNode3; - PGotoStmt pgotostmtNode4; - tifNode2 = (TIf)nodeArrayList1.get(0); - pboolexprNode3 = (PBoolExpr)nodeArrayList2.get(0); - pgotostmtNode4 = (PGotoStmt)nodeArrayList3.get(0); - - pstatementNode1 = new AIfStatement(tifNode2, pboolexprNode3, pgotostmtNode4); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new100() /* reduce AGotoStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - PGotoStmt pgotostmtNode2; - pgotostmtNode2 = (PGotoStmt)nodeArrayList1.get(0); - - pstatementNode1 = new AGotoStatement(pgotostmtNode2); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new101() /* reduce ANopStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - TNop tnopNode2; - TSemicolon tsemicolonNode3; - tnopNode2 = (TNop)nodeArrayList1.get(0); - tsemicolonNode3 = (TSemicolon)nodeArrayList2.get(0); - - pstatementNode1 = new ANopStatement(tnopNode2, tsemicolonNode3); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new102() /* reduce AAretstatement1Statement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - TRet tretNode2; - @SuppressWarnings("unused") Object nullNode3 = null; - TSemicolon tsemicolonNode4; - tretNode2 = (TRet)nodeArrayList1.get(0); - tsemicolonNode4 = (TSemicolon)nodeArrayList2.get(0); - - pstatementNode1 = new ARetStatement(tretNode2, null, tsemicolonNode4); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new103() /* reduce AAretstatement2Statement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - TRet tretNode2; - PImmediate pimmediateNode3; - TSemicolon tsemicolonNode4; - tretNode2 = (TRet)nodeArrayList1.get(0); - pimmediateNode3 = (PImmediate)nodeArrayList2.get(0); - tsemicolonNode4 = (TSemicolon)nodeArrayList3.get(0); - - pstatementNode1 = new ARetStatement(tretNode2, pimmediateNode3, tsemicolonNode4); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new104() /* reduce AAreturnstatement1Statement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - TReturn treturnNode2; - @SuppressWarnings("unused") Object nullNode3 = null; - TSemicolon tsemicolonNode4; - treturnNode2 = (TReturn)nodeArrayList1.get(0); - tsemicolonNode4 = (TSemicolon)nodeArrayList2.get(0); - - pstatementNode1 = new AReturnStatement(treturnNode2, null, tsemicolonNode4); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new105() /* reduce AAreturnstatement2Statement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - TReturn treturnNode2; - PImmediate pimmediateNode3; - TSemicolon tsemicolonNode4; - treturnNode2 = (TReturn)nodeArrayList1.get(0); - pimmediateNode3 = (PImmediate)nodeArrayList2.get(0); - tsemicolonNode4 = (TSemicolon)nodeArrayList3.get(0); - - pstatementNode1 = new AReturnStatement(treturnNode2, pimmediateNode3, tsemicolonNode4); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new106() /* reduce AThrowStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - TThrow tthrowNode2; - PImmediate pimmediateNode3; - TSemicolon tsemicolonNode4; - tthrowNode2 = (TThrow)nodeArrayList1.get(0); - pimmediateNode3 = (PImmediate)nodeArrayList2.get(0); - tsemicolonNode4 = (TSemicolon)nodeArrayList3.get(0); - - pstatementNode1 = new AThrowStatement(tthrowNode2, pimmediateNode3, tsemicolonNode4); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new107() /* reduce AInvokeStatement */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PStatement pstatementNode1; - { - // Block - PInvokeExpr pinvokeexprNode2; - TSemicolon tsemicolonNode3; - pinvokeexprNode2 = (PInvokeExpr)nodeArrayList1.get(0); - tsemicolonNode3 = (TSemicolon)nodeArrayList2.get(0); - - pstatementNode1 = new AInvokeStatement(pinvokeexprNode2, tsemicolonNode3); - } - nodeList.add(pstatementNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new108() /* reduce ALabelName */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PLabelName plabelnameNode1; - { - // Block - TIdentifier tidentifierNode2; - tidentifierNode2 = (TIdentifier)nodeArrayList1.get(0); - - plabelnameNode1 = new ALabelName(tidentifierNode2); - } - nodeList.add(plabelnameNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new109() /* reduce ACaseStmt */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PCaseStmt pcasestmtNode1; - { - // Block - PCaseLabel pcaselabelNode2; - TColon tcolonNode3; - PGotoStmt pgotostmtNode4; - pcaselabelNode2 = (PCaseLabel)nodeArrayList1.get(0); - tcolonNode3 = (TColon)nodeArrayList2.get(0); - pgotostmtNode4 = (PGotoStmt)nodeArrayList3.get(0); - - pcasestmtNode1 = new ACaseStmt(pcaselabelNode2, tcolonNode3, pgotostmtNode4); - } - nodeList.add(pcasestmtNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new110() /* reduce AAconstantcaselabel1CaseLabel */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PCaseLabel pcaselabelNode1; - { - // Block - TCase tcaseNode2; - @SuppressWarnings("unused") Object nullNode3 = null; - TIntegerConstant tintegerconstantNode4; - tcaseNode2 = (TCase)nodeArrayList1.get(0); - tintegerconstantNode4 = (TIntegerConstant)nodeArrayList2.get(0); - - pcaselabelNode1 = new AConstantCaseLabel(tcaseNode2, null, tintegerconstantNode4); - } - nodeList.add(pcaselabelNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new111() /* reduce AAconstantcaselabel2CaseLabel */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PCaseLabel pcaselabelNode1; - { - // Block - TCase tcaseNode2; - TMinus tminusNode3; - TIntegerConstant tintegerconstantNode4; - tcaseNode2 = (TCase)nodeArrayList1.get(0); - tminusNode3 = (TMinus)nodeArrayList2.get(0); - tintegerconstantNode4 = (TIntegerConstant)nodeArrayList3.get(0); - - pcaselabelNode1 = new AConstantCaseLabel(tcaseNode2, tminusNode3, tintegerconstantNode4); - } - nodeList.add(pcaselabelNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new112() /* reduce ADefaultCaseLabel */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PCaseLabel pcaselabelNode1; - { - // Block - TDefault tdefaultNode2; - tdefaultNode2 = (TDefault)nodeArrayList1.get(0); - - pcaselabelNode1 = new ADefaultCaseLabel(tdefaultNode2); - } - nodeList.add(pcaselabelNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new113() /* reduce AGotoStmt */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PGotoStmt pgotostmtNode1; - { - // Block - TGoto tgotoNode2; - PLabelName plabelnameNode3; - TSemicolon tsemicolonNode4; - tgotoNode2 = (TGoto)nodeArrayList1.get(0); - plabelnameNode3 = (PLabelName)nodeArrayList2.get(0); - tsemicolonNode4 = (TSemicolon)nodeArrayList3.get(0); - - pgotostmtNode1 = new AGotoStmt(tgotoNode2, plabelnameNode3, tsemicolonNode4); - } - nodeList.add(pgotostmtNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new114() /* reduce ACatchClause */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList9 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList8 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PCatchClause pcatchclauseNode1; - { - // Block - TCatch tcatchNode2; - PClassName pclassnameNode3; - TFrom tfromNode4; - PLabelName plabelnameNode5; - TTo ttoNode6; - PLabelName plabelnameNode7; - TWith twithNode8; - PLabelName plabelnameNode9; - TSemicolon tsemicolonNode10; - tcatchNode2 = (TCatch)nodeArrayList1.get(0); - pclassnameNode3 = (PClassName)nodeArrayList2.get(0); - tfromNode4 = (TFrom)nodeArrayList3.get(0); - plabelnameNode5 = (PLabelName)nodeArrayList4.get(0); - ttoNode6 = (TTo)nodeArrayList5.get(0); - plabelnameNode7 = (PLabelName)nodeArrayList6.get(0); - twithNode8 = (TWith)nodeArrayList7.get(0); - plabelnameNode9 = (PLabelName)nodeArrayList8.get(0); - tsemicolonNode10 = (TSemicolon)nodeArrayList9.get(0); - - pcatchclauseNode1 = new ACatchClause(tcatchNode2, pclassnameNode3, tfromNode4, plabelnameNode5, ttoNode6, plabelnameNode7, twithNode8, plabelnameNode9, tsemicolonNode10); - } - nodeList.add(pcatchclauseNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new115() /* reduce ANewExpression */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PExpression pexpressionNode1; - { - // Block - PNewExpr pnewexprNode2; - pnewexprNode2 = (PNewExpr)nodeArrayList1.get(0); - - pexpressionNode1 = new ANewExpression(pnewexprNode2); - } - nodeList.add(pexpressionNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new116() /* reduce ACastExpression */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PExpression pexpressionNode1; - { - // Block - TLParen tlparenNode2; - PNonvoidType pnonvoidtypeNode3; - TRParen trparenNode4; - PImmediate pimmediateNode5; - tlparenNode2 = (TLParen)nodeArrayList1.get(0); - pnonvoidtypeNode3 = (PNonvoidType)nodeArrayList2.get(0); - trparenNode4 = (TRParen)nodeArrayList3.get(0); - pimmediateNode5 = (PImmediate)nodeArrayList4.get(0); - - pexpressionNode1 = new ACastExpression(tlparenNode2, pnonvoidtypeNode3, trparenNode4, pimmediateNode5); - } - nodeList.add(pexpressionNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new117() /* reduce AInstanceofExpression */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PExpression pexpressionNode1; - { - // Block - PImmediate pimmediateNode2; - TInstanceof tinstanceofNode3; - PNonvoidType pnonvoidtypeNode4; - pimmediateNode2 = (PImmediate)nodeArrayList1.get(0); - tinstanceofNode3 = (TInstanceof)nodeArrayList2.get(0); - pnonvoidtypeNode4 = (PNonvoidType)nodeArrayList3.get(0); - - pexpressionNode1 = new AInstanceofExpression(pimmediateNode2, tinstanceofNode3, pnonvoidtypeNode4); - } - nodeList.add(pexpressionNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new118() /* reduce AInvokeExpression */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PExpression pexpressionNode1; - { - // Block - PInvokeExpr pinvokeexprNode2; - pinvokeexprNode2 = (PInvokeExpr)nodeArrayList1.get(0); - - pexpressionNode1 = new AInvokeExpression(pinvokeexprNode2); - } - nodeList.add(pexpressionNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new119() /* reduce AReferenceExpression */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PExpression pexpressionNode1; - { - // Block - PReference preferenceNode2; - preferenceNode2 = (PReference)nodeArrayList1.get(0); - - pexpressionNode1 = new AReferenceExpression(preferenceNode2); - } - nodeList.add(pexpressionNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new120() /* reduce ABinopExpression */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PExpression pexpressionNode1; - { - // Block - PBinopExpr pbinopexprNode2; - pbinopexprNode2 = (PBinopExpr)nodeArrayList1.get(0); - - pexpressionNode1 = new ABinopExpression(pbinopexprNode2); - } - nodeList.add(pexpressionNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new121() /* reduce AUnopExpression */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PExpression pexpressionNode1; - { - // Block - PUnopExpr punopexprNode2; - punopexprNode2 = (PUnopExpr)nodeArrayList1.get(0); - - pexpressionNode1 = new AUnopExpression(punopexprNode2); - } - nodeList.add(pexpressionNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new122() /* reduce AImmediateExpression */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PExpression pexpressionNode1; - { - // Block - PImmediate pimmediateNode2; - pimmediateNode2 = (PImmediate)nodeArrayList1.get(0); - - pexpressionNode1 = new AImmediateExpression(pimmediateNode2); - } - nodeList.add(pexpressionNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new123() /* reduce ASimpleNewExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNewExpr pnewexprNode1; - { - // Block - TNew tnewNode2; - PBaseType pbasetypeNode3; - tnewNode2 = (TNew)nodeArrayList1.get(0); - pbasetypeNode3 = (PBaseType)nodeArrayList2.get(0); - - pnewexprNode1 = new ASimpleNewExpr(tnewNode2, pbasetypeNode3); - } - nodeList.add(pnewexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new124() /* reduce AArrayNewExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNewExpr pnewexprNode1; - { - // Block - TNewarray tnewarrayNode2; - TLParen tlparenNode3; - PNonvoidType pnonvoidtypeNode4; - TRParen trparenNode5; - PFixedArrayDescriptor pfixedarraydescriptorNode6; - tnewarrayNode2 = (TNewarray)nodeArrayList1.get(0); - tlparenNode3 = (TLParen)nodeArrayList2.get(0); - pnonvoidtypeNode4 = (PNonvoidType)nodeArrayList3.get(0); - trparenNode5 = (TRParen)nodeArrayList4.get(0); - pfixedarraydescriptorNode6 = (PFixedArrayDescriptor)nodeArrayList5.get(0); - - pnewexprNode1 = new AArrayNewExpr(tnewarrayNode2, tlparenNode3, pnonvoidtypeNode4, trparenNode5, pfixedarraydescriptorNode6); - } - nodeList.add(pnewexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new125() /* reduce AMultiNewExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNewExpr pnewexprNode1; - { - // Block - TNewmultiarray tnewmultiarrayNode2; - TLParen tlparenNode3; - PBaseType pbasetypeNode4; - TRParen trparenNode5; - LinkedList listNode7 = new LinkedList(); - tnewmultiarrayNode2 = (TNewmultiarray)nodeArrayList1.get(0); - tlparenNode3 = (TLParen)nodeArrayList2.get(0); - pbasetypeNode4 = (PBaseType)nodeArrayList3.get(0); - trparenNode5 = (TRParen)nodeArrayList4.get(0); - { - // Block - LinkedList listNode6 = new LinkedList(); - listNode6 = (LinkedList)nodeArrayList5.get(0); - if(listNode6 != null) - { - listNode7.addAll(listNode6); - } - } - - pnewexprNode1 = new AMultiNewExpr(tnewmultiarrayNode2, tlparenNode3, pbasetypeNode4, trparenNode5, listNode7); - } - nodeList.add(pnewexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new126() /* reduce AAarraydescriptor1ArrayDescriptor */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PArrayDescriptor parraydescriptorNode1; - { - // Block - TLBracket tlbracketNode2; - @SuppressWarnings("unused") Object nullNode3 = null; - TRBracket trbracketNode4; - tlbracketNode2 = (TLBracket)nodeArrayList1.get(0); - trbracketNode4 = (TRBracket)nodeArrayList2.get(0); - - parraydescriptorNode1 = new AArrayDescriptor(tlbracketNode2, null, trbracketNode4); - } - nodeList.add(parraydescriptorNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new127() /* reduce AAarraydescriptor2ArrayDescriptor */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PArrayDescriptor parraydescriptorNode1; - { - // Block - TLBracket tlbracketNode2; - PImmediate pimmediateNode3; - TRBracket trbracketNode4; - tlbracketNode2 = (TLBracket)nodeArrayList1.get(0); - pimmediateNode3 = (PImmediate)nodeArrayList2.get(0); - trbracketNode4 = (TRBracket)nodeArrayList3.get(0); - - parraydescriptorNode1 = new AArrayDescriptor(tlbracketNode2, pimmediateNode3, trbracketNode4); - } - nodeList.add(parraydescriptorNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new128() /* reduce AReferenceVariable */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PVariable pvariableNode1; - { - // Block - PReference preferenceNode2; - preferenceNode2 = (PReference)nodeArrayList1.get(0); - - pvariableNode1 = new AReferenceVariable(preferenceNode2); - } - nodeList.add(pvariableNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new129() /* reduce ALocalVariable */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PVariable pvariableNode1; - { - // Block - PLocalName plocalnameNode2; - plocalnameNode2 = (PLocalName)nodeArrayList1.get(0); - - pvariableNode1 = new ALocalVariable(plocalnameNode2); - } - nodeList.add(pvariableNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new130() /* reduce ABinopBoolExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBoolExpr pboolexprNode1; - { - // Block - PBinopExpr pbinopexprNode2; - pbinopexprNode2 = (PBinopExpr)nodeArrayList1.get(0); - - pboolexprNode1 = new ABinopBoolExpr(pbinopexprNode2); - } - nodeList.add(pboolexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new131() /* reduce AUnopBoolExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBoolExpr pboolexprNode1; - { - // Block - PUnopExpr punopexprNode2; - punopexprNode2 = (PUnopExpr)nodeArrayList1.get(0); - - pboolexprNode1 = new AUnopBoolExpr(punopexprNode2); - } - nodeList.add(pboolexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new132() /* reduce AAnonstaticinvokeexpr1InvokeExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PInvokeExpr pinvokeexprNode1; - { - // Block - PNonstaticInvoke pnonstaticinvokeNode2; - PLocalName plocalnameNode3; - TDot tdotNode4; - PMethodSignature pmethodsignatureNode5; - TLParen tlparenNode6; - @SuppressWarnings("unused") Object nullNode7 = null; - TRParen trparenNode8; - pnonstaticinvokeNode2 = (PNonstaticInvoke)nodeArrayList1.get(0); - plocalnameNode3 = (PLocalName)nodeArrayList2.get(0); - tdotNode4 = (TDot)nodeArrayList3.get(0); - pmethodsignatureNode5 = (PMethodSignature)nodeArrayList4.get(0); - tlparenNode6 = (TLParen)nodeArrayList5.get(0); - trparenNode8 = (TRParen)nodeArrayList6.get(0); - - pinvokeexprNode1 = new ANonstaticInvokeExpr(pnonstaticinvokeNode2, plocalnameNode3, tdotNode4, pmethodsignatureNode5, tlparenNode6, null, trparenNode8); - } - nodeList.add(pinvokeexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new133() /* reduce AAnonstaticinvokeexpr2InvokeExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PInvokeExpr pinvokeexprNode1; - { - // Block - PNonstaticInvoke pnonstaticinvokeNode2; - PLocalName plocalnameNode3; - TDot tdotNode4; - PMethodSignature pmethodsignatureNode5; - TLParen tlparenNode6; - PArgList parglistNode7; - TRParen trparenNode8; - pnonstaticinvokeNode2 = (PNonstaticInvoke)nodeArrayList1.get(0); - plocalnameNode3 = (PLocalName)nodeArrayList2.get(0); - tdotNode4 = (TDot)nodeArrayList3.get(0); - pmethodsignatureNode5 = (PMethodSignature)nodeArrayList4.get(0); - tlparenNode6 = (TLParen)nodeArrayList5.get(0); - parglistNode7 = (PArgList)nodeArrayList6.get(0); - trparenNode8 = (TRParen)nodeArrayList7.get(0); - - pinvokeexprNode1 = new ANonstaticInvokeExpr(pnonstaticinvokeNode2, plocalnameNode3, tdotNode4, pmethodsignatureNode5, tlparenNode6, parglistNode7, trparenNode8); - } - nodeList.add(pinvokeexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new134() /* reduce AAstaticinvokeexpr1InvokeExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PInvokeExpr pinvokeexprNode1; - { - // Block - TStaticinvoke tstaticinvokeNode2; - PMethodSignature pmethodsignatureNode3; - TLParen tlparenNode4; - @SuppressWarnings("unused") Object nullNode5 = null; - TRParen trparenNode6; - tstaticinvokeNode2 = (TStaticinvoke)nodeArrayList1.get(0); - pmethodsignatureNode3 = (PMethodSignature)nodeArrayList2.get(0); - tlparenNode4 = (TLParen)nodeArrayList3.get(0); - trparenNode6 = (TRParen)nodeArrayList4.get(0); - - pinvokeexprNode1 = new AStaticInvokeExpr(tstaticinvokeNode2, pmethodsignatureNode3, tlparenNode4, null, trparenNode6); - } - nodeList.add(pinvokeexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new135() /* reduce AAstaticinvokeexpr2InvokeExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PInvokeExpr pinvokeexprNode1; - { - // Block - TStaticinvoke tstaticinvokeNode2; - PMethodSignature pmethodsignatureNode3; - TLParen tlparenNode4; - PArgList parglistNode5; - TRParen trparenNode6; - tstaticinvokeNode2 = (TStaticinvoke)nodeArrayList1.get(0); - pmethodsignatureNode3 = (PMethodSignature)nodeArrayList2.get(0); - tlparenNode4 = (TLParen)nodeArrayList3.get(0); - parglistNode5 = (PArgList)nodeArrayList4.get(0); - trparenNode6 = (TRParen)nodeArrayList5.get(0); - - pinvokeexprNode1 = new AStaticInvokeExpr(tstaticinvokeNode2, pmethodsignatureNode3, tlparenNode4, parglistNode5, trparenNode6); - } - nodeList.add(pinvokeexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new136() /* reduce AAdynamicinvokeexpr1InvokeExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList8 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PInvokeExpr pinvokeexprNode1; - { - // Block - TDynamicinvoke tdynamicinvokeNode2; - TStringConstant tstringconstantNode3; - PUnnamedMethodSignature punnamedmethodsignatureNode4; - TLParen tlparenNode5; - @SuppressWarnings("unused") Object nullNode6 = null; - TRParen trparenNode7; - PMethodSignature pmethodsignatureNode8; - TLParen tlparenNode9; - @SuppressWarnings("unused") Object nullNode10 = null; - TRParen trparenNode11; - tdynamicinvokeNode2 = (TDynamicinvoke)nodeArrayList1.get(0); - tstringconstantNode3 = (TStringConstant)nodeArrayList2.get(0); - punnamedmethodsignatureNode4 = (PUnnamedMethodSignature)nodeArrayList3.get(0); - tlparenNode5 = (TLParen)nodeArrayList4.get(0); - trparenNode7 = (TRParen)nodeArrayList5.get(0); - pmethodsignatureNode8 = (PMethodSignature)nodeArrayList6.get(0); - tlparenNode9 = (TLParen)nodeArrayList7.get(0); - trparenNode11 = (TRParen)nodeArrayList8.get(0); - - pinvokeexprNode1 = new ADynamicInvokeExpr(tdynamicinvokeNode2, tstringconstantNode3, punnamedmethodsignatureNode4, tlparenNode5, null, trparenNode7, pmethodsignatureNode8, tlparenNode9, null, trparenNode11); - } - nodeList.add(pinvokeexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new137() /* reduce AAdynamicinvokeexpr2InvokeExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList9 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList8 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PInvokeExpr pinvokeexprNode1; - { - // Block - TDynamicinvoke tdynamicinvokeNode2; - TStringConstant tstringconstantNode3; - PUnnamedMethodSignature punnamedmethodsignatureNode4; - TLParen tlparenNode5; - PArgList parglistNode6; - TRParen trparenNode7; - PMethodSignature pmethodsignatureNode8; - TLParen tlparenNode9; - @SuppressWarnings("unused") Object nullNode10 = null; - TRParen trparenNode11; - tdynamicinvokeNode2 = (TDynamicinvoke)nodeArrayList1.get(0); - tstringconstantNode3 = (TStringConstant)nodeArrayList2.get(0); - punnamedmethodsignatureNode4 = (PUnnamedMethodSignature)nodeArrayList3.get(0); - tlparenNode5 = (TLParen)nodeArrayList4.get(0); - parglistNode6 = (PArgList)nodeArrayList5.get(0); - trparenNode7 = (TRParen)nodeArrayList6.get(0); - pmethodsignatureNode8 = (PMethodSignature)nodeArrayList7.get(0); - tlparenNode9 = (TLParen)nodeArrayList8.get(0); - trparenNode11 = (TRParen)nodeArrayList9.get(0); - - pinvokeexprNode1 = new ADynamicInvokeExpr(tdynamicinvokeNode2, tstringconstantNode3, punnamedmethodsignatureNode4, tlparenNode5, parglistNode6, trparenNode7, pmethodsignatureNode8, tlparenNode9, null, trparenNode11); - } - nodeList.add(pinvokeexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new138() /* reduce AAdynamicinvokeexpr3InvokeExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList9 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList8 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PInvokeExpr pinvokeexprNode1; - { - // Block - TDynamicinvoke tdynamicinvokeNode2; - TStringConstant tstringconstantNode3; - PUnnamedMethodSignature punnamedmethodsignatureNode4; - TLParen tlparenNode5; - @SuppressWarnings("unused") Object nullNode6 = null; - TRParen trparenNode7; - PMethodSignature pmethodsignatureNode8; - TLParen tlparenNode9; - PArgList parglistNode10; - TRParen trparenNode11; - tdynamicinvokeNode2 = (TDynamicinvoke)nodeArrayList1.get(0); - tstringconstantNode3 = (TStringConstant)nodeArrayList2.get(0); - punnamedmethodsignatureNode4 = (PUnnamedMethodSignature)nodeArrayList3.get(0); - tlparenNode5 = (TLParen)nodeArrayList4.get(0); - trparenNode7 = (TRParen)nodeArrayList5.get(0); - pmethodsignatureNode8 = (PMethodSignature)nodeArrayList6.get(0); - tlparenNode9 = (TLParen)nodeArrayList7.get(0); - parglistNode10 = (PArgList)nodeArrayList8.get(0); - trparenNode11 = (TRParen)nodeArrayList9.get(0); - - pinvokeexprNode1 = new ADynamicInvokeExpr(tdynamicinvokeNode2, tstringconstantNode3, punnamedmethodsignatureNode4, tlparenNode5, null, trparenNode7, pmethodsignatureNode8, tlparenNode9, parglistNode10, trparenNode11); - } - nodeList.add(pinvokeexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new139() /* reduce AAdynamicinvokeexpr4InvokeExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList10 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList9 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList8 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PInvokeExpr pinvokeexprNode1; - { - // Block - TDynamicinvoke tdynamicinvokeNode2; - TStringConstant tstringconstantNode3; - PUnnamedMethodSignature punnamedmethodsignatureNode4; - TLParen tlparenNode5; - PArgList parglistNode6; - TRParen trparenNode7; - PMethodSignature pmethodsignatureNode8; - TLParen tlparenNode9; - PArgList parglistNode10; - TRParen trparenNode11; - tdynamicinvokeNode2 = (TDynamicinvoke)nodeArrayList1.get(0); - tstringconstantNode3 = (TStringConstant)nodeArrayList2.get(0); - punnamedmethodsignatureNode4 = (PUnnamedMethodSignature)nodeArrayList3.get(0); - tlparenNode5 = (TLParen)nodeArrayList4.get(0); - parglistNode6 = (PArgList)nodeArrayList5.get(0); - trparenNode7 = (TRParen)nodeArrayList6.get(0); - pmethodsignatureNode8 = (PMethodSignature)nodeArrayList7.get(0); - tlparenNode9 = (TLParen)nodeArrayList8.get(0); - parglistNode10 = (PArgList)nodeArrayList9.get(0); - trparenNode11 = (TRParen)nodeArrayList10.get(0); - - pinvokeexprNode1 = new ADynamicInvokeExpr(tdynamicinvokeNode2, tstringconstantNode3, punnamedmethodsignatureNode4, tlparenNode5, parglistNode6, trparenNode7, pmethodsignatureNode8, tlparenNode9, parglistNode10, trparenNode11); - } - nodeList.add(pinvokeexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new140() /* reduce ABinopExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinopExpr pbinopexprNode1; - { - // Block - PImmediate pimmediateNode2; - PBinop pbinopNode3; - PImmediate pimmediateNode4; - pimmediateNode2 = (PImmediate)nodeArrayList1.get(0); - pbinopNode3 = (PBinop)nodeArrayList2.get(0); - pimmediateNode4 = (PImmediate)nodeArrayList3.get(0); - - pbinopexprNode1 = new ABinopExpr(pimmediateNode2, pbinopNode3, pimmediateNode4); - } - nodeList.add(pbinopexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new141() /* reduce AUnopExpr */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PUnopExpr punopexprNode1; - { - // Block - PUnop punopNode2; - PImmediate pimmediateNode3; - punopNode2 = (PUnop)nodeArrayList1.get(0); - pimmediateNode3 = (PImmediate)nodeArrayList2.get(0); - - punopexprNode1 = new AUnopExpr(punopNode2, pimmediateNode3); - } - nodeList.add(punopexprNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new142() /* reduce ASpecialNonstaticInvoke */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNonstaticInvoke pnonstaticinvokeNode1; - { - // Block - TSpecialinvoke tspecialinvokeNode2; - tspecialinvokeNode2 = (TSpecialinvoke)nodeArrayList1.get(0); - - pnonstaticinvokeNode1 = new ASpecialNonstaticInvoke(tspecialinvokeNode2); - } - nodeList.add(pnonstaticinvokeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new143() /* reduce AVirtualNonstaticInvoke */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNonstaticInvoke pnonstaticinvokeNode1; - { - // Block - TVirtualinvoke tvirtualinvokeNode2; - tvirtualinvokeNode2 = (TVirtualinvoke)nodeArrayList1.get(0); - - pnonstaticinvokeNode1 = new AVirtualNonstaticInvoke(tvirtualinvokeNode2); - } - nodeList.add(pnonstaticinvokeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new144() /* reduce AInterfaceNonstaticInvoke */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PNonstaticInvoke pnonstaticinvokeNode1; - { - // Block - TInterfaceinvoke tinterfaceinvokeNode2; - tinterfaceinvokeNode2 = (TInterfaceinvoke)nodeArrayList1.get(0); - - pnonstaticinvokeNode1 = new AInterfaceNonstaticInvoke(tinterfaceinvokeNode2); - } - nodeList.add(pnonstaticinvokeNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new145() /* reduce AAunnamedmethodsignature1UnnamedMethodSignature */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PUnnamedMethodSignature punnamedmethodsignatureNode1; - { - // Block - TCmplt tcmpltNode2; - PType ptypeNode3; - TLParen tlparenNode4; - @SuppressWarnings("unused") Object nullNode5 = null; - TRParen trparenNode6; - TCmpgt tcmpgtNode7; - tcmpltNode2 = (TCmplt)nodeArrayList1.get(0); - ptypeNode3 = (PType)nodeArrayList2.get(0); - tlparenNode4 = (TLParen)nodeArrayList3.get(0); - trparenNode6 = (TRParen)nodeArrayList4.get(0); - tcmpgtNode7 = (TCmpgt)nodeArrayList5.get(0); - - punnamedmethodsignatureNode1 = new AUnnamedMethodSignature(tcmpltNode2, ptypeNode3, tlparenNode4, null, trparenNode6, tcmpgtNode7); - } - nodeList.add(punnamedmethodsignatureNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new146() /* reduce AAunnamedmethodsignature2UnnamedMethodSignature */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PUnnamedMethodSignature punnamedmethodsignatureNode1; - { - // Block - TCmplt tcmpltNode2; - PType ptypeNode3; - TLParen tlparenNode4; - PParameterList pparameterlistNode5; - TRParen trparenNode6; - TCmpgt tcmpgtNode7; - tcmpltNode2 = (TCmplt)nodeArrayList1.get(0); - ptypeNode3 = (PType)nodeArrayList2.get(0); - tlparenNode4 = (TLParen)nodeArrayList3.get(0); - pparameterlistNode5 = (PParameterList)nodeArrayList4.get(0); - trparenNode6 = (TRParen)nodeArrayList5.get(0); - tcmpgtNode7 = (TCmpgt)nodeArrayList6.get(0); - - punnamedmethodsignatureNode1 = new AUnnamedMethodSignature(tcmpltNode2, ptypeNode3, tlparenNode4, pparameterlistNode5, trparenNode6, tcmpgtNode7); - } - nodeList.add(punnamedmethodsignatureNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new147() /* reduce AAmethodsignature1MethodSignature */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList8 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMethodSignature pmethodsignatureNode1; - { - // Block - TCmplt tcmpltNode2; - PClassName pclassnameNode3; - TColon tcolonNode4; - PType ptypeNode5; - PName pnameNode6; - TLParen tlparenNode7; - @SuppressWarnings("unused") Object nullNode8 = null; - TRParen trparenNode9; - TCmpgt tcmpgtNode10; - tcmpltNode2 = (TCmplt)nodeArrayList1.get(0); - pclassnameNode3 = (PClassName)nodeArrayList2.get(0); - tcolonNode4 = (TColon)nodeArrayList3.get(0); - ptypeNode5 = (PType)nodeArrayList4.get(0); - pnameNode6 = (PName)nodeArrayList5.get(0); - tlparenNode7 = (TLParen)nodeArrayList6.get(0); - trparenNode9 = (TRParen)nodeArrayList7.get(0); - tcmpgtNode10 = (TCmpgt)nodeArrayList8.get(0); - - pmethodsignatureNode1 = new AMethodSignature(tcmpltNode2, pclassnameNode3, tcolonNode4, ptypeNode5, pnameNode6, tlparenNode7, null, trparenNode9, tcmpgtNode10); - } - nodeList.add(pmethodsignatureNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new148() /* reduce AAmethodsignature2MethodSignature */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList9 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList8 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList7 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PMethodSignature pmethodsignatureNode1; - { - // Block - TCmplt tcmpltNode2; - PClassName pclassnameNode3; - TColon tcolonNode4; - PType ptypeNode5; - PName pnameNode6; - TLParen tlparenNode7; - PParameterList pparameterlistNode8; - TRParen trparenNode9; - TCmpgt tcmpgtNode10; - tcmpltNode2 = (TCmplt)nodeArrayList1.get(0); - pclassnameNode3 = (PClassName)nodeArrayList2.get(0); - tcolonNode4 = (TColon)nodeArrayList3.get(0); - ptypeNode5 = (PType)nodeArrayList4.get(0); - pnameNode6 = (PName)nodeArrayList5.get(0); - tlparenNode7 = (TLParen)nodeArrayList6.get(0); - pparameterlistNode8 = (PParameterList)nodeArrayList7.get(0); - trparenNode9 = (TRParen)nodeArrayList8.get(0); - tcmpgtNode10 = (TCmpgt)nodeArrayList9.get(0); - - pmethodsignatureNode1 = new AMethodSignature(tcmpltNode2, pclassnameNode3, tcolonNode4, ptypeNode5, pnameNode6, tlparenNode7, pparameterlistNode8, trparenNode9, tcmpgtNode10); - } - nodeList.add(pmethodsignatureNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new149() /* reduce AArrayReference */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PReference preferenceNode1; - { - // Block - PArrayRef parrayrefNode2; - parrayrefNode2 = (PArrayRef)nodeArrayList1.get(0); - - preferenceNode1 = new AArrayReference(parrayrefNode2); - } - nodeList.add(preferenceNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new150() /* reduce AFieldReference */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PReference preferenceNode1; - { - // Block - PFieldRef pfieldrefNode2; - pfieldrefNode2 = (PFieldRef)nodeArrayList1.get(0); - - preferenceNode1 = new AFieldReference(pfieldrefNode2); - } - nodeList.add(preferenceNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new151() /* reduce AIdentArrayRef */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PArrayRef parrayrefNode1; - { - // Block - TIdentifier tidentifierNode2; - PFixedArrayDescriptor pfixedarraydescriptorNode3; - tidentifierNode2 = (TIdentifier)nodeArrayList1.get(0); - pfixedarraydescriptorNode3 = (PFixedArrayDescriptor)nodeArrayList2.get(0); - - parrayrefNode1 = new AIdentArrayRef(tidentifierNode2, pfixedarraydescriptorNode3); - } - nodeList.add(parrayrefNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new152() /* reduce AQuotedArrayRef */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PArrayRef parrayrefNode1; - { - // Block - TQuotedName tquotednameNode2; - PFixedArrayDescriptor pfixedarraydescriptorNode3; - tquotednameNode2 = (TQuotedName)nodeArrayList1.get(0); - pfixedarraydescriptorNode3 = (PFixedArrayDescriptor)nodeArrayList2.get(0); - - parrayrefNode1 = new AQuotedArrayRef(tquotednameNode2, pfixedarraydescriptorNode3); - } - nodeList.add(parrayrefNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new153() /* reduce ALocalFieldRef */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFieldRef pfieldrefNode1; - { - // Block - PLocalName plocalnameNode2; - TDot tdotNode3; - PFieldSignature pfieldsignatureNode4; - plocalnameNode2 = (PLocalName)nodeArrayList1.get(0); - tdotNode3 = (TDot)nodeArrayList2.get(0); - pfieldsignatureNode4 = (PFieldSignature)nodeArrayList3.get(0); - - pfieldrefNode1 = new ALocalFieldRef(plocalnameNode2, tdotNode3, pfieldsignatureNode4); - } - nodeList.add(pfieldrefNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new154() /* reduce ASigFieldRef */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFieldRef pfieldrefNode1; - { - // Block - PFieldSignature pfieldsignatureNode2; - pfieldsignatureNode2 = (PFieldSignature)nodeArrayList1.get(0); - - pfieldrefNode1 = new ASigFieldRef(pfieldsignatureNode2); - } - nodeList.add(pfieldrefNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new155() /* reduce AFieldSignature */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList6 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList5 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList4 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFieldSignature pfieldsignatureNode1; - { - // Block - TCmplt tcmpltNode2; - PClassName pclassnameNode3; - TColon tcolonNode4; - PType ptypeNode5; - PName pnameNode6; - TCmpgt tcmpgtNode7; - tcmpltNode2 = (TCmplt)nodeArrayList1.get(0); - pclassnameNode3 = (PClassName)nodeArrayList2.get(0); - tcolonNode4 = (TColon)nodeArrayList3.get(0); - ptypeNode5 = (PType)nodeArrayList4.get(0); - pnameNode6 = (PName)nodeArrayList5.get(0); - tcmpgtNode7 = (TCmpgt)nodeArrayList6.get(0); - - pfieldsignatureNode1 = new AFieldSignature(tcmpltNode2, pclassnameNode3, tcolonNode4, ptypeNode5, pnameNode6, tcmpgtNode7); - } - nodeList.add(pfieldsignatureNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new156() /* reduce AFixedArrayDescriptor */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PFixedArrayDescriptor pfixedarraydescriptorNode1; - { - // Block - TLBracket tlbracketNode2; - PImmediate pimmediateNode3; - TRBracket trbracketNode4; - tlbracketNode2 = (TLBracket)nodeArrayList1.get(0); - pimmediateNode3 = (PImmediate)nodeArrayList2.get(0); - trbracketNode4 = (TRBracket)nodeArrayList3.get(0); - - pfixedarraydescriptorNode1 = new AFixedArrayDescriptor(tlbracketNode2, pimmediateNode3, trbracketNode4); - } - nodeList.add(pfixedarraydescriptorNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new157() /* reduce ASingleArgList */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PArgList parglistNode1; - { - // Block - PImmediate pimmediateNode2; - pimmediateNode2 = (PImmediate)nodeArrayList1.get(0); - - parglistNode1 = new ASingleArgList(pimmediateNode2); - } - nodeList.add(parglistNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new158() /* reduce AMultiArgList */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PArgList parglistNode1; - { - // Block - PImmediate pimmediateNode2; - TComma tcommaNode3; - PArgList parglistNode4; - pimmediateNode2 = (PImmediate)nodeArrayList1.get(0); - tcommaNode3 = (TComma)nodeArrayList2.get(0); - parglistNode4 = (PArgList)nodeArrayList3.get(0); - - parglistNode1 = new AMultiArgList(pimmediateNode2, tcommaNode3, parglistNode4); - } - nodeList.add(parglistNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new159() /* reduce ALocalImmediate */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PImmediate pimmediateNode1; - { - // Block - PLocalName plocalnameNode2; - plocalnameNode2 = (PLocalName)nodeArrayList1.get(0); - - pimmediateNode1 = new ALocalImmediate(plocalnameNode2); - } - nodeList.add(pimmediateNode1); - return nodeList; + break; + case 4: /* reduce AAfile5File */ + { + ArrayList list = new4(); + push(goTo(0), list, false); + } + break; + case 5: /* reduce AAfile6File */ + { + ArrayList list = new5(); + push(goTo(0), list, false); + } + break; + case 6: /* reduce AAfile7File */ + { + ArrayList list = new6(); + push(goTo(0), list, false); + } + break; + case 7: /* reduce AAfile8File */ + { + ArrayList list = new7(); + push(goTo(0), list, false); + } + break; + case 8: /* reduce AAbstractModifier */ + { + ArrayList list = new8(); + push(goTo(1), list, false); + } + break; + case 9: /* reduce AFinalModifier */ + { + ArrayList list = new9(); + push(goTo(1), list, false); + } + break; + case 10: /* reduce ANativeModifier */ + { + ArrayList list = new10(); + push(goTo(1), list, false); + } + break; + case 11: /* reduce APublicModifier */ + { + ArrayList list = new11(); + push(goTo(1), list, false); + } + break; + case 12: /* reduce AProtectedModifier */ + { + ArrayList list = new12(); + push(goTo(1), list, false); + } + break; + case 13: /* reduce APrivateModifier */ + { + ArrayList list = new13(); + push(goTo(1), list, false); + } + break; + case 14: /* reduce AStaticModifier */ + { + ArrayList list = new14(); + push(goTo(1), list, false); + } + break; + case 15: /* reduce ASynchronizedModifier */ + { + ArrayList list = new15(); + push(goTo(1), list, false); + } + break; + case 16: /* reduce ATransientModifier */ + { + ArrayList list = new16(); + push(goTo(1), list, false); + } + break; + case 17: /* reduce AVolatileModifier */ + { + ArrayList list = new17(); + push(goTo(1), list, false); + } + break; + case 18: /* reduce AStrictfpModifier */ + { + ArrayList list = new18(); + push(goTo(1), list, false); + } + break; + case 19: /* reduce AEnumModifier */ + { + ArrayList list = new19(); + push(goTo(1), list, false); + } + break; + case 20: /* reduce AAnnotationModifier */ + { + ArrayList list = new20(); + push(goTo(1), list, false); + } + break; + case 21: /* reduce AClassFileType */ + { + ArrayList list = new21(); + push(goTo(2), list, false); + } + break; + case 22: /* reduce AInterfaceFileType */ + { + ArrayList list = new22(); + push(goTo(2), list, false); + } + break; + case 23: /* reduce AExtendsClause */ + { + ArrayList list = new23(); + push(goTo(3), list, false); + } + break; + case 24: /* reduce AImplementsClause */ + { + ArrayList list = new24(); + push(goTo(4), list, false); + } + break; + case 25: /* reduce AAfilebody1FileBody */ + { + ArrayList list = new25(); + push(goTo(5), list, false); + } + break; + case 26: /* reduce AAfilebody2FileBody */ + { + ArrayList list = new26(); + push(goTo(5), list, false); + } + break; + case 27: /* reduce ASingleNameList */ + { + ArrayList list = new27(); + push(goTo(6), list, false); + } + break; + case 28: /* reduce AMultiNameList */ + { + ArrayList list = new28(); + push(goTo(6), list, false); + } + break; + case 29: /* reduce AClassNameSingleClassNameList */ + { + ArrayList list = new29(); + push(goTo(7), list, false); + } + break; + case 30: /* reduce AClassNameMultiClassNameList */ + { + ArrayList list = new30(); + push(goTo(7), list, false); + } + break; + case 31: /* reduce AAfieldmember1Member */ + { + ArrayList list = new31(); + push(goTo(8), list, false); + } + break; + case 32: /* reduce AAfieldmember2Member */ + { + ArrayList list = new32(); + push(goTo(8), list, false); + } + break; + case 33: /* reduce AAmethodmember1Member */ + { + ArrayList list = new33(); + push(goTo(8), list, false); + } + break; + case 34: /* reduce AAmethodmember2Member */ + { + ArrayList list = new34(); + push(goTo(8), list, false); + } + break; + case 35: /* reduce AAmethodmember3Member */ + { + ArrayList list = new35(); + push(goTo(8), list, false); + } + break; + case 36: /* reduce AAmethodmember4Member */ + { + ArrayList list = new36(); + push(goTo(8), list, false); + } + break; + case 37: /* reduce AAmethodmember5Member */ + { + ArrayList list = new37(); + push(goTo(8), list, false); + } + break; + case 38: /* reduce AAmethodmember6Member */ + { + ArrayList list = new38(); + push(goTo(8), list, false); + } + break; + case 39: /* reduce AAmethodmember7Member */ + { + ArrayList list = new39(); + push(goTo(8), list, false); + } + break; + case 40: /* reduce AAmethodmember8Member */ + { + ArrayList list = new40(); + push(goTo(8), list, false); + } + break; + case 41: /* reduce AVoidType */ + { + ArrayList list = new41(); + push(goTo(9), list, false); + } + break; + case 42: /* reduce ANovoidType */ + { + ArrayList list = new42(); + push(goTo(9), list, false); + } + break; + case 43: /* reduce ASingleParameterList */ + { + ArrayList list = new43(); + push(goTo(10), list, false); + } + break; + case 44: /* reduce AMultiParameterList */ + { + ArrayList list = new44(); + push(goTo(10), list, false); + } + break; + case 45: /* reduce AParameter */ + { + ArrayList list = new45(); + push(goTo(11), list, false); + } + break; + case 46: /* reduce AThrowsClause */ + { + ArrayList list = new46(); + push(goTo(12), list, false); + } + break; + case 47: /* reduce ABooleanBaseTypeNoName */ + { + ArrayList list = new47(); + push(goTo(13), list, false); + } + break; + case 48: /* reduce AByteBaseTypeNoName */ + { + ArrayList list = new48(); + push(goTo(13), list, false); + } + break; + case 49: /* reduce ACharBaseTypeNoName */ + { + ArrayList list = new49(); + push(goTo(13), list, false); + } + break; + case 50: /* reduce AShortBaseTypeNoName */ + { + ArrayList list = new50(); + push(goTo(13), list, false); + } + break; + case 51: /* reduce AIntBaseTypeNoName */ + { + ArrayList list = new51(); + push(goTo(13), list, false); + } + break; + case 52: /* reduce ALongBaseTypeNoName */ + { + ArrayList list = new52(); + push(goTo(13), list, false); + } + break; + case 53: /* reduce AFloatBaseTypeNoName */ + { + ArrayList list = new53(); + push(goTo(13), list, false); + } + break; + case 54: /* reduce ADoubleBaseTypeNoName */ + { + ArrayList list = new54(); + push(goTo(13), list, false); + } + break; + case 55: /* reduce ANullBaseTypeNoName */ + { + ArrayList list = new55(); + push(goTo(13), list, false); + } + break; + case 56: /* reduce ABooleanBaseType */ + { + ArrayList list = new56(); + push(goTo(14), list, false); + } + break; + case 57: /* reduce AByteBaseType */ + { + ArrayList list = new57(); + push(goTo(14), list, false); + } + break; + case 58: /* reduce ACharBaseType */ + { + ArrayList list = new58(); + push(goTo(14), list, false); + } + break; + case 59: /* reduce AShortBaseType */ + { + ArrayList list = new59(); + push(goTo(14), list, false); + } + break; + case 60: /* reduce AIntBaseType */ + { + ArrayList list = new60(); + push(goTo(14), list, false); + } + break; + case 61: /* reduce ALongBaseType */ + { + ArrayList list = new61(); + push(goTo(14), list, false); + } + break; + case 62: /* reduce AFloatBaseType */ + { + ArrayList list = new62(); + push(goTo(14), list, false); + } + break; + case 63: /* reduce ADoubleBaseType */ + { + ArrayList list = new63(); + push(goTo(14), list, false); + } + break; + case 64: /* reduce ANullBaseType */ + { + ArrayList list = new64(); + push(goTo(14), list, false); + } + break; + case 65: /* reduce AClassNameBaseType */ + { + ArrayList list = new65(); + push(goTo(14), list, false); + } + break; + case 66: /* reduce AAbasenonvoidtype1NonvoidType */ + { + ArrayList list = new66(); + push(goTo(15), list, false); + } + break; + case 67: /* reduce AAbasenonvoidtype2NonvoidType */ + { + ArrayList list = new67(); + push(goTo(15), list, false); + } + break; + case 68: /* reduce AAquotednonvoidtype1NonvoidType */ + { + ArrayList list = new68(); + push(goTo(15), list, false); + } + break; + case 69: /* reduce AAquotednonvoidtype2NonvoidType */ + { + ArrayList list = new69(); + push(goTo(15), list, false); + } + break; + case 70: /* reduce AAidentnonvoidtype1NonvoidType */ + { + ArrayList list = new70(); + push(goTo(15), list, false); + } + break; + case 71: /* reduce AAidentnonvoidtype2NonvoidType */ + { + ArrayList list = new71(); + push(goTo(15), list, false); + } + break; + case 72: /* reduce AAfullidentnonvoidtype1NonvoidType */ + { + ArrayList list = new72(); + push(goTo(15), list, false); + } + break; + case 73: /* reduce AAfullidentnonvoidtype2NonvoidType */ + { + ArrayList list = new73(); + push(goTo(15), list, false); + } + break; + case 74: /* reduce AArrayBrackets */ + { + ArrayList list = new74(); + push(goTo(16), list, false); + } + break; + case 75: /* reduce AEmptyMethodBody */ + { + ArrayList list = new75(); + push(goTo(17), list, false); + } + break; + case 76: /* reduce AAfullmethodbody1MethodBody */ + { + ArrayList list = new76(); + push(goTo(17), list, false); + } + break; + case 77: /* reduce AAfullmethodbody2MethodBody */ + { + ArrayList list = new77(); + push(goTo(17), list, false); + } + break; + case 78: /* reduce AAfullmethodbody3MethodBody */ + { + ArrayList list = new78(); + push(goTo(17), list, false); + } + break; + case 79: /* reduce AAfullmethodbody4MethodBody */ + { + ArrayList list = new79(); + push(goTo(17), list, false); + } + break; + case 80: /* reduce AAfullmethodbody5MethodBody */ + { + ArrayList list = new80(); + push(goTo(17), list, false); + } + break; + case 81: /* reduce AAfullmethodbody6MethodBody */ + { + ArrayList list = new81(); + push(goTo(17), list, false); + } + break; + case 82: /* reduce AAfullmethodbody7MethodBody */ + { + ArrayList list = new82(); + push(goTo(17), list, false); + } + break; + case 83: /* reduce AAfullmethodbody8MethodBody */ + { + ArrayList list = new83(); + push(goTo(17), list, false); + } + break; + case 84: /* reduce ADeclaration */ + { + ArrayList list = new84(); + push(goTo(18), list, false); + } + break; + case 85: /* reduce AUnknownJimpleType */ + { + ArrayList list = new85(); + push(goTo(19), list, false); + } + break; + case 86: /* reduce ANonvoidJimpleType */ + { + ArrayList list = new86(); + push(goTo(19), list, false); + } + break; + case 87: /* reduce ALocalName */ + { + ArrayList list = new87(); + push(goTo(20), list, false); + } + break; + case 88: /* reduce ASingleLocalNameList */ + { + ArrayList list = new88(); + push(goTo(21), list, false); + } + break; + case 89: /* reduce AMultiLocalNameList */ + { + ArrayList list = new89(); + push(goTo(21), list, false); + } + break; + case 90: /* reduce ALabelStatement */ + { + ArrayList list = new90(); + push(goTo(22), list, false); + } + break; + case 91: /* reduce ABreakpointStatement */ + { + ArrayList list = new91(); + push(goTo(22), list, false); + } + break; + case 92: /* reduce AEntermonitorStatement */ + { + ArrayList list = new92(); + push(goTo(22), list, false); + } + break; + case 93: /* reduce AExitmonitorStatement */ + { + ArrayList list = new93(); + push(goTo(22), list, false); + } + break; + case 94: /* reduce ATableswitchStatement */ + { + ArrayList list = new94(); + push(goTo(22), list, false); + } + break; + case 95: /* reduce ALookupswitchStatement */ + { + ArrayList list = new95(); + push(goTo(22), list, false); + } + break; + case 96: /* reduce AIdentityStatement */ + { + ArrayList list = new96(); + push(goTo(22), list, false); + } + break; + case 97: /* reduce AIdentityNoTypeStatement */ + { + ArrayList list = new97(); + push(goTo(22), list, false); + } + break; + case 98: /* reduce AAssignStatement */ + { + ArrayList list = new98(); + push(goTo(22), list, false); + } + break; + case 99: /* reduce AIfStatement */ + { + ArrayList list = new99(); + push(goTo(22), list, false); + } + break; + case 100: /* reduce AGotoStatement */ + { + ArrayList list = new100(); + push(goTo(22), list, false); + } + break; + case 101: /* reduce ANopStatement */ + { + ArrayList list = new101(); + push(goTo(22), list, false); + } + break; + case 102: /* reduce AAretstatement1Statement */ + { + ArrayList list = new102(); + push(goTo(22), list, false); + } + break; + case 103: /* reduce AAretstatement2Statement */ + { + ArrayList list = new103(); + push(goTo(22), list, false); + } + break; + case 104: /* reduce AAreturnstatement1Statement */ + { + ArrayList list = new104(); + push(goTo(22), list, false); + } + break; + case 105: /* reduce AAreturnstatement2Statement */ + { + ArrayList list = new105(); + push(goTo(22), list, false); + } + break; + case 106: /* reduce AThrowStatement */ + { + ArrayList list = new106(); + push(goTo(22), list, false); + } + break; + case 107: /* reduce AInvokeStatement */ + { + ArrayList list = new107(); + push(goTo(22), list, false); + } + break; + case 108: /* reduce ALabelName */ + { + ArrayList list = new108(); + push(goTo(23), list, false); + } + break; + case 109: /* reduce ACaseStmt */ + { + ArrayList list = new109(); + push(goTo(24), list, false); + } + break; + case 110: /* reduce AAconstantcaselabel1CaseLabel */ + { + ArrayList list = new110(); + push(goTo(25), list, false); + } + break; + case 111: /* reduce AAconstantcaselabel2CaseLabel */ + { + ArrayList list = new111(); + push(goTo(25), list, false); + } + break; + case 112: /* reduce ADefaultCaseLabel */ + { + ArrayList list = new112(); + push(goTo(25), list, false); + } + break; + case 113: /* reduce AGotoStmt */ + { + ArrayList list = new113(); + push(goTo(26), list, false); + } + break; + case 114: /* reduce ACatchClause */ + { + ArrayList list = new114(); + push(goTo(27), list, false); + } + break; + case 115: /* reduce ANewExpression */ + { + ArrayList list = new115(); + push(goTo(28), list, false); + } + break; + case 116: /* reduce ACastExpression */ + { + ArrayList list = new116(); + push(goTo(28), list, false); + } + break; + case 117: /* reduce AInstanceofExpression */ + { + ArrayList list = new117(); + push(goTo(28), list, false); + } + break; + case 118: /* reduce AInvokeExpression */ + { + ArrayList list = new118(); + push(goTo(28), list, false); + } + break; + case 119: /* reduce AReferenceExpression */ + { + ArrayList list = new119(); + push(goTo(28), list, false); + } + break; + case 120: /* reduce ABinopExpression */ + { + ArrayList list = new120(); + push(goTo(28), list, false); + } + break; + case 121: /* reduce AUnopExpression */ + { + ArrayList list = new121(); + push(goTo(28), list, false); + } + break; + case 122: /* reduce AImmediateExpression */ + { + ArrayList list = new122(); + push(goTo(28), list, false); + } + break; + case 123: /* reduce ASimpleNewExpr */ + { + ArrayList list = new123(); + push(goTo(29), list, false); + } + break; + case 124: /* reduce AArrayNewExpr */ + { + ArrayList list = new124(); + push(goTo(29), list, false); + } + break; + case 125: /* reduce AMultiNewExpr */ + { + ArrayList list = new125(); + push(goTo(29), list, false); + } + break; + case 126: /* reduce AAarraydescriptor1ArrayDescriptor */ + { + ArrayList list = new126(); + push(goTo(30), list, false); + } + break; + case 127: /* reduce AAarraydescriptor2ArrayDescriptor */ + { + ArrayList list = new127(); + push(goTo(30), list, false); + } + break; + case 128: /* reduce AReferenceVariable */ + { + ArrayList list = new128(); + push(goTo(31), list, false); + } + break; + case 129: /* reduce ALocalVariable */ + { + ArrayList list = new129(); + push(goTo(31), list, false); + } + break; + case 130: /* reduce ABinopBoolExpr */ + { + ArrayList list = new130(); + push(goTo(32), list, false); + } + break; + case 131: /* reduce AUnopBoolExpr */ + { + ArrayList list = new131(); + push(goTo(32), list, false); + } + break; + case 132: /* reduce AAnonstaticinvokeexpr1InvokeExpr */ + { + ArrayList list = new132(); + push(goTo(33), list, false); + } + break; + case 133: /* reduce AAnonstaticinvokeexpr2InvokeExpr */ + { + ArrayList list = new133(); + push(goTo(33), list, false); + } + break; + case 134: /* reduce AAstaticinvokeexpr1InvokeExpr */ + { + ArrayList list = new134(); + push(goTo(33), list, false); + } + break; + case 135: /* reduce AAstaticinvokeexpr2InvokeExpr */ + { + ArrayList list = new135(); + push(goTo(33), list, false); + } + break; + case 136: /* reduce AAdynamicinvokeexpr1InvokeExpr */ + { + ArrayList list = new136(); + push(goTo(33), list, false); + } + break; + case 137: /* reduce AAdynamicinvokeexpr2InvokeExpr */ + { + ArrayList list = new137(); + push(goTo(33), list, false); + } + break; + case 138: /* reduce AAdynamicinvokeexpr3InvokeExpr */ + { + ArrayList list = new138(); + push(goTo(33), list, false); + } + break; + case 139: /* reduce AAdynamicinvokeexpr4InvokeExpr */ + { + ArrayList list = new139(); + push(goTo(33), list, false); + } + break; + case 140: /* reduce ABinopExpr */ + { + ArrayList list = new140(); + push(goTo(34), list, false); + } + break; + case 141: /* reduce AUnopExpr */ + { + ArrayList list = new141(); + push(goTo(35), list, false); + } + break; + case 142: /* reduce ASpecialNonstaticInvoke */ + { + ArrayList list = new142(); + push(goTo(36), list, false); + } + break; + case 143: /* reduce AVirtualNonstaticInvoke */ + { + ArrayList list = new143(); + push(goTo(36), list, false); + } + break; + case 144: /* reduce AInterfaceNonstaticInvoke */ + { + ArrayList list = new144(); + push(goTo(36), list, false); + } + break; + case 145: /* reduce AAunnamedmethodsignature1UnnamedMethodSignature */ + { + ArrayList list = new145(); + push(goTo(37), list, false); + } + break; + case 146: /* reduce AAunnamedmethodsignature2UnnamedMethodSignature */ + { + ArrayList list = new146(); + push(goTo(37), list, false); + } + break; + case 147: /* reduce AAmethodsignature1MethodSignature */ + { + ArrayList list = new147(); + push(goTo(38), list, false); + } + break; + case 148: /* reduce AAmethodsignature2MethodSignature */ + { + ArrayList list = new148(); + push(goTo(38), list, false); + } + break; + case 149: /* reduce AArrayReference */ + { + ArrayList list = new149(); + push(goTo(39), list, false); + } + break; + case 150: /* reduce AFieldReference */ + { + ArrayList list = new150(); + push(goTo(39), list, false); + } + break; + case 151: /* reduce AIdentArrayRef */ + { + ArrayList list = new151(); + push(goTo(40), list, false); + } + break; + case 152: /* reduce AQuotedArrayRef */ + { + ArrayList list = new152(); + push(goTo(40), list, false); + } + break; + case 153: /* reduce ALocalFieldRef */ + { + ArrayList list = new153(); + push(goTo(41), list, false); + } + break; + case 154: /* reduce ASigFieldRef */ + { + ArrayList list = new154(); + push(goTo(41), list, false); + } + break; + case 155: /* reduce AFieldSignature */ + { + ArrayList list = new155(); + push(goTo(42), list, false); + } + break; + case 156: /* reduce AFixedArrayDescriptor */ + { + ArrayList list = new156(); + push(goTo(43), list, false); + } + break; + case 157: /* reduce ASingleArgList */ + { + ArrayList list = new157(); + push(goTo(44), list, false); + } + break; + case 158: /* reduce AMultiArgList */ + { + ArrayList list = new158(); + push(goTo(44), list, false); + } + break; + case 159: /* reduce ALocalImmediate */ + { + ArrayList list = new159(); + push(goTo(45), list, false); + } + break; + case 160: /* reduce AConstantImmediate */ + { + ArrayList list = new160(); + push(goTo(45), list, false); + } + break; + case 161: /* reduce AAintegerconstant1Constant */ + { + ArrayList list = new161(); + push(goTo(46), list, false); + } + break; + case 162: /* reduce AAintegerconstant2Constant */ + { + ArrayList list = new162(); + push(goTo(46), list, false); + } + break; + case 163: /* reduce AAfloatconstant1Constant */ + { + ArrayList list = new163(); + push(goTo(46), list, false); + } + break; + case 164: /* reduce AAfloatconstant2Constant */ + { + ArrayList list = new164(); + push(goTo(46), list, false); + } + break; + case 165: /* reduce AStringConstant */ + { + ArrayList list = new165(); + push(goTo(46), list, false); + } + break; + case 166: /* reduce AClzzConstant */ + { + ArrayList list = new166(); + push(goTo(46), list, false); + } + break; + case 167: /* reduce ANullConstant */ + { + ArrayList list = new167(); + push(goTo(46), list, false); + } + break; + case 168: /* reduce AAndBinop */ + { + ArrayList list = new168(); + push(goTo(47), list, false); + } + break; + case 169: /* reduce AOrBinop */ + { + ArrayList list = new169(); + push(goTo(47), list, false); + } + break; + case 170: /* reduce AXorBinop */ + { + ArrayList list = new170(); + push(goTo(47), list, false); + } + break; + case 171: /* reduce AModBinop */ + { + ArrayList list = new171(); + push(goTo(47), list, false); + } + break; + case 172: /* reduce ACmpBinop */ + { + ArrayList list = new172(); + push(goTo(47), list, false); + } + break; + case 173: /* reduce ACmpgBinop */ + { + ArrayList list = new173(); + push(goTo(47), list, false); + } + break; + case 174: /* reduce ACmplBinop */ + { + ArrayList list = new174(); + push(goTo(47), list, false); + } + break; + case 175: /* reduce ACmpeqBinop */ + { + ArrayList list = new175(); + push(goTo(47), list, false); + } + break; + case 176: /* reduce ACmpneBinop */ + { + ArrayList list = new176(); + push(goTo(47), list, false); + } + break; + case 177: /* reduce ACmpgtBinop */ + { + ArrayList list = new177(); + push(goTo(47), list, false); + } + break; + case 178: /* reduce ACmpgeBinop */ + { + ArrayList list = new178(); + push(goTo(47), list, false); + } + break; + case 179: /* reduce ACmpltBinop */ + { + ArrayList list = new179(); + push(goTo(47), list, false); + } + break; + case 180: /* reduce ACmpleBinop */ + { + ArrayList list = new180(); + push(goTo(47), list, false); + } + break; + case 181: /* reduce AShlBinop */ + { + ArrayList list = new181(); + push(goTo(47), list, false); + } + break; + case 182: /* reduce AShrBinop */ + { + ArrayList list = new182(); + push(goTo(47), list, false); + } + break; + case 183: /* reduce AUshrBinop */ + { + ArrayList list = new183(); + push(goTo(47), list, false); + } + break; + case 184: /* reduce APlusBinop */ + { + ArrayList list = new184(); + push(goTo(47), list, false); + } + break; + case 185: /* reduce AMinusBinop */ + { + ArrayList list = new185(); + push(goTo(47), list, false); + } + break; + case 186: /* reduce AMultBinop */ + { + ArrayList list = new186(); + push(goTo(47), list, false); + } + break; + case 187: /* reduce ADivBinop */ + { + ArrayList list = new187(); + push(goTo(47), list, false); + } + break; + case 188: /* reduce ALengthofUnop */ + { + ArrayList list = new188(); + push(goTo(48), list, false); + } + break; + case 189: /* reduce ANegUnop */ + { + ArrayList list = new189(); + push(goTo(48), list, false); + } + break; + case 190: /* reduce AQuotedClassName */ + { + ArrayList list = new190(); + push(goTo(49), list, false); + } + break; + case 191: /* reduce AIdentClassName */ + { + ArrayList list = new191(); + push(goTo(49), list, false); + } + break; + case 192: /* reduce AFullIdentClassName */ + { + ArrayList list = new192(); + push(goTo(49), list, false); + } + break; + case 193: /* reduce AQuotedName */ + { + ArrayList list = new193(); + push(goTo(50), list, false); + } + break; + case 194: /* reduce AIdentName */ + { + ArrayList list = new194(); + push(goTo(50), list, false); + } + break; + case 195: /* reduce ATerminal$Modifier */ + { + ArrayList list = new195(); + push(goTo(51), list, true); + } + break; + case 196: /* reduce ANonTerminal$Modifier */ + { + ArrayList list = new196(); + push(goTo(51), list, true); + } + break; + case 197: /* reduce ATerminal$Member */ + { + ArrayList list = new197(); + push(goTo(52), list, true); + } + break; + case 198: /* reduce ANonTerminal$Member */ + { + ArrayList list = new198(); + push(goTo(52), list, true); + } + break; + case 199: /* reduce ATerminal$ArrayBrackets */ + { + ArrayList list = new199(); + push(goTo(53), list, true); + } + break; + case 200: /* reduce ANonTerminal$ArrayBrackets */ + { + ArrayList list = new200(); + push(goTo(53), list, true); + } + break; + case 201: /* reduce ATerminal$Declaration */ + { + ArrayList list = new201(); + push(goTo(54), list, true); + } + break; + case 202: /* reduce ANonTerminal$Declaration */ + { + ArrayList list = new202(); + push(goTo(54), list, true); + } + break; + case 203: /* reduce ATerminal$Statement */ + { + ArrayList list = new203(); + push(goTo(55), list, true); + } + break; + case 204: /* reduce ANonTerminal$Statement */ + { + ArrayList list = new204(); + push(goTo(55), list, true); + } + break; + case 205: /* reduce ATerminal$CatchClause */ + { + ArrayList list = new205(); + push(goTo(56), list, true); + } + break; + case 206: /* reduce ANonTerminal$CatchClause */ + { + ArrayList list = new206(); + push(goTo(56), list, true); + } + break; + case 207: /* reduce ATerminal$CaseStmt */ + { + ArrayList list = new207(); + push(goTo(57), list, true); + } + break; + case 208: /* reduce ANonTerminal$CaseStmt */ + { + ArrayList list = new208(); + push(goTo(57), list, true); + } + break; + case 209: /* reduce ATerminal$ArrayDescriptor */ + { + ArrayList list = new209(); + push(goTo(58), list, true); + } + break; + case 210: /* reduce ANonTerminal$ArrayDescriptor */ + { + ArrayList list = new210(); + push(goTo(58), list, true); + } + break; + } + break; + case ACCEPT: { + EOF node2 = (EOF) this.lexer.next(); + PFile node1 = (PFile) pop().get(0); + Start node = new Start(node1, node2); + return node; + } + case ERROR: + throw new ParserException(this.last_token, + "[" + this.last_line + "," + this.last_pos + "] " + Parser.errorMessages[Parser.errors[this.action[1]]]); + } + } + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new0() /* reduce AAfile1File */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFile pfileNode1; + { + // Block + LinkedList listNode2 = new LinkedList(); + PFileType pfiletypeNode3; + PClassName pclassnameNode4; + @SuppressWarnings("unused") + Object nullNode5 = null; + @SuppressWarnings("unused") + Object nullNode6 = null; + PFileBody pfilebodyNode7; + { + // Block + } + pfiletypeNode3 = (PFileType) nodeArrayList1.get(0); + pclassnameNode4 = (PClassName) nodeArrayList2.get(0); + pfilebodyNode7 = (PFileBody) nodeArrayList3.get(0); + + pfileNode1 = new AFile(listNode2, pfiletypeNode3, pclassnameNode4, null, null, pfilebodyNode7); + } + nodeList.add(pfileNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new1() /* reduce AAfile2File */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFile pfileNode1; + { + // Block + LinkedList listNode3 = new LinkedList(); + PFileType pfiletypeNode4; + PClassName pclassnameNode5; + @SuppressWarnings("unused") + Object nullNode6 = null; + @SuppressWarnings("unused") + Object nullNode7 = null; + PFileBody pfilebodyNode8; + { + // Block + LinkedList listNode2 = new LinkedList(); + listNode2 = (LinkedList) nodeArrayList1.get(0); + if (listNode2 != null) { + listNode3.addAll(listNode2); + } + } + pfiletypeNode4 = (PFileType) nodeArrayList2.get(0); + pclassnameNode5 = (PClassName) nodeArrayList3.get(0); + pfilebodyNode8 = (PFileBody) nodeArrayList4.get(0); + + pfileNode1 = new AFile(listNode3, pfiletypeNode4, pclassnameNode5, null, null, pfilebodyNode8); + } + nodeList.add(pfileNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new2() /* reduce AAfile3File */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFile pfileNode1; + { + // Block + LinkedList listNode2 = new LinkedList(); + PFileType pfiletypeNode3; + PClassName pclassnameNode4; + PExtendsClause pextendsclauseNode5; + @SuppressWarnings("unused") + Object nullNode6 = null; + PFileBody pfilebodyNode7; + { + // Block + } + pfiletypeNode3 = (PFileType) nodeArrayList1.get(0); + pclassnameNode4 = (PClassName) nodeArrayList2.get(0); + pextendsclauseNode5 = (PExtendsClause) nodeArrayList3.get(0); + pfilebodyNode7 = (PFileBody) nodeArrayList4.get(0); + + pfileNode1 = new AFile(listNode2, pfiletypeNode3, pclassnameNode4, pextendsclauseNode5, null, pfilebodyNode7); + } + nodeList.add(pfileNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new3() /* reduce AAfile4File */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFile pfileNode1; + { + // Block + LinkedList listNode3 = new LinkedList(); + PFileType pfiletypeNode4; + PClassName pclassnameNode5; + PExtendsClause pextendsclauseNode6; + @SuppressWarnings("unused") + Object nullNode7 = null; + PFileBody pfilebodyNode8; + { + // Block + LinkedList listNode2 = new LinkedList(); + listNode2 = (LinkedList) nodeArrayList1.get(0); + if (listNode2 != null) { + listNode3.addAll(listNode2); + } + } + pfiletypeNode4 = (PFileType) nodeArrayList2.get(0); + pclassnameNode5 = (PClassName) nodeArrayList3.get(0); + pextendsclauseNode6 = (PExtendsClause) nodeArrayList4.get(0); + pfilebodyNode8 = (PFileBody) nodeArrayList5.get(0); + + pfileNode1 = new AFile(listNode3, pfiletypeNode4, pclassnameNode5, pextendsclauseNode6, null, pfilebodyNode8); + } + nodeList.add(pfileNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new4() /* reduce AAfile5File */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFile pfileNode1; + { + // Block + LinkedList listNode2 = new LinkedList(); + PFileType pfiletypeNode3; + PClassName pclassnameNode4; + @SuppressWarnings("unused") + Object nullNode5 = null; + PImplementsClause pimplementsclauseNode6; + PFileBody pfilebodyNode7; + { + // Block + } + pfiletypeNode3 = (PFileType) nodeArrayList1.get(0); + pclassnameNode4 = (PClassName) nodeArrayList2.get(0); + pimplementsclauseNode6 = (PImplementsClause) nodeArrayList3.get(0); + pfilebodyNode7 = (PFileBody) nodeArrayList4.get(0); + + pfileNode1 = new AFile(listNode2, pfiletypeNode3, pclassnameNode4, null, pimplementsclauseNode6, pfilebodyNode7); + } + nodeList.add(pfileNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new5() /* reduce AAfile6File */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFile pfileNode1; + { + // Block + LinkedList listNode3 = new LinkedList(); + PFileType pfiletypeNode4; + PClassName pclassnameNode5; + @SuppressWarnings("unused") + Object nullNode6 = null; + PImplementsClause pimplementsclauseNode7; + PFileBody pfilebodyNode8; + { + // Block + LinkedList listNode2 = new LinkedList(); + listNode2 = (LinkedList) nodeArrayList1.get(0); + if (listNode2 != null) { + listNode3.addAll(listNode2); + } + } + pfiletypeNode4 = (PFileType) nodeArrayList2.get(0); + pclassnameNode5 = (PClassName) nodeArrayList3.get(0); + pimplementsclauseNode7 = (PImplementsClause) nodeArrayList4.get(0); + pfilebodyNode8 = (PFileBody) nodeArrayList5.get(0); + + pfileNode1 = new AFile(listNode3, pfiletypeNode4, pclassnameNode5, null, pimplementsclauseNode7, pfilebodyNode8); + } + nodeList.add(pfileNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new6() /* reduce AAfile7File */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFile pfileNode1; + { + // Block + LinkedList listNode2 = new LinkedList(); + PFileType pfiletypeNode3; + PClassName pclassnameNode4; + PExtendsClause pextendsclauseNode5; + PImplementsClause pimplementsclauseNode6; + PFileBody pfilebodyNode7; + { + // Block + } + pfiletypeNode3 = (PFileType) nodeArrayList1.get(0); + pclassnameNode4 = (PClassName) nodeArrayList2.get(0); + pextendsclauseNode5 = (PExtendsClause) nodeArrayList3.get(0); + pimplementsclauseNode6 = (PImplementsClause) nodeArrayList4.get(0); + pfilebodyNode7 = (PFileBody) nodeArrayList5.get(0); + + pfileNode1 = new AFile(listNode2, pfiletypeNode3, pclassnameNode4, pextendsclauseNode5, pimplementsclauseNode6, + pfilebodyNode7); + } + nodeList.add(pfileNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new7() /* reduce AAfile8File */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFile pfileNode1; + { + // Block + LinkedList listNode3 = new LinkedList(); + PFileType pfiletypeNode4; + PClassName pclassnameNode5; + PExtendsClause pextendsclauseNode6; + PImplementsClause pimplementsclauseNode7; + PFileBody pfilebodyNode8; + { + // Block + LinkedList listNode2 = new LinkedList(); + listNode2 = (LinkedList) nodeArrayList1.get(0); + if (listNode2 != null) { + listNode3.addAll(listNode2); + } + } + pfiletypeNode4 = (PFileType) nodeArrayList2.get(0); + pclassnameNode5 = (PClassName) nodeArrayList3.get(0); + pextendsclauseNode6 = (PExtendsClause) nodeArrayList4.get(0); + pimplementsclauseNode7 = (PImplementsClause) nodeArrayList5.get(0); + pfilebodyNode8 = (PFileBody) nodeArrayList6.get(0); + + pfileNode1 = new AFile(listNode3, pfiletypeNode4, pclassnameNode5, pextendsclauseNode6, pimplementsclauseNode7, + pfilebodyNode8); } + nodeList.add(pfileNode1); + return nodeList; + } - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new160() /* reduce AConstantImmediate */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PImmediate pimmediateNode1; - { - // Block - PConstant pconstantNode2; - pconstantNode2 = (PConstant)nodeArrayList1.get(0); - - pimmediateNode1 = new AConstantImmediate(pconstantNode2); - } - nodeList.add(pimmediateNode1); - return nodeList; + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new8() /* reduce AAbstractModifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PModifier pmodifierNode1; + { + // Block + TAbstract tabstractNode2; + tabstractNode2 = (TAbstract) nodeArrayList1.get(0); + + pmodifierNode1 = new AAbstractModifier(tabstractNode2); } + nodeList.add(pmodifierNode1); + return nodeList; + } - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new161() /* reduce AAintegerconstant1Constant */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PConstant pconstantNode1; - { - // Block - @SuppressWarnings("unused") Object nullNode2 = null; - TIntegerConstant tintegerconstantNode3; - tintegerconstantNode3 = (TIntegerConstant)nodeArrayList1.get(0); - - pconstantNode1 = new AIntegerConstant(null, tintegerconstantNode3); - } - nodeList.add(pconstantNode1); - return nodeList; + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new9() /* reduce AFinalModifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PModifier pmodifierNode1; + { + // Block + TFinal tfinalNode2; + tfinalNode2 = (TFinal) nodeArrayList1.get(0); + + pmodifierNode1 = new AFinalModifier(tfinalNode2); } + nodeList.add(pmodifierNode1); + return nodeList; + } - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new162() /* reduce AAintegerconstant2Constant */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PConstant pconstantNode1; - { - // Block - TMinus tminusNode2; - TIntegerConstant tintegerconstantNode3; - tminusNode2 = (TMinus)nodeArrayList1.get(0); - tintegerconstantNode3 = (TIntegerConstant)nodeArrayList2.get(0); - - pconstantNode1 = new AIntegerConstant(tminusNode2, tintegerconstantNode3); - } - nodeList.add(pconstantNode1); - return nodeList; + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new10() /* reduce ANativeModifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PModifier pmodifierNode1; + { + // Block + TNative tnativeNode2; + tnativeNode2 = (TNative) nodeArrayList1.get(0); + + pmodifierNode1 = new ANativeModifier(tnativeNode2); } + nodeList.add(pmodifierNode1); + return nodeList; + } - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new163() /* reduce AAfloatconstant1Constant */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PConstant pconstantNode1; - { - // Block - @SuppressWarnings("unused") Object nullNode2 = null; - TFloatConstant tfloatconstantNode3; - tfloatconstantNode3 = (TFloatConstant)nodeArrayList1.get(0); - - pconstantNode1 = new AFloatConstant(null, tfloatconstantNode3); - } - nodeList.add(pconstantNode1); - return nodeList; + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new11() /* reduce APublicModifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PModifier pmodifierNode1; + { + // Block + TPublic tpublicNode2; + tpublicNode2 = (TPublic) nodeArrayList1.get(0); + + pmodifierNode1 = new APublicModifier(tpublicNode2); } + nodeList.add(pmodifierNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new12() /* reduce AProtectedModifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new164() /* reduce AAfloatconstant2Constant */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PModifier pmodifierNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PConstant pconstantNode1; - { - // Block - TMinus tminusNode2; - TFloatConstant tfloatconstantNode3; - tminusNode2 = (TMinus)nodeArrayList1.get(0); - tfloatconstantNode3 = (TFloatConstant)nodeArrayList2.get(0); + // Block + TProtected tprotectedNode2; + tprotectedNode2 = (TProtected) nodeArrayList1.get(0); - pconstantNode1 = new AFloatConstant(tminusNode2, tfloatconstantNode3); - } - nodeList.add(pconstantNode1); - return nodeList; + pmodifierNode1 = new AProtectedModifier(tprotectedNode2); } + nodeList.add(pmodifierNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new13() /* reduce APrivateModifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new165() /* reduce AStringConstant */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PModifier pmodifierNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TPrivate tprivateNode2; + tprivateNode2 = (TPrivate) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PConstant pconstantNode1; - { - // Block - TStringConstant tstringconstantNode2; - tstringconstantNode2 = (TStringConstant)nodeArrayList1.get(0); - - pconstantNode1 = new AStringConstant(tstringconstantNode2); - } - nodeList.add(pconstantNode1); - return nodeList; + pmodifierNode1 = new APrivateModifier(tprivateNode2); } + nodeList.add(pmodifierNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new14() /* reduce AStaticModifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new166() /* reduce AClzzConstant */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PModifier pmodifierNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PConstant pconstantNode1; - { - // Block - TClass tclassNode2; - TStringConstant tstringconstantNode3; - tclassNode2 = (TClass)nodeArrayList1.get(0); - tstringconstantNode3 = (TStringConstant)nodeArrayList2.get(0); + // Block + TStatic tstaticNode2; + tstaticNode2 = (TStatic) nodeArrayList1.get(0); - pconstantNode1 = new AClzzConstant(tclassNode2, tstringconstantNode3); - } - nodeList.add(pconstantNode1); - return nodeList; + pmodifierNode1 = new AStaticModifier(tstaticNode2); } + nodeList.add(pmodifierNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new15() /* reduce ASynchronizedModifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new167() /* reduce ANullConstant */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PModifier pmodifierNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TSynchronized tsynchronizedNode2; + tsynchronizedNode2 = (TSynchronized) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PConstant pconstantNode1; - { - // Block - TNull tnullNode2; - tnullNode2 = (TNull)nodeArrayList1.get(0); - - pconstantNode1 = new ANullConstant(tnullNode2); - } - nodeList.add(pconstantNode1); - return nodeList; + pmodifierNode1 = new ASynchronizedModifier(tsynchronizedNode2); } + nodeList.add(pmodifierNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new16() /* reduce ATransientModifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new168() /* reduce AAndBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PModifier pmodifierNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TAnd tandNode2; - tandNode2 = (TAnd)nodeArrayList1.get(0); + // Block + TTransient ttransientNode2; + ttransientNode2 = (TTransient) nodeArrayList1.get(0); - pbinopNode1 = new AAndBinop(tandNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + pmodifierNode1 = new ATransientModifier(ttransientNode2); } + nodeList.add(pmodifierNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new17() /* reduce AVolatileModifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new169() /* reduce AOrBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PModifier pmodifierNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TVolatile tvolatileNode2; + tvolatileNode2 = (TVolatile) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TOr torNode2; - torNode2 = (TOr)nodeArrayList1.get(0); - - pbinopNode1 = new AOrBinop(torNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + pmodifierNode1 = new AVolatileModifier(tvolatileNode2); } + nodeList.add(pmodifierNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new18() /* reduce AStrictfpModifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new170() /* reduce AXorBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PModifier pmodifierNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TXor txorNode2; - txorNode2 = (TXor)nodeArrayList1.get(0); - - pbinopNode1 = new AXorBinop(txorNode2); - } - nodeList.add(pbinopNode1); - return nodeList; - } + // Block + TStrictfp tstrictfpNode2; + tstrictfpNode2 = (TStrictfp) nodeArrayList1.get(0); + pmodifierNode1 = new AStrictfpModifier(tstrictfpNode2); + } + nodeList.add(pmodifierNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new19() /* reduce AEnumModifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new171() /* reduce AModBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PModifier pmodifierNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TMod tmodNode2; - tmodNode2 = (TMod)nodeArrayList1.get(0); - - pbinopNode1 = new AModBinop(tmodNode2); - } - nodeList.add(pbinopNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new172() /* reduce ACmpBinop */ + // Block + TEnum tenumNode2; + tenumNode2 = (TEnum) nodeArrayList1.get(0); + + pmodifierNode1 = new AEnumModifier(tenumNode2); + } + nodeList.add(pmodifierNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new20() /* reduce AAnnotationModifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PModifier pmodifierNode1; + { + // Block + TAnnotation tannotationNode2; + tannotationNode2 = (TAnnotation) nodeArrayList1.get(0); + + pmodifierNode1 = new AAnnotationModifier(tannotationNode2); + } + nodeList.add(pmodifierNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new21() /* reduce AClassFileType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFileType pfiletypeNode1; + { + // Block + TClass tclassNode2; + tclassNode2 = (TClass) nodeArrayList1.get(0); + + pfiletypeNode1 = new AClassFileType(tclassNode2); + } + nodeList.add(pfiletypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new22() /* reduce AInterfaceFileType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFileType pfiletypeNode1; + { + // Block + TInterface tinterfaceNode2; + tinterfaceNode2 = (TInterface) nodeArrayList1.get(0); + + pfiletypeNode1 = new AInterfaceFileType(tinterfaceNode2); + } + nodeList.add(pfiletypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new23() /* reduce AExtendsClause */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PExtendsClause pextendsclauseNode1; + { + // Block + TExtends textendsNode2; + PClassName pclassnameNode3; + textendsNode2 = (TExtends) nodeArrayList1.get(0); + pclassnameNode3 = (PClassName) nodeArrayList2.get(0); + + pextendsclauseNode1 = new AExtendsClause(textendsNode2, pclassnameNode3); + } + nodeList.add(pextendsclauseNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new24() /* reduce AImplementsClause */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PImplementsClause pimplementsclauseNode1; + { + // Block + TImplements timplementsNode2; + PClassNameList pclassnamelistNode3; + timplementsNode2 = (TImplements) nodeArrayList1.get(0); + pclassnamelistNode3 = (PClassNameList) nodeArrayList2.get(0); + + pimplementsclauseNode1 = new AImplementsClause(timplementsNode2, pclassnamelistNode3); + } + nodeList.add(pimplementsclauseNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new25() /* reduce AAfilebody1FileBody */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFileBody pfilebodyNode1; + { + // Block + TLBrace tlbraceNode2; + LinkedList listNode3 = new LinkedList(); + TRBrace trbraceNode4; + tlbraceNode2 = (TLBrace) nodeArrayList1.get(0); + { + // Block + } + trbraceNode4 = (TRBrace) nodeArrayList2.get(0); + + pfilebodyNode1 = new AFileBody(tlbraceNode2, listNode3, trbraceNode4); + } + nodeList.add(pfilebodyNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new26() /* reduce AAfilebody2FileBody */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFileBody pfilebodyNode1; + { + // Block + TLBrace tlbraceNode2; + LinkedList listNode4 = new LinkedList(); + TRBrace trbraceNode5; + tlbraceNode2 = (TLBrace) nodeArrayList1.get(0); + { + // Block + LinkedList listNode3 = new LinkedList(); + listNode3 = (LinkedList) nodeArrayList2.get(0); + if (listNode3 != null) { + listNode4.addAll(listNode3); + } + } + trbraceNode5 = (TRBrace) nodeArrayList3.get(0); + + pfilebodyNode1 = new AFileBody(tlbraceNode2, listNode4, trbraceNode5); + } + nodeList.add(pfilebodyNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new27() /* reduce ASingleNameList */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNameList pnamelistNode1; + { + // Block + PName pnameNode2; + pnameNode2 = (PName) nodeArrayList1.get(0); + + pnamelistNode1 = new ASingleNameList(pnameNode2); + } + nodeList.add(pnamelistNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new28() /* reduce AMultiNameList */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNameList pnamelistNode1; + { + // Block + PName pnameNode2; + TComma tcommaNode3; + PNameList pnamelistNode4; + pnameNode2 = (PName) nodeArrayList1.get(0); + tcommaNode3 = (TComma) nodeArrayList2.get(0); + pnamelistNode4 = (PNameList) nodeArrayList3.get(0); + + pnamelistNode1 = new AMultiNameList(pnameNode2, tcommaNode3, pnamelistNode4); + } + nodeList.add(pnamelistNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new29() /* reduce AClassNameSingleClassNameList */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PClassNameList pclassnamelistNode1; + { + // Block + PClassName pclassnameNode2; + pclassnameNode2 = (PClassName) nodeArrayList1.get(0); + + pclassnamelistNode1 = new AClassNameSingleClassNameList(pclassnameNode2); + } + nodeList.add(pclassnamelistNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new30() /* reduce AClassNameMultiClassNameList */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PClassNameList pclassnamelistNode1; + { + // Block + PClassName pclassnameNode2; + TComma tcommaNode3; + PClassNameList pclassnamelistNode4; + pclassnameNode2 = (PClassName) nodeArrayList1.get(0); + tcommaNode3 = (TComma) nodeArrayList2.get(0); + pclassnamelistNode4 = (PClassNameList) nodeArrayList3.get(0); + + pclassnamelistNode1 = new AClassNameMultiClassNameList(pclassnameNode2, tcommaNode3, pclassnamelistNode4); + } + nodeList.add(pclassnamelistNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new31() /* reduce AAfieldmember1Member */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMember pmemberNode1; + { + // Block + LinkedList listNode2 = new LinkedList(); + PType ptypeNode3; + PName pnameNode4; + TSemicolon tsemicolonNode5; + { + // Block + } + ptypeNode3 = (PType) nodeArrayList1.get(0); + pnameNode4 = (PName) nodeArrayList2.get(0); + tsemicolonNode5 = (TSemicolon) nodeArrayList3.get(0); + + pmemberNode1 = new AFieldMember(listNode2, ptypeNode3, pnameNode4, tsemicolonNode5); + } + nodeList.add(pmemberNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new32() /* reduce AAfieldmember2Member */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMember pmemberNode1; + { + // Block + LinkedList listNode3 = new LinkedList(); + PType ptypeNode4; + PName pnameNode5; + TSemicolon tsemicolonNode6; + { + // Block + LinkedList listNode2 = new LinkedList(); + listNode2 = (LinkedList) nodeArrayList1.get(0); + if (listNode2 != null) { + listNode3.addAll(listNode2); + } + } + ptypeNode4 = (PType) nodeArrayList2.get(0); + pnameNode5 = (PName) nodeArrayList3.get(0); + tsemicolonNode6 = (TSemicolon) nodeArrayList4.get(0); + + pmemberNode1 = new AFieldMember(listNode3, ptypeNode4, pnameNode5, tsemicolonNode6); + } + nodeList.add(pmemberNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new33() /* reduce AAmethodmember1Member */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMember pmemberNode1; + { + // Block + LinkedList listNode2 = new LinkedList(); + PType ptypeNode3; + PName pnameNode4; + TLParen tlparenNode5; + @SuppressWarnings("unused") + Object nullNode6 = null; + TRParen trparenNode7; + @SuppressWarnings("unused") + Object nullNode8 = null; + PMethodBody pmethodbodyNode9; + { + // Block + } + ptypeNode3 = (PType) nodeArrayList1.get(0); + pnameNode4 = (PName) nodeArrayList2.get(0); + tlparenNode5 = (TLParen) nodeArrayList3.get(0); + trparenNode7 = (TRParen) nodeArrayList4.get(0); + pmethodbodyNode9 = (PMethodBody) nodeArrayList5.get(0); + + pmemberNode1 + = new AMethodMember(listNode2, ptypeNode3, pnameNode4, tlparenNode5, null, trparenNode7, null, pmethodbodyNode9); + } + nodeList.add(pmemberNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new34() /* reduce AAmethodmember2Member */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMember pmemberNode1; + { + // Block + LinkedList listNode3 = new LinkedList(); + PType ptypeNode4; + PName pnameNode5; + TLParen tlparenNode6; + @SuppressWarnings("unused") + Object nullNode7 = null; + TRParen trparenNode8; + @SuppressWarnings("unused") + Object nullNode9 = null; + PMethodBody pmethodbodyNode10; + { + // Block + LinkedList listNode2 = new LinkedList(); + listNode2 = (LinkedList) nodeArrayList1.get(0); + if (listNode2 != null) { + listNode3.addAll(listNode2); + } + } + ptypeNode4 = (PType) nodeArrayList2.get(0); + pnameNode5 = (PName) nodeArrayList3.get(0); + tlparenNode6 = (TLParen) nodeArrayList4.get(0); + trparenNode8 = (TRParen) nodeArrayList5.get(0); + pmethodbodyNode10 = (PMethodBody) nodeArrayList6.get(0); + + pmemberNode1 + = new AMethodMember(listNode3, ptypeNode4, pnameNode5, tlparenNode6, null, trparenNode8, null, pmethodbodyNode10); + } + nodeList.add(pmemberNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new35() /* reduce AAmethodmember3Member */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMember pmemberNode1; + { + // Block + LinkedList listNode2 = new LinkedList(); + PType ptypeNode3; + PName pnameNode4; + TLParen tlparenNode5; + PParameterList pparameterlistNode6; + TRParen trparenNode7; + @SuppressWarnings("unused") + Object nullNode8 = null; + PMethodBody pmethodbodyNode9; + { + // Block + } + ptypeNode3 = (PType) nodeArrayList1.get(0); + pnameNode4 = (PName) nodeArrayList2.get(0); + tlparenNode5 = (TLParen) nodeArrayList3.get(0); + pparameterlistNode6 = (PParameterList) nodeArrayList4.get(0); + trparenNode7 = (TRParen) nodeArrayList5.get(0); + pmethodbodyNode9 = (PMethodBody) nodeArrayList6.get(0); + + pmemberNode1 = new AMethodMember(listNode2, ptypeNode3, pnameNode4, tlparenNode5, pparameterlistNode6, trparenNode7, + null, pmethodbodyNode9); + } + nodeList.add(pmemberNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new36() /* reduce AAmethodmember4Member */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMember pmemberNode1; + { + // Block + LinkedList listNode3 = new LinkedList(); + PType ptypeNode4; + PName pnameNode5; + TLParen tlparenNode6; + PParameterList pparameterlistNode7; + TRParen trparenNode8; + @SuppressWarnings("unused") + Object nullNode9 = null; + PMethodBody pmethodbodyNode10; + { + // Block + LinkedList listNode2 = new LinkedList(); + listNode2 = (LinkedList) nodeArrayList1.get(0); + if (listNode2 != null) { + listNode3.addAll(listNode2); + } + } + ptypeNode4 = (PType) nodeArrayList2.get(0); + pnameNode5 = (PName) nodeArrayList3.get(0); + tlparenNode6 = (TLParen) nodeArrayList4.get(0); + pparameterlistNode7 = (PParameterList) nodeArrayList5.get(0); + trparenNode8 = (TRParen) nodeArrayList6.get(0); + pmethodbodyNode10 = (PMethodBody) nodeArrayList7.get(0); + + pmemberNode1 = new AMethodMember(listNode3, ptypeNode4, pnameNode5, tlparenNode6, pparameterlistNode7, trparenNode8, + null, pmethodbodyNode10); + } + nodeList.add(pmemberNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new37() /* reduce AAmethodmember5Member */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMember pmemberNode1; + { + // Block + LinkedList listNode2 = new LinkedList(); + PType ptypeNode3; + PName pnameNode4; + TLParen tlparenNode5; + @SuppressWarnings("unused") + Object nullNode6 = null; + TRParen trparenNode7; + PThrowsClause pthrowsclauseNode8; + PMethodBody pmethodbodyNode9; + { + // Block + } + ptypeNode3 = (PType) nodeArrayList1.get(0); + pnameNode4 = (PName) nodeArrayList2.get(0); + tlparenNode5 = (TLParen) nodeArrayList3.get(0); + trparenNode7 = (TRParen) nodeArrayList4.get(0); + pthrowsclauseNode8 = (PThrowsClause) nodeArrayList5.get(0); + pmethodbodyNode9 = (PMethodBody) nodeArrayList6.get(0); + + pmemberNode1 = new AMethodMember(listNode2, ptypeNode3, pnameNode4, tlparenNode5, null, trparenNode7, + pthrowsclauseNode8, pmethodbodyNode9); + } + nodeList.add(pmemberNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new38() /* reduce AAmethodmember6Member */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMember pmemberNode1; + { + // Block + LinkedList listNode3 = new LinkedList(); + PType ptypeNode4; + PName pnameNode5; + TLParen tlparenNode6; + @SuppressWarnings("unused") + Object nullNode7 = null; + TRParen trparenNode8; + PThrowsClause pthrowsclauseNode9; + PMethodBody pmethodbodyNode10; + { + // Block + LinkedList listNode2 = new LinkedList(); + listNode2 = (LinkedList) nodeArrayList1.get(0); + if (listNode2 != null) { + listNode3.addAll(listNode2); + } + } + ptypeNode4 = (PType) nodeArrayList2.get(0); + pnameNode5 = (PName) nodeArrayList3.get(0); + tlparenNode6 = (TLParen) nodeArrayList4.get(0); + trparenNode8 = (TRParen) nodeArrayList5.get(0); + pthrowsclauseNode9 = (PThrowsClause) nodeArrayList6.get(0); + pmethodbodyNode10 = (PMethodBody) nodeArrayList7.get(0); + + pmemberNode1 = new AMethodMember(listNode3, ptypeNode4, pnameNode5, tlparenNode6, null, trparenNode8, + pthrowsclauseNode9, pmethodbodyNode10); + } + nodeList.add(pmemberNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new39() /* reduce AAmethodmember7Member */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMember pmemberNode1; + { + // Block + LinkedList listNode2 = new LinkedList(); + PType ptypeNode3; + PName pnameNode4; + TLParen tlparenNode5; + PParameterList pparameterlistNode6; + TRParen trparenNode7; + PThrowsClause pthrowsclauseNode8; + PMethodBody pmethodbodyNode9; + { + // Block + } + ptypeNode3 = (PType) nodeArrayList1.get(0); + pnameNode4 = (PName) nodeArrayList2.get(0); + tlparenNode5 = (TLParen) nodeArrayList3.get(0); + pparameterlistNode6 = (PParameterList) nodeArrayList4.get(0); + trparenNode7 = (TRParen) nodeArrayList5.get(0); + pthrowsclauseNode8 = (PThrowsClause) nodeArrayList6.get(0); + pmethodbodyNode9 = (PMethodBody) nodeArrayList7.get(0); + + pmemberNode1 = new AMethodMember(listNode2, ptypeNode3, pnameNode4, tlparenNode5, pparameterlistNode6, trparenNode7, + pthrowsclauseNode8, pmethodbodyNode9); + } + nodeList.add(pmemberNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new40() /* reduce AAmethodmember8Member */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList8 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMember pmemberNode1; + { + // Block + LinkedList listNode3 = new LinkedList(); + PType ptypeNode4; + PName pnameNode5; + TLParen tlparenNode6; + PParameterList pparameterlistNode7; + TRParen trparenNode8; + PThrowsClause pthrowsclauseNode9; + PMethodBody pmethodbodyNode10; + { + // Block + LinkedList listNode2 = new LinkedList(); + listNode2 = (LinkedList) nodeArrayList1.get(0); + if (listNode2 != null) { + listNode3.addAll(listNode2); + } + } + ptypeNode4 = (PType) nodeArrayList2.get(0); + pnameNode5 = (PName) nodeArrayList3.get(0); + tlparenNode6 = (TLParen) nodeArrayList4.get(0); + pparameterlistNode7 = (PParameterList) nodeArrayList5.get(0); + trparenNode8 = (TRParen) nodeArrayList6.get(0); + pthrowsclauseNode9 = (PThrowsClause) nodeArrayList7.get(0); + pmethodbodyNode10 = (PMethodBody) nodeArrayList8.get(0); + + pmemberNode1 = new AMethodMember(listNode3, ptypeNode4, pnameNode5, tlparenNode6, pparameterlistNode7, trparenNode8, + pthrowsclauseNode9, pmethodbodyNode10); + } + nodeList.add(pmemberNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new41() /* reduce AVoidType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PType ptypeNode1; + { + // Block + TVoid tvoidNode2; + tvoidNode2 = (TVoid) nodeArrayList1.get(0); + + ptypeNode1 = new AVoidType(tvoidNode2); + } + nodeList.add(ptypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new42() /* reduce ANovoidType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PType ptypeNode1; + { + // Block + PNonvoidType pnonvoidtypeNode2; + pnonvoidtypeNode2 = (PNonvoidType) nodeArrayList1.get(0); + + ptypeNode1 = new ANovoidType(pnonvoidtypeNode2); + } + nodeList.add(ptypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new43() /* reduce ASingleParameterList */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PParameterList pparameterlistNode1; + { + // Block + PParameter pparameterNode2; + pparameterNode2 = (PParameter) nodeArrayList1.get(0); + + pparameterlistNode1 = new ASingleParameterList(pparameterNode2); + } + nodeList.add(pparameterlistNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new44() /* reduce AMultiParameterList */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PParameterList pparameterlistNode1; + { + // Block + PParameter pparameterNode2; + TComma tcommaNode3; + PParameterList pparameterlistNode4; + pparameterNode2 = (PParameter) nodeArrayList1.get(0); + tcommaNode3 = (TComma) nodeArrayList2.get(0); + pparameterlistNode4 = (PParameterList) nodeArrayList3.get(0); + + pparameterlistNode1 = new AMultiParameterList(pparameterNode2, tcommaNode3, pparameterlistNode4); + } + nodeList.add(pparameterlistNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new45() /* reduce AParameter */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PParameter pparameterNode1; + { + // Block + PNonvoidType pnonvoidtypeNode2; + pnonvoidtypeNode2 = (PNonvoidType) nodeArrayList1.get(0); + + pparameterNode1 = new AParameter(pnonvoidtypeNode2); + } + nodeList.add(pparameterNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new46() /* reduce AThrowsClause */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PThrowsClause pthrowsclauseNode1; + { + // Block + TThrows tthrowsNode2; + PClassNameList pclassnamelistNode3; + tthrowsNode2 = (TThrows) nodeArrayList1.get(0); + pclassnamelistNode3 = (PClassNameList) nodeArrayList2.get(0); + + pthrowsclauseNode1 = new AThrowsClause(tthrowsNode2, pclassnamelistNode3); + } + nodeList.add(pthrowsclauseNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new47() /* reduce ABooleanBaseTypeNoName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseTypeNoName pbasetypenonameNode1; + { + // Block + TBoolean tbooleanNode2; + tbooleanNode2 = (TBoolean) nodeArrayList1.get(0); + + pbasetypenonameNode1 = new ABooleanBaseTypeNoName(tbooleanNode2); + } + nodeList.add(pbasetypenonameNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new48() /* reduce AByteBaseTypeNoName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseTypeNoName pbasetypenonameNode1; + { + // Block + TByte tbyteNode2; + tbyteNode2 = (TByte) nodeArrayList1.get(0); + + pbasetypenonameNode1 = new AByteBaseTypeNoName(tbyteNode2); + } + nodeList.add(pbasetypenonameNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new49() /* reduce ACharBaseTypeNoName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseTypeNoName pbasetypenonameNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TCmp tcmpNode2; - tcmpNode2 = (TCmp)nodeArrayList1.get(0); - - pbinopNode1 = new ACmpBinop(tcmpNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + // Block + TChar tcharNode2; + tcharNode2 = (TChar) nodeArrayList1.get(0); + + pbasetypenonameNode1 = new ACharBaseTypeNoName(tcharNode2); } + nodeList.add(pbasetypenonameNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new50() /* reduce AShortBaseTypeNoName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new173() /* reduce ACmpgBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseTypeNoName pbasetypenonameNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TCmpg tcmpgNode2; - tcmpgNode2 = (TCmpg)nodeArrayList1.get(0); - - pbinopNode1 = new ACmpgBinop(tcmpgNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + // Block + TShort tshortNode2; + tshortNode2 = (TShort) nodeArrayList1.get(0); + + pbasetypenonameNode1 = new AShortBaseTypeNoName(tshortNode2); } + nodeList.add(pbasetypenonameNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new51() /* reduce AIntBaseTypeNoName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new174() /* reduce ACmplBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseTypeNoName pbasetypenonameNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TInt tintNode2; + tintNode2 = (TInt) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TCmpl tcmplNode2; - tcmplNode2 = (TCmpl)nodeArrayList1.get(0); - - pbinopNode1 = new ACmplBinop(tcmplNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + pbasetypenonameNode1 = new AIntBaseTypeNoName(tintNode2); } + nodeList.add(pbasetypenonameNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new52() /* reduce ALongBaseTypeNoName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new175() /* reduce ACmpeqBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseTypeNoName pbasetypenonameNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TCmpeq tcmpeqNode2; - tcmpeqNode2 = (TCmpeq)nodeArrayList1.get(0); + // Block + TLong tlongNode2; + tlongNode2 = (TLong) nodeArrayList1.get(0); - pbinopNode1 = new ACmpeqBinop(tcmpeqNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + pbasetypenonameNode1 = new ALongBaseTypeNoName(tlongNode2); } + nodeList.add(pbasetypenonameNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new53() /* reduce AFloatBaseTypeNoName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new176() /* reduce ACmpneBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseTypeNoName pbasetypenonameNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TFloat tfloatNode2; + tfloatNode2 = (TFloat) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TCmpne tcmpneNode2; - tcmpneNode2 = (TCmpne)nodeArrayList1.get(0); - - pbinopNode1 = new ACmpneBinop(tcmpneNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + pbasetypenonameNode1 = new AFloatBaseTypeNoName(tfloatNode2); } + nodeList.add(pbasetypenonameNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new54() /* reduce ADoubleBaseTypeNoName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new177() /* reduce ACmpgtBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseTypeNoName pbasetypenonameNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TCmpgt tcmpgtNode2; - tcmpgtNode2 = (TCmpgt)nodeArrayList1.get(0); + // Block + TDouble tdoubleNode2; + tdoubleNode2 = (TDouble) nodeArrayList1.get(0); - pbinopNode1 = new ACmpgtBinop(tcmpgtNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + pbasetypenonameNode1 = new ADoubleBaseTypeNoName(tdoubleNode2); } + nodeList.add(pbasetypenonameNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new55() /* reduce ANullBaseTypeNoName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new178() /* reduce ACmpgeBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseTypeNoName pbasetypenonameNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TNullType tnulltypeNode2; + tnulltypeNode2 = (TNullType) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TCmpge tcmpgeNode2; - tcmpgeNode2 = (TCmpge)nodeArrayList1.get(0); - - pbinopNode1 = new ACmpgeBinop(tcmpgeNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + pbasetypenonameNode1 = new ANullBaseTypeNoName(tnulltypeNode2); } + nodeList.add(pbasetypenonameNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new56() /* reduce ABooleanBaseType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new179() /* reduce ACmpltBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseType pbasetypeNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TCmplt tcmpltNode2; - tcmpltNode2 = (TCmplt)nodeArrayList1.get(0); + // Block + TBoolean tbooleanNode2; + tbooleanNode2 = (TBoolean) nodeArrayList1.get(0); - pbinopNode1 = new ACmpltBinop(tcmpltNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + pbasetypeNode1 = new ABooleanBaseType(tbooleanNode2); } + nodeList.add(pbasetypeNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new57() /* reduce AByteBaseType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new180() /* reduce ACmpleBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseType pbasetypeNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TByte tbyteNode2; + tbyteNode2 = (TByte) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TCmple tcmpleNode2; - tcmpleNode2 = (TCmple)nodeArrayList1.get(0); - - pbinopNode1 = new ACmpleBinop(tcmpleNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + pbasetypeNode1 = new AByteBaseType(tbyteNode2); } + nodeList.add(pbasetypeNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new58() /* reduce ACharBaseType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new181() /* reduce AShlBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseType pbasetypeNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TShl tshlNode2; - tshlNode2 = (TShl)nodeArrayList1.get(0); + // Block + TChar tcharNode2; + tcharNode2 = (TChar) nodeArrayList1.get(0); - pbinopNode1 = new AShlBinop(tshlNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + pbasetypeNode1 = new ACharBaseType(tcharNode2); } + nodeList.add(pbasetypeNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new59() /* reduce AShortBaseType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new182() /* reduce AShrBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseType pbasetypeNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TShort tshortNode2; + tshortNode2 = (TShort) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TShr tshrNode2; - tshrNode2 = (TShr)nodeArrayList1.get(0); - - pbinopNode1 = new AShrBinop(tshrNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + pbasetypeNode1 = new AShortBaseType(tshortNode2); } + nodeList.add(pbasetypeNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new60() /* reduce AIntBaseType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new183() /* reduce AUshrBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseType pbasetypeNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TUshr tushrNode2; - tushrNode2 = (TUshr)nodeArrayList1.get(0); + // Block + TInt tintNode2; + tintNode2 = (TInt) nodeArrayList1.get(0); - pbinopNode1 = new AUshrBinop(tushrNode2); - } - nodeList.add(pbinopNode1); - return nodeList; + pbasetypeNode1 = new AIntBaseType(tintNode2); } + nodeList.add(pbasetypeNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new61() /* reduce ALongBaseType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new184() /* reduce APlusBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseType pbasetypeNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TPlus tplusNode2; - tplusNode2 = (TPlus)nodeArrayList1.get(0); - - pbinopNode1 = new APlusBinop(tplusNode2); - } - nodeList.add(pbinopNode1); - return nodeList; - } + // Block + TLong tlongNode2; + tlongNode2 = (TLong) nodeArrayList1.get(0); + pbasetypeNode1 = new ALongBaseType(tlongNode2); + } + nodeList.add(pbasetypeNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new62() /* reduce AFloatBaseType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new185() /* reduce AMinusBinop */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseType pbasetypeNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TMinus tminusNode2; - tminusNode2 = (TMinus)nodeArrayList1.get(0); - - pbinopNode1 = new AMinusBinop(tminusNode2); + // Block + TFloat tfloatNode2; + tfloatNode2 = (TFloat) nodeArrayList1.get(0); + + pbasetypeNode1 = new AFloatBaseType(tfloatNode2); + } + nodeList.add(pbasetypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new63() /* reduce ADoubleBaseType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseType pbasetypeNode1; + { + // Block + TDouble tdoubleNode2; + tdoubleNode2 = (TDouble) nodeArrayList1.get(0); + + pbasetypeNode1 = new ADoubleBaseType(tdoubleNode2); + } + nodeList.add(pbasetypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new64() /* reduce ANullBaseType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseType pbasetypeNode1; + { + // Block + TNullType tnulltypeNode2; + tnulltypeNode2 = (TNullType) nodeArrayList1.get(0); + + pbasetypeNode1 = new ANullBaseType(tnulltypeNode2); + } + nodeList.add(pbasetypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new65() /* reduce AClassNameBaseType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBaseType pbasetypeNode1; + { + // Block + PClassName pclassnameNode2; + pclassnameNode2 = (PClassName) nodeArrayList1.get(0); + + pbasetypeNode1 = new AClassNameBaseType(pclassnameNode2); + } + nodeList.add(pbasetypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new66() /* reduce AAbasenonvoidtype1NonvoidType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNonvoidType pnonvoidtypeNode1; + { + // Block + PBaseTypeNoName pbasetypenonameNode2; + LinkedList listNode3 = new LinkedList(); + pbasetypenonameNode2 = (PBaseTypeNoName) nodeArrayList1.get(0); + { + // Block + } + + pnonvoidtypeNode1 = new ABaseNonvoidType(pbasetypenonameNode2, listNode3); + } + nodeList.add(pnonvoidtypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new67() /* reduce AAbasenonvoidtype2NonvoidType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNonvoidType pnonvoidtypeNode1; + { + // Block + PBaseTypeNoName pbasetypenonameNode2; + LinkedList listNode4 = new LinkedList(); + pbasetypenonameNode2 = (PBaseTypeNoName) nodeArrayList1.get(0); + { + // Block + LinkedList listNode3 = new LinkedList(); + listNode3 = (LinkedList) nodeArrayList2.get(0); + if (listNode3 != null) { + listNode4.addAll(listNode3); + } + } + + pnonvoidtypeNode1 = new ABaseNonvoidType(pbasetypenonameNode2, listNode4); + } + nodeList.add(pnonvoidtypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new68() /* reduce AAquotednonvoidtype1NonvoidType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNonvoidType pnonvoidtypeNode1; + { + // Block + TQuotedName tquotednameNode2; + LinkedList listNode3 = new LinkedList(); + tquotednameNode2 = (TQuotedName) nodeArrayList1.get(0); + { + // Block + } + + pnonvoidtypeNode1 = new AQuotedNonvoidType(tquotednameNode2, listNode3); + } + nodeList.add(pnonvoidtypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new69() /* reduce AAquotednonvoidtype2NonvoidType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNonvoidType pnonvoidtypeNode1; + { + // Block + TQuotedName tquotednameNode2; + LinkedList listNode4 = new LinkedList(); + tquotednameNode2 = (TQuotedName) nodeArrayList1.get(0); + { + // Block + LinkedList listNode3 = new LinkedList(); + listNode3 = (LinkedList) nodeArrayList2.get(0); + if (listNode3 != null) { + listNode4.addAll(listNode3); + } + } + + pnonvoidtypeNode1 = new AQuotedNonvoidType(tquotednameNode2, listNode4); + } + nodeList.add(pnonvoidtypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new70() /* reduce AAidentnonvoidtype1NonvoidType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNonvoidType pnonvoidtypeNode1; + { + // Block + TIdentifier tidentifierNode2; + LinkedList listNode3 = new LinkedList(); + tidentifierNode2 = (TIdentifier) nodeArrayList1.get(0); + { + // Block + } + + pnonvoidtypeNode1 = new AIdentNonvoidType(tidentifierNode2, listNode3); + } + nodeList.add(pnonvoidtypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new71() /* reduce AAidentnonvoidtype2NonvoidType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNonvoidType pnonvoidtypeNode1; + { + // Block + TIdentifier tidentifierNode2; + LinkedList listNode4 = new LinkedList(); + tidentifierNode2 = (TIdentifier) nodeArrayList1.get(0); + { + // Block + LinkedList listNode3 = new LinkedList(); + listNode3 = (LinkedList) nodeArrayList2.get(0); + if (listNode3 != null) { + listNode4.addAll(listNode3); + } + } + + pnonvoidtypeNode1 = new AIdentNonvoidType(tidentifierNode2, listNode4); + } + nodeList.add(pnonvoidtypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new72() /* reduce AAfullidentnonvoidtype1NonvoidType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNonvoidType pnonvoidtypeNode1; + { + // Block + TFullIdentifier tfullidentifierNode2; + LinkedList listNode3 = new LinkedList(); + tfullidentifierNode2 = (TFullIdentifier) nodeArrayList1.get(0); + { + // Block + } + + pnonvoidtypeNode1 = new AFullIdentNonvoidType(tfullidentifierNode2, listNode3); + } + nodeList.add(pnonvoidtypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new73() /* reduce AAfullidentnonvoidtype2NonvoidType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNonvoidType pnonvoidtypeNode1; + { + // Block + TFullIdentifier tfullidentifierNode2; + LinkedList listNode4 = new LinkedList(); + tfullidentifierNode2 = (TFullIdentifier) nodeArrayList1.get(0); + { + // Block + LinkedList listNode3 = new LinkedList(); + listNode3 = (LinkedList) nodeArrayList2.get(0); + if (listNode3 != null) { + listNode4.addAll(listNode3); + } + } + + pnonvoidtypeNode1 = new AFullIdentNonvoidType(tfullidentifierNode2, listNode4); + } + nodeList.add(pnonvoidtypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new74() /* reduce AArrayBrackets */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PArrayBrackets parraybracketsNode1; + { + // Block + TLBracket tlbracketNode2; + TRBracket trbracketNode3; + tlbracketNode2 = (TLBracket) nodeArrayList1.get(0); + trbracketNode3 = (TRBracket) nodeArrayList2.get(0); + + parraybracketsNode1 = new AArrayBrackets(tlbracketNode2, trbracketNode3); + } + nodeList.add(parraybracketsNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new75() /* reduce AEmptyMethodBody */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMethodBody pmethodbodyNode1; + { + // Block + TSemicolon tsemicolonNode2; + tsemicolonNode2 = (TSemicolon) nodeArrayList1.get(0); + + pmethodbodyNode1 = new AEmptyMethodBody(tsemicolonNode2); + } + nodeList.add(pmethodbodyNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new76() /* reduce AAfullmethodbody1MethodBody */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMethodBody pmethodbodyNode1; + { + // Block + TLBrace tlbraceNode2; + LinkedList listNode3 = new LinkedList(); + LinkedList listNode4 = new LinkedList(); + LinkedList listNode5 = new LinkedList(); + TRBrace trbraceNode6; + tlbraceNode2 = (TLBrace) nodeArrayList1.get(0); + { + // Block + } + { + // Block + } + { + // Block + } + trbraceNode6 = (TRBrace) nodeArrayList2.get(0); + + pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode3, listNode4, listNode5, trbraceNode6); + } + nodeList.add(pmethodbodyNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new77() /* reduce AAfullmethodbody2MethodBody */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMethodBody pmethodbodyNode1; + { + // Block + TLBrace tlbraceNode2; + LinkedList listNode4 = new LinkedList(); + LinkedList listNode5 = new LinkedList(); + LinkedList listNode6 = new LinkedList(); + TRBrace trbraceNode7; + tlbraceNode2 = (TLBrace) nodeArrayList1.get(0); + { + // Block + LinkedList listNode3 = new LinkedList(); + listNode3 = (LinkedList) nodeArrayList2.get(0); + if (listNode3 != null) { + listNode4.addAll(listNode3); + } + } + { + // Block + } + { + // Block + } + trbraceNode7 = (TRBrace) nodeArrayList3.get(0); + + pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode4, listNode5, listNode6, trbraceNode7); + } + nodeList.add(pmethodbodyNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new78() /* reduce AAfullmethodbody3MethodBody */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMethodBody pmethodbodyNode1; + { + // Block + TLBrace tlbraceNode2; + LinkedList listNode3 = new LinkedList(); + LinkedList listNode5 = new LinkedList(); + LinkedList listNode6 = new LinkedList(); + TRBrace trbraceNode7; + tlbraceNode2 = (TLBrace) nodeArrayList1.get(0); + { + // Block + } + { + // Block + LinkedList listNode4 = new LinkedList(); + listNode4 = (LinkedList) nodeArrayList2.get(0); + if (listNode4 != null) { + listNode5.addAll(listNode4); + } + } + { + // Block + } + trbraceNode7 = (TRBrace) nodeArrayList3.get(0); + + pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode3, listNode5, listNode6, trbraceNode7); + } + nodeList.add(pmethodbodyNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new79() /* reduce AAfullmethodbody4MethodBody */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMethodBody pmethodbodyNode1; + { + // Block + TLBrace tlbraceNode2; + LinkedList listNode4 = new LinkedList(); + LinkedList listNode6 = new LinkedList(); + LinkedList listNode7 = new LinkedList(); + TRBrace trbraceNode8; + tlbraceNode2 = (TLBrace) nodeArrayList1.get(0); + { + // Block + LinkedList listNode3 = new LinkedList(); + listNode3 = (LinkedList) nodeArrayList2.get(0); + if (listNode3 != null) { + listNode4.addAll(listNode3); } - nodeList.add(pbinopNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new186() /* reduce AMultBinop */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TMult tmultNode2; - tmultNode2 = (TMult)nodeArrayList1.get(0); - - pbinopNode1 = new AMultBinop(tmultNode2); + } + { + // Block + LinkedList listNode5 = new LinkedList(); + listNode5 = (LinkedList) nodeArrayList3.get(0); + if (listNode5 != null) { + listNode6.addAll(listNode5); + } + } + { + // Block + } + trbraceNode8 = (TRBrace) nodeArrayList4.get(0); + + pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode4, listNode6, listNode7, trbraceNode8); + } + nodeList.add(pmethodbodyNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new80() /* reduce AAfullmethodbody5MethodBody */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMethodBody pmethodbodyNode1; + { + // Block + TLBrace tlbraceNode2; + LinkedList listNode3 = new LinkedList(); + LinkedList listNode4 = new LinkedList(); + LinkedList listNode6 = new LinkedList(); + TRBrace trbraceNode7; + tlbraceNode2 = (TLBrace) nodeArrayList1.get(0); + { + // Block + } + { + // Block + } + { + // Block + LinkedList listNode5 = new LinkedList(); + listNode5 = (LinkedList) nodeArrayList2.get(0); + if (listNode5 != null) { + listNode6.addAll(listNode5); + } + } + trbraceNode7 = (TRBrace) nodeArrayList3.get(0); + + pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode3, listNode4, listNode6, trbraceNode7); + } + nodeList.add(pmethodbodyNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new81() /* reduce AAfullmethodbody6MethodBody */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMethodBody pmethodbodyNode1; + { + // Block + TLBrace tlbraceNode2; + LinkedList listNode4 = new LinkedList(); + LinkedList listNode5 = new LinkedList(); + LinkedList listNode7 = new LinkedList(); + TRBrace trbraceNode8; + tlbraceNode2 = (TLBrace) nodeArrayList1.get(0); + { + // Block + LinkedList listNode3 = new LinkedList(); + listNode3 = (LinkedList) nodeArrayList2.get(0); + if (listNode3 != null) { + listNode4.addAll(listNode3); + } + } + { + // Block + } + { + // Block + LinkedList listNode6 = new LinkedList(); + listNode6 = (LinkedList) nodeArrayList3.get(0); + if (listNode6 != null) { + listNode7.addAll(listNode6); + } + } + trbraceNode8 = (TRBrace) nodeArrayList4.get(0); + + pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode4, listNode5, listNode7, trbraceNode8); + } + nodeList.add(pmethodbodyNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new82() /* reduce AAfullmethodbody7MethodBody */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMethodBody pmethodbodyNode1; + { + // Block + TLBrace tlbraceNode2; + LinkedList listNode3 = new LinkedList(); + LinkedList listNode5 = new LinkedList(); + LinkedList listNode7 = new LinkedList(); + TRBrace trbraceNode8; + tlbraceNode2 = (TLBrace) nodeArrayList1.get(0); + { + // Block + } + { + // Block + LinkedList listNode4 = new LinkedList(); + listNode4 = (LinkedList) nodeArrayList2.get(0); + if (listNode4 != null) { + listNode5.addAll(listNode4); } - nodeList.add(pbinopNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new187() /* reduce ADivBinop */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PBinop pbinopNode1; - { - // Block - TDiv tdivNode2; - tdivNode2 = (TDiv)nodeArrayList1.get(0); - - pbinopNode1 = new ADivBinop(tdivNode2); + } + { + // Block + LinkedList listNode6 = new LinkedList(); + listNode6 = (LinkedList) nodeArrayList3.get(0); + if (listNode6 != null) { + listNode7.addAll(listNode6); + } + } + trbraceNode8 = (TRBrace) nodeArrayList4.get(0); + + pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode3, listNode5, listNode7, trbraceNode8); + } + nodeList.add(pmethodbodyNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new83() /* reduce AAfullmethodbody8MethodBody */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMethodBody pmethodbodyNode1; + { + // Block + TLBrace tlbraceNode2; + LinkedList listNode4 = new LinkedList(); + LinkedList listNode6 = new LinkedList(); + LinkedList listNode8 = new LinkedList(); + TRBrace trbraceNode9; + tlbraceNode2 = (TLBrace) nodeArrayList1.get(0); + { + // Block + LinkedList listNode3 = new LinkedList(); + listNode3 = (LinkedList) nodeArrayList2.get(0); + if (listNode3 != null) { + listNode4.addAll(listNode3); } - nodeList.add(pbinopNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new188() /* reduce ALengthofUnop */ - { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PUnop punopNode1; - { - // Block - TLengthof tlengthofNode2; - tlengthofNode2 = (TLengthof)nodeArrayList1.get(0); - - punopNode1 = new ALengthofUnop(tlengthofNode2); + } + { + // Block + LinkedList listNode5 = new LinkedList(); + listNode5 = (LinkedList) nodeArrayList3.get(0); + if (listNode5 != null) { + listNode6.addAll(listNode5); } - nodeList.add(punopNode1); - return nodeList; - } - - - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new189() /* reduce ANegUnop */ + } + { + // Block + LinkedList listNode7 = new LinkedList(); + listNode7 = (LinkedList) nodeArrayList4.get(0); + if (listNode7 != null) { + listNode8.addAll(listNode7); + } + } + trbraceNode9 = (TRBrace) nodeArrayList5.get(0); + + pmethodbodyNode1 = new AFullMethodBody(tlbraceNode2, listNode4, listNode6, listNode8, trbraceNode9); + } + nodeList.add(pmethodbodyNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new84() /* reduce ADeclaration */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PDeclaration pdeclarationNode1; + { + // Block + PJimpleType pjimpletypeNode2; + PLocalNameList plocalnamelistNode3; + TSemicolon tsemicolonNode4; + pjimpletypeNode2 = (PJimpleType) nodeArrayList1.get(0); + plocalnamelistNode3 = (PLocalNameList) nodeArrayList2.get(0); + tsemicolonNode4 = (TSemicolon) nodeArrayList3.get(0); + + pdeclarationNode1 = new ADeclaration(pjimpletypeNode2, plocalnamelistNode3, tsemicolonNode4); + } + nodeList.add(pdeclarationNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new85() /* reduce AUnknownJimpleType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PJimpleType pjimpletypeNode1; + { + // Block + TUnknown tunknownNode2; + tunknownNode2 = (TUnknown) nodeArrayList1.get(0); + + pjimpletypeNode1 = new AUnknownJimpleType(tunknownNode2); + } + nodeList.add(pjimpletypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new86() /* reduce ANonvoidJimpleType */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PJimpleType pjimpletypeNode1; + { + // Block + PNonvoidType pnonvoidtypeNode2; + pnonvoidtypeNode2 = (PNonvoidType) nodeArrayList1.get(0); + + pjimpletypeNode1 = new ANonvoidJimpleType(pnonvoidtypeNode2); + } + nodeList.add(pjimpletypeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new87() /* reduce ALocalName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PLocalName plocalnameNode1; + { + // Block + PName pnameNode2; + pnameNode2 = (PName) nodeArrayList1.get(0); + + plocalnameNode1 = new ALocalName(pnameNode2); + } + nodeList.add(plocalnameNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new88() /* reduce ASingleLocalNameList */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PLocalNameList plocalnamelistNode1; + { + // Block + PLocalName plocalnameNode2; + plocalnameNode2 = (PLocalName) nodeArrayList1.get(0); + + plocalnamelistNode1 = new ASingleLocalNameList(plocalnameNode2); + } + nodeList.add(plocalnamelistNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new89() /* reduce AMultiLocalNameList */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PLocalNameList plocalnamelistNode1; + { + // Block + PLocalName plocalnameNode2; + TComma tcommaNode3; + PLocalNameList plocalnamelistNode4; + plocalnameNode2 = (PLocalName) nodeArrayList1.get(0); + tcommaNode3 = (TComma) nodeArrayList2.get(0); + plocalnamelistNode4 = (PLocalNameList) nodeArrayList3.get(0); + + plocalnamelistNode1 = new AMultiLocalNameList(plocalnameNode2, tcommaNode3, plocalnamelistNode4); + } + nodeList.add(plocalnamelistNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new90() /* reduce ALabelStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + PLabelName plabelnameNode2; + TColon tcolonNode3; + plabelnameNode2 = (PLabelName) nodeArrayList1.get(0); + tcolonNode3 = (TColon) nodeArrayList2.get(0); + + pstatementNode1 = new ALabelStatement(plabelnameNode2, tcolonNode3); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new91() /* reduce ABreakpointStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + TBreakpoint tbreakpointNode2; + TSemicolon tsemicolonNode3; + tbreakpointNode2 = (TBreakpoint) nodeArrayList1.get(0); + tsemicolonNode3 = (TSemicolon) nodeArrayList2.get(0); + + pstatementNode1 = new ABreakpointStatement(tbreakpointNode2, tsemicolonNode3); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new92() /* reduce AEntermonitorStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + TEntermonitor tentermonitorNode2; + PImmediate pimmediateNode3; + TSemicolon tsemicolonNode4; + tentermonitorNode2 = (TEntermonitor) nodeArrayList1.get(0); + pimmediateNode3 = (PImmediate) nodeArrayList2.get(0); + tsemicolonNode4 = (TSemicolon) nodeArrayList3.get(0); + + pstatementNode1 = new AEntermonitorStatement(tentermonitorNode2, pimmediateNode3, tsemicolonNode4); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new93() /* reduce AExitmonitorStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + TExitmonitor texitmonitorNode2; + PImmediate pimmediateNode3; + TSemicolon tsemicolonNode4; + texitmonitorNode2 = (TExitmonitor) nodeArrayList1.get(0); + pimmediateNode3 = (PImmediate) nodeArrayList2.get(0); + tsemicolonNode4 = (TSemicolon) nodeArrayList3.get(0); + + pstatementNode1 = new AExitmonitorStatement(texitmonitorNode2, pimmediateNode3, tsemicolonNode4); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new94() /* reduce ATableswitchStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList8 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + TTableswitch ttableswitchNode2; + TLParen tlparenNode3; + PImmediate pimmediateNode4; + TRParen trparenNode5; + TLBrace tlbraceNode6; + LinkedList listNode8 = new LinkedList(); + TRBrace trbraceNode9; + TSemicolon tsemicolonNode10; + ttableswitchNode2 = (TTableswitch) nodeArrayList1.get(0); + tlparenNode3 = (TLParen) nodeArrayList2.get(0); + pimmediateNode4 = (PImmediate) nodeArrayList3.get(0); + trparenNode5 = (TRParen) nodeArrayList4.get(0); + tlbraceNode6 = (TLBrace) nodeArrayList5.get(0); + { + // Block + LinkedList listNode7 = new LinkedList(); + listNode7 = (LinkedList) nodeArrayList6.get(0); + if (listNode7 != null) { + listNode8.addAll(listNode7); + } + } + trbraceNode9 = (TRBrace) nodeArrayList7.get(0); + tsemicolonNode10 = (TSemicolon) nodeArrayList8.get(0); + + pstatementNode1 = new ATableswitchStatement(ttableswitchNode2, tlparenNode3, pimmediateNode4, trparenNode5, + tlbraceNode6, listNode8, trbraceNode9, tsemicolonNode10); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new95() /* reduce ALookupswitchStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList8 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + TLookupswitch tlookupswitchNode2; + TLParen tlparenNode3; + PImmediate pimmediateNode4; + TRParen trparenNode5; + TLBrace tlbraceNode6; + LinkedList listNode8 = new LinkedList(); + TRBrace trbraceNode9; + TSemicolon tsemicolonNode10; + tlookupswitchNode2 = (TLookupswitch) nodeArrayList1.get(0); + tlparenNode3 = (TLParen) nodeArrayList2.get(0); + pimmediateNode4 = (PImmediate) nodeArrayList3.get(0); + trparenNode5 = (TRParen) nodeArrayList4.get(0); + tlbraceNode6 = (TLBrace) nodeArrayList5.get(0); + { + // Block + LinkedList listNode7 = new LinkedList(); + listNode7 = (LinkedList) nodeArrayList6.get(0); + if (listNode7 != null) { + listNode8.addAll(listNode7); + } + } + trbraceNode9 = (TRBrace) nodeArrayList7.get(0); + tsemicolonNode10 = (TSemicolon) nodeArrayList8.get(0); + + pstatementNode1 = new ALookupswitchStatement(tlookupswitchNode2, tlparenNode3, pimmediateNode4, trparenNode5, + tlbraceNode6, listNode8, trbraceNode9, tsemicolonNode10); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new96() /* reduce AIdentityStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + PLocalName plocalnameNode2; + TColonEquals tcolonequalsNode3; + TAtIdentifier tatidentifierNode4; + PType ptypeNode5; + TSemicolon tsemicolonNode6; + plocalnameNode2 = (PLocalName) nodeArrayList1.get(0); + tcolonequalsNode3 = (TColonEquals) nodeArrayList2.get(0); + tatidentifierNode4 = (TAtIdentifier) nodeArrayList3.get(0); + ptypeNode5 = (PType) nodeArrayList4.get(0); + tsemicolonNode6 = (TSemicolon) nodeArrayList5.get(0); + + pstatementNode1 + = new AIdentityStatement(plocalnameNode2, tcolonequalsNode3, tatidentifierNode4, ptypeNode5, tsemicolonNode6); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new97() /* reduce AIdentityNoTypeStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + PLocalName plocalnameNode2; + TColonEquals tcolonequalsNode3; + TAtIdentifier tatidentifierNode4; + TSemicolon tsemicolonNode5; + plocalnameNode2 = (PLocalName) nodeArrayList1.get(0); + tcolonequalsNode3 = (TColonEquals) nodeArrayList2.get(0); + tatidentifierNode4 = (TAtIdentifier) nodeArrayList3.get(0); + tsemicolonNode5 = (TSemicolon) nodeArrayList4.get(0); + + pstatementNode1 + = new AIdentityNoTypeStatement(plocalnameNode2, tcolonequalsNode3, tatidentifierNode4, tsemicolonNode5); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new98() /* reduce AAssignStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + PVariable pvariableNode2; + TEquals tequalsNode3; + PExpression pexpressionNode4; + TSemicolon tsemicolonNode5; + pvariableNode2 = (PVariable) nodeArrayList1.get(0); + tequalsNode3 = (TEquals) nodeArrayList2.get(0); + pexpressionNode4 = (PExpression) nodeArrayList3.get(0); + tsemicolonNode5 = (TSemicolon) nodeArrayList4.get(0); + + pstatementNode1 = new AAssignStatement(pvariableNode2, tequalsNode3, pexpressionNode4, tsemicolonNode5); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new99() /* reduce AIfStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + TIf tifNode2; + PBoolExpr pboolexprNode3; + PGotoStmt pgotostmtNode4; + tifNode2 = (TIf) nodeArrayList1.get(0); + pboolexprNode3 = (PBoolExpr) nodeArrayList2.get(0); + pgotostmtNode4 = (PGotoStmt) nodeArrayList3.get(0); + + pstatementNode1 = new AIfStatement(tifNode2, pboolexprNode3, pgotostmtNode4); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new100() /* reduce AGotoStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + PGotoStmt pgotostmtNode2; + pgotostmtNode2 = (PGotoStmt) nodeArrayList1.get(0); + + pstatementNode1 = new AGotoStatement(pgotostmtNode2); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new101() /* reduce ANopStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + TNop tnopNode2; + TSemicolon tsemicolonNode3; + tnopNode2 = (TNop) nodeArrayList1.get(0); + tsemicolonNode3 = (TSemicolon) nodeArrayList2.get(0); + + pstatementNode1 = new ANopStatement(tnopNode2, tsemicolonNode3); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new102() /* reduce AAretstatement1Statement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + TRet tretNode2; + @SuppressWarnings("unused") + Object nullNode3 = null; + TSemicolon tsemicolonNode4; + tretNode2 = (TRet) nodeArrayList1.get(0); + tsemicolonNode4 = (TSemicolon) nodeArrayList2.get(0); + + pstatementNode1 = new ARetStatement(tretNode2, null, tsemicolonNode4); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new103() /* reduce AAretstatement2Statement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + TRet tretNode2; + PImmediate pimmediateNode3; + TSemicolon tsemicolonNode4; + tretNode2 = (TRet) nodeArrayList1.get(0); + pimmediateNode3 = (PImmediate) nodeArrayList2.get(0); + tsemicolonNode4 = (TSemicolon) nodeArrayList3.get(0); + + pstatementNode1 = new ARetStatement(tretNode2, pimmediateNode3, tsemicolonNode4); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new104() /* reduce AAreturnstatement1Statement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + TReturn treturnNode2; + @SuppressWarnings("unused") + Object nullNode3 = null; + TSemicolon tsemicolonNode4; + treturnNode2 = (TReturn) nodeArrayList1.get(0); + tsemicolonNode4 = (TSemicolon) nodeArrayList2.get(0); + + pstatementNode1 = new AReturnStatement(treturnNode2, null, tsemicolonNode4); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new105() /* reduce AAreturnstatement2Statement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + TReturn treturnNode2; + PImmediate pimmediateNode3; + TSemicolon tsemicolonNode4; + treturnNode2 = (TReturn) nodeArrayList1.get(0); + pimmediateNode3 = (PImmediate) nodeArrayList2.get(0); + tsemicolonNode4 = (TSemicolon) nodeArrayList3.get(0); + + pstatementNode1 = new AReturnStatement(treturnNode2, pimmediateNode3, tsemicolonNode4); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new106() /* reduce AThrowStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + TThrow tthrowNode2; + PImmediate pimmediateNode3; + TSemicolon tsemicolonNode4; + tthrowNode2 = (TThrow) nodeArrayList1.get(0); + pimmediateNode3 = (PImmediate) nodeArrayList2.get(0); + tsemicolonNode4 = (TSemicolon) nodeArrayList3.get(0); + + pstatementNode1 = new AThrowStatement(tthrowNode2, pimmediateNode3, tsemicolonNode4); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new107() /* reduce AInvokeStatement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PStatement pstatementNode1; + { + // Block + PInvokeExpr pinvokeexprNode2; + TSemicolon tsemicolonNode3; + pinvokeexprNode2 = (PInvokeExpr) nodeArrayList1.get(0); + tsemicolonNode3 = (TSemicolon) nodeArrayList2.get(0); + + pstatementNode1 = new AInvokeStatement(pinvokeexprNode2, tsemicolonNode3); + } + nodeList.add(pstatementNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new108() /* reduce ALabelName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PLabelName plabelnameNode1; + { + // Block + TIdentifier tidentifierNode2; + tidentifierNode2 = (TIdentifier) nodeArrayList1.get(0); + + plabelnameNode1 = new ALabelName(tidentifierNode2); + } + nodeList.add(plabelnameNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new109() /* reduce ACaseStmt */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PCaseStmt pcasestmtNode1; + { + // Block + PCaseLabel pcaselabelNode2; + TColon tcolonNode3; + PGotoStmt pgotostmtNode4; + pcaselabelNode2 = (PCaseLabel) nodeArrayList1.get(0); + tcolonNode3 = (TColon) nodeArrayList2.get(0); + pgotostmtNode4 = (PGotoStmt) nodeArrayList3.get(0); + + pcasestmtNode1 = new ACaseStmt(pcaselabelNode2, tcolonNode3, pgotostmtNode4); + } + nodeList.add(pcasestmtNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new110() /* reduce AAconstantcaselabel1CaseLabel */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PCaseLabel pcaselabelNode1; + { + // Block + TCase tcaseNode2; + @SuppressWarnings("unused") + Object nullNode3 = null; + TIntegerConstant tintegerconstantNode4; + tcaseNode2 = (TCase) nodeArrayList1.get(0); + tintegerconstantNode4 = (TIntegerConstant) nodeArrayList2.get(0); + + pcaselabelNode1 = new AConstantCaseLabel(tcaseNode2, null, tintegerconstantNode4); + } + nodeList.add(pcaselabelNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new111() /* reduce AAconstantcaselabel2CaseLabel */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PCaseLabel pcaselabelNode1; + { + // Block + TCase tcaseNode2; + TMinus tminusNode3; + TIntegerConstant tintegerconstantNode4; + tcaseNode2 = (TCase) nodeArrayList1.get(0); + tminusNode3 = (TMinus) nodeArrayList2.get(0); + tintegerconstantNode4 = (TIntegerConstant) nodeArrayList3.get(0); + + pcaselabelNode1 = new AConstantCaseLabel(tcaseNode2, tminusNode3, tintegerconstantNode4); + } + nodeList.add(pcaselabelNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new112() /* reduce ADefaultCaseLabel */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PCaseLabel pcaselabelNode1; + { + // Block + TDefault tdefaultNode2; + tdefaultNode2 = (TDefault) nodeArrayList1.get(0); + + pcaselabelNode1 = new ADefaultCaseLabel(tdefaultNode2); + } + nodeList.add(pcaselabelNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new113() /* reduce AGotoStmt */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PGotoStmt pgotostmtNode1; + { + // Block + TGoto tgotoNode2; + PLabelName plabelnameNode3; + TSemicolon tsemicolonNode4; + tgotoNode2 = (TGoto) nodeArrayList1.get(0); + plabelnameNode3 = (PLabelName) nodeArrayList2.get(0); + tsemicolonNode4 = (TSemicolon) nodeArrayList3.get(0); + + pgotostmtNode1 = new AGotoStmt(tgotoNode2, plabelnameNode3, tsemicolonNode4); + } + nodeList.add(pgotostmtNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new114() /* reduce ACatchClause */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList9 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList8 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PCatchClause pcatchclauseNode1; + { + // Block + TCatch tcatchNode2; + PClassName pclassnameNode3; + TFrom tfromNode4; + PLabelName plabelnameNode5; + TTo ttoNode6; + PLabelName plabelnameNode7; + TWith twithNode8; + PLabelName plabelnameNode9; + TSemicolon tsemicolonNode10; + tcatchNode2 = (TCatch) nodeArrayList1.get(0); + pclassnameNode3 = (PClassName) nodeArrayList2.get(0); + tfromNode4 = (TFrom) nodeArrayList3.get(0); + plabelnameNode5 = (PLabelName) nodeArrayList4.get(0); + ttoNode6 = (TTo) nodeArrayList5.get(0); + plabelnameNode7 = (PLabelName) nodeArrayList6.get(0); + twithNode8 = (TWith) nodeArrayList7.get(0); + plabelnameNode9 = (PLabelName) nodeArrayList8.get(0); + tsemicolonNode10 = (TSemicolon) nodeArrayList9.get(0); + + pcatchclauseNode1 = new ACatchClause(tcatchNode2, pclassnameNode3, tfromNode4, plabelnameNode5, ttoNode6, + plabelnameNode7, twithNode8, plabelnameNode9, tsemicolonNode10); + } + nodeList.add(pcatchclauseNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new115() /* reduce ANewExpression */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PExpression pexpressionNode1; + { + // Block + PNewExpr pnewexprNode2; + pnewexprNode2 = (PNewExpr) nodeArrayList1.get(0); + + pexpressionNode1 = new ANewExpression(pnewexprNode2); + } + nodeList.add(pexpressionNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new116() /* reduce ACastExpression */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PExpression pexpressionNode1; + { + // Block + TLParen tlparenNode2; + PNonvoidType pnonvoidtypeNode3; + TRParen trparenNode4; + PImmediate pimmediateNode5; + tlparenNode2 = (TLParen) nodeArrayList1.get(0); + pnonvoidtypeNode3 = (PNonvoidType) nodeArrayList2.get(0); + trparenNode4 = (TRParen) nodeArrayList3.get(0); + pimmediateNode5 = (PImmediate) nodeArrayList4.get(0); + + pexpressionNode1 = new ACastExpression(tlparenNode2, pnonvoidtypeNode3, trparenNode4, pimmediateNode5); + } + nodeList.add(pexpressionNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new117() /* reduce AInstanceofExpression */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PExpression pexpressionNode1; + { + // Block + PImmediate pimmediateNode2; + TInstanceof tinstanceofNode3; + PNonvoidType pnonvoidtypeNode4; + pimmediateNode2 = (PImmediate) nodeArrayList1.get(0); + tinstanceofNode3 = (TInstanceof) nodeArrayList2.get(0); + pnonvoidtypeNode4 = (PNonvoidType) nodeArrayList3.get(0); + + pexpressionNode1 = new AInstanceofExpression(pimmediateNode2, tinstanceofNode3, pnonvoidtypeNode4); + } + nodeList.add(pexpressionNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new118() /* reduce AInvokeExpression */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PExpression pexpressionNode1; + { + // Block + PInvokeExpr pinvokeexprNode2; + pinvokeexprNode2 = (PInvokeExpr) nodeArrayList1.get(0); + + pexpressionNode1 = new AInvokeExpression(pinvokeexprNode2); + } + nodeList.add(pexpressionNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new119() /* reduce AReferenceExpression */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PExpression pexpressionNode1; + { + // Block + PReference preferenceNode2; + preferenceNode2 = (PReference) nodeArrayList1.get(0); + + pexpressionNode1 = new AReferenceExpression(preferenceNode2); + } + nodeList.add(pexpressionNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new120() /* reduce ABinopExpression */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PExpression pexpressionNode1; + { + // Block + PBinopExpr pbinopexprNode2; + pbinopexprNode2 = (PBinopExpr) nodeArrayList1.get(0); + + pexpressionNode1 = new ABinopExpression(pbinopexprNode2); + } + nodeList.add(pexpressionNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new121() /* reduce AUnopExpression */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PExpression pexpressionNode1; + { + // Block + PUnopExpr punopexprNode2; + punopexprNode2 = (PUnopExpr) nodeArrayList1.get(0); + + pexpressionNode1 = new AUnopExpression(punopexprNode2); + } + nodeList.add(pexpressionNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new122() /* reduce AImmediateExpression */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PExpression pexpressionNode1; + { + // Block + PImmediate pimmediateNode2; + pimmediateNode2 = (PImmediate) nodeArrayList1.get(0); + + pexpressionNode1 = new AImmediateExpression(pimmediateNode2); + } + nodeList.add(pexpressionNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new123() /* reduce ASimpleNewExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNewExpr pnewexprNode1; + { + // Block + TNew tnewNode2; + PBaseType pbasetypeNode3; + tnewNode2 = (TNew) nodeArrayList1.get(0); + pbasetypeNode3 = (PBaseType) nodeArrayList2.get(0); + + pnewexprNode1 = new ASimpleNewExpr(tnewNode2, pbasetypeNode3); + } + nodeList.add(pnewexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new124() /* reduce AArrayNewExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNewExpr pnewexprNode1; + { + // Block + TNewarray tnewarrayNode2; + TLParen tlparenNode3; + PNonvoidType pnonvoidtypeNode4; + TRParen trparenNode5; + PFixedArrayDescriptor pfixedarraydescriptorNode6; + tnewarrayNode2 = (TNewarray) nodeArrayList1.get(0); + tlparenNode3 = (TLParen) nodeArrayList2.get(0); + pnonvoidtypeNode4 = (PNonvoidType) nodeArrayList3.get(0); + trparenNode5 = (TRParen) nodeArrayList4.get(0); + pfixedarraydescriptorNode6 = (PFixedArrayDescriptor) nodeArrayList5.get(0); + + pnewexprNode1 + = new AArrayNewExpr(tnewarrayNode2, tlparenNode3, pnonvoidtypeNode4, trparenNode5, pfixedarraydescriptorNode6); + } + nodeList.add(pnewexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new125() /* reduce AMultiNewExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNewExpr pnewexprNode1; + { + // Block + TNewmultiarray tnewmultiarrayNode2; + TLParen tlparenNode3; + PBaseType pbasetypeNode4; + TRParen trparenNode5; + LinkedList listNode7 = new LinkedList(); + tnewmultiarrayNode2 = (TNewmultiarray) nodeArrayList1.get(0); + tlparenNode3 = (TLParen) nodeArrayList2.get(0); + pbasetypeNode4 = (PBaseType) nodeArrayList3.get(0); + trparenNode5 = (TRParen) nodeArrayList4.get(0); + { + // Block + LinkedList listNode6 = new LinkedList(); + listNode6 = (LinkedList) nodeArrayList5.get(0); + if (listNode6 != null) { + listNode7.addAll(listNode6); + } + } + + pnewexprNode1 = new AMultiNewExpr(tnewmultiarrayNode2, tlparenNode3, pbasetypeNode4, trparenNode5, listNode7); + } + nodeList.add(pnewexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new126() /* reduce AAarraydescriptor1ArrayDescriptor */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PArrayDescriptor parraydescriptorNode1; + { + // Block + TLBracket tlbracketNode2; + @SuppressWarnings("unused") + Object nullNode3 = null; + TRBracket trbracketNode4; + tlbracketNode2 = (TLBracket) nodeArrayList1.get(0); + trbracketNode4 = (TRBracket) nodeArrayList2.get(0); + + parraydescriptorNode1 = new AArrayDescriptor(tlbracketNode2, null, trbracketNode4); + } + nodeList.add(parraydescriptorNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new127() /* reduce AAarraydescriptor2ArrayDescriptor */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PArrayDescriptor parraydescriptorNode1; + { + // Block + TLBracket tlbracketNode2; + PImmediate pimmediateNode3; + TRBracket trbracketNode4; + tlbracketNode2 = (TLBracket) nodeArrayList1.get(0); + pimmediateNode3 = (PImmediate) nodeArrayList2.get(0); + trbracketNode4 = (TRBracket) nodeArrayList3.get(0); + + parraydescriptorNode1 = new AArrayDescriptor(tlbracketNode2, pimmediateNode3, trbracketNode4); + } + nodeList.add(parraydescriptorNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new128() /* reduce AReferenceVariable */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PVariable pvariableNode1; + { + // Block + PReference preferenceNode2; + preferenceNode2 = (PReference) nodeArrayList1.get(0); + + pvariableNode1 = new AReferenceVariable(preferenceNode2); + } + nodeList.add(pvariableNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new129() /* reduce ALocalVariable */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PVariable pvariableNode1; + { + // Block + PLocalName plocalnameNode2; + plocalnameNode2 = (PLocalName) nodeArrayList1.get(0); + + pvariableNode1 = new ALocalVariable(plocalnameNode2); + } + nodeList.add(pvariableNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new130() /* reduce ABinopBoolExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBoolExpr pboolexprNode1; + { + // Block + PBinopExpr pbinopexprNode2; + pbinopexprNode2 = (PBinopExpr) nodeArrayList1.get(0); + + pboolexprNode1 = new ABinopBoolExpr(pbinopexprNode2); + } + nodeList.add(pboolexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new131() /* reduce AUnopBoolExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBoolExpr pboolexprNode1; + { + // Block + PUnopExpr punopexprNode2; + punopexprNode2 = (PUnopExpr) nodeArrayList1.get(0); + + pboolexprNode1 = new AUnopBoolExpr(punopexprNode2); + } + nodeList.add(pboolexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new132() /* reduce AAnonstaticinvokeexpr1InvokeExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PInvokeExpr pinvokeexprNode1; + { + // Block + PNonstaticInvoke pnonstaticinvokeNode2; + PLocalName plocalnameNode3; + TDot tdotNode4; + PMethodSignature pmethodsignatureNode5; + TLParen tlparenNode6; + @SuppressWarnings("unused") + Object nullNode7 = null; + TRParen trparenNode8; + pnonstaticinvokeNode2 = (PNonstaticInvoke) nodeArrayList1.get(0); + plocalnameNode3 = (PLocalName) nodeArrayList2.get(0); + tdotNode4 = (TDot) nodeArrayList3.get(0); + pmethodsignatureNode5 = (PMethodSignature) nodeArrayList4.get(0); + tlparenNode6 = (TLParen) nodeArrayList5.get(0); + trparenNode8 = (TRParen) nodeArrayList6.get(0); + + pinvokeexprNode1 = new ANonstaticInvokeExpr(pnonstaticinvokeNode2, plocalnameNode3, tdotNode4, pmethodsignatureNode5, + tlparenNode6, null, trparenNode8); + } + nodeList.add(pinvokeexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new133() /* reduce AAnonstaticinvokeexpr2InvokeExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PInvokeExpr pinvokeexprNode1; + { + // Block + PNonstaticInvoke pnonstaticinvokeNode2; + PLocalName plocalnameNode3; + TDot tdotNode4; + PMethodSignature pmethodsignatureNode5; + TLParen tlparenNode6; + PArgList parglistNode7; + TRParen trparenNode8; + pnonstaticinvokeNode2 = (PNonstaticInvoke) nodeArrayList1.get(0); + plocalnameNode3 = (PLocalName) nodeArrayList2.get(0); + tdotNode4 = (TDot) nodeArrayList3.get(0); + pmethodsignatureNode5 = (PMethodSignature) nodeArrayList4.get(0); + tlparenNode6 = (TLParen) nodeArrayList5.get(0); + parglistNode7 = (PArgList) nodeArrayList6.get(0); + trparenNode8 = (TRParen) nodeArrayList7.get(0); + + pinvokeexprNode1 = new ANonstaticInvokeExpr(pnonstaticinvokeNode2, plocalnameNode3, tdotNode4, pmethodsignatureNode5, + tlparenNode6, parglistNode7, trparenNode8); + } + nodeList.add(pinvokeexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new134() /* reduce AAstaticinvokeexpr1InvokeExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PInvokeExpr pinvokeexprNode1; + { + // Block + TStaticinvoke tstaticinvokeNode2; + PMethodSignature pmethodsignatureNode3; + TLParen tlparenNode4; + @SuppressWarnings("unused") + Object nullNode5 = null; + TRParen trparenNode6; + tstaticinvokeNode2 = (TStaticinvoke) nodeArrayList1.get(0); + pmethodsignatureNode3 = (PMethodSignature) nodeArrayList2.get(0); + tlparenNode4 = (TLParen) nodeArrayList3.get(0); + trparenNode6 = (TRParen) nodeArrayList4.get(0); + + pinvokeexprNode1 = new AStaticInvokeExpr(tstaticinvokeNode2, pmethodsignatureNode3, tlparenNode4, null, trparenNode6); + } + nodeList.add(pinvokeexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new135() /* reduce AAstaticinvokeexpr2InvokeExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PInvokeExpr pinvokeexprNode1; + { + // Block + TStaticinvoke tstaticinvokeNode2; + PMethodSignature pmethodsignatureNode3; + TLParen tlparenNode4; + PArgList parglistNode5; + TRParen trparenNode6; + tstaticinvokeNode2 = (TStaticinvoke) nodeArrayList1.get(0); + pmethodsignatureNode3 = (PMethodSignature) nodeArrayList2.get(0); + tlparenNode4 = (TLParen) nodeArrayList3.get(0); + parglistNode5 = (PArgList) nodeArrayList4.get(0); + trparenNode6 = (TRParen) nodeArrayList5.get(0); + + pinvokeexprNode1 + = new AStaticInvokeExpr(tstaticinvokeNode2, pmethodsignatureNode3, tlparenNode4, parglistNode5, trparenNode6); + } + nodeList.add(pinvokeexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new136() /* reduce AAdynamicinvokeexpr1InvokeExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList8 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PInvokeExpr pinvokeexprNode1; + { + // Block + TDynamicinvoke tdynamicinvokeNode2; + TStringConstant tstringconstantNode3; + PUnnamedMethodSignature punnamedmethodsignatureNode4; + TLParen tlparenNode5; + @SuppressWarnings("unused") + Object nullNode6 = null; + TRParen trparenNode7; + PMethodSignature pmethodsignatureNode8; + TLParen tlparenNode9; + @SuppressWarnings("unused") + Object nullNode10 = null; + TRParen trparenNode11; + tdynamicinvokeNode2 = (TDynamicinvoke) nodeArrayList1.get(0); + tstringconstantNode3 = (TStringConstant) nodeArrayList2.get(0); + punnamedmethodsignatureNode4 = (PUnnamedMethodSignature) nodeArrayList3.get(0); + tlparenNode5 = (TLParen) nodeArrayList4.get(0); + trparenNode7 = (TRParen) nodeArrayList5.get(0); + pmethodsignatureNode8 = (PMethodSignature) nodeArrayList6.get(0); + tlparenNode9 = (TLParen) nodeArrayList7.get(0); + trparenNode11 = (TRParen) nodeArrayList8.get(0); + + pinvokeexprNode1 = new ADynamicInvokeExpr(tdynamicinvokeNode2, tstringconstantNode3, punnamedmethodsignatureNode4, + tlparenNode5, null, trparenNode7, pmethodsignatureNode8, tlparenNode9, null, trparenNode11); + } + nodeList.add(pinvokeexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new137() /* reduce AAdynamicinvokeexpr2InvokeExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList9 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList8 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PInvokeExpr pinvokeexprNode1; + { + // Block + TDynamicinvoke tdynamicinvokeNode2; + TStringConstant tstringconstantNode3; + PUnnamedMethodSignature punnamedmethodsignatureNode4; + TLParen tlparenNode5; + PArgList parglistNode6; + TRParen trparenNode7; + PMethodSignature pmethodsignatureNode8; + TLParen tlparenNode9; + @SuppressWarnings("unused") + Object nullNode10 = null; + TRParen trparenNode11; + tdynamicinvokeNode2 = (TDynamicinvoke) nodeArrayList1.get(0); + tstringconstantNode3 = (TStringConstant) nodeArrayList2.get(0); + punnamedmethodsignatureNode4 = (PUnnamedMethodSignature) nodeArrayList3.get(0); + tlparenNode5 = (TLParen) nodeArrayList4.get(0); + parglistNode6 = (PArgList) nodeArrayList5.get(0); + trparenNode7 = (TRParen) nodeArrayList6.get(0); + pmethodsignatureNode8 = (PMethodSignature) nodeArrayList7.get(0); + tlparenNode9 = (TLParen) nodeArrayList8.get(0); + trparenNode11 = (TRParen) nodeArrayList9.get(0); + + pinvokeexprNode1 = new ADynamicInvokeExpr(tdynamicinvokeNode2, tstringconstantNode3, punnamedmethodsignatureNode4, + tlparenNode5, parglistNode6, trparenNode7, pmethodsignatureNode8, tlparenNode9, null, trparenNode11); + } + nodeList.add(pinvokeexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new138() /* reduce AAdynamicinvokeexpr3InvokeExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList9 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList8 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PInvokeExpr pinvokeexprNode1; + { + // Block + TDynamicinvoke tdynamicinvokeNode2; + TStringConstant tstringconstantNode3; + PUnnamedMethodSignature punnamedmethodsignatureNode4; + TLParen tlparenNode5; + @SuppressWarnings("unused") + Object nullNode6 = null; + TRParen trparenNode7; + PMethodSignature pmethodsignatureNode8; + TLParen tlparenNode9; + PArgList parglistNode10; + TRParen trparenNode11; + tdynamicinvokeNode2 = (TDynamicinvoke) nodeArrayList1.get(0); + tstringconstantNode3 = (TStringConstant) nodeArrayList2.get(0); + punnamedmethodsignatureNode4 = (PUnnamedMethodSignature) nodeArrayList3.get(0); + tlparenNode5 = (TLParen) nodeArrayList4.get(0); + trparenNode7 = (TRParen) nodeArrayList5.get(0); + pmethodsignatureNode8 = (PMethodSignature) nodeArrayList6.get(0); + tlparenNode9 = (TLParen) nodeArrayList7.get(0); + parglistNode10 = (PArgList) nodeArrayList8.get(0); + trparenNode11 = (TRParen) nodeArrayList9.get(0); + + pinvokeexprNode1 = new ADynamicInvokeExpr(tdynamicinvokeNode2, tstringconstantNode3, punnamedmethodsignatureNode4, + tlparenNode5, null, trparenNode7, pmethodsignatureNode8, tlparenNode9, parglistNode10, trparenNode11); + } + nodeList.add(pinvokeexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new139() /* reduce AAdynamicinvokeexpr4InvokeExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList10 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList9 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList8 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PInvokeExpr pinvokeexprNode1; + { + // Block + TDynamicinvoke tdynamicinvokeNode2; + TStringConstant tstringconstantNode3; + PUnnamedMethodSignature punnamedmethodsignatureNode4; + TLParen tlparenNode5; + PArgList parglistNode6; + TRParen trparenNode7; + PMethodSignature pmethodsignatureNode8; + TLParen tlparenNode9; + PArgList parglistNode10; + TRParen trparenNode11; + tdynamicinvokeNode2 = (TDynamicinvoke) nodeArrayList1.get(0); + tstringconstantNode3 = (TStringConstant) nodeArrayList2.get(0); + punnamedmethodsignatureNode4 = (PUnnamedMethodSignature) nodeArrayList3.get(0); + tlparenNode5 = (TLParen) nodeArrayList4.get(0); + parglistNode6 = (PArgList) nodeArrayList5.get(0); + trparenNode7 = (TRParen) nodeArrayList6.get(0); + pmethodsignatureNode8 = (PMethodSignature) nodeArrayList7.get(0); + tlparenNode9 = (TLParen) nodeArrayList8.get(0); + parglistNode10 = (PArgList) nodeArrayList9.get(0); + trparenNode11 = (TRParen) nodeArrayList10.get(0); + + pinvokeexprNode1 = new ADynamicInvokeExpr(tdynamicinvokeNode2, tstringconstantNode3, punnamedmethodsignatureNode4, + tlparenNode5, parglistNode6, trparenNode7, pmethodsignatureNode8, tlparenNode9, parglistNode10, trparenNode11); + } + nodeList.add(pinvokeexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new140() /* reduce ABinopExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinopExpr pbinopexprNode1; + { + // Block + PImmediate pimmediateNode2; + PBinop pbinopNode3; + PImmediate pimmediateNode4; + pimmediateNode2 = (PImmediate) nodeArrayList1.get(0); + pbinopNode3 = (PBinop) nodeArrayList2.get(0); + pimmediateNode4 = (PImmediate) nodeArrayList3.get(0); + + pbinopexprNode1 = new ABinopExpr(pimmediateNode2, pbinopNode3, pimmediateNode4); + } + nodeList.add(pbinopexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new141() /* reduce AUnopExpr */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PUnopExpr punopexprNode1; + { + // Block + PUnop punopNode2; + PImmediate pimmediateNode3; + punopNode2 = (PUnop) nodeArrayList1.get(0); + pimmediateNode3 = (PImmediate) nodeArrayList2.get(0); + + punopexprNode1 = new AUnopExpr(punopNode2, pimmediateNode3); + } + nodeList.add(punopexprNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new142() /* reduce ASpecialNonstaticInvoke */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNonstaticInvoke pnonstaticinvokeNode1; + { + // Block + TSpecialinvoke tspecialinvokeNode2; + tspecialinvokeNode2 = (TSpecialinvoke) nodeArrayList1.get(0); + + pnonstaticinvokeNode1 = new ASpecialNonstaticInvoke(tspecialinvokeNode2); + } + nodeList.add(pnonstaticinvokeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new143() /* reduce AVirtualNonstaticInvoke */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNonstaticInvoke pnonstaticinvokeNode1; + { + // Block + TVirtualinvoke tvirtualinvokeNode2; + tvirtualinvokeNode2 = (TVirtualinvoke) nodeArrayList1.get(0); + + pnonstaticinvokeNode1 = new AVirtualNonstaticInvoke(tvirtualinvokeNode2); + } + nodeList.add(pnonstaticinvokeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new144() /* reduce AInterfaceNonstaticInvoke */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PNonstaticInvoke pnonstaticinvokeNode1; + { + // Block + TInterfaceinvoke tinterfaceinvokeNode2; + tinterfaceinvokeNode2 = (TInterfaceinvoke) nodeArrayList1.get(0); + + pnonstaticinvokeNode1 = new AInterfaceNonstaticInvoke(tinterfaceinvokeNode2); + } + nodeList.add(pnonstaticinvokeNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new145() /* reduce AAunnamedmethodsignature1UnnamedMethodSignature */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PUnnamedMethodSignature punnamedmethodsignatureNode1; + { + // Block + TCmplt tcmpltNode2; + PType ptypeNode3; + TLParen tlparenNode4; + @SuppressWarnings("unused") + Object nullNode5 = null; + TRParen trparenNode6; + TCmpgt tcmpgtNode7; + tcmpltNode2 = (TCmplt) nodeArrayList1.get(0); + ptypeNode3 = (PType) nodeArrayList2.get(0); + tlparenNode4 = (TLParen) nodeArrayList3.get(0); + trparenNode6 = (TRParen) nodeArrayList4.get(0); + tcmpgtNode7 = (TCmpgt) nodeArrayList5.get(0); + + punnamedmethodsignatureNode1 + = new AUnnamedMethodSignature(tcmpltNode2, ptypeNode3, tlparenNode4, null, trparenNode6, tcmpgtNode7); + } + nodeList.add(punnamedmethodsignatureNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new146() /* reduce AAunnamedmethodsignature2UnnamedMethodSignature */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PUnnamedMethodSignature punnamedmethodsignatureNode1; + { + // Block + TCmplt tcmpltNode2; + PType ptypeNode3; + TLParen tlparenNode4; + PParameterList pparameterlistNode5; + TRParen trparenNode6; + TCmpgt tcmpgtNode7; + tcmpltNode2 = (TCmplt) nodeArrayList1.get(0); + ptypeNode3 = (PType) nodeArrayList2.get(0); + tlparenNode4 = (TLParen) nodeArrayList3.get(0); + pparameterlistNode5 = (PParameterList) nodeArrayList4.get(0); + trparenNode6 = (TRParen) nodeArrayList5.get(0); + tcmpgtNode7 = (TCmpgt) nodeArrayList6.get(0); + + punnamedmethodsignatureNode1 = new AUnnamedMethodSignature(tcmpltNode2, ptypeNode3, tlparenNode4, pparameterlistNode5, + trparenNode6, tcmpgtNode7); + } + nodeList.add(punnamedmethodsignatureNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new147() /* reduce AAmethodsignature1MethodSignature */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList8 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMethodSignature pmethodsignatureNode1; + { + // Block + TCmplt tcmpltNode2; + PClassName pclassnameNode3; + TColon tcolonNode4; + PType ptypeNode5; + PName pnameNode6; + TLParen tlparenNode7; + @SuppressWarnings("unused") + Object nullNode8 = null; + TRParen trparenNode9; + TCmpgt tcmpgtNode10; + tcmpltNode2 = (TCmplt) nodeArrayList1.get(0); + pclassnameNode3 = (PClassName) nodeArrayList2.get(0); + tcolonNode4 = (TColon) nodeArrayList3.get(0); + ptypeNode5 = (PType) nodeArrayList4.get(0); + pnameNode6 = (PName) nodeArrayList5.get(0); + tlparenNode7 = (TLParen) nodeArrayList6.get(0); + trparenNode9 = (TRParen) nodeArrayList7.get(0); + tcmpgtNode10 = (TCmpgt) nodeArrayList8.get(0); + + pmethodsignatureNode1 = new AMethodSignature(tcmpltNode2, pclassnameNode3, tcolonNode4, ptypeNode5, pnameNode6, + tlparenNode7, null, trparenNode9, tcmpgtNode10); + } + nodeList.add(pmethodsignatureNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new148() /* reduce AAmethodsignature2MethodSignature */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList9 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList8 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList7 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PMethodSignature pmethodsignatureNode1; + { + // Block + TCmplt tcmpltNode2; + PClassName pclassnameNode3; + TColon tcolonNode4; + PType ptypeNode5; + PName pnameNode6; + TLParen tlparenNode7; + PParameterList pparameterlistNode8; + TRParen trparenNode9; + TCmpgt tcmpgtNode10; + tcmpltNode2 = (TCmplt) nodeArrayList1.get(0); + pclassnameNode3 = (PClassName) nodeArrayList2.get(0); + tcolonNode4 = (TColon) nodeArrayList3.get(0); + ptypeNode5 = (PType) nodeArrayList4.get(0); + pnameNode6 = (PName) nodeArrayList5.get(0); + tlparenNode7 = (TLParen) nodeArrayList6.get(0); + pparameterlistNode8 = (PParameterList) nodeArrayList7.get(0); + trparenNode9 = (TRParen) nodeArrayList8.get(0); + tcmpgtNode10 = (TCmpgt) nodeArrayList9.get(0); + + pmethodsignatureNode1 = new AMethodSignature(tcmpltNode2, pclassnameNode3, tcolonNode4, ptypeNode5, pnameNode6, + tlparenNode7, pparameterlistNode8, trparenNode9, tcmpgtNode10); + } + nodeList.add(pmethodsignatureNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new149() /* reduce AArrayReference */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PReference preferenceNode1; + { + // Block + PArrayRef parrayrefNode2; + parrayrefNode2 = (PArrayRef) nodeArrayList1.get(0); + + preferenceNode1 = new AArrayReference(parrayrefNode2); + } + nodeList.add(preferenceNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new150() /* reduce AFieldReference */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PReference preferenceNode1; + { + // Block + PFieldRef pfieldrefNode2; + pfieldrefNode2 = (PFieldRef) nodeArrayList1.get(0); + + preferenceNode1 = new AFieldReference(pfieldrefNode2); + } + nodeList.add(preferenceNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new151() /* reduce AIdentArrayRef */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PArrayRef parrayrefNode1; + { + // Block + TIdentifier tidentifierNode2; + PFixedArrayDescriptor pfixedarraydescriptorNode3; + tidentifierNode2 = (TIdentifier) nodeArrayList1.get(0); + pfixedarraydescriptorNode3 = (PFixedArrayDescriptor) nodeArrayList2.get(0); + + parrayrefNode1 = new AIdentArrayRef(tidentifierNode2, pfixedarraydescriptorNode3); + } + nodeList.add(parrayrefNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new152() /* reduce AQuotedArrayRef */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PArrayRef parrayrefNode1; + { + // Block + TQuotedName tquotednameNode2; + PFixedArrayDescriptor pfixedarraydescriptorNode3; + tquotednameNode2 = (TQuotedName) nodeArrayList1.get(0); + pfixedarraydescriptorNode3 = (PFixedArrayDescriptor) nodeArrayList2.get(0); + + parrayrefNode1 = new AQuotedArrayRef(tquotednameNode2, pfixedarraydescriptorNode3); + } + nodeList.add(parrayrefNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new153() /* reduce ALocalFieldRef */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFieldRef pfieldrefNode1; + { + // Block + PLocalName plocalnameNode2; + TDot tdotNode3; + PFieldSignature pfieldsignatureNode4; + plocalnameNode2 = (PLocalName) nodeArrayList1.get(0); + tdotNode3 = (TDot) nodeArrayList2.get(0); + pfieldsignatureNode4 = (PFieldSignature) nodeArrayList3.get(0); + + pfieldrefNode1 = new ALocalFieldRef(plocalnameNode2, tdotNode3, pfieldsignatureNode4); + } + nodeList.add(pfieldrefNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new154() /* reduce ASigFieldRef */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFieldRef pfieldrefNode1; + { + // Block + PFieldSignature pfieldsignatureNode2; + pfieldsignatureNode2 = (PFieldSignature) nodeArrayList1.get(0); + + pfieldrefNode1 = new ASigFieldRef(pfieldsignatureNode2); + } + nodeList.add(pfieldrefNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new155() /* reduce AFieldSignature */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList6 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList5 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList4 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFieldSignature pfieldsignatureNode1; + { + // Block + TCmplt tcmpltNode2; + PClassName pclassnameNode3; + TColon tcolonNode4; + PType ptypeNode5; + PName pnameNode6; + TCmpgt tcmpgtNode7; + tcmpltNode2 = (TCmplt) nodeArrayList1.get(0); + pclassnameNode3 = (PClassName) nodeArrayList2.get(0); + tcolonNode4 = (TColon) nodeArrayList3.get(0); + ptypeNode5 = (PType) nodeArrayList4.get(0); + pnameNode6 = (PName) nodeArrayList5.get(0); + tcmpgtNode7 = (TCmpgt) nodeArrayList6.get(0); + + pfieldsignatureNode1 + = new AFieldSignature(tcmpltNode2, pclassnameNode3, tcolonNode4, ptypeNode5, pnameNode6, tcmpgtNode7); + } + nodeList.add(pfieldsignatureNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new156() /* reduce AFixedArrayDescriptor */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PFixedArrayDescriptor pfixedarraydescriptorNode1; + { + // Block + TLBracket tlbracketNode2; + PImmediate pimmediateNode3; + TRBracket trbracketNode4; + tlbracketNode2 = (TLBracket) nodeArrayList1.get(0); + pimmediateNode3 = (PImmediate) nodeArrayList2.get(0); + trbracketNode4 = (TRBracket) nodeArrayList3.get(0); + + pfixedarraydescriptorNode1 = new AFixedArrayDescriptor(tlbracketNode2, pimmediateNode3, trbracketNode4); + } + nodeList.add(pfixedarraydescriptorNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new157() /* reduce ASingleArgList */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PArgList parglistNode1; + { + // Block + PImmediate pimmediateNode2; + pimmediateNode2 = (PImmediate) nodeArrayList1.get(0); + + parglistNode1 = new ASingleArgList(pimmediateNode2); + } + nodeList.add(parglistNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new158() /* reduce AMultiArgList */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList3 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PArgList parglistNode1; + { + // Block + PImmediate pimmediateNode2; + TComma tcommaNode3; + PArgList parglistNode4; + pimmediateNode2 = (PImmediate) nodeArrayList1.get(0); + tcommaNode3 = (TComma) nodeArrayList2.get(0); + parglistNode4 = (PArgList) nodeArrayList3.get(0); + + parglistNode1 = new AMultiArgList(pimmediateNode2, tcommaNode3, parglistNode4); + } + nodeList.add(parglistNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new159() /* reduce ALocalImmediate */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PImmediate pimmediateNode1; + { + // Block + PLocalName plocalnameNode2; + plocalnameNode2 = (PLocalName) nodeArrayList1.get(0); + + pimmediateNode1 = new ALocalImmediate(plocalnameNode2); + } + nodeList.add(pimmediateNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new160() /* reduce AConstantImmediate */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PImmediate pimmediateNode1; + { + // Block + PConstant pconstantNode2; + pconstantNode2 = (PConstant) nodeArrayList1.get(0); + + pimmediateNode1 = new AConstantImmediate(pconstantNode2); + } + nodeList.add(pimmediateNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new161() /* reduce AAintegerconstant1Constant */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PConstant pconstantNode1; + { + // Block + @SuppressWarnings("unused") + Object nullNode2 = null; + TIntegerConstant tintegerconstantNode3; + tintegerconstantNode3 = (TIntegerConstant) nodeArrayList1.get(0); + + pconstantNode1 = new AIntegerConstant(null, tintegerconstantNode3); + } + nodeList.add(pconstantNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new162() /* reduce AAintegerconstant2Constant */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PConstant pconstantNode1; + { + // Block + TMinus tminusNode2; + TIntegerConstant tintegerconstantNode3; + tminusNode2 = (TMinus) nodeArrayList1.get(0); + tintegerconstantNode3 = (TIntegerConstant) nodeArrayList2.get(0); + + pconstantNode1 = new AIntegerConstant(tminusNode2, tintegerconstantNode3); + } + nodeList.add(pconstantNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new163() /* reduce AAfloatconstant1Constant */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PConstant pconstantNode1; + { + // Block + @SuppressWarnings("unused") + Object nullNode2 = null; + TFloatConstant tfloatconstantNode3; + tfloatconstantNode3 = (TFloatConstant) nodeArrayList1.get(0); + + pconstantNode1 = new AFloatConstant(null, tfloatconstantNode3); + } + nodeList.add(pconstantNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new164() /* reduce AAfloatconstant2Constant */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PConstant pconstantNode1; + { + // Block + TMinus tminusNode2; + TFloatConstant tfloatconstantNode3; + tminusNode2 = (TMinus) nodeArrayList1.get(0); + tfloatconstantNode3 = (TFloatConstant) nodeArrayList2.get(0); + + pconstantNode1 = new AFloatConstant(tminusNode2, tfloatconstantNode3); + } + nodeList.add(pconstantNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new165() /* reduce AStringConstant */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PConstant pconstantNode1; + { + // Block + TStringConstant tstringconstantNode2; + tstringconstantNode2 = (TStringConstant) nodeArrayList1.get(0); + + pconstantNode1 = new AStringConstant(tstringconstantNode2); + } + nodeList.add(pconstantNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new166() /* reduce AClzzConstant */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PConstant pconstantNode1; + { + // Block + TClass tclassNode2; + TStringConstant tstringconstantNode3; + tclassNode2 = (TClass) nodeArrayList1.get(0); + tstringconstantNode3 = (TStringConstant) nodeArrayList2.get(0); + + pconstantNode1 = new AClzzConstant(tclassNode2, tstringconstantNode3); + } + nodeList.add(pconstantNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new167() /* reduce ANullConstant */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PConstant pconstantNode1; + { + // Block + TNull tnullNode2; + tnullNode2 = (TNull) nodeArrayList1.get(0); + + pconstantNode1 = new ANullConstant(tnullNode2); + } + nodeList.add(pconstantNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new168() /* reduce AAndBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; + { + // Block + TAnd tandNode2; + tandNode2 = (TAnd) nodeArrayList1.get(0); + + pbinopNode1 = new AAndBinop(tandNode2); + } + nodeList.add(pbinopNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new169() /* reduce AOrBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PUnop punopNode1; - { - // Block - TNeg tnegNode2; - tnegNode2 = (TNeg)nodeArrayList1.get(0); - - punopNode1 = new ANegUnop(tnegNode2); - } - nodeList.add(punopNode1); - return nodeList; + // Block + TOr torNode2; + torNode2 = (TOr) nodeArrayList1.get(0); + + pbinopNode1 = new AOrBinop(torNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new170() /* reduce AXorBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new190() /* reduce AQuotedClassName */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PClassName pclassnameNode1; - { - // Block - TQuotedName tquotednameNode2; - tquotednameNode2 = (TQuotedName)nodeArrayList1.get(0); - - pclassnameNode1 = new AQuotedClassName(tquotednameNode2); - } - nodeList.add(pclassnameNode1); - return nodeList; + // Block + TXor txorNode2; + txorNode2 = (TXor) nodeArrayList1.get(0); + + pbinopNode1 = new AXorBinop(txorNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new171() /* reduce AModBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new191() /* reduce AIdentClassName */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TMod tmodNode2; + tmodNode2 = (TMod) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PClassName pclassnameNode1; - { - // Block - TIdentifier tidentifierNode2; - tidentifierNode2 = (TIdentifier)nodeArrayList1.get(0); - - pclassnameNode1 = new AIdentClassName(tidentifierNode2); - } - nodeList.add(pclassnameNode1); - return nodeList; + pbinopNode1 = new AModBinop(tmodNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new172() /* reduce ACmpBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new192() /* reduce AFullIdentClassName */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PClassName pclassnameNode1; - { - // Block - TFullIdentifier tfullidentifierNode2; - tfullidentifierNode2 = (TFullIdentifier)nodeArrayList1.get(0); + // Block + TCmp tcmpNode2; + tcmpNode2 = (TCmp) nodeArrayList1.get(0); - pclassnameNode1 = new AFullIdentClassName(tfullidentifierNode2); - } - nodeList.add(pclassnameNode1); - return nodeList; + pbinopNode1 = new ACmpBinop(tcmpNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new173() /* reduce ACmpgBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new193() /* reduce AQuotedName */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TCmpg tcmpgNode2; + tcmpgNode2 = (TCmpg) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PName pnameNode1; - { - // Block - TQuotedName tquotednameNode2; - tquotednameNode2 = (TQuotedName)nodeArrayList1.get(0); - - pnameNode1 = new AQuotedName(tquotednameNode2); - } - nodeList.add(pnameNode1); - return nodeList; + pbinopNode1 = new ACmpgBinop(tcmpgNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new174() /* reduce ACmplBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new194() /* reduce AIdentName */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); - - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - PName pnameNode1; - { - // Block - TIdentifier tidentifierNode2; - tidentifierNode2 = (TIdentifier)nodeArrayList1.get(0); + // Block + TCmpl tcmplNode2; + tcmplNode2 = (TCmpl) nodeArrayList1.get(0); - pnameNode1 = new AIdentName(tidentifierNode2); - } - nodeList.add(pnameNode1); - return nodeList; + pbinopNode1 = new ACmplBinop(tcmplNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new175() /* reduce ACmpeqBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new195() /* reduce ATerminal$Modifier */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TCmpeq tcmpeqNode2; + tcmpeqNode2 = (TCmpeq) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode2 = new LinkedList(); - { - // Block - PModifier pmodifierNode1; - pmodifierNode1 = (PModifier)nodeArrayList1.get(0); - if(pmodifierNode1 != null) - { - listNode2.add(pmodifierNode1); - } - } - nodeList.add(listNode2); - return nodeList; + pbinopNode1 = new ACmpeqBinop(tcmpeqNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new176() /* reduce ACmpneBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new196() /* reduce ANonTerminal$Modifier */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TCmpne tcmpneNode2; + tcmpneNode2 = (TCmpne) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode3 = new LinkedList(); - { - // Block - LinkedList listNode1 = new LinkedList(); - PModifier pmodifierNode2; - listNode1 = (LinkedList)nodeArrayList1.get(0); - pmodifierNode2 = (PModifier)nodeArrayList2.get(0); - if(listNode1 != null) - { - listNode3.addAll(listNode1); - } - if(pmodifierNode2 != null) - { - listNode3.add(pmodifierNode2); - } - } - nodeList.add(listNode3); - return nodeList; + pbinopNode1 = new ACmpneBinop(tcmpneNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new177() /* reduce ACmpgtBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new197() /* reduce ATerminal$Member */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TCmpgt tcmpgtNode2; + tcmpgtNode2 = (TCmpgt) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode2 = new LinkedList(); - { - // Block - PMember pmemberNode1; - pmemberNode1 = (PMember)nodeArrayList1.get(0); - if(pmemberNode1 != null) - { - listNode2.add(pmemberNode1); - } - } - nodeList.add(listNode2); - return nodeList; + pbinopNode1 = new ACmpgtBinop(tcmpgtNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new178() /* reduce ACmpgeBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new198() /* reduce ANonTerminal$Member */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TCmpge tcmpgeNode2; + tcmpgeNode2 = (TCmpge) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode3 = new LinkedList(); - { - // Block - LinkedList listNode1 = new LinkedList(); - PMember pmemberNode2; - listNode1 = (LinkedList)nodeArrayList1.get(0); - pmemberNode2 = (PMember)nodeArrayList2.get(0); - if(listNode1 != null) - { - listNode3.addAll(listNode1); - } - if(pmemberNode2 != null) - { - listNode3.add(pmemberNode2); - } - } - nodeList.add(listNode3); - return nodeList; + pbinopNode1 = new ACmpgeBinop(tcmpgeNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new179() /* reduce ACmpltBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new199() /* reduce ATerminal$ArrayBrackets */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TCmplt tcmpltNode2; + tcmpltNode2 = (TCmplt) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode2 = new LinkedList(); - { - // Block - PArrayBrackets parraybracketsNode1; - parraybracketsNode1 = (PArrayBrackets)nodeArrayList1.get(0); - if(parraybracketsNode1 != null) - { - listNode2.add(parraybracketsNode1); - } - } - nodeList.add(listNode2); - return nodeList; + pbinopNode1 = new ACmpltBinop(tcmpltNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new180() /* reduce ACmpleBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new200() /* reduce ANonTerminal$ArrayBrackets */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TCmple tcmpleNode2; + tcmpleNode2 = (TCmple) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode3 = new LinkedList(); - { - // Block - LinkedList listNode1 = new LinkedList(); - PArrayBrackets parraybracketsNode2; - listNode1 = (LinkedList)nodeArrayList1.get(0); - parraybracketsNode2 = (PArrayBrackets)nodeArrayList2.get(0); - if(listNode1 != null) - { - listNode3.addAll(listNode1); - } - if(parraybracketsNode2 != null) - { - listNode3.add(parraybracketsNode2); - } - } - nodeList.add(listNode3); - return nodeList; + pbinopNode1 = new ACmpleBinop(tcmpleNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new181() /* reduce AShlBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new201() /* reduce ATerminal$Declaration */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TShl tshlNode2; + tshlNode2 = (TShl) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode2 = new LinkedList(); - { - // Block - PDeclaration pdeclarationNode1; - pdeclarationNode1 = (PDeclaration)nodeArrayList1.get(0); - if(pdeclarationNode1 != null) - { - listNode2.add(pdeclarationNode1); - } - } - nodeList.add(listNode2); - return nodeList; + pbinopNode1 = new AShlBinop(tshlNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new182() /* reduce AShrBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new202() /* reduce ANonTerminal$Declaration */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TShr tshrNode2; + tshrNode2 = (TShr) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode3 = new LinkedList(); - { - // Block - LinkedList listNode1 = new LinkedList(); - PDeclaration pdeclarationNode2; - listNode1 = (LinkedList)nodeArrayList1.get(0); - pdeclarationNode2 = (PDeclaration)nodeArrayList2.get(0); - if(listNode1 != null) - { - listNode3.addAll(listNode1); - } - if(pdeclarationNode2 != null) - { - listNode3.add(pdeclarationNode2); - } - } - nodeList.add(listNode3); - return nodeList; + pbinopNode1 = new AShrBinop(tshrNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new183() /* reduce AUshrBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new203() /* reduce ATerminal$Statement */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TUshr tushrNode2; + tushrNode2 = (TUshr) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode2 = new LinkedList(); - { - // Block - PStatement pstatementNode1; - pstatementNode1 = (PStatement)nodeArrayList1.get(0); - if(pstatementNode1 != null) - { - listNode2.add(pstatementNode1); - } - } - nodeList.add(listNode2); - return nodeList; + pbinopNode1 = new AUshrBinop(tushrNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new184() /* reduce APlusBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new204() /* reduce ANonTerminal$Statement */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TPlus tplusNode2; + tplusNode2 = (TPlus) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode3 = new LinkedList(); - { - // Block - LinkedList listNode1 = new LinkedList(); - PStatement pstatementNode2; - listNode1 = (LinkedList)nodeArrayList1.get(0); - pstatementNode2 = (PStatement)nodeArrayList2.get(0); - if(listNode1 != null) - { - listNode3.addAll(listNode1); - } - if(pstatementNode2 != null) - { - listNode3.add(pstatementNode2); - } - } - nodeList.add(listNode3); - return nodeList; + pbinopNode1 = new APlusBinop(tplusNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new185() /* reduce AMinusBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new205() /* reduce ATerminal$CatchClause */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TMinus tminusNode2; + tminusNode2 = (TMinus) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode2 = new LinkedList(); - { - // Block - PCatchClause pcatchclauseNode1; - pcatchclauseNode1 = (PCatchClause)nodeArrayList1.get(0); - if(pcatchclauseNode1 != null) - { - listNode2.add(pcatchclauseNode1); - } - } - nodeList.add(listNode2); - return nodeList; + pbinopNode1 = new AMinusBinop(tminusNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new186() /* reduce AMultBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new206() /* reduce ANonTerminal$CatchClause */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TMult tmultNode2; + tmultNode2 = (TMult) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode3 = new LinkedList(); - { - // Block - LinkedList listNode1 = new LinkedList(); - PCatchClause pcatchclauseNode2; - listNode1 = (LinkedList)nodeArrayList1.get(0); - pcatchclauseNode2 = (PCatchClause)nodeArrayList2.get(0); - if(listNode1 != null) - { - listNode3.addAll(listNode1); - } - if(pcatchclauseNode2 != null) - { - listNode3.add(pcatchclauseNode2); - } - } - nodeList.add(listNode3); - return nodeList; + pbinopNode1 = new AMultBinop(tmultNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new187() /* reduce ADivBinop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new207() /* reduce ATerminal$CaseStmt */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PBinop pbinopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TDiv tdivNode2; + tdivNode2 = (TDiv) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode2 = new LinkedList(); - { - // Block - PCaseStmt pcasestmtNode1; - pcasestmtNode1 = (PCaseStmt)nodeArrayList1.get(0); - if(pcasestmtNode1 != null) - { - listNode2.add(pcasestmtNode1); - } - } - nodeList.add(listNode2); - return nodeList; + pbinopNode1 = new ADivBinop(tdivNode2); } + nodeList.add(pbinopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new188() /* reduce ALengthofUnop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new208() /* reduce ANonTerminal$CaseStmt */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PUnop punopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TLengthof tlengthofNode2; + tlengthofNode2 = (TLengthof) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode3 = new LinkedList(); - { - // Block - LinkedList listNode1 = new LinkedList(); - PCaseStmt pcasestmtNode2; - listNode1 = (LinkedList)nodeArrayList1.get(0); - pcasestmtNode2 = (PCaseStmt)nodeArrayList2.get(0); - if(listNode1 != null) - { - listNode3.addAll(listNode1); - } - if(pcasestmtNode2 != null) - { - listNode3.add(pcasestmtNode2); - } - } - nodeList.add(listNode3); - return nodeList; + punopNode1 = new ALengthofUnop(tlengthofNode2); } + nodeList.add(punopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new189() /* reduce ANegUnop */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new209() /* reduce ATerminal$ArrayDescriptor */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PUnop punopNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TNeg tnegNode2; + tnegNode2 = (TNeg) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode2 = new LinkedList(); - { - // Block - PArrayDescriptor parraydescriptorNode1; - parraydescriptorNode1 = (PArrayDescriptor)nodeArrayList1.get(0); - if(parraydescriptorNode1 != null) - { - listNode2.add(parraydescriptorNode1); - } - } - nodeList.add(listNode2); - return nodeList; + punopNode1 = new ANegUnop(tnegNode2); } + nodeList.add(punopNode1); + return nodeList; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new190() /* reduce AQuotedClassName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); - - @SuppressWarnings({ "unchecked", "rawtypes" }) - ArrayList new210() /* reduce ANonTerminal$ArrayDescriptor */ + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PClassName pclassnameNode1; { - @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList(); + // Block + TQuotedName tquotednameNode2; + tquotednameNode2 = (TQuotedName) nodeArrayList1.get(0); - @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop(); - @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop(); - LinkedList listNode3 = new LinkedList(); - { - // Block - LinkedList listNode1 = new LinkedList(); - PArrayDescriptor parraydescriptorNode2; - listNode1 = (LinkedList)nodeArrayList1.get(0); - parraydescriptorNode2 = (PArrayDescriptor)nodeArrayList2.get(0); - if(listNode1 != null) - { - listNode3.addAll(listNode1); - } - if(parraydescriptorNode2 != null) - { - listNode3.add(parraydescriptorNode2); - } - } - nodeList.add(listNode3); - return nodeList; - } - - - - private static int[][][] actionTable; -/* { - {{-1, ERROR, 0}, {0, SHIFT, 1}, {1, SHIFT, 2}, {2, SHIFT, 3}, {3, SHIFT, 4}, {4, SHIFT, 5}, {5, SHIFT, 6}, {6, SHIFT, 7}, {7, SHIFT, 8}, {8, SHIFT, 9}, {9, SHIFT, 10}, {10, SHIFT, 11}, {11, SHIFT, 12}, {12, SHIFT, 13}, {13, SHIFT, 14}, {14, SHIFT, 15}, }, - {{-1, REDUCE, 8}, }, - {{-1, REDUCE, 9}, }, - {{-1, REDUCE, 10}, }, - {{-1, REDUCE, 11}, }, - {{-1, REDUCE, 12}, }, - {{-1, REDUCE, 13}, }, - {{-1, REDUCE, 14}, }, - {{-1, REDUCE, 15}, }, - {{-1, REDUCE, 16}, }, - {{-1, REDUCE, 17}, }, - {{-1, REDUCE, 18}, }, - {{-1, REDUCE, 19}, }, - {{-1, REDUCE, 20}, }, - {{-1, REDUCE, 21}, }, - {{-1, REDUCE, 22}, }, - {{-1, ERROR, 16}, {100, ACCEPT, -1}, }, - {{-1, REDUCE, 195}, }, - {{-1, ERROR, 18}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, - {{-1, ERROR, 19}, {0, SHIFT, 1}, {1, SHIFT, 2}, {2, SHIFT, 3}, {3, SHIFT, 4}, {4, SHIFT, 5}, {5, SHIFT, 6}, {6, SHIFT, 7}, {7, SHIFT, 8}, {8, SHIFT, 9}, {9, SHIFT, 10}, {10, SHIFT, 11}, {11, SHIFT, 12}, {12, SHIFT, 13}, {13, SHIFT, 14}, {14, SHIFT, 15}, }, - {{-1, REDUCE, 190}, }, - {{-1, REDUCE, 192}, }, - {{-1, REDUCE, 191}, }, - {{-1, ERROR, 23}, {26, SHIFT, 26}, {27, SHIFT, 27}, {63, SHIFT, 28}, }, - {{-1, REDUCE, 196}, }, - {{-1, ERROR, 25}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, - {{-1, ERROR, 26}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, - {{-1, ERROR, 27}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, - {{-1, ERROR, 28}, {0, SHIFT, 1}, {1, SHIFT, 2}, {2, SHIFT, 3}, {3, SHIFT, 4}, {4, SHIFT, 5}, {5, SHIFT, 6}, {6, SHIFT, 7}, {7, SHIFT, 8}, {8, SHIFT, 9}, {9, SHIFT, 10}, {10, SHIFT, 11}, {11, SHIFT, 12}, {12, SHIFT, 13}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {64, SHIFT, 46}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, ERROR, 29}, {27, SHIFT, 27}, {63, SHIFT, 28}, }, - {{-1, ERROR, 30}, {63, SHIFT, 28}, }, - {{-1, REDUCE, 0}, }, - {{-1, ERROR, 32}, {26, SHIFT, 26}, {27, SHIFT, 27}, {63, SHIFT, 28}, }, - {{-1, REDUCE, 23}, }, - {{-1, REDUCE, 24}, }, - {{-1, REDUCE, 29}, {62, SHIFT, 62}, }, - {{-1, REDUCE, 41}, }, - {{-1, REDUCE, 47}, }, - {{-1, REDUCE, 48}, }, - {{-1, REDUCE, 50}, }, - {{-1, REDUCE, 49}, }, - {{-1, REDUCE, 51}, }, - {{-1, REDUCE, 52}, }, - {{-1, REDUCE, 53}, }, - {{-1, REDUCE, 54}, }, - {{-1, REDUCE, 55}, }, - {{-1, REDUCE, 25}, }, - {{-1, REDUCE, 68}, {66, SHIFT, 63}, }, - {{-1, REDUCE, 72}, {66, SHIFT, 63}, }, - {{-1, REDUCE, 70}, {66, SHIFT, 63}, }, - {{-1, REDUCE, 197}, }, - {{-1, ERROR, 51}, {92, SHIFT, 68}, {94, SHIFT, 69}, }, - {{-1, REDUCE, 66}, {66, SHIFT, 63}, }, - {{-1, REDUCE, 42}, }, - {{-1, ERROR, 54}, {0, SHIFT, 1}, {1, SHIFT, 2}, {2, SHIFT, 3}, {3, SHIFT, 4}, {4, SHIFT, 5}, {5, SHIFT, 6}, {6, SHIFT, 7}, {7, SHIFT, 8}, {8, SHIFT, 9}, {9, SHIFT, 10}, {10, SHIFT, 11}, {11, SHIFT, 12}, {12, SHIFT, 13}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, ERROR, 55}, {0, SHIFT, 1}, {1, SHIFT, 2}, {2, SHIFT, 3}, {3, SHIFT, 4}, {4, SHIFT, 5}, {5, SHIFT, 6}, {6, SHIFT, 7}, {7, SHIFT, 8}, {8, SHIFT, 9}, {9, SHIFT, 10}, {10, SHIFT, 11}, {11, SHIFT, 12}, {12, SHIFT, 13}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {64, SHIFT, 73}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, ERROR, 56}, {63, SHIFT, 28}, }, - {{-1, REDUCE, 2}, }, - {{-1, REDUCE, 4}, }, - {{-1, ERROR, 59}, {27, SHIFT, 27}, {63, SHIFT, 28}, }, - {{-1, ERROR, 60}, {63, SHIFT, 28}, }, - {{-1, REDUCE, 1}, }, - {{-1, ERROR, 62}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, - {{-1, ERROR, 63}, {67, SHIFT, 80}, }, - {{-1, REDUCE, 199}, }, - {{-1, REDUCE, 69}, {66, SHIFT, 63}, }, - {{-1, REDUCE, 73}, {66, SHIFT, 63}, }, - {{-1, REDUCE, 71}, {66, SHIFT, 63}, }, - {{-1, REDUCE, 193}, }, - {{-1, REDUCE, 194}, }, - {{-1, ERROR, 70}, {65, SHIFT, 82}, {68, SHIFT, 83}, }, - {{-1, REDUCE, 67}, {66, SHIFT, 63}, }, - {{-1, ERROR, 72}, {92, SHIFT, 68}, {94, SHIFT, 69}, }, - {{-1, REDUCE, 26}, }, - {{-1, REDUCE, 198}, }, - {{-1, REDUCE, 6}, }, - {{-1, ERROR, 76}, {63, SHIFT, 28}, }, - {{-1, REDUCE, 3}, }, - {{-1, REDUCE, 5}, }, - {{-1, REDUCE, 30}, }, - {{-1, REDUCE, 74}, }, - {{-1, REDUCE, 200}, }, - {{-1, REDUCE, 31}, }, - {{-1, ERROR, 83}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {69, SHIFT, 86}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, ERROR, 84}, {65, SHIFT, 90}, {68, SHIFT, 91}, }, - {{-1, REDUCE, 7}, }, - {{-1, ERROR, 86}, {55, SHIFT, 92}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, - {{-1, ERROR, 87}, {69, SHIFT, 97}, }, - {{-1, REDUCE, 43}, {62, SHIFT, 98}, }, - {{-1, REDUCE, 45}, }, - {{-1, REDUCE, 32}, }, - {{-1, ERROR, 91}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {69, SHIFT, 99}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, ERROR, 92}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, - {{-1, ERROR, 93}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {25, SHIFT, 102}, {28, SHIFT, 103}, {30, SHIFT, 104}, {35, SHIFT, 105}, {36, SHIFT, 106}, {37, SHIFT, 107}, {38, SHIFT, 108}, {40, SHIFT, 109}, {42, SHIFT, 110}, {47, SHIFT, 111}, {48, SHIFT, 112}, {49, SHIFT, 113}, {50, SHIFT, 114}, {51, SHIFT, 115}, {52, SHIFT, 116}, {53, SHIFT, 117}, {54, SHIFT, 118}, {56, SHIFT, 119}, {64, SHIFT, 120}, {83, SHIFT, 121}, {92, SHIFT, 122}, {93, SHIFT, 48}, {94, SHIFT, 123}, }, - {{-1, REDUCE, 75}, }, - {{-1, ERROR, 95}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, - {{-1, REDUCE, 33}, }, - {{-1, ERROR, 97}, {55, SHIFT, 92}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, - {{-1, ERROR, 98}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, ERROR, 99}, {55, SHIFT, 92}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, - {{-1, ERROR, 100}, {69, SHIFT, 149}, }, - {{-1, REDUCE, 46}, }, - {{-1, REDUCE, 85}, }, - {{-1, ERROR, 103}, {65, SHIFT, 150}, }, - {{-1, ERROR, 104}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, - {{-1, ERROR, 105}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, ERROR, 106}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, ERROR, 107}, {94, SHIFT, 162}, }, - {{-1, ERROR, 108}, {13, SHIFT, 152}, {41, SHIFT, 164}, {43, SHIFT, 165}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, REDUCE, 144}, }, - {{-1, ERROR, 110}, {68, SHIFT, 171}, }, - {{-1, ERROR, 111}, {65, SHIFT, 172}, }, - {{-1, ERROR, 112}, {13, SHIFT, 152}, {57, SHIFT, 153}, {65, SHIFT, 173}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, ERROR, 113}, {13, SHIFT, 152}, {57, SHIFT, 153}, {65, SHIFT, 175}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, REDUCE, 142}, }, - {{-1, ERROR, 115}, {83, SHIFT, 177}, }, - {{-1, ERROR, 116}, {99, SHIFT, 179}, }, - {{-1, ERROR, 117}, {68, SHIFT, 180}, }, - {{-1, ERROR, 118}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, REDUCE, 143}, }, - {{-1, REDUCE, 76}, }, - {{-1, ERROR, 121}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, - {{-1, REDUCE, 193}, {66, SHIFT, 183}, {92, REDUCE, 68}, {94, REDUCE, 68}, }, - {{-1, REDUCE, 194}, {66, SHIFT, 183}, {70, REDUCE, 108}, {92, REDUCE, 70}, {94, REDUCE, 70}, }, - {{-1, REDUCE, 86}, }, - {{-1, REDUCE, 201}, }, - {{-1, ERROR, 126}, {92, SHIFT, 68}, {94, SHIFT, 69}, }, - {{-1, REDUCE, 129}, {71, SHIFT, 188}, {73, SHIFT, 189}, }, - {{-1, REDUCE, 203}, }, - {{-1, ERROR, 129}, {70, SHIFT, 190}, }, - {{-1, REDUCE, 100}, }, - {{-1, REDUCE, 205}, }, - {{-1, ERROR, 132}, {74, SHIFT, 191}, }, - {{-1, ERROR, 133}, {65, SHIFT, 192}, }, - {{-1, ERROR, 134}, {92, SHIFT, 68}, {94, SHIFT, 69}, }, - {{-1, REDUCE, 128}, }, - {{-1, REDUCE, 149}, }, - {{-1, REDUCE, 150}, }, - {{-1, REDUCE, 154}, }, - {{-1, REDUCE, 87}, }, - {{-1, ERROR, 140}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {25, SHIFT, 102}, {28, SHIFT, 103}, {30, SHIFT, 104}, {35, SHIFT, 105}, {36, SHIFT, 106}, {37, SHIFT, 107}, {38, SHIFT, 108}, {40, SHIFT, 109}, {42, SHIFT, 110}, {47, SHIFT, 111}, {48, SHIFT, 112}, {49, SHIFT, 113}, {50, SHIFT, 114}, {51, SHIFT, 115}, {52, SHIFT, 116}, {53, SHIFT, 117}, {54, SHIFT, 118}, {56, SHIFT, 119}, {64, SHIFT, 194}, {83, SHIFT, 121}, {92, SHIFT, 122}, {93, SHIFT, 48}, {94, SHIFT, 123}, }, - {{-1, ERROR, 141}, {28, SHIFT, 103}, {30, SHIFT, 104}, {35, SHIFT, 105}, {36, SHIFT, 106}, {37, SHIFT, 107}, {38, SHIFT, 108}, {40, SHIFT, 109}, {42, SHIFT, 110}, {47, SHIFT, 111}, {48, SHIFT, 112}, {49, SHIFT, 113}, {50, SHIFT, 114}, {51, SHIFT, 115}, {52, SHIFT, 116}, {53, SHIFT, 117}, {54, SHIFT, 118}, {56, SHIFT, 119}, {64, SHIFT, 198}, {83, SHIFT, 121}, {92, SHIFT, 199}, {94, SHIFT, 200}, }, - {{-1, ERROR, 142}, {30, SHIFT, 104}, {64, SHIFT, 203}, }, - {{-1, REDUCE, 37}, }, - {{-1, ERROR, 144}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, - {{-1, REDUCE, 35}, }, - {{-1, REDUCE, 44}, }, - {{-1, ERROR, 147}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, - {{-1, REDUCE, 34}, }, - {{-1, ERROR, 149}, {55, SHIFT, 92}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, - {{-1, REDUCE, 91}, }, - {{-1, ERROR, 151}, {58, SHIFT, 209}, }, - {{-1, ERROR, 152}, {99, SHIFT, 210}, }, - {{-1, REDUCE, 167}, }, - {{-1, ERROR, 154}, {97, SHIFT, 211}, {98, SHIFT, 212}, }, - {{-1, REDUCE, 161}, }, - {{-1, REDUCE, 163}, }, - {{-1, REDUCE, 165}, }, - {{-1, REDUCE, 159}, }, - {{-1, ERROR, 159}, {65, SHIFT, 213}, }, - {{-1, REDUCE, 160}, }, - {{-1, ERROR, 161}, {65, SHIFT, 214}, }, - {{-1, REDUCE, 108}, }, - {{-1, ERROR, 163}, {65, SHIFT, 215}, }, - {{-1, REDUCE, 188}, }, - {{-1, REDUCE, 189}, }, - {{-1, ERROR, 166}, {37, SHIFT, 107}, }, - {{-1, REDUCE, 130}, }, - {{-1, REDUCE, 131}, }, - {{-1, ERROR, 169}, {31, SHIFT, 217}, {32, SHIFT, 218}, {33, SHIFT, 219}, {75, SHIFT, 220}, {76, SHIFT, 221}, {77, SHIFT, 222}, {78, SHIFT, 223}, {79, SHIFT, 224}, {80, SHIFT, 225}, {81, SHIFT, 226}, {82, SHIFT, 227}, {83, SHIFT, 228}, {84, SHIFT, 229}, {85, SHIFT, 230}, {86, SHIFT, 231}, {87, SHIFT, 232}, {88, SHIFT, 233}, {89, SHIFT, 234}, {90, SHIFT, 235}, {91, SHIFT, 236}, }, - {{-1, ERROR, 170}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, ERROR, 171}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, REDUCE, 101}, }, - {{-1, REDUCE, 102}, }, - {{-1, ERROR, 174}, {65, SHIFT, 240}, }, - {{-1, REDUCE, 104}, }, - {{-1, ERROR, 176}, {65, SHIFT, 241}, }, - {{-1, ERROR, 177}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, - {{-1, ERROR, 178}, {68, SHIFT, 243}, }, - {{-1, ERROR, 179}, {83, SHIFT, 244}, }, - {{-1, ERROR, 180}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, ERROR, 181}, {65, SHIFT, 247}, }, - {{-1, ERROR, 182}, {70, SHIFT, 248}, }, - {{-1, ERROR, 183}, {13, SHIFT, 152}, {57, SHIFT, 153}, {67, SHIFT, 80}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, REDUCE, 152}, }, - {{-1, REDUCE, 151}, }, - {{-1, REDUCE, 88}, {62, SHIFT, 250}, }, - {{-1, ERROR, 187}, {65, SHIFT, 251}, }, - {{-1, ERROR, 188}, {83, SHIFT, 121}, }, - {{-1, ERROR, 189}, {95, SHIFT, 253}, }, - {{-1, REDUCE, 90}, }, - {{-1, ERROR, 191}, {13, SHIFT, 152}, {40, SHIFT, 109}, {41, SHIFT, 164}, {43, SHIFT, 165}, {44, SHIFT, 254}, {45, SHIFT, 255}, {46, SHIFT, 256}, {50, SHIFT, 114}, {51, SHIFT, 115}, {52, SHIFT, 116}, {56, SHIFT, 119}, {57, SHIFT, 153}, {68, SHIFT, 257}, {83, SHIFT, 121}, {89, SHIFT, 154}, {92, SHIFT, 199}, {94, SHIFT, 258}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, REDUCE, 107}, }, - {{-1, ERROR, 193}, {71, SHIFT, 267}, }, - {{-1, REDUCE, 77}, }, - {{-1, REDUCE, 202}, }, - {{-1, ERROR, 196}, {28, SHIFT, 103}, {30, SHIFT, 104}, {35, SHIFT, 105}, {36, SHIFT, 106}, {37, SHIFT, 107}, {38, SHIFT, 108}, {40, SHIFT, 109}, {42, SHIFT, 110}, {47, SHIFT, 111}, {48, SHIFT, 112}, {49, SHIFT, 113}, {50, SHIFT, 114}, {51, SHIFT, 115}, {52, SHIFT, 116}, {53, SHIFT, 117}, {54, SHIFT, 118}, {56, SHIFT, 119}, {64, SHIFT, 268}, {83, SHIFT, 121}, {92, SHIFT, 199}, {94, SHIFT, 200}, }, - {{-1, ERROR, 197}, {30, SHIFT, 104}, {64, SHIFT, 270}, }, - {{-1, REDUCE, 78}, }, - {{-1, REDUCE, 193}, {66, SHIFT, 271}, }, - {{-1, REDUCE, 194}, {66, SHIFT, 271}, {70, REDUCE, 108}, }, - {{-1, REDUCE, 204}, }, - {{-1, ERROR, 202}, {30, SHIFT, 104}, {64, SHIFT, 272}, }, - {{-1, REDUCE, 80}, }, - {{-1, REDUCE, 206}, }, - {{-1, REDUCE, 39}, }, - {{-1, REDUCE, 38}, }, - {{-1, ERROR, 207}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, - {{-1, REDUCE, 36}, }, - {{-1, ERROR, 209}, {94, SHIFT, 162}, }, - {{-1, REDUCE, 166}, }, - {{-1, REDUCE, 162}, }, - {{-1, REDUCE, 164}, }, - {{-1, REDUCE, 92}, }, - {{-1, REDUCE, 93}, }, - {{-1, REDUCE, 113}, }, - {{-1, REDUCE, 99}, }, - {{-1, REDUCE, 172}, }, - {{-1, REDUCE, 173}, }, - {{-1, REDUCE, 174}, }, - {{-1, REDUCE, 168}, }, - {{-1, REDUCE, 169}, }, - {{-1, REDUCE, 170}, }, - {{-1, REDUCE, 171}, }, - {{-1, REDUCE, 175}, }, - {{-1, REDUCE, 176}, }, - {{-1, REDUCE, 177}, }, - {{-1, REDUCE, 178}, }, - {{-1, REDUCE, 179}, }, - {{-1, REDUCE, 180}, }, - {{-1, REDUCE, 181}, }, - {{-1, REDUCE, 182}, }, - {{-1, REDUCE, 183}, }, - {{-1, REDUCE, 184}, }, - {{-1, REDUCE, 185}, }, - {{-1, REDUCE, 186}, }, - {{-1, REDUCE, 187}, }, - {{-1, ERROR, 237}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, REDUCE, 141}, }, - {{-1, ERROR, 239}, {69, SHIFT, 276}, }, - {{-1, REDUCE, 103}, }, - {{-1, REDUCE, 105}, }, - {{-1, ERROR, 242}, {70, SHIFT, 277}, }, - {{-1, ERROR, 243}, {13, SHIFT, 152}, {57, SHIFT, 153}, {69, SHIFT, 278}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, ERROR, 244}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, ERROR, 245}, {68, SHIFT, 282}, }, - {{-1, ERROR, 246}, {69, SHIFT, 283}, }, - {{-1, REDUCE, 106}, }, - {{-1, ERROR, 248}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, ERROR, 249}, {67, SHIFT, 285}, }, - {{-1, ERROR, 250}, {92, SHIFT, 68}, {94, SHIFT, 69}, }, - {{-1, REDUCE, 84}, }, - {{-1, REDUCE, 153}, }, - {{-1, ERROR, 253}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {65, SHIFT, 287}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, ERROR, 254}, {16, SHIFT, 289}, {17, SHIFT, 290}, {18, SHIFT, 291}, {19, SHIFT, 292}, {20, SHIFT, 293}, {21, SHIFT, 294}, {22, SHIFT, 295}, {23, SHIFT, 296}, {24, SHIFT, 297}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, - {{-1, ERROR, 255}, {68, SHIFT, 300}, }, - {{-1, ERROR, 256}, {68, SHIFT, 301}, }, - {{-1, ERROR, 257}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, REDUCE, 194}, {66, SHIFT, 271}, }, - {{-1, REDUCE, 159}, {71, SHIFT, 188}, }, - {{-1, ERROR, 260}, {65, SHIFT, 303}, }, - {{-1, REDUCE, 115}, }, - {{-1, REDUCE, 118}, }, - {{-1, REDUCE, 120}, }, - {{-1, REDUCE, 121}, }, - {{-1, REDUCE, 119}, }, - {{-1, REDUCE, 122}, {31, SHIFT, 217}, {32, SHIFT, 218}, {33, SHIFT, 219}, {39, SHIFT, 304}, {75, SHIFT, 220}, {76, SHIFT, 221}, {77, SHIFT, 222}, {78, SHIFT, 223}, {79, SHIFT, 224}, {80, SHIFT, 225}, {81, SHIFT, 226}, {82, SHIFT, 227}, {83, SHIFT, 228}, {84, SHIFT, 229}, {85, SHIFT, 230}, {86, SHIFT, 231}, {87, SHIFT, 232}, {88, SHIFT, 233}, {89, SHIFT, 234}, {90, SHIFT, 235}, {91, SHIFT, 236}, }, - {{-1, ERROR, 267}, {83, SHIFT, 177}, }, - {{-1, REDUCE, 79}, }, - {{-1, ERROR, 269}, {30, SHIFT, 104}, {64, SHIFT, 306}, }, - {{-1, REDUCE, 81}, }, - {{-1, ERROR, 271}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, REDUCE, 82}, }, - {{-1, REDUCE, 40}, }, - {{-1, ERROR, 274}, {59, SHIFT, 307}, }, - {{-1, REDUCE, 140}, }, - {{-1, ERROR, 276}, {63, SHIFT, 308}, }, - {{-1, ERROR, 277}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, REDUCE, 134}, }, - {{-1, ERROR, 279}, {69, SHIFT, 310}, }, - {{-1, REDUCE, 157}, {62, SHIFT, 311}, }, - {{-1, ERROR, 281}, {68, SHIFT, 312}, }, - {{-1, ERROR, 282}, {13, SHIFT, 152}, {57, SHIFT, 153}, {69, SHIFT, 313}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, ERROR, 283}, {63, SHIFT, 315}, }, - {{-1, ERROR, 284}, {92, SHIFT, 68}, {94, SHIFT, 69}, }, - {{-1, REDUCE, 156}, }, - {{-1, REDUCE, 89}, }, - {{-1, REDUCE, 97}, }, - {{-1, ERROR, 288}, {65, SHIFT, 317}, }, - {{-1, REDUCE, 56}, }, - {{-1, REDUCE, 57}, }, - {{-1, REDUCE, 59}, }, - {{-1, REDUCE, 58}, }, - {{-1, REDUCE, 60}, }, - {{-1, REDUCE, 61}, }, - {{-1, REDUCE, 62}, }, - {{-1, REDUCE, 63}, }, - {{-1, REDUCE, 64}, }, - {{-1, REDUCE, 123}, }, - {{-1, REDUCE, 65}, }, - {{-1, ERROR, 300}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, ERROR, 301}, {16, SHIFT, 289}, {17, SHIFT, 290}, {18, SHIFT, 291}, {19, SHIFT, 292}, {20, SHIFT, 293}, {21, SHIFT, 294}, {22, SHIFT, 295}, {23, SHIFT, 296}, {24, SHIFT, 297}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, - {{-1, ERROR, 302}, {69, SHIFT, 320}, }, - {{-1, REDUCE, 98}, }, - {{-1, ERROR, 304}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, ERROR, 305}, {68, SHIFT, 322}, }, - {{-1, REDUCE, 83}, }, - {{-1, ERROR, 307}, {94, SHIFT, 162}, }, - {{-1, ERROR, 308}, {29, SHIFT, 324}, {34, SHIFT, 325}, }, - {{-1, ERROR, 309}, {92, SHIFT, 68}, {94, SHIFT, 69}, }, - {{-1, REDUCE, 135}, }, - {{-1, ERROR, 311}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, ERROR, 312}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {69, SHIFT, 331}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, ERROR, 313}, {83, SHIFT, 177}, }, - {{-1, ERROR, 314}, {69, SHIFT, 334}, }, - {{-1, ERROR, 315}, {29, SHIFT, 324}, {34, SHIFT, 325}, }, - {{-1, ERROR, 316}, {81, SHIFT, 336}, }, - {{-1, REDUCE, 96}, }, - {{-1, ERROR, 318}, {69, SHIFT, 337}, }, - {{-1, ERROR, 319}, {69, SHIFT, 338}, }, - {{-1, ERROR, 320}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, REDUCE, 117}, }, - {{-1, ERROR, 322}, {13, SHIFT, 152}, {57, SHIFT, 153}, {69, SHIFT, 340}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, ERROR, 323}, {60, SHIFT, 342}, }, - {{-1, ERROR, 324}, {89, SHIFT, 343}, {97, SHIFT, 344}, }, - {{-1, REDUCE, 112}, }, - {{-1, REDUCE, 207}, }, - {{-1, ERROR, 327}, {70, SHIFT, 345}, }, - {{-1, ERROR, 328}, {29, SHIFT, 324}, {34, SHIFT, 325}, {64, SHIFT, 346}, }, - {{-1, ERROR, 329}, {68, SHIFT, 348}, }, - {{-1, REDUCE, 158}, }, - {{-1, ERROR, 331}, {81, SHIFT, 349}, }, - {{-1, ERROR, 332}, {69, SHIFT, 350}, }, - {{-1, ERROR, 333}, {68, SHIFT, 351}, }, - {{-1, ERROR, 334}, {83, SHIFT, 177}, }, - {{-1, ERROR, 335}, {29, SHIFT, 324}, {34, SHIFT, 325}, {64, SHIFT, 353}, }, - {{-1, REDUCE, 155}, }, - {{-1, ERROR, 337}, {66, SHIFT, 271}, }, - {{-1, ERROR, 338}, {66, SHIFT, 355}, }, - {{-1, REDUCE, 116}, }, - {{-1, REDUCE, 132}, }, - {{-1, ERROR, 341}, {69, SHIFT, 358}, }, - {{-1, ERROR, 342}, {94, SHIFT, 162}, }, - {{-1, ERROR, 343}, {97, SHIFT, 360}, }, - {{-1, REDUCE, 110}, }, - {{-1, ERROR, 345}, {37, SHIFT, 107}, }, - {{-1, ERROR, 346}, {65, SHIFT, 362}, }, - {{-1, REDUCE, 208}, }, - {{-1, ERROR, 348}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {69, SHIFT, 363}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, - {{-1, REDUCE, 145}, }, - {{-1, ERROR, 350}, {81, SHIFT, 365}, }, - {{-1, ERROR, 351}, {13, SHIFT, 152}, {57, SHIFT, 153}, {69, SHIFT, 366}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, ERROR, 352}, {68, SHIFT, 368}, }, - {{-1, ERROR, 353}, {65, SHIFT, 369}, }, - {{-1, REDUCE, 124}, }, - {{-1, ERROR, 355}, {13, SHIFT, 152}, {57, SHIFT, 153}, {67, SHIFT, 370}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, REDUCE, 209}, }, - {{-1, REDUCE, 125}, {66, SHIFT, 355}, }, - {{-1, REDUCE, 133}, }, - {{-1, ERROR, 359}, {65, SHIFT, 373}, }, - {{-1, REDUCE, 111}, }, - {{-1, REDUCE, 109}, }, - {{-1, REDUCE, 95}, }, - {{-1, ERROR, 363}, {81, SHIFT, 374}, }, - {{-1, ERROR, 364}, {69, SHIFT, 375}, }, - {{-1, REDUCE, 146}, }, - {{-1, REDUCE, 136}, }, - {{-1, ERROR, 367}, {69, SHIFT, 376}, }, - {{-1, ERROR, 368}, {13, SHIFT, 152}, {57, SHIFT, 153}, {69, SHIFT, 377}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, - {{-1, REDUCE, 94}, }, - {{-1, REDUCE, 126}, }, - {{-1, ERROR, 371}, {67, SHIFT, 379}, }, - {{-1, REDUCE, 210}, }, - {{-1, REDUCE, 114}, }, - {{-1, REDUCE, 147}, }, - {{-1, ERROR, 375}, {81, SHIFT, 380}, }, - {{-1, REDUCE, 138}, }, - {{-1, REDUCE, 137}, }, - {{-1, ERROR, 378}, {69, SHIFT, 381}, }, - {{-1, REDUCE, 127}, }, - {{-1, REDUCE, 148}, }, - {{-1, REDUCE, 139}, }, - };*/ - private static int[][][] gotoTable; -/* { - {{-1, 16}, }, - {{-1, 17}, {19, 24}, {54, 24}, }, - {{-1, 18}, {19, 25}, }, - {{-1, 29}, {32, 59}, }, - {{-1, 30}, {29, 56}, {32, 60}, {59, 76}, }, - {{-1, 31}, {29, 57}, {30, 58}, {32, 61}, {56, 75}, {59, 77}, {60, 78}, {76, 85}, }, - {{-1, -1}, }, - {{-1, 34}, {62, 79}, {92, 101}, }, - {{-1, 50}, {55, 74}, }, - {{-1, 51}, {54, 72}, {244, 281}, {248, 284}, {253, 288}, {277, 309}, }, - {{-1, 87}, {91, 100}, {98, 146}, {312, 332}, {348, 364}, }, - {{-1, 88}, }, - {{-1, 95}, {97, 144}, {99, 147}, {149, 207}, }, - {{-1, 52}, }, - {{-1, 298}, {301, 319}, }, - {{-1, 53}, {83, 89}, {91, 89}, {93, 124}, {98, 89}, {140, 124}, {257, 302}, {300, 318}, {304, 321}, {312, 89}, {348, 89}, }, - {{-1, 64}, {65, 81}, {66, 81}, {67, 81}, {71, 81}, }, - {{-1, 96}, {95, 143}, {97, 145}, {99, 148}, {144, 205}, {147, 206}, {149, 208}, {207, 273}, }, - {{-1, 125}, {140, 195}, }, - {{-1, 126}, }, - {{-1, 158}, {93, 127}, {126, 186}, {134, 193}, {140, 127}, {141, 127}, {191, 259}, {196, 127}, {250, 186}, }, - {{-1, 187}, {250, 286}, }, - {{-1, 128}, {141, 201}, {196, 201}, }, - {{-1, 129}, {107, 163}, {209, 274}, {307, 323}, {342, 359}, }, - {{-1, 326}, {328, 347}, {335, 347}, }, - {{-1, 327}, }, - {{-1, 130}, {166, 216}, {345, 361}, }, - {{-1, 131}, {142, 204}, {197, 204}, {202, 204}, {269, 204}, }, - {{-1, 260}, }, - {{-1, 261}, }, - {{-1, 356}, {357, 372}, }, - {{-1, 132}, }, - {{-1, 166}, }, - {{-1, 133}, {191, 262}, }, - {{-1, 167}, {191, 263}, }, - {{-1, 168}, {191, 264}, }, - {{-1, 134}, }, - {{-1, 245}, }, - {{-1, 178}, {267, 305}, {313, 333}, {334, 352}, }, - {{-1, 135}, {191, 265}, }, - {{-1, 136}, }, - {{-1, 137}, }, - {{-1, 138}, {188, 252}, }, - {{-1, 185}, {122, 184}, {199, 184}, {337, 354}, }, - {{-1, 279}, {282, 314}, {311, 330}, {322, 341}, {351, 367}, {368, 378}, }, - {{-1, 280}, {105, 159}, {106, 161}, {108, 169}, {112, 174}, {113, 176}, {118, 181}, {170, 238}, {171, 239}, {180, 246}, {183, 249}, {191, 266}, {237, 275}, {271, 249}, {320, 339}, {355, 371}, }, - {{-1, 160}, }, - {{-1, 237}, }, - {{-1, 170}, }, - {{-1, 35}, {18, 23}, {25, 32}, {26, 33}, {104, 151}, {121, 182}, {177, 242}, {254, 299}, {301, 299}, }, - {{-1, 139}, {51, 70}, {72, 84}, {284, 316}, {309, 329}, }, - {{-1, 54}, {0, 19}, }, - {{-1, 55}, }, - {{-1, 65}, {48, 66}, {49, 67}, {52, 71}, {123, 67}, }, - {{-1, 140}, }, - {{-1, 141}, {140, 196}, }, - {{-1, 142}, {140, 197}, {141, 202}, {196, 269}, }, - {{-1, 328}, {315, 335}, }, - {{-1, 357}, }, - };*/ - private static String[] errorMessages; -/* { - "expecting: 'abstract', 'final', 'native', 'public', 'protected', 'private', 'static', 'synchronized', 'transient', 'volatile', 'strictfp', 'enum', 'annotation', 'class', 'interface'", - "expecting: 'abstract', 'final', 'native', 'public', 'protected', 'private', 'static', 'synchronized', 'transient', 'volatile', 'strictfp', 'enum', 'annotation', 'class', 'interface', 'void', 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', quoted name, full identifier, identifier", - "expecting: quoted name, full identifier, identifier", - "expecting: EOF", - "expecting: 'extends', 'implements', 'from', ',', '{', ';', ')', ':'", - "expecting: 'extends', 'implements', '{'", - "expecting: 'abstract', 'final', 'native', 'public', 'protected', 'private', 'static', 'synchronized', 'transient', 'volatile', 'strictfp', 'enum', 'annotation', 'void', 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', '}', quoted name, full identifier, identifier", - "expecting: 'implements', '{'", - "expecting: '{'", - "expecting: ',', '{', ';'", - "expecting: ';', '(', quoted name, identifier", - "expecting: ',', ';', '[', '(', ')', quoted name, identifier", - "expecting: quoted name, identifier", - "expecting: 'abstract', 'final', 'native', 'public', 'protected', 'private', 'static', 'synchronized', 'transient', 'volatile', 'strictfp', 'enum', 'annotation', 'void', 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', quoted name, full identifier, identifier", - "expecting: ']'", - "expecting: 'cmp', 'cmpg', 'cmpl', 'goto', ',', ';', ']', '(', ')', '.', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'", - "expecting: ';', '('", - "expecting: '{', ';'", - "expecting: 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', ')', quoted name, full identifier, identifier", - "expecting: 'throws', '{', ';'", - "expecting: ')'", - "expecting: ',', ')'", - "expecting: 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', 'unknown', 'breakpoint', 'catch', 'entermonitor', 'exitmonitor', 'goto', 'if', 'interfaceinvoke', 'lookupswitch', 'nop', 'ret', 'return', 'specialinvoke', 'staticinvoke', 'dynamicinvoke', 'tableswitch', 'throw', 'virtualinvoke', '}', '<', quoted name, full identifier, identifier", - "expecting: 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', quoted name, full identifier, identifier", - "expecting: ';'", - "expecting: 'class', 'null', '-', quoted name, identifier, integer constant, float constant, string constant", - "expecting: identifier", - "expecting: 'class', 'lengthof', 'neg', 'null', '-', quoted name, identifier, integer constant, float constant, string constant", - "expecting: '('", - "expecting: 'class', 'null', ';', '-', quoted name, identifier, integer constant, float constant, string constant", - "expecting: '<'", - "expecting: string constant", - "expecting: '[', '.', ':=', '=', quoted name, identifier", - "expecting: '[', ':', '.', ':=', '=', quoted name, identifier", - "expecting: '.', ':=', '='", - "expecting: 'breakpoint', 'catch', 'entermonitor', 'exitmonitor', 'goto', 'if', 'interfaceinvoke', 'lookupswitch', 'nop', 'ret', 'return', 'specialinvoke', 'staticinvoke', 'dynamicinvoke', 'tableswitch', 'throw', 'virtualinvoke', '}', '<', quoted name, identifier", - "expecting: ':'", - "expecting: 'catch', '}'", - "expecting: '='", - "expecting: ';', '='", - "expecting: 'cmp', 'cmpg', 'cmpl', 'goto', 'instanceof', ',', ';', ']', ')', '.', ':=', '=', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'", - "expecting: 'from'", - "expecting: 'cmp', 'cmpg', 'cmpl', 'goto', 'instanceof', ',', ';', ']', ')', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'", - "expecting: integer constant, float constant", - "expecting: 'cmp', 'cmpg', 'cmpl', 'goto', ',', ';', ']', ')', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'", - "expecting: 'to', 'with', ';'", - "expecting: 'goto'", - "expecting: 'cmp', 'cmpg', 'cmpl', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'", - "expecting: 'class', 'null', ']', '-', quoted name, identifier, integer constant, float constant, string constant", - "expecting: ',', ';'", - "expecting: at identifier", - "expecting: 'class', 'interfaceinvoke', 'lengthof', 'neg', 'new', 'newarray', 'newmultiarray', 'specialinvoke', 'staticinvoke', 'dynamicinvoke', 'virtualinvoke', 'null', '(', '<', '-', quoted name, identifier, integer constant, float constant, string constant", - "expecting: '.'", - "expecting: 'cmp', 'cmpg', 'cmpl', 'instanceof', ';', '[', '.', ':=', '=', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'", - "expecting: '[', ':', '.', ':=', '='", - "expecting: 'breakpoint', 'case', 'catch', 'default', 'entermonitor', 'exitmonitor', 'goto', 'if', 'interfaceinvoke', 'lookupswitch', 'nop', 'ret', 'return', 'specialinvoke', 'staticinvoke', 'dynamicinvoke', 'tableswitch', 'throw', 'virtualinvoke', '}', '<', quoted name, identifier", - "expecting: 'goto', ';'", - "expecting: 'class', 'null', ')', '-', quoted name, identifier, integer constant, float constant, string constant", - "expecting: 'void', 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', quoted name, full identifier, identifier", - "expecting: 'void', 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', ';', quoted name, full identifier, identifier", - "expecting: 'cmp', 'cmpg', 'cmpl', 'instanceof', ';', '[', '.', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'", - "expecting: 'cmp', 'cmpg', 'cmpl', 'instanceof', ';', '.', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'", - "expecting: 'cmp', 'cmpg', 'cmpl', 'instanceof', ';', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'", - "expecting: 'to'", - "expecting: ';', ')'", - "expecting: 'case', 'default'", - "expecting: '>'", - "expecting: 'with'", - "expecting: '-', integer constant", - "expecting: 'case', 'default', '}'", - "expecting: '['", - "expecting: integer constant", - "expecting: ';', '['", - };*/ - private static int[] errors; -/* { - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 1, 2, 0, 4, 4, 4, 5, 1, 2, 2, 2, 6, 7, 8, 3, 5, 7, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 6, 12, 11, 10, 13, 6, 8, 3, 3, 7, 8, 3, 2, 14, 11, 11, 11, 11, 15, 15, 16, 11, 12, 3, 6, 3, 8, 3, 3, 17, 11, 11, 6, 18, 16, 3, 19, 20, 21, 21, 6, 18, 2, 22, 6, 17, 6, 19, 23, 19, 20, 17, 12, 24, 2, 25, 25, 26, 27, 12, 28, 24, 29, 29, 12, 30, 31, 28, 25, 12, 6, 2, 32, 33, 12, 22, 12, 34, 35, 36, 35, 37, 38, 24, 12, 38, 39, 39, 39, 40, 22, 35, 37, 6, 17, 6, 20, 17, 6, 19, 35, 41, 31, 42, 43, 42, 42, 42, 44, 24, 42, 24, 45, 24, 25, 25, 46, 46, 46, 47, 25, 25, 35, 35, 24, 35, 24, 2, 28, 30, 25, 24, 36, 48, 39, 39, 49, 24, 30, 50, 35, 51, 35, 52, 6, 22, 35, 37, 6, 53, 54, 35, 37, 6, 37, 6, 6, 17, 6, 26, 42, 42, 42, 35, 35, 55, 35, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 56, 20, 35, 35, 36, 57, 58, 28, 20, 35, 58, 14, 12, 22, 39, 59, 23, 28, 28, 23, 60, 61, 24, 24, 24, 24, 24, 24, 62, 30, 6, 37, 6, 25, 6, 6, 63, 56, 8, 58, 24, 20, 21, 28, 57, 8, 12, 39, 24, 35, 24, 64, 64, 64, 64, 64, 64, 64, 64, 64, 24, 64, 23, 23, 20, 35, 23, 28, 6, 26, 65, 12, 24, 25, 18, 30, 20, 65, 66, 35, 20, 20, 25, 24, 57, 67, 68, 36, 69, 36, 69, 28, 20, 66, 20, 28, 30, 69, 39, 70, 70, 24, 24, 20, 26, 71, 36, 46, 24, 69, 18, 28, 66, 57, 28, 24, 24, 48, 72, 72, 24, 24, 36, 69, 35, 66, 20, 28, 24, 20, 57, 35, 72, 14, 72, 37, 28, 66, 24, 24, 20, 72, 28, 24, - };*/ - - static - { - try - { - DataInputStream s = new DataInputStream( - new BufferedInputStream( - Parser.class.getResourceAsStream("/parser.dat"))); - - // read actionTable - int length = s.readInt(); - Parser.actionTable = new int[length][][]; - for(int i = 0; i < Parser.actionTable.length; i++) - { - length = s.readInt(); - Parser.actionTable[i] = new int[length][3]; - for(int j = 0; j < Parser.actionTable[i].length; j++) - { - for(int k = 0; k < 3; k++) - { - Parser.actionTable[i][j][k] = s.readInt(); - } - } - } - - // read gotoTable - length = s.readInt(); - gotoTable = new int[length][][]; - for(int i = 0; i < gotoTable.length; i++) - { - length = s.readInt(); - gotoTable[i] = new int[length][2]; - for(int j = 0; j < gotoTable[i].length; j++) - { - for(int k = 0; k < 2; k++) - { - gotoTable[i][j][k] = s.readInt(); - } - } - } - - // read errorMessages - length = s.readInt(); - errorMessages = new String[length]; - for(int i = 0; i < errorMessages.length; i++) - { - length = s.readInt(); - StringBuffer buffer = new StringBuffer(); - - for(int j = 0; j < length; j++) - { - buffer.append(s.readChar()); - } - errorMessages[i] = buffer.toString(); - } - - // read errors - length = s.readInt(); - errors = new int[length]; - for(int i = 0; i < errors.length; i++) - { - errors[i] = s.readInt(); - } - - s.close(); - } - catch(Exception e) - { - throw new RuntimeException("The file \"parser.dat\" is either missing or corrupted."); - } - } + pclassnameNode1 = new AQuotedClassName(tquotednameNode2); + } + nodeList.add(pclassnameNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new191() /* reduce AIdentClassName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PClassName pclassnameNode1; + { + // Block + TIdentifier tidentifierNode2; + tidentifierNode2 = (TIdentifier) nodeArrayList1.get(0); + + pclassnameNode1 = new AIdentClassName(tidentifierNode2); + } + nodeList.add(pclassnameNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new192() /* reduce AFullIdentClassName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PClassName pclassnameNode1; + { + // Block + TFullIdentifier tfullidentifierNode2; + tfullidentifierNode2 = (TFullIdentifier) nodeArrayList1.get(0); + + pclassnameNode1 = new AFullIdentClassName(tfullidentifierNode2); + } + nodeList.add(pclassnameNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new193() /* reduce AQuotedName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PName pnameNode1; + { + // Block + TQuotedName tquotednameNode2; + tquotednameNode2 = (TQuotedName) nodeArrayList1.get(0); + + pnameNode1 = new AQuotedName(tquotednameNode2); + } + nodeList.add(pnameNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new194() /* reduce AIdentName */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + PName pnameNode1; + { + // Block + TIdentifier tidentifierNode2; + tidentifierNode2 = (TIdentifier) nodeArrayList1.get(0); + + pnameNode1 = new AIdentName(tidentifierNode2); + } + nodeList.add(pnameNode1); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new195() /* reduce ATerminal$Modifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode2 = new LinkedList(); + { + // Block + PModifier pmodifierNode1; + pmodifierNode1 = (PModifier) nodeArrayList1.get(0); + if (pmodifierNode1 != null) { + listNode2.add(pmodifierNode1); + } + } + nodeList.add(listNode2); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new196() /* reduce ANonTerminal$Modifier */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode3 = new LinkedList(); + { + // Block + LinkedList listNode1 = new LinkedList(); + PModifier pmodifierNode2; + listNode1 = (LinkedList) nodeArrayList1.get(0); + pmodifierNode2 = (PModifier) nodeArrayList2.get(0); + if (listNode1 != null) { + listNode3.addAll(listNode1); + } + if (pmodifierNode2 != null) { + listNode3.add(pmodifierNode2); + } + } + nodeList.add(listNode3); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new197() /* reduce ATerminal$Member */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode2 = new LinkedList(); + { + // Block + PMember pmemberNode1; + pmemberNode1 = (PMember) nodeArrayList1.get(0); + if (pmemberNode1 != null) { + listNode2.add(pmemberNode1); + } + } + nodeList.add(listNode2); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new198() /* reduce ANonTerminal$Member */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode3 = new LinkedList(); + { + // Block + LinkedList listNode1 = new LinkedList(); + PMember pmemberNode2; + listNode1 = (LinkedList) nodeArrayList1.get(0); + pmemberNode2 = (PMember) nodeArrayList2.get(0); + if (listNode1 != null) { + listNode3.addAll(listNode1); + } + if (pmemberNode2 != null) { + listNode3.add(pmemberNode2); + } + } + nodeList.add(listNode3); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new199() /* reduce ATerminal$ArrayBrackets */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode2 = new LinkedList(); + { + // Block + PArrayBrackets parraybracketsNode1; + parraybracketsNode1 = (PArrayBrackets) nodeArrayList1.get(0); + if (parraybracketsNode1 != null) { + listNode2.add(parraybracketsNode1); + } + } + nodeList.add(listNode2); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new200() /* reduce ANonTerminal$ArrayBrackets */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode3 = new LinkedList(); + { + // Block + LinkedList listNode1 = new LinkedList(); + PArrayBrackets parraybracketsNode2; + listNode1 = (LinkedList) nodeArrayList1.get(0); + parraybracketsNode2 = (PArrayBrackets) nodeArrayList2.get(0); + if (listNode1 != null) { + listNode3.addAll(listNode1); + } + if (parraybracketsNode2 != null) { + listNode3.add(parraybracketsNode2); + } + } + nodeList.add(listNode3); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new201() /* reduce ATerminal$Declaration */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode2 = new LinkedList(); + { + // Block + PDeclaration pdeclarationNode1; + pdeclarationNode1 = (PDeclaration) nodeArrayList1.get(0); + if (pdeclarationNode1 != null) { + listNode2.add(pdeclarationNode1); + } + } + nodeList.add(listNode2); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new202() /* reduce ANonTerminal$Declaration */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode3 = new LinkedList(); + { + // Block + LinkedList listNode1 = new LinkedList(); + PDeclaration pdeclarationNode2; + listNode1 = (LinkedList) nodeArrayList1.get(0); + pdeclarationNode2 = (PDeclaration) nodeArrayList2.get(0); + if (listNode1 != null) { + listNode3.addAll(listNode1); + } + if (pdeclarationNode2 != null) { + listNode3.add(pdeclarationNode2); + } + } + nodeList.add(listNode3); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new203() /* reduce ATerminal$Statement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode2 = new LinkedList(); + { + // Block + PStatement pstatementNode1; + pstatementNode1 = (PStatement) nodeArrayList1.get(0); + if (pstatementNode1 != null) { + listNode2.add(pstatementNode1); + } + } + nodeList.add(listNode2); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new204() /* reduce ANonTerminal$Statement */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode3 = new LinkedList(); + { + // Block + LinkedList listNode1 = new LinkedList(); + PStatement pstatementNode2; + listNode1 = (LinkedList) nodeArrayList1.get(0); + pstatementNode2 = (PStatement) nodeArrayList2.get(0); + if (listNode1 != null) { + listNode3.addAll(listNode1); + } + if (pstatementNode2 != null) { + listNode3.add(pstatementNode2); + } + } + nodeList.add(listNode3); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new205() /* reduce ATerminal$CatchClause */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode2 = new LinkedList(); + { + // Block + PCatchClause pcatchclauseNode1; + pcatchclauseNode1 = (PCatchClause) nodeArrayList1.get(0); + if (pcatchclauseNode1 != null) { + listNode2.add(pcatchclauseNode1); + } + } + nodeList.add(listNode2); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new206() /* reduce ANonTerminal$CatchClause */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode3 = new LinkedList(); + { + // Block + LinkedList listNode1 = new LinkedList(); + PCatchClause pcatchclauseNode2; + listNode1 = (LinkedList) nodeArrayList1.get(0); + pcatchclauseNode2 = (PCatchClause) nodeArrayList2.get(0); + if (listNode1 != null) { + listNode3.addAll(listNode1); + } + if (pcatchclauseNode2 != null) { + listNode3.add(pcatchclauseNode2); + } + } + nodeList.add(listNode3); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new207() /* reduce ATerminal$CaseStmt */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode2 = new LinkedList(); + { + // Block + PCaseStmt pcasestmtNode1; + pcasestmtNode1 = (PCaseStmt) nodeArrayList1.get(0); + if (pcasestmtNode1 != null) { + listNode2.add(pcasestmtNode1); + } + } + nodeList.add(listNode2); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new208() /* reduce ANonTerminal$CaseStmt */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode3 = new LinkedList(); + { + // Block + LinkedList listNode1 = new LinkedList(); + PCaseStmt pcasestmtNode2; + listNode1 = (LinkedList) nodeArrayList1.get(0); + pcasestmtNode2 = (PCaseStmt) nodeArrayList2.get(0); + if (listNode1 != null) { + listNode3.addAll(listNode1); + } + if (pcasestmtNode2 != null) { + listNode3.add(pcasestmtNode2); + } + } + nodeList.add(listNode3); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new209() /* reduce ATerminal$ArrayDescriptor */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode2 = new LinkedList(); + { + // Block + PArrayDescriptor parraydescriptorNode1; + parraydescriptorNode1 = (PArrayDescriptor) nodeArrayList1.get(0); + if (parraydescriptorNode1 != null) { + listNode2.add(parraydescriptorNode1); + } + } + nodeList.add(listNode2); + return nodeList; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + ArrayList new210() /* reduce ANonTerminal$ArrayDescriptor */ + { + @SuppressWarnings("hiding") + ArrayList nodeList = new ArrayList(); + + @SuppressWarnings("unused") + ArrayList nodeArrayList2 = pop(); + @SuppressWarnings("unused") + ArrayList nodeArrayList1 = pop(); + LinkedList listNode3 = new LinkedList(); + { + // Block + LinkedList listNode1 = new LinkedList(); + PArrayDescriptor parraydescriptorNode2; + listNode1 = (LinkedList) nodeArrayList1.get(0); + parraydescriptorNode2 = (PArrayDescriptor) nodeArrayList2.get(0); + if (listNode1 != null) { + listNode3.addAll(listNode1); + } + if (parraydescriptorNode2 != null) { + listNode3.add(parraydescriptorNode2); + } + } + nodeList.add(listNode3); + return nodeList; + } + + private static int[][][] actionTable; + /* + * { {{-1, ERROR, 0}, {0, SHIFT, 1}, {1, SHIFT, 2}, {2, SHIFT, 3}, {3, SHIFT, 4}, {4, SHIFT, 5}, {5, SHIFT, 6}, {6, SHIFT, + * 7}, {7, SHIFT, 8}, {8, SHIFT, 9}, {9, SHIFT, 10}, {10, SHIFT, 11}, {11, SHIFT, 12}, {12, SHIFT, 13}, {13, SHIFT, 14}, + * {14, SHIFT, 15}, }, {{-1, REDUCE, 8}, }, {{-1, REDUCE, 9}, }, {{-1, REDUCE, 10}, }, {{-1, REDUCE, 11}, }, {{-1, REDUCE, + * 12}, }, {{-1, REDUCE, 13}, }, {{-1, REDUCE, 14}, }, {{-1, REDUCE, 15}, }, {{-1, REDUCE, 16}, }, {{-1, REDUCE, 17}, }, + * {{-1, REDUCE, 18}, }, {{-1, REDUCE, 19}, }, {{-1, REDUCE, 20}, }, {{-1, REDUCE, 21}, }, {{-1, REDUCE, 22}, }, {{-1, + * ERROR, 16}, {100, ACCEPT, -1}, }, {{-1, REDUCE, 195}, }, {{-1, ERROR, 18}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, + * 22}, }, {{-1, ERROR, 19}, {0, SHIFT, 1}, {1, SHIFT, 2}, {2, SHIFT, 3}, {3, SHIFT, 4}, {4, SHIFT, 5}, {5, SHIFT, 6}, {6, + * SHIFT, 7}, {7, SHIFT, 8}, {8, SHIFT, 9}, {9, SHIFT, 10}, {10, SHIFT, 11}, {11, SHIFT, 12}, {12, SHIFT, 13}, {13, SHIFT, + * 14}, {14, SHIFT, 15}, }, {{-1, REDUCE, 190}, }, {{-1, REDUCE, 192}, }, {{-1, REDUCE, 191}, }, {{-1, ERROR, 23}, {26, + * SHIFT, 26}, {27, SHIFT, 27}, {63, SHIFT, 28}, }, {{-1, REDUCE, 196}, }, {{-1, ERROR, 25}, {92, SHIFT, 20}, {93, SHIFT, + * 21}, {94, SHIFT, 22}, }, {{-1, ERROR, 26}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, {{-1, ERROR, 27}, {92, + * SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, {{-1, ERROR, 28}, {0, SHIFT, 1}, {1, SHIFT, 2}, {2, SHIFT, 3}, {3, + * SHIFT, 4}, {4, SHIFT, 5}, {5, SHIFT, 6}, {6, SHIFT, 7}, {7, SHIFT, 8}, {8, SHIFT, 9}, {9, SHIFT, 10}, {10, SHIFT, 11}, + * {11, SHIFT, 12}, {12, SHIFT, 13}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, + * {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {64, SHIFT, 46}, {92, SHIFT, 47}, + * {93, SHIFT, 48}, {94, SHIFT, 49}, }, {{-1, ERROR, 29}, {27, SHIFT, 27}, {63, SHIFT, 28}, }, {{-1, ERROR, 30}, {63, + * SHIFT, 28}, }, {{-1, REDUCE, 0}, }, {{-1, ERROR, 32}, {26, SHIFT, 26}, {27, SHIFT, 27}, {63, SHIFT, 28}, }, {{-1, + * REDUCE, 23}, }, {{-1, REDUCE, 24}, }, {{-1, REDUCE, 29}, {62, SHIFT, 62}, }, {{-1, REDUCE, 41}, }, {{-1, REDUCE, 47}, }, + * {{-1, REDUCE, 48}, }, {{-1, REDUCE, 50}, }, {{-1, REDUCE, 49}, }, {{-1, REDUCE, 51}, }, {{-1, REDUCE, 52}, }, {{-1, + * REDUCE, 53}, }, {{-1, REDUCE, 54}, }, {{-1, REDUCE, 55}, }, {{-1, REDUCE, 25}, }, {{-1, REDUCE, 68}, {66, SHIFT, 63}, }, + * {{-1, REDUCE, 72}, {66, SHIFT, 63}, }, {{-1, REDUCE, 70}, {66, SHIFT, 63}, }, {{-1, REDUCE, 197}, }, {{-1, ERROR, 51}, + * {92, SHIFT, 68}, {94, SHIFT, 69}, }, {{-1, REDUCE, 66}, {66, SHIFT, 63}, }, {{-1, REDUCE, 42}, }, {{-1, ERROR, 54}, {0, + * SHIFT, 1}, {1, SHIFT, 2}, {2, SHIFT, 3}, {3, SHIFT, 4}, {4, SHIFT, 5}, {5, SHIFT, 6}, {6, SHIFT, 7}, {7, SHIFT, 8}, {8, + * SHIFT, 9}, {9, SHIFT, 10}, {10, SHIFT, 11}, {11, SHIFT, 12}, {12, SHIFT, 13}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, + * SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, + * SHIFT, 45}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, {{-1, ERROR, 55}, {0, SHIFT, 1}, {1, SHIFT, 2}, {2, + * SHIFT, 3}, {3, SHIFT, 4}, {4, SHIFT, 5}, {5, SHIFT, 6}, {6, SHIFT, 7}, {7, SHIFT, 8}, {8, SHIFT, 9}, {9, SHIFT, 10}, + * {10, SHIFT, 11}, {11, SHIFT, 12}, {12, SHIFT, 13}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, + * {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {64, SHIFT, 73}, + * {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, {{-1, ERROR, 56}, {63, SHIFT, 28}, }, {{-1, REDUCE, 2}, }, {{-1, + * REDUCE, 4}, }, {{-1, ERROR, 59}, {27, SHIFT, 27}, {63, SHIFT, 28}, }, {{-1, ERROR, 60}, {63, SHIFT, 28}, }, {{-1, + * REDUCE, 1}, }, {{-1, ERROR, 62}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, {{-1, ERROR, 63}, {67, SHIFT, + * 80}, }, {{-1, REDUCE, 199}, }, {{-1, REDUCE, 69}, {66, SHIFT, 63}, }, {{-1, REDUCE, 73}, {66, SHIFT, 63}, }, {{-1, + * REDUCE, 71}, {66, SHIFT, 63}, }, {{-1, REDUCE, 193}, }, {{-1, REDUCE, 194}, }, {{-1, ERROR, 70}, {65, SHIFT, 82}, {68, + * SHIFT, 83}, }, {{-1, REDUCE, 67}, {66, SHIFT, 63}, }, {{-1, ERROR, 72}, {92, SHIFT, 68}, {94, SHIFT, 69}, }, {{-1, + * REDUCE, 26}, }, {{-1, REDUCE, 198}, }, {{-1, REDUCE, 6}, }, {{-1, ERROR, 76}, {63, SHIFT, 28}, }, {{-1, REDUCE, 3}, }, + * {{-1, REDUCE, 5}, }, {{-1, REDUCE, 30}, }, {{-1, REDUCE, 74}, }, {{-1, REDUCE, 200}, }, {{-1, REDUCE, 31}, }, {{-1, + * ERROR, 83}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, + * SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {69, SHIFT, 86}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, + * {{-1, ERROR, 84}, {65, SHIFT, 90}, {68, SHIFT, 91}, }, {{-1, REDUCE, 7}, }, {{-1, ERROR, 86}, {55, SHIFT, 92}, {63, + * SHIFT, 93}, {65, SHIFT, 94}, }, {{-1, ERROR, 87}, {69, SHIFT, 97}, }, {{-1, REDUCE, 43}, {62, SHIFT, 98}, }, {{-1, + * REDUCE, 45}, }, {{-1, REDUCE, 32}, }, {{-1, ERROR, 91}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, + * 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {69, SHIFT, 99}, {92, SHIFT, + * 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, {{-1, ERROR, 92}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, {{-1, + * ERROR, 93}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, + * SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {25, SHIFT, 102}, {28, SHIFT, 103}, {30, SHIFT, 104}, {35, SHIFT, 105}, + * {36, SHIFT, 106}, {37, SHIFT, 107}, {38, SHIFT, 108}, {40, SHIFT, 109}, {42, SHIFT, 110}, {47, SHIFT, 111}, {48, SHIFT, + * 112}, {49, SHIFT, 113}, {50, SHIFT, 114}, {51, SHIFT, 115}, {52, SHIFT, 116}, {53, SHIFT, 117}, {54, SHIFT, 118}, {56, + * SHIFT, 119}, {64, SHIFT, 120}, {83, SHIFT, 121}, {92, SHIFT, 122}, {93, SHIFT, 48}, {94, SHIFT, 123}, }, {{-1, REDUCE, + * 75}, }, {{-1, ERROR, 95}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, {{-1, REDUCE, 33}, }, {{-1, ERROR, 97}, {55, SHIFT, 92}, + * {63, SHIFT, 93}, {65, SHIFT, 94}, }, {{-1, ERROR, 98}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, + * 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, 47}, {93, SHIFT, + * 48}, {94, SHIFT, 49}, }, {{-1, ERROR, 99}, {55, SHIFT, 92}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, {{-1, ERROR, 100}, {69, + * SHIFT, 149}, }, {{-1, REDUCE, 46}, }, {{-1, REDUCE, 85}, }, {{-1, ERROR, 103}, {65, SHIFT, 150}, }, {{-1, ERROR, 104}, + * {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, {{-1, ERROR, 105}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, + * 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, ERROR, 106}, {13, + * SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, + * {99, SHIFT, 157}, }, {{-1, ERROR, 107}, {94, SHIFT, 162}, }, {{-1, ERROR, 108}, {13, SHIFT, 152}, {41, SHIFT, 164}, {43, + * SHIFT, 165}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, + * {99, SHIFT, 157}, }, {{-1, REDUCE, 144}, }, {{-1, ERROR, 110}, {68, SHIFT, 171}, }, {{-1, ERROR, 111}, {65, SHIFT, 172}, + * }, {{-1, ERROR, 112}, {13, SHIFT, 152}, {57, SHIFT, 153}, {65, SHIFT, 173}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, + * SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, ERROR, 113}, {13, SHIFT, 152}, {57, SHIFT, + * 153}, {65, SHIFT, 175}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, + * SHIFT, 157}, }, {{-1, REDUCE, 142}, }, {{-1, ERROR, 115}, {83, SHIFT, 177}, }, {{-1, ERROR, 116}, {99, SHIFT, 179}, }, + * {{-1, ERROR, 117}, {68, SHIFT, 180}, }, {{-1, ERROR, 118}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, + * SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, REDUCE, 143}, }, {{-1, + * REDUCE, 76}, }, {{-1, ERROR, 121}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, {{-1, REDUCE, 193}, {66, SHIFT, + * 183}, {92, REDUCE, 68}, {94, REDUCE, 68}, }, {{-1, REDUCE, 194}, {66, SHIFT, 183}, {70, REDUCE, 108}, {92, REDUCE, 70}, + * {94, REDUCE, 70}, }, {{-1, REDUCE, 86}, }, {{-1, REDUCE, 201}, }, {{-1, ERROR, 126}, {92, SHIFT, 68}, {94, SHIFT, 69}, + * }, {{-1, REDUCE, 129}, {71, SHIFT, 188}, {73, SHIFT, 189}, }, {{-1, REDUCE, 203}, }, {{-1, ERROR, 129}, {70, SHIFT, + * 190}, }, {{-1, REDUCE, 100}, }, {{-1, REDUCE, 205}, }, {{-1, ERROR, 132}, {74, SHIFT, 191}, }, {{-1, ERROR, 133}, {65, + * SHIFT, 192}, }, {{-1, ERROR, 134}, {92, SHIFT, 68}, {94, SHIFT, 69}, }, {{-1, REDUCE, 128}, }, {{-1, REDUCE, 149}, }, + * {{-1, REDUCE, 150}, }, {{-1, REDUCE, 154}, }, {{-1, REDUCE, 87}, }, {{-1, ERROR, 140}, {16, SHIFT, 37}, {17, SHIFT, 38}, + * {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, + * {25, SHIFT, 102}, {28, SHIFT, 103}, {30, SHIFT, 104}, {35, SHIFT, 105}, {36, SHIFT, 106}, {37, SHIFT, 107}, {38, SHIFT, + * 108}, {40, SHIFT, 109}, {42, SHIFT, 110}, {47, SHIFT, 111}, {48, SHIFT, 112}, {49, SHIFT, 113}, {50, SHIFT, 114}, {51, + * SHIFT, 115}, {52, SHIFT, 116}, {53, SHIFT, 117}, {54, SHIFT, 118}, {56, SHIFT, 119}, {64, SHIFT, 194}, {83, SHIFT, 121}, + * {92, SHIFT, 122}, {93, SHIFT, 48}, {94, SHIFT, 123}, }, {{-1, ERROR, 141}, {28, SHIFT, 103}, {30, SHIFT, 104}, {35, + * SHIFT, 105}, {36, SHIFT, 106}, {37, SHIFT, 107}, {38, SHIFT, 108}, {40, SHIFT, 109}, {42, SHIFT, 110}, {47, SHIFT, 111}, + * {48, SHIFT, 112}, {49, SHIFT, 113}, {50, SHIFT, 114}, {51, SHIFT, 115}, {52, SHIFT, 116}, {53, SHIFT, 117}, {54, SHIFT, + * 118}, {56, SHIFT, 119}, {64, SHIFT, 198}, {83, SHIFT, 121}, {92, SHIFT, 199}, {94, SHIFT, 200}, }, {{-1, ERROR, 142}, + * {30, SHIFT, 104}, {64, SHIFT, 203}, }, {{-1, REDUCE, 37}, }, {{-1, ERROR, 144}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, + * {{-1, REDUCE, 35}, }, {{-1, REDUCE, 44}, }, {{-1, ERROR, 147}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, {{-1, REDUCE, 34}, + * }, {{-1, ERROR, 149}, {55, SHIFT, 92}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, {{-1, REDUCE, 91}, }, {{-1, ERROR, 151}, + * {58, SHIFT, 209}, }, {{-1, ERROR, 152}, {99, SHIFT, 210}, }, {{-1, REDUCE, 167}, }, {{-1, ERROR, 154}, {97, SHIFT, 211}, + * {98, SHIFT, 212}, }, {{-1, REDUCE, 161}, }, {{-1, REDUCE, 163}, }, {{-1, REDUCE, 165}, }, {{-1, REDUCE, 159}, }, {{-1, + * ERROR, 159}, {65, SHIFT, 213}, }, {{-1, REDUCE, 160}, }, {{-1, ERROR, 161}, {65, SHIFT, 214}, }, {{-1, REDUCE, 108}, }, + * {{-1, ERROR, 163}, {65, SHIFT, 215}, }, {{-1, REDUCE, 188}, }, {{-1, REDUCE, 189}, }, {{-1, ERROR, 166}, {37, SHIFT, + * 107}, }, {{-1, REDUCE, 130}, }, {{-1, REDUCE, 131}, }, {{-1, ERROR, 169}, {31, SHIFT, 217}, {32, SHIFT, 218}, {33, + * SHIFT, 219}, {75, SHIFT, 220}, {76, SHIFT, 221}, {77, SHIFT, 222}, {78, SHIFT, 223}, {79, SHIFT, 224}, {80, SHIFT, 225}, + * {81, SHIFT, 226}, {82, SHIFT, 227}, {83, SHIFT, 228}, {84, SHIFT, 229}, {85, SHIFT, 230}, {86, SHIFT, 231}, {87, SHIFT, + * 232}, {88, SHIFT, 233}, {89, SHIFT, 234}, {90, SHIFT, 235}, {91, SHIFT, 236}, }, {{-1, ERROR, 170}, {13, SHIFT, 152}, + * {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, + * 157}, }, {{-1, ERROR, 171}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, + * SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, REDUCE, 101}, }, {{-1, REDUCE, 102}, }, {{-1, ERROR, 174}, + * {65, SHIFT, 240}, }, {{-1, REDUCE, 104}, }, {{-1, ERROR, 176}, {65, SHIFT, 241}, }, {{-1, ERROR, 177}, {92, SHIFT, 20}, + * {93, SHIFT, 21}, {94, SHIFT, 22}, }, {{-1, ERROR, 178}, {68, SHIFT, 243}, }, {{-1, ERROR, 179}, {83, SHIFT, 244}, }, + * {{-1, ERROR, 180}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, + * 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, ERROR, 181}, {65, SHIFT, 247}, }, {{-1, ERROR, 182}, {70, SHIFT, + * 248}, }, {{-1, ERROR, 183}, {13, SHIFT, 152}, {57, SHIFT, 153}, {67, SHIFT, 80}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, + * SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, REDUCE, 152}, }, {{-1, REDUCE, 151}, }, {{-1, + * REDUCE, 88}, {62, SHIFT, 250}, }, {{-1, ERROR, 187}, {65, SHIFT, 251}, }, {{-1, ERROR, 188}, {83, SHIFT, 121}, }, {{-1, + * ERROR, 189}, {95, SHIFT, 253}, }, {{-1, REDUCE, 90}, }, {{-1, ERROR, 191}, {13, SHIFT, 152}, {40, SHIFT, 109}, {41, + * SHIFT, 164}, {43, SHIFT, 165}, {44, SHIFT, 254}, {45, SHIFT, 255}, {46, SHIFT, 256}, {50, SHIFT, 114}, {51, SHIFT, 115}, + * {52, SHIFT, 116}, {56, SHIFT, 119}, {57, SHIFT, 153}, {68, SHIFT, 257}, {83, SHIFT, 121}, {89, SHIFT, 154}, {92, SHIFT, + * 199}, {94, SHIFT, 258}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, REDUCE, 107}, }, {{-1, ERROR, + * 193}, {71, SHIFT, 267}, }, {{-1, REDUCE, 77}, }, {{-1, REDUCE, 202}, }, {{-1, ERROR, 196}, {28, SHIFT, 103}, {30, SHIFT, + * 104}, {35, SHIFT, 105}, {36, SHIFT, 106}, {37, SHIFT, 107}, {38, SHIFT, 108}, {40, SHIFT, 109}, {42, SHIFT, 110}, {47, + * SHIFT, 111}, {48, SHIFT, 112}, {49, SHIFT, 113}, {50, SHIFT, 114}, {51, SHIFT, 115}, {52, SHIFT, 116}, {53, SHIFT, 117}, + * {54, SHIFT, 118}, {56, SHIFT, 119}, {64, SHIFT, 268}, {83, SHIFT, 121}, {92, SHIFT, 199}, {94, SHIFT, 200}, }, {{-1, + * ERROR, 197}, {30, SHIFT, 104}, {64, SHIFT, 270}, }, {{-1, REDUCE, 78}, }, {{-1, REDUCE, 193}, {66, SHIFT, 271}, }, {{-1, + * REDUCE, 194}, {66, SHIFT, 271}, {70, REDUCE, 108}, }, {{-1, REDUCE, 204}, }, {{-1, ERROR, 202}, {30, SHIFT, 104}, {64, + * SHIFT, 272}, }, {{-1, REDUCE, 80}, }, {{-1, REDUCE, 206}, }, {{-1, REDUCE, 39}, }, {{-1, REDUCE, 38}, }, {{-1, ERROR, + * 207}, {63, SHIFT, 93}, {65, SHIFT, 94}, }, {{-1, REDUCE, 36}, }, {{-1, ERROR, 209}, {94, SHIFT, 162}, }, {{-1, REDUCE, + * 166}, }, {{-1, REDUCE, 162}, }, {{-1, REDUCE, 164}, }, {{-1, REDUCE, 92}, }, {{-1, REDUCE, 93}, }, {{-1, REDUCE, 113}, + * }, {{-1, REDUCE, 99}, }, {{-1, REDUCE, 172}, }, {{-1, REDUCE, 173}, }, {{-1, REDUCE, 174}, }, {{-1, REDUCE, 168}, }, + * {{-1, REDUCE, 169}, }, {{-1, REDUCE, 170}, }, {{-1, REDUCE, 171}, }, {{-1, REDUCE, 175}, }, {{-1, REDUCE, 176}, }, {{-1, + * REDUCE, 177}, }, {{-1, REDUCE, 178}, }, {{-1, REDUCE, 179}, }, {{-1, REDUCE, 180}, }, {{-1, REDUCE, 181}, }, {{-1, + * REDUCE, 182}, }, {{-1, REDUCE, 183}, }, {{-1, REDUCE, 184}, }, {{-1, REDUCE, 185}, }, {{-1, REDUCE, 186}, }, {{-1, + * REDUCE, 187}, }, {{-1, ERROR, 237}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, + * 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, REDUCE, 141}, }, {{-1, ERROR, 239}, {69, SHIFT, + * 276}, }, {{-1, REDUCE, 103}, }, {{-1, REDUCE, 105}, }, {{-1, ERROR, 242}, {70, SHIFT, 277}, }, {{-1, ERROR, 243}, {13, + * SHIFT, 152}, {57, SHIFT, 153}, {69, SHIFT, 278}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, + * {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, ERROR, 244}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, + * 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, + * 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, {{-1, ERROR, 245}, {68, SHIFT, 282}, }, {{-1, ERROR, 246}, {69, SHIFT, 283}, + * }, {{-1, REDUCE, 106}, }, {{-1, ERROR, 248}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, + * SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, 47}, {93, + * SHIFT, 48}, {94, SHIFT, 49}, }, {{-1, ERROR, 249}, {67, SHIFT, 285}, }, {{-1, ERROR, 250}, {92, SHIFT, 68}, {94, SHIFT, + * 69}, }, {{-1, REDUCE, 84}, }, {{-1, REDUCE, 153}, }, {{-1, ERROR, 253}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, SHIFT, + * 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, + * 45}, {65, SHIFT, 287}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, {{-1, ERROR, 254}, {16, SHIFT, 289}, {17, + * SHIFT, 290}, {18, SHIFT, 291}, {19, SHIFT, 292}, {20, SHIFT, 293}, {21, SHIFT, 294}, {22, SHIFT, 295}, {23, SHIFT, 296}, + * {24, SHIFT, 297}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, {{-1, ERROR, 255}, {68, SHIFT, 300}, }, {{-1, + * ERROR, 256}, {68, SHIFT, 301}, }, {{-1, ERROR, 257}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, + * {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, 47}, {93, SHIFT, 48}, + * {94, SHIFT, 49}, }, {{-1, REDUCE, 194}, {66, SHIFT, 271}, }, {{-1, REDUCE, 159}, {71, SHIFT, 188}, }, {{-1, ERROR, 260}, + * {65, SHIFT, 303}, }, {{-1, REDUCE, 115}, }, {{-1, REDUCE, 118}, }, {{-1, REDUCE, 120}, }, {{-1, REDUCE, 121}, }, {{-1, + * REDUCE, 119}, }, {{-1, REDUCE, 122}, {31, SHIFT, 217}, {32, SHIFT, 218}, {33, SHIFT, 219}, {39, SHIFT, 304}, {75, SHIFT, + * 220}, {76, SHIFT, 221}, {77, SHIFT, 222}, {78, SHIFT, 223}, {79, SHIFT, 224}, {80, SHIFT, 225}, {81, SHIFT, 226}, {82, + * SHIFT, 227}, {83, SHIFT, 228}, {84, SHIFT, 229}, {85, SHIFT, 230}, {86, SHIFT, 231}, {87, SHIFT, 232}, {88, SHIFT, 233}, + * {89, SHIFT, 234}, {90, SHIFT, 235}, {91, SHIFT, 236}, }, {{-1, ERROR, 267}, {83, SHIFT, 177}, }, {{-1, REDUCE, 79}, }, + * {{-1, ERROR, 269}, {30, SHIFT, 104}, {64, SHIFT, 306}, }, {{-1, REDUCE, 81}, }, {{-1, ERROR, 271}, {13, SHIFT, 152}, + * {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, + * 157}, }, {{-1, REDUCE, 82}, }, {{-1, REDUCE, 40}, }, {{-1, ERROR, 274}, {59, SHIFT, 307}, }, {{-1, REDUCE, 140}, }, + * {{-1, ERROR, 276}, {63, SHIFT, 308}, }, {{-1, ERROR, 277}, {15, SHIFT, 36}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, + * SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, + * SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, {{-1, REDUCE, 134}, }, {{-1, ERROR, 279}, {69, SHIFT, 310}, }, {{-1, + * REDUCE, 157}, {62, SHIFT, 311}, }, {{-1, ERROR, 281}, {68, SHIFT, 312}, }, {{-1, ERROR, 282}, {13, SHIFT, 152}, {57, + * SHIFT, 153}, {69, SHIFT, 313}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, + * {99, SHIFT, 157}, }, {{-1, ERROR, 283}, {63, SHIFT, 315}, }, {{-1, ERROR, 284}, {92, SHIFT, 68}, {94, SHIFT, 69}, }, + * {{-1, REDUCE, 156}, }, {{-1, REDUCE, 89}, }, {{-1, REDUCE, 97}, }, {{-1, ERROR, 288}, {65, SHIFT, 317}, }, {{-1, REDUCE, + * 56}, }, {{-1, REDUCE, 57}, }, {{-1, REDUCE, 59}, }, {{-1, REDUCE, 58}, }, {{-1, REDUCE, 60}, }, {{-1, REDUCE, 61}, }, + * {{-1, REDUCE, 62}, }, {{-1, REDUCE, 63}, }, {{-1, REDUCE, 64}, }, {{-1, REDUCE, 123}, }, {{-1, REDUCE, 65}, }, {{-1, + * ERROR, 300}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, + * SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, {{-1, ERROR, 301}, + * {16, SHIFT, 289}, {17, SHIFT, 290}, {18, SHIFT, 291}, {19, SHIFT, 292}, {20, SHIFT, 293}, {21, SHIFT, 294}, {22, SHIFT, + * 295}, {23, SHIFT, 296}, {24, SHIFT, 297}, {92, SHIFT, 20}, {93, SHIFT, 21}, {94, SHIFT, 22}, }, {{-1, ERROR, 302}, {69, + * SHIFT, 320}, }, {{-1, REDUCE, 98}, }, {{-1, ERROR, 304}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, + * 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {92, SHIFT, 47}, {93, SHIFT, + * 48}, {94, SHIFT, 49}, }, {{-1, ERROR, 305}, {68, SHIFT, 322}, }, {{-1, REDUCE, 83}, }, {{-1, ERROR, 307}, {94, SHIFT, + * 162}, }, {{-1, ERROR, 308}, {29, SHIFT, 324}, {34, SHIFT, 325}, }, {{-1, ERROR, 309}, {92, SHIFT, 68}, {94, SHIFT, 69}, + * }, {{-1, REDUCE, 135}, }, {{-1, ERROR, 311}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, + * SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, ERROR, 312}, {16, SHIFT, 37}, {17, SHIFT, + * 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, + * 45}, {69, SHIFT, 331}, {92, SHIFT, 47}, {93, SHIFT, 48}, {94, SHIFT, 49}, }, {{-1, ERROR, 313}, {83, SHIFT, 177}, }, + * {{-1, ERROR, 314}, {69, SHIFT, 334}, }, {{-1, ERROR, 315}, {29, SHIFT, 324}, {34, SHIFT, 325}, }, {{-1, ERROR, 316}, + * {81, SHIFT, 336}, }, {{-1, REDUCE, 96}, }, {{-1, ERROR, 318}, {69, SHIFT, 337}, }, {{-1, ERROR, 319}, {69, SHIFT, 338}, + * }, {{-1, ERROR, 320}, {13, SHIFT, 152}, {57, SHIFT, 153}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, + * SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, REDUCE, 117}, }, {{-1, ERROR, 322}, {13, SHIFT, 152}, {57, + * SHIFT, 153}, {69, SHIFT, 340}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, + * {99, SHIFT, 157}, }, {{-1, ERROR, 323}, {60, SHIFT, 342}, }, {{-1, ERROR, 324}, {89, SHIFT, 343}, {97, SHIFT, 344}, }, + * {{-1, REDUCE, 112}, }, {{-1, REDUCE, 207}, }, {{-1, ERROR, 327}, {70, SHIFT, 345}, }, {{-1, ERROR, 328}, {29, SHIFT, + * 324}, {34, SHIFT, 325}, {64, SHIFT, 346}, }, {{-1, ERROR, 329}, {68, SHIFT, 348}, }, {{-1, REDUCE, 158}, }, {{-1, ERROR, + * 331}, {81, SHIFT, 349}, }, {{-1, ERROR, 332}, {69, SHIFT, 350}, }, {{-1, ERROR, 333}, {68, SHIFT, 351}, }, {{-1, ERROR, + * 334}, {83, SHIFT, 177}, }, {{-1, ERROR, 335}, {29, SHIFT, 324}, {34, SHIFT, 325}, {64, SHIFT, 353}, }, {{-1, REDUCE, + * 155}, }, {{-1, ERROR, 337}, {66, SHIFT, 271}, }, {{-1, ERROR, 338}, {66, SHIFT, 355}, }, {{-1, REDUCE, 116}, }, {{-1, + * REDUCE, 132}, }, {{-1, ERROR, 341}, {69, SHIFT, 358}, }, {{-1, ERROR, 342}, {94, SHIFT, 162}, }, {{-1, ERROR, 343}, {97, + * SHIFT, 360}, }, {{-1, REDUCE, 110}, }, {{-1, ERROR, 345}, {37, SHIFT, 107}, }, {{-1, ERROR, 346}, {65, SHIFT, 362}, }, + * {{-1, REDUCE, 208}, }, {{-1, ERROR, 348}, {16, SHIFT, 37}, {17, SHIFT, 38}, {18, SHIFT, 39}, {19, SHIFT, 40}, {20, + * SHIFT, 41}, {21, SHIFT, 42}, {22, SHIFT, 43}, {23, SHIFT, 44}, {24, SHIFT, 45}, {69, SHIFT, 363}, {92, SHIFT, 47}, {93, + * SHIFT, 48}, {94, SHIFT, 49}, }, {{-1, REDUCE, 145}, }, {{-1, ERROR, 350}, {81, SHIFT, 365}, }, {{-1, ERROR, 351}, {13, + * SHIFT, 152}, {57, SHIFT, 153}, {69, SHIFT, 366}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, + * {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, ERROR, 352}, {68, SHIFT, 368}, }, {{-1, ERROR, 353}, {65, SHIFT, 369}, }, + * {{-1, REDUCE, 124}, }, {{-1, ERROR, 355}, {13, SHIFT, 152}, {57, SHIFT, 153}, {67, SHIFT, 370}, {89, SHIFT, 154}, {92, + * SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, REDUCE, 209}, }, {{-1, + * REDUCE, 125}, {66, SHIFT, 355}, }, {{-1, REDUCE, 133}, }, {{-1, ERROR, 359}, {65, SHIFT, 373}, }, {{-1, REDUCE, 111}, }, + * {{-1, REDUCE, 109}, }, {{-1, REDUCE, 95}, }, {{-1, ERROR, 363}, {81, SHIFT, 374}, }, {{-1, ERROR, 364}, {69, SHIFT, + * 375}, }, {{-1, REDUCE, 146}, }, {{-1, REDUCE, 136}, }, {{-1, ERROR, 367}, {69, SHIFT, 376}, }, {{-1, ERROR, 368}, {13, + * SHIFT, 152}, {57, SHIFT, 153}, {69, SHIFT, 377}, {89, SHIFT, 154}, {92, SHIFT, 68}, {94, SHIFT, 69}, {97, SHIFT, 155}, + * {98, SHIFT, 156}, {99, SHIFT, 157}, }, {{-1, REDUCE, 94}, }, {{-1, REDUCE, 126}, }, {{-1, ERROR, 371}, {67, SHIFT, 379}, + * }, {{-1, REDUCE, 210}, }, {{-1, REDUCE, 114}, }, {{-1, REDUCE, 147}, }, {{-1, ERROR, 375}, {81, SHIFT, 380}, }, {{-1, + * REDUCE, 138}, }, {{-1, REDUCE, 137}, }, {{-1, ERROR, 378}, {69, SHIFT, 381}, }, {{-1, REDUCE, 127}, }, {{-1, REDUCE, + * 148}, }, {{-1, REDUCE, 139}, }, }; + */ + private static int[][][] gotoTable; + /* + * { {{-1, 16}, }, {{-1, 17}, {19, 24}, {54, 24}, }, {{-1, 18}, {19, 25}, }, {{-1, 29}, {32, 59}, }, {{-1, 30}, {29, 56}, + * {32, 60}, {59, 76}, }, {{-1, 31}, {29, 57}, {30, 58}, {32, 61}, {56, 75}, {59, 77}, {60, 78}, {76, 85}, }, {{-1, -1}, }, + * {{-1, 34}, {62, 79}, {92, 101}, }, {{-1, 50}, {55, 74}, }, {{-1, 51}, {54, 72}, {244, 281}, {248, 284}, {253, 288}, + * {277, 309}, }, {{-1, 87}, {91, 100}, {98, 146}, {312, 332}, {348, 364}, }, {{-1, 88}, }, {{-1, 95}, {97, 144}, {99, + * 147}, {149, 207}, }, {{-1, 52}, }, {{-1, 298}, {301, 319}, }, {{-1, 53}, {83, 89}, {91, 89}, {93, 124}, {98, 89}, {140, + * 124}, {257, 302}, {300, 318}, {304, 321}, {312, 89}, {348, 89}, }, {{-1, 64}, {65, 81}, {66, 81}, {67, 81}, {71, 81}, }, + * {{-1, 96}, {95, 143}, {97, 145}, {99, 148}, {144, 205}, {147, 206}, {149, 208}, {207, 273}, }, {{-1, 125}, {140, 195}, + * }, {{-1, 126}, }, {{-1, 158}, {93, 127}, {126, 186}, {134, 193}, {140, 127}, {141, 127}, {191, 259}, {196, 127}, {250, + * 186}, }, {{-1, 187}, {250, 286}, }, {{-1, 128}, {141, 201}, {196, 201}, }, {{-1, 129}, {107, 163}, {209, 274}, {307, + * 323}, {342, 359}, }, {{-1, 326}, {328, 347}, {335, 347}, }, {{-1, 327}, }, {{-1, 130}, {166, 216}, {345, 361}, }, {{-1, + * 131}, {142, 204}, {197, 204}, {202, 204}, {269, 204}, }, {{-1, 260}, }, {{-1, 261}, }, {{-1, 356}, {357, 372}, }, {{-1, + * 132}, }, {{-1, 166}, }, {{-1, 133}, {191, 262}, }, {{-1, 167}, {191, 263}, }, {{-1, 168}, {191, 264}, }, {{-1, 134}, }, + * {{-1, 245}, }, {{-1, 178}, {267, 305}, {313, 333}, {334, 352}, }, {{-1, 135}, {191, 265}, }, {{-1, 136}, }, {{-1, 137}, + * }, {{-1, 138}, {188, 252}, }, {{-1, 185}, {122, 184}, {199, 184}, {337, 354}, }, {{-1, 279}, {282, 314}, {311, 330}, + * {322, 341}, {351, 367}, {368, 378}, }, {{-1, 280}, {105, 159}, {106, 161}, {108, 169}, {112, 174}, {113, 176}, {118, + * 181}, {170, 238}, {171, 239}, {180, 246}, {183, 249}, {191, 266}, {237, 275}, {271, 249}, {320, 339}, {355, 371}, }, + * {{-1, 160}, }, {{-1, 237}, }, {{-1, 170}, }, {{-1, 35}, {18, 23}, {25, 32}, {26, 33}, {104, 151}, {121, 182}, {177, + * 242}, {254, 299}, {301, 299}, }, {{-1, 139}, {51, 70}, {72, 84}, {284, 316}, {309, 329}, }, {{-1, 54}, {0, 19}, }, {{-1, + * 55}, }, {{-1, 65}, {48, 66}, {49, 67}, {52, 71}, {123, 67}, }, {{-1, 140}, }, {{-1, 141}, {140, 196}, }, {{-1, 142}, + * {140, 197}, {141, 202}, {196, 269}, }, {{-1, 328}, {315, 335}, }, {{-1, 357}, }, }; + */ + private static String[] errorMessages; + /* + * { + * "expecting: 'abstract', 'final', 'native', 'public', 'protected', 'private', 'static', 'synchronized', 'transient', 'volatile', 'strictfp', 'enum', 'annotation', 'class', 'interface'" + * , + * "expecting: 'abstract', 'final', 'native', 'public', 'protected', 'private', 'static', 'synchronized', 'transient', 'volatile', 'strictfp', 'enum', 'annotation', 'class', 'interface', 'void', 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', quoted name, full identifier, identifier" + * , "expecting: quoted name, full identifier, identifier", "expecting: EOF", + * "expecting: 'extends', 'implements', 'from', ',', '{', ';', ')', ':'", "expecting: 'extends', 'implements', '{'", + * "expecting: 'abstract', 'final', 'native', 'public', 'protected', 'private', 'static', 'synchronized', 'transient', 'volatile', 'strictfp', 'enum', 'annotation', 'void', 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', '}', quoted name, full identifier, identifier" + * , "expecting: 'implements', '{'", "expecting: '{'", "expecting: ',', '{', ';'", + * "expecting: ';', '(', quoted name, identifier", "expecting: ',', ';', '[', '(', ')', quoted name, identifier", + * "expecting: quoted name, identifier", + * "expecting: 'abstract', 'final', 'native', 'public', 'protected', 'private', 'static', 'synchronized', 'transient', 'volatile', 'strictfp', 'enum', 'annotation', 'void', 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', quoted name, full identifier, identifier" + * , "expecting: ']'", + * "expecting: 'cmp', 'cmpg', 'cmpl', 'goto', ',', ';', ']', '(', ')', '.', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'" + * , "expecting: ';', '('", "expecting: '{', ';'", + * "expecting: 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', ')', quoted name, full identifier, identifier" + * , "expecting: 'throws', '{', ';'", "expecting: ')'", "expecting: ',', ')'", + * "expecting: 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', 'unknown', 'breakpoint', 'catch', 'entermonitor', 'exitmonitor', 'goto', 'if', 'interfaceinvoke', 'lookupswitch', 'nop', 'ret', 'return', 'specialinvoke', 'staticinvoke', 'dynamicinvoke', 'tableswitch', 'throw', 'virtualinvoke', '}', '<', quoted name, full identifier, identifier" + * , + * "expecting: 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', quoted name, full identifier, identifier" + * , "expecting: ';'", + * "expecting: 'class', 'null', '-', quoted name, identifier, integer constant, float constant, string constant", + * "expecting: identifier", + * "expecting: 'class', 'lengthof', 'neg', 'null', '-', quoted name, identifier, integer constant, float constant, string constant" + * , "expecting: '('", + * "expecting: 'class', 'null', ';', '-', quoted name, identifier, integer constant, float constant, string constant", + * "expecting: '<'", "expecting: string constant", "expecting: '[', '.', ':=', '=', quoted name, identifier", + * "expecting: '[', ':', '.', ':=', '=', quoted name, identifier", "expecting: '.', ':=', '='", + * "expecting: 'breakpoint', 'catch', 'entermonitor', 'exitmonitor', 'goto', 'if', 'interfaceinvoke', 'lookupswitch', 'nop', 'ret', 'return', 'specialinvoke', 'staticinvoke', 'dynamicinvoke', 'tableswitch', 'throw', 'virtualinvoke', '}', '<', quoted name, identifier" + * , "expecting: ':'", "expecting: 'catch', '}'", "expecting: '='", "expecting: ';', '='", + * "expecting: 'cmp', 'cmpg', 'cmpl', 'goto', 'instanceof', ',', ';', ']', ')', '.', ':=', '=', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'" + * , "expecting: 'from'", + * "expecting: 'cmp', 'cmpg', 'cmpl', 'goto', 'instanceof', ',', ';', ']', ')', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'" + * , "expecting: integer constant, float constant", + * "expecting: 'cmp', 'cmpg', 'cmpl', 'goto', ',', ';', ']', ')', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'" + * , "expecting: 'to', 'with', ';'", "expecting: 'goto'", + * "expecting: 'cmp', 'cmpg', 'cmpl', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'" + * , "expecting: 'class', 'null', ']', '-', quoted name, identifier, integer constant, float constant, string constant", + * "expecting: ',', ';'", "expecting: at identifier", + * "expecting: 'class', 'interfaceinvoke', 'lengthof', 'neg', 'new', 'newarray', 'newmultiarray', 'specialinvoke', 'staticinvoke', 'dynamicinvoke', 'virtualinvoke', 'null', '(', '<', '-', quoted name, identifier, integer constant, float constant, string constant" + * , "expecting: '.'", + * "expecting: 'cmp', 'cmpg', 'cmpl', 'instanceof', ';', '[', '.', ':=', '=', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'" + * , "expecting: '[', ':', '.', ':=', '='", + * "expecting: 'breakpoint', 'case', 'catch', 'default', 'entermonitor', 'exitmonitor', 'goto', 'if', 'interfaceinvoke', 'lookupswitch', 'nop', 'ret', 'return', 'specialinvoke', 'staticinvoke', 'dynamicinvoke', 'tableswitch', 'throw', 'virtualinvoke', '}', '<', quoted name, identifier" + * , "expecting: 'goto', ';'", + * "expecting: 'class', 'null', ')', '-', quoted name, identifier, integer constant, float constant, string constant", + * "expecting: 'void', 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', quoted name, full identifier, identifier" + * , + * "expecting: 'void', 'boolean', 'byte', 'short', 'char', 'int', 'long', 'float', 'double', 'null_type', ';', quoted name, full identifier, identifier" + * , + * "expecting: 'cmp', 'cmpg', 'cmpl', 'instanceof', ';', '[', '.', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'" + * , + * "expecting: 'cmp', 'cmpg', 'cmpl', 'instanceof', ';', '.', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'" + * , + * "expecting: 'cmp', 'cmpg', 'cmpl', 'instanceof', ';', '&', '|', '^', '%', '==', '!=', '>', '>=', '<', '<=', '<<', '>>', '>>>', '+', '-', '*', '/'" + * , "expecting: 'to'", "expecting: ';', ')'", "expecting: 'case', 'default'", "expecting: '>'", "expecting: 'with'", + * "expecting: '-', integer constant", "expecting: 'case', 'default', '}'", "expecting: '['", + * "expecting: integer constant", "expecting: ';', '['", }; + */ + private static int[] errors; + /* + * { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 1, 2, 0, 4, 4, 4, 5, 1, 2, 2, 2, 6, 7, 8, 3, 5, 7, 8, 9, 10, 11, + * 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 6, 12, 11, 10, 13, 6, 8, 3, 3, 7, 8, 3, 2, 14, 11, 11, 11, 11, 15, 15, + * 16, 11, 12, 3, 6, 3, 8, 3, 3, 17, 11, 11, 6, 18, 16, 3, 19, 20, 21, 21, 6, 18, 2, 22, 6, 17, 6, 19, 23, 19, 20, 17, 12, + * 24, 2, 25, 25, 26, 27, 12, 28, 24, 29, 29, 12, 30, 31, 28, 25, 12, 6, 2, 32, 33, 12, 22, 12, 34, 35, 36, 35, 37, 38, 24, + * 12, 38, 39, 39, 39, 40, 22, 35, 37, 6, 17, 6, 20, 17, 6, 19, 35, 41, 31, 42, 43, 42, 42, 42, 44, 24, 42, 24, 45, 24, 25, + * 25, 46, 46, 46, 47, 25, 25, 35, 35, 24, 35, 24, 2, 28, 30, 25, 24, 36, 48, 39, 39, 49, 24, 30, 50, 35, 51, 35, 52, 6, + * 22, 35, 37, 6, 53, 54, 35, 37, 6, 37, 6, 6, 17, 6, 26, 42, 42, 42, 35, 35, 55, 35, 25, 25, 25, 25, 25, 25, 25, 25, 25, + * 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 56, 20, 35, 35, 36, 57, 58, 28, 20, 35, 58, 14, 12, 22, 39, 59, 23, 28, + * 28, 23, 60, 61, 24, 24, 24, 24, 24, 24, 62, 30, 6, 37, 6, 25, 6, 6, 63, 56, 8, 58, 24, 20, 21, 28, 57, 8, 12, 39, 24, + * 35, 24, 64, 64, 64, 64, 64, 64, 64, 64, 64, 24, 64, 23, 23, 20, 35, 23, 28, 6, 26, 65, 12, 24, 25, 18, 30, 20, 65, 66, + * 35, 20, 20, 25, 24, 57, 67, 68, 36, 69, 36, 69, 28, 20, 66, 20, 28, 30, 69, 39, 70, 70, 24, 24, 20, 26, 71, 36, 46, 24, + * 69, 18, 28, 66, 57, 28, 24, 24, 48, 72, 72, 24, 24, 36, 69, 35, 66, 20, 28, 24, 20, 57, 35, 72, 14, 72, 37, 28, 66, 24, + * 24, 20, 72, 28, 24, }; + */ + + static { + try { + DataInputStream s = new DataInputStream(new BufferedInputStream(Parser.class.getResourceAsStream("/parser.dat"))); + + // read actionTable + int length = s.readInt(); + Parser.actionTable = new int[length][][]; + for (int i = 0; i < Parser.actionTable.length; i++) { + length = s.readInt(); + Parser.actionTable[i] = new int[length][3]; + for (int j = 0; j < Parser.actionTable[i].length; j++) { + for (int k = 0; k < 3; k++) { + Parser.actionTable[i][j][k] = s.readInt(); + } + } + } + + // read gotoTable + length = s.readInt(); + gotoTable = new int[length][][]; + for (int i = 0; i < gotoTable.length; i++) { + length = s.readInt(); + gotoTable[i] = new int[length][2]; + for (int j = 0; j < gotoTable[i].length; j++) { + for (int k = 0; k < 2; k++) { + gotoTable[i][j][k] = s.readInt(); + } + } + } + + // read errorMessages + length = s.readInt(); + errorMessages = new String[length]; + for (int i = 0; i < errorMessages.length; i++) { + length = s.readInt(); + StringBuffer buffer = new StringBuffer(); + + for (int j = 0; j < length; j++) { + buffer.append(s.readChar()); + } + errorMessages[i] = buffer.toString(); + } + + // read errors + length = s.readInt(); + errors = new int[length]; + for (int i = 0; i < errors.length; i++) { + errors[i] = s.readInt(); + } + + s.close(); + } catch (Exception e) { + throw new RuntimeException("The file \"parser.dat\" is either missing or corrupted."); + } + } } diff --git a/src/main/generated/singletons/soot/Singletons.java b/src/main/generated/singletons/soot/Singletons.java index 81255288c56..a957d6a1891 100644 --- a/src/main/generated/singletons/soot/Singletons.java +++ b/src/main/generated/singletons/soot/Singletons.java @@ -230,20 +230,6 @@ protected void release_soot_jimple_toolkits_pointer_representations_TypeConstant instance_soot_jimple_toolkits_pointer_representations_TypeConstants = null; } - private soot.coffi.Util instance_soot_coffi_Util; - public soot.coffi.Util soot_coffi_Util() { - if (instance_soot_coffi_Util == null) { - synchronized (this) { - if (instance_soot_coffi_Util == null) - instance_soot_coffi_Util = new soot.coffi.Util(g); - } - } - return instance_soot_coffi_Util; - } - protected void release_soot_coffi_Util() { - instance_soot_coffi_Util = null; - } - private soot.SourceLocator instance_soot_SourceLocator; public soot.SourceLocator soot_SourceLocator() { if (instance_soot_SourceLocator == null) { @@ -272,20 +258,6 @@ protected void release_soot_ModulePathSourceLocator() { instance_soot_ModulePathSourceLocator = null; } - private soot.coffi.CONSTANT_Utf8_collector instance_soot_coffi_CONSTANT_Utf8_collector; - public soot.coffi.CONSTANT_Utf8_collector soot_coffi_CONSTANT_Utf8_collector() { - if (instance_soot_coffi_CONSTANT_Utf8_collector == null) { - synchronized (this) { - if (instance_soot_coffi_CONSTANT_Utf8_collector == null) - instance_soot_coffi_CONSTANT_Utf8_collector = new soot.coffi.CONSTANT_Utf8_collector(g); - } - } - return instance_soot_coffi_CONSTANT_Utf8_collector; - } - protected void release_soot_coffi_CONSTANT_Utf8_collector() { - instance_soot_coffi_CONSTANT_Utf8_collector = null; - } - private soot.dava.toolkits.base.finders.AbruptEdgeFinder instance_soot_dava_toolkits_base_finders_AbruptEdgeFinder; public soot.dava.toolkits.base.finders.AbruptEdgeFinder soot_dava_toolkits_base_finders_AbruptEdgeFinder() { if (instance_soot_dava_toolkits_base_finders_AbruptEdgeFinder == null) { @@ -650,20 +622,6 @@ protected void release_soot_jimple_toolkits_pointer_DependenceTagAggregator() { instance_soot_jimple_toolkits_pointer_DependenceTagAggregator = null; } - private soot.coffi.Double2ndHalfType instance_soot_coffi_Double2ndHalfType; - public soot.coffi.Double2ndHalfType soot_coffi_Double2ndHalfType() { - if (instance_soot_coffi_Double2ndHalfType == null) { - synchronized (this) { - if (instance_soot_coffi_Double2ndHalfType == null) - instance_soot_coffi_Double2ndHalfType = new soot.coffi.Double2ndHalfType(g); - } - } - return instance_soot_coffi_Double2ndHalfType; - } - protected void release_soot_coffi_Double2ndHalfType() { - instance_soot_coffi_Double2ndHalfType = null; - } - private soot.DoubleType instance_soot_DoubleType; public soot.DoubleType soot_DoubleType() { if (instance_soot_DoubleType == null) { @@ -1014,20 +972,6 @@ protected void release_soot_toolkits_scalar_FlowSensitiveConstantPropagator() { instance_soot_toolkits_scalar_FlowSensitiveConstantPropagator = null; } - private soot.coffi.Long2ndHalfType instance_soot_coffi_Long2ndHalfType; - public soot.coffi.Long2ndHalfType soot_coffi_Long2ndHalfType() { - if (instance_soot_coffi_Long2ndHalfType == null) { - synchronized (this) { - if (instance_soot_coffi_Long2ndHalfType == null) - instance_soot_coffi_Long2ndHalfType = new soot.coffi.Long2ndHalfType(g); - } - } - return instance_soot_coffi_Long2ndHalfType; - } - protected void release_soot_coffi_Long2ndHalfType() { - instance_soot_coffi_Long2ndHalfType = null; - } - private soot.LongType instance_soot_LongType; public soot.LongType soot_LongType() { if (instance_soot_LongType == null) { @@ -1616,20 +1560,6 @@ protected void release_soot_toolkits_scalar_UnusedLocalEliminator() { instance_soot_toolkits_scalar_UnusedLocalEliminator = null; } - private soot.coffi.UnusuableType instance_soot_coffi_UnusuableType; - public soot.coffi.UnusuableType soot_coffi_UnusuableType() { - if (instance_soot_coffi_UnusuableType == null) { - synchronized (this) { - if (instance_soot_coffi_UnusuableType == null) - instance_soot_coffi_UnusuableType = new soot.coffi.UnusuableType(g); - } - } - return instance_soot_coffi_UnusuableType; - } - protected void release_soot_coffi_UnusuableType() { - instance_soot_coffi_UnusuableType = null; - } - private soot.dava.toolkits.base.AST.UselessTryRemover instance_soot_dava_toolkits_base_AST_UselessTryRemover; public soot.dava.toolkits.base.AST.UselessTryRemover soot_dava_toolkits_base_AST_UselessTryRemover() { if (instance_soot_dava_toolkits_base_AST_UselessTryRemover == null) { diff --git a/src/main/java/soot/ClassLoaderFoundFile.java b/src/main/java/soot/ClassLoaderFoundFile.java new file mode 100644 index 00000000000..ebdb462b42f --- /dev/null +++ b/src/main/java/soot/ClassLoaderFoundFile.java @@ -0,0 +1,76 @@ +package soot; + +/*- + * #%L + * Soot - a J*va Optimization Framework + * %% + * Copyright (C) 1997 - 2014 Raja Vallee-Rai and others + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 2.1 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * . + * #L% + */ + + +import java.io.File; +import java.io.InputStream; +import java.util.zip.ZipFile; + +public class ClassLoaderFoundFile implements IFoundFile { + + private String fileName; + private ClassLoader classLoader; + + public ClassLoaderFoundFile(ClassLoader cl, String fileName) { + this.fileName = fileName; + this.classLoader = cl; + + } + + @Override + public String getFilePath() { + return fileName; + } + + @Override + public boolean isZipFile() { + return false; + } + + @Override + public ZipFile getZipFile() { + return null; + } + + @Override + public File getFile() { + return null; + } + + @Override + public String getAbsolutePath() { + throw new RuntimeException("Not supported"); + } + + @Override + public InputStream inputStream() { + return classLoader.getResourceAsStream(fileName); + } + + @Override + public void close() { + + } + +} diff --git a/src/main/java/soot/CoffiClassProvider.java b/src/main/java/soot/CoffiClassProvider.java deleted file mode 100644 index c335755e549..00000000000 --- a/src/main/java/soot/CoffiClassProvider.java +++ /dev/null @@ -1,39 +0,0 @@ -package soot; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2004 Ondrej Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * A class provider looks for a file of a specific format for a specified class, and returns a ClassSource for it if it finds - * it. - */ -public class CoffiClassProvider implements ClassProvider { - /** - * Look for the specified class. Return a ClassSource for it if found, or null if it was not found. - */ - @Override - public ClassSource find(String className) { - String fileName = className.replace('.', '/') + ".class"; - IFoundFile file = SourceLocator.v().lookupInClassPath(fileName); - return (file == null) ? null : new CoffiClassSource(className, file); - } -} diff --git a/src/main/java/soot/CoffiClassSource.java b/src/main/java/soot/CoffiClassSource.java deleted file mode 100644 index 22f097ab2a6..00000000000 --- a/src/main/java/soot/CoffiClassSource.java +++ /dev/null @@ -1,126 +0,0 @@ -package soot; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2004 Ondrej Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import soot.javaToJimple.IInitialResolver; -import soot.javaToJimple.IInitialResolver.Dependencies; -import soot.options.Options; -import soot.tagkit.SourceFileTag; - -/** - * A class source for resolving from .class files through coffi. - */ -public class CoffiClassSource extends ClassSource { - private static final Logger logger = LoggerFactory.getLogger(CoffiClassSource.class); - - private IFoundFile foundFile; - private InputStream classFile; - private final String fileName; - private final String zipFileName; - - public CoffiClassSource(String className, IFoundFile foundFile) { - super(className); - if (foundFile == null) { - throw new IllegalStateException("Error: The FoundFile must not be null."); - } - this.foundFile = foundFile; - this.classFile = foundFile.inputStream(); - this.fileName = foundFile.getFile().getAbsolutePath(); - this.zipFileName = !foundFile.isZipFile() ? null : foundFile.getFilePath(); - } - - public CoffiClassSource(String className, InputStream classFile, String fileName) { - super(className); - if (classFile == null || fileName == null) { - throw new IllegalStateException("Error: The class file input strean and file name must not be null."); - } - this.classFile = classFile; - this.fileName = fileName; - this.zipFileName = null; - this.foundFile = null; - } - - @Override - public Dependencies resolve(SootClass sc) { - if (Options.v().verbose()) { - logger.debug("resolving [from .class]: " + className); - } - List references = new ArrayList(); - - try { - soot.coffi.Util.v().resolveFromClassFile(sc, classFile, fileName, references); - } finally { - close(); - } - - addSourceFileTag(sc); - - IInitialResolver.Dependencies deps = new IInitialResolver.Dependencies(); - deps.typesToSignature.addAll(references); - return deps; - } - - private void addSourceFileTag(soot.SootClass sc) { - if (fileName == null && zipFileName == null) { - return; - } - - SourceFileTag tag = (SourceFileTag) sc.getTag(SourceFileTag.NAME); - if (tag == null) { - tag = new SourceFileTag(); - sc.addTag(tag); - } - - // Sets sourceFile only when it hasn't been set before - if (tag.getSourceFile() == null) { - String name = zipFileName == null ? new File(fileName).getName() : new File(zipFileName).getName(); - tag.setSourceFile(name); - } - } - - @Override - public void close() { - try { - if (classFile != null) { - classFile.close(); - classFile = null; - } - } catch (IOException e) { - throw new RuntimeException("Error: Failed to close source input stream.", e); - } finally { - if (foundFile != null) { - foundFile.close(); - foundFile = null; - } - } - } -} diff --git a/src/main/java/soot/G.java b/src/main/java/soot/G.java index c1b3d72b8c5..70a22d59946 100644 --- a/src/main/java/soot/G.java +++ b/src/main/java/soot/G.java @@ -32,7 +32,6 @@ import java.util.Map; import java.util.Set; -import soot.coffi.Utf8_Enumeration; import soot.dava.internal.SET.SETBasicBlock; import soot.dava.internal.SET.SETNode; import soot.dexpler.DalvikThrowAnalysis; @@ -92,8 +91,6 @@ public class Global { } public long coffi_BasicBlock_ids = 0; - public Utf8_Enumeration coffi_CONSTANT_Utf8_info_e1 = new Utf8_Enumeration(); - public Utf8_Enumeration coffi_CONSTANT_Utf8_info_e2 = new Utf8_Enumeration(); public int SETNodeLabel_uniqueId = 0; public HashMap SETBasicBlock_binding = new HashMap(); public boolean ASTAnalysis_modified; diff --git a/src/main/java/soot/PackManager.java b/src/main/java/soot/PackManager.java index 72d191c01b6..c6095847396 100644 --- a/src/main/java/soot/PackManager.java +++ b/src/main/java/soot/PackManager.java @@ -1,29 +1,5 @@ package soot; -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2003 - 2004 Ondrej Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import heros.solver.CountingThreadPoolExecutor; - import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -48,6 +24,29 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +/*- + * #%L + * Soot - a J*va Optimization Framework + * %% + * Copyright (C) 2003 - 2004 Ondrej Lhotak + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 2.1 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * . + * #L% + */ + +import heros.solver.CountingThreadPoolExecutor; import soot.baf.Baf; import soot.baf.BafASMBackend; import soot.baf.BafBody; @@ -512,12 +511,6 @@ private void runPacksNormally() { } } - // if running coffi cfg metrics, print out results and exit - if (soot.jbco.Main.metrics) { - coffiMetrics(); - System.exit(0); - } - preProcessDAVA(); if (Options.v().interactive_mode()) { if (InteractionHandler.v().getInteractionListener() == null) { @@ -531,25 +524,6 @@ private void runPacksNormally() { handleInnerClasses(); } - public void coffiMetrics() { - int tV = 0, tE = 0, hM = 0; - double aM = 0; - HashMap hashVem = soot.coffi.CFG.methodsToVEM; - for (int[] vem : hashVem.values()) { - tV += vem[0]; - tE += vem[1]; - aM += vem[2]; - if (vem[2] > hM) { - hM = vem[2]; - } - } - if (hashVem.size() > 0) { - aM /= hashVem.size(); - } - - logger.debug("Vertices, Edges, Avg Degree, Highest Deg: " + tV + " " + tE + " " + aM + " " + hM); - } - public void runBodyPacks() { runBodyPacks(reachableClasses()); } diff --git a/src/main/java/soot/SourceLocator.java b/src/main/java/soot/SourceLocator.java index 0b6fd1a1951..db6def5b008 100755 --- a/src/main/java/soot/SourceLocator.java +++ b/src/main/java/soot/SourceLocator.java @@ -59,6 +59,7 @@ import soot.JavaClassProvider.JarException; import soot.asm.AsmClassProvider; +import soot.asm.AsmClassSource; import soot.asm.AsmJava9ClassProvider; import soot.dexpler.DexFileProvider; import soot.dotnet.AssemblyFile; @@ -241,7 +242,7 @@ public ClassSource getClassSource(String className) { public ClassSource find(String className) { String fileName = className.replace('.', '/') + ".class"; InputStream stream = cl.getResourceAsStream(fileName); - return (stream == null) ? null : new CoffiClassSource(className, stream, fileName); + return (stream == null) ? null : new AsmClassSource(className, new ClassLoaderFoundFile(cl, fileName)); } }.find(className); if (ret != null) { @@ -260,7 +261,7 @@ public ClassSource find(String className) { String fileName = className.replace('.', '/') + ".class"; InputStream stream = cl.getResourceAsStream(fileName); if (stream != null) { - return new CoffiClassSource(className, stream, fileName); + return new AsmClassSource(className, new ClassLoaderFoundFile(cl, fileName)); } } } @@ -273,7 +274,7 @@ public void additionalClassLoader(ClassLoader c) { protected void setupClassProviders() { final List classProviders = new LinkedList(); - final ClassProvider classFileClassProvider = Options.v().coffi() ? new CoffiClassProvider() : new AsmClassProvider(); + final ClassProvider classFileClassProvider = new AsmClassProvider(); switch (Options.v().src_prec()) { case Options.src_prec_class: classProviders.add(classFileClassProvider); diff --git a/src/main/java/soot/asm/AsmClassSource.java b/src/main/java/soot/asm/AsmClassSource.java index 3ffdea70ed8..4f55b76f9aa 100644 --- a/src/main/java/soot/asm/AsmClassSource.java +++ b/src/main/java/soot/asm/AsmClassSource.java @@ -50,7 +50,7 @@ public class AsmClassSource extends ClassSource { * @param foundFile * foundfile pointing to the data for class. */ - protected AsmClassSource(String cls, IFoundFile foundFile) { + public AsmClassSource(String cls, IFoundFile foundFile) { super(cls); if (foundFile == null) { throw new IllegalStateException("Error: The FoundFile must not be null."); diff --git a/src/main/java/soot/asm/AsmMethodSource.java b/src/main/java/soot/asm/AsmMethodSource.java index c6e4f288784..79acaef92dd 100644 --- a/src/main/java/soot/asm/AsmMethodSource.java +++ b/src/main/java/soot/asm/AsmMethodSource.java @@ -253,7 +253,6 @@ import soot.Value; import soot.ValueBox; import soot.VoidType; -import soot.coffi.Util; import soot.jimple.AddExpr; import soot.jimple.ArrayRef; import soot.jimple.AssignStmt; @@ -1511,7 +1510,7 @@ private void convertInvokeDynamicInsn(InvokeDynamicInsnNode insn) { // create ref to actual method // Generate parameters & returnType & parameterTypes - Type[] types = Util.v().jimpleTypesOfFieldOrMethodDescriptor(insn.desc); + Type[] types = AsmUtil.jimpleTypesOfFieldOrMethodDescriptor(insn.desc); int nrArgs = types.length - 1; List parameterTypes = new ArrayList(nrArgs); List methodArgs = new ArrayList(nrArgs); diff --git a/src/main/java/soot/asm/AsmUtil.java b/src/main/java/soot/asm/AsmUtil.java index e32c09e2bd7..aa57d76b319 100644 --- a/src/main/java/soot/asm/AsmUtil.java +++ b/src/main/java/soot/asm/AsmUtil.java @@ -24,10 +24,18 @@ import com.google.common.base.Optional; +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.objectweb.asm.Opcodes; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import soot.ArrayType; import soot.BooleanType; @@ -56,6 +64,7 @@ */ /** @author eric */ public class AsmUtil { + private static final Logger logger = LoggerFactory.getLogger(AsmUtil.class); private static RefType makeRefType(String className, Optional moduleName) { if (ModuleUtil.module_mode()) { @@ -403,4 +412,123 @@ static boolean alreadyExists(Unit prev, Object left, Object right) { return false; } + + public static Type[] jimpleTypesOfFieldOrMethodDescriptor(String descriptor) { + Type[] ret = null; + char[] d = descriptor.toCharArray(); + int p = 0; + List conversionTypes = new ArrayList(); + + outer: while (p < d.length) { + boolean isArray = false; + int numDimensions = 0; + Type baseType = null; + + swtch: while (p < d.length) { + switch (d[p]) { + // Skip parenthesis + case '(': + case ')': + p++; + continue outer; + + case '[': + isArray = true; + numDimensions++; + p++; + continue swtch; + case 'B': + baseType = ByteType.v(); + p++; + break swtch; + case 'C': + baseType = CharType.v(); + p++; + break swtch; + case 'D': + baseType = DoubleType.v(); + p++; + break swtch; + case 'F': + baseType = FloatType.v(); + p++; + break swtch; + case 'I': + baseType = IntType.v(); + p++; + break swtch; + case 'J': + baseType = LongType.v(); + p++; + break swtch; + case 'L': + int index = p + 1; + while (index < d.length && d[index] != ';') { + if (d[index] == '/') { + d[index] = '.'; + } + index++; + } + if (index >= d.length) { + throw new RuntimeException("Class reference has no ending ;"); + } + String className = new String(d, p + 1, index - p - 1); + baseType = RefType.v(className); + p = index + 1; + break swtch; + case 'S': + baseType = ShortType.v(); + p++; + break swtch; + case 'Z': + baseType = BooleanType.v(); + p++; + break swtch; + case 'V': + baseType = VoidType.v(); + p++; + break swtch; + default: + throw new RuntimeException("Unknown field type!"); + } + } + if (baseType == null) { + continue; + } + + // Determine type + Type t; + if (isArray) { + t = ArrayType.v(baseType, numDimensions); + } else { + t = baseType; + } + + conversionTypes.add(t); + } + + ret = conversionTypes.toArray(new Type[0]); + return ret; + } + + /** + * Utility method; converts the given String into a utf8 encoded array of bytes. + * + * @param s + * String to encode. + * @return array of bytes, utf8 encoded version of s. + */ + public static byte[] toUtf8(String s) { + try { + ByteArrayOutputStream bs = new ByteArrayOutputStream(s.length()); + DataOutputStream d = new DataOutputStream(bs); + d.writeUTF(s); + return bs.toByteArray(); + } catch (IOException e) { + logger.debug("Some sort of IO exception in toUtf8 with " + s); + } + return null; + } + + } diff --git a/src/main/java/soot/coffi/AnnotationDefault_attribute.java b/src/main/java/soot/coffi/AnnotationDefault_attribute.java deleted file mode 100644 index 2905534f1e5..00000000000 --- a/src/main/java/soot/coffi/AnnotationDefault_attribute.java +++ /dev/null @@ -1,36 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There should be at most one AnnotationDefault attribute in every method indicating the default value of the element - * represented by the method_info structure - * - * @see attribute_info - * @see method_info#attributes - * @author Jennifer Lhotak - */ -public class AnnotationDefault_attribute extends attribute_info { - /** Default value. */ - public element_value default_value; -} diff --git a/src/main/java/soot/coffi/BBQ.java b/src/main/java/soot/coffi/BBQ.java deleted file mode 100644 index d1d1cdab5f9..00000000000 --- a/src/main/java/soot/coffi/BBQ.java +++ /dev/null @@ -1,109 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.util.ArrayList; -import java.util.NoSuchElementException; - -/** - * A queue of BasicBlocks. - * - * @author Clark Verbrugge - * @see BasicBlock - */ -final class BBQ { - - private final ArrayList q = new ArrayList(); - - /** - * Adds a block to the end of the queue, but only if its inq flag is false. - * - * @param b - * the Basic Block in question. - * @see BasicBlock#inq - */ - public void push(BasicBlock b) { - if (!b.inq) { // ensure only in queue once... - b.inq = true; - q.add(b); - } - } - - /** - * Removes the first block in the queue (and resets its inq flag). - * - * @return BasicBlock which was first. - * @exception java.util.NoSuchElementException - * if the queue is empty. - * @see BasicBlock#inq - */ - public BasicBlock pull() throws NoSuchElementException { - if (q.size() == 0) { - throw new NoSuchElementException("Pull from empty BBQ"); - } - BasicBlock b = (q.get(0)); - q.remove(0); - b.inq = false; - return b; - } - - /** - * Answers whether a block is in the queue or not. - * - * @param BasicBlock - * in question. - * @return true if it is, false if it ain't. - * @see BasicBlock#inq - */ - public boolean contains(BasicBlock b) { - return b.inq; - } - - /** - * Answers the size of the queue. - * - * @return size of the queue. - */ - public int size() { - return q.size(); - } - - /** - * Answers whether the queue is empty - * - * @return true if it is, false if it ain't. - */ - public boolean isEmpty() { - return q.isEmpty(); - } - - /** Empties the queue of all blocks (and resets their inq flags). */ - public void clear() { - BasicBlock b; - for (BasicBlock basicBlock : q) { - b = (basicBlock); - b.inq = false; - } - q.clear(); - } -} diff --git a/src/main/java/soot/coffi/BasicBlock.java b/src/main/java/soot/coffi/BasicBlock.java deleted file mode 100644 index e039cfd590a..00000000000 --- a/src/main/java/soot/coffi/BasicBlock.java +++ /dev/null @@ -1,149 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.util.List; -import java.util.Set; -import java.util.Vector; - -import soot.G; -import soot.jimple.Stmt; -import soot.util.ArraySet; - -/** - * Represents one basic block in a control flow graph. - * - * @see CFG - * @see ClassFile#parse - * @author Clark Verbrugge - */ -class BasicBlock { - /** Number of instructions in this block. */ - public int size; - /** Head of the list of instructions. */ - public Instruction head; - /** - * Tail of the list of instructions. - *

- * Normally, the last instruction will have a next pointer with value null. After a Instruction sequences are - * reconstructed though, the instruction lists are rejoined in order, and so the tail instruction will not have a - * null next pointer. - * - * @see CFG#reconstructInstructions - */ - public Instruction tail; - /** - * Vector of predecessor BasicBlocks. - * - * @see java.util.Vector - */ - public Vector succ; - /** - * Vector of successor BasicBlocks. - * - * @see java.util.Vector - */ - public Vector pred; - - public boolean inq; - /** Flag for whether starting an exception or not. */ - public boolean beginException; - /** Flag for whether starting main code block or not. */ - public boolean beginCode; - /** - * Flag for semantic stack analysis fixup pass. - * - * @see CFG#jimplify - */ - - boolean done; - - /** Next BasicBlock in the CFG, in the parse order. */ - public BasicBlock next; - /** Unique (among basic blocks) id. */ - public long id; // unique id - - List statements; - Set addressesToFixup = new ArraySet(); - - soot.jimple.Stmt getHeadJStmt() { - return statements.get(0); - } - - soot.jimple.Stmt getTailJStmt() { - return statements.get(statements.size() - 1); - } - - public BasicBlock(Instruction insts) { - id = G.v().coffi_BasicBlock_ids++; - head = insts; - tail = head; - size = 0; - if (head != null) { - size++; - while (tail.next != null) { - size++; - tail = tail.next; - } - } - succ = new Vector(2, 10); - pred = new Vector(2, 3); - } - - public BasicBlock(Instruction headinsn, Instruction tailinsn) { - id = G.v().coffi_BasicBlock_ids++; - head = headinsn; - tail = tailinsn; - succ = new Vector(2, 10); - pred = new Vector(2, 3); - } - - /** - * Computes a hash code for this block from the label of the first instruction in its contents. - * - * @return the hash code. - * @see Instruction#label - */ - public int hashCode() { - return (new Integer(head.label)).hashCode(); - } - - /** - * True if this block represents the same piece of code. Basically compares labels of the head instructions. - * - * @param b - * block to compare against. - * @return true if they do, false if they don't. - */ - public boolean equals(BasicBlock b) { - return (this == b); - } - - /** - * For printing the string "BB: " + id. - */ - public String toString() { - return "BB: " + id; - } - -} diff --git a/src/main/java/soot/coffi/BootstrapMethods_attribute.java b/src/main/java/soot/coffi/BootstrapMethods_attribute.java deleted file mode 100644 index e7074c9a4e7..00000000000 --- a/src/main/java/soot/coffi/BootstrapMethods_attribute.java +++ /dev/null @@ -1,39 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2012 Eric Bodden - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There should be exactly one BootstrapMethods attribute in every class file. - * - * @author Eric Bodden - * @see http://www.xiebiao.com/docs/javase/7/api/java/lang/invoke/package-summary.html#bsmattr - */ -class BootstrapMethods_attribute extends attribute_info { - - // indices to method handles - public short[] method_handles; - - // arguments to method handles, in same order as above, i.e., arg_indices[i] holds the arguments to method_handles[i] - public short[][] arg_indices; - -} diff --git a/src/main/java/soot/coffi/ByteCode.java b/src/main/java/soot/coffi/ByteCode.java deleted file mode 100644 index 6eb4a4167f4..00000000000 --- a/src/main/java/soot/coffi/ByteCode.java +++ /dev/null @@ -1,1132 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Procedural code for parsing and otherwise handling bytecode. - * - * @author Clark Verbrugge - */ -class ByteCode { - private static final Logger logger = LoggerFactory.getLogger(ByteCode.class); - - public static final int NOP = 0; - public static final int ACONST_NULL = 1; - public static final int ICONST_M1 = 2; - public static final int ICONST_0 = 3; - public static final int ICONST_1 = 4; - public static final int ICONST_2 = 5; - public static final int ICONST_3 = 6; - public static final int ICONST_4 = 7; - public static final int ICONST_5 = 8; - public static final int LCONST_0 = 9; - public static final int LCONST_1 = 10; - public static final int FCONST_0 = 11; - public static final int FCONST_1 = 12; - public static final int FCONST_2 = 13; - public static final int DCONST_0 = 14; - public static final int DCONST_1 = 15; - public static final int BIPUSH = 16; - public static final int SIPUSH = 17; - public static final int LDC1 = 18; - public static final int LDC2 = 19; - public static final int LDC2W = 20; - public static final int ILOAD = 21; - public static final int LLOAD = 22; - public static final int FLOAD = 23; - public static final int DLOAD = 24; - public static final int ALOAD = 25; - public static final int ILOAD_0 = 26; - public static final int ILOAD_1 = 27; - public static final int ILOAD_2 = 28; - public static final int ILOAD_3 = 29; - public static final int LLOAD_0 = 30; - public static final int LLOAD_1 = 31; - public static final int LLOAD_2 = 32; - public static final int LLOAD_3 = 33; - public static final int FLOAD_0 = 34; - public static final int FLOAD_1 = 35; - public static final int FLOAD_2 = 36; - public static final int FLOAD_3 = 37; - public static final int DLOAD_0 = 38; - public static final int DLOAD_1 = 39; - public static final int DLOAD_2 = 40; - public static final int DLOAD_3 = 41; - public static final int ALOAD_0 = 42; - public static final int ALOAD_1 = 43; - public static final int ALOAD_2 = 44; - public static final int ALOAD_3 = 45; - public static final int IALOAD = 46; - public static final int LALOAD = 47; - public static final int FALOAD = 48; - public static final int DALOAD = 49; - public static final int AALOAD = 50; - public static final int BALOAD = 51; - public static final int CALOAD = 52; - public static final int SALOAD = 53; - public static final int ISTORE = 54; - public static final int LSTORE = 55; - public static final int FSTORE = 56; - public static final int DSTORE = 57; - public static final int ASTORE = 58; - public static final int ISTORE_0 = 59; - public static final int ISTORE_1 = 60; - public static final int ISTORE_2 = 61; - public static final int ISTORE_3 = 62; - public static final int LSTORE_0 = 63; - public static final int LSTORE_1 = 64; - public static final int LSTORE_2 = 65; - public static final int LSTORE_3 = 66; - public static final int FSTORE_0 = 67; - public static final int FSTORE_1 = 68; - public static final int FSTORE_2 = 69; - public static final int FSTORE_3 = 70; - public static final int DSTORE_0 = 71; - public static final int DSTORE_1 = 72; - public static final int DSTORE_2 = 73; - public static final int DSTORE_3 = 74; - public static final int ASTORE_0 = 75; - public static final int ASTORE_1 = 76; - public static final int ASTORE_2 = 77; - public static final int ASTORE_3 = 78; - public static final int IASTORE = 79; - public static final int LASTORE = 80; - public static final int FASTORE = 81; - public static final int DASTORE = 82; - public static final int AASTORE = 83; - public static final int BASTORE = 84; - public static final int CASTORE = 85; - public static final int SASTORE = 86; - public static final int POP = 87; - public static final int POP2 = 88; - public static final int DUP = 89; - public static final int DUP_X1 = 90; - public static final int DUP_X2 = 91; - public static final int DUP2 = 92; - public static final int DUP2_X1 = 93; - public static final int DUP2_X2 = 94; - public static final int SWAP = 95; - public static final int IADD = 96; - public static final int LADD = 97; - public static final int FADD = 98; - public static final int DADD = 99; - public static final int ISUB = 100; - public static final int LSUB = 101; - public static final int FSUB = 102; - public static final int DSUB = 103; - public static final int IMUL = 104; - public static final int LMUL = 105; - public static final int FMUL = 106; - public static final int DMUL = 107; - public static final int IDIV = 108; - public static final int LDIV = 109; - public static final int FDIV = 110; - public static final int DDIV = 111; - public static final int IREM = 112; - public static final int LREM = 113; - public static final int FREM = 114; - public static final int DREM = 115; - public static final int INEG = 116; - public static final int LNEG = 117; - public static final int FNEG = 118; - public static final int DNEG = 119; - public static final int ISHL = 120; - public static final int LSHL = 121; - public static final int ISHR = 122; - public static final int LSHR = 123; - public static final int IUSHR = 124; - public static final int LUSHR = 125; - public static final int IAND = 126; - public static final int LAND = 127; - public static final int IOR = 128; - public static final int LOR = 129; - public static final int IXOR = 130; - public static final int LXOR = 131; - public static final int IINC = 132; - public static final int I2L = 133; - public static final int I2F = 134; - public static final int I2D = 135; - public static final int L2I = 136; - public static final int L2F = 137; - public static final int L2D = 138; - public static final int F2I = 139; - public static final int F2L = 140; - public static final int F2D = 141; - public static final int D2I = 142; - public static final int D2L = 143; - public static final int D2F = 144; - public static final int INT2BYTE = 145; - public static final int INT2CHAR = 146; - public static final int INT2SHORT = 147; - public static final int LCMP = 148; - public static final int FCMPL = 149; - public static final int FCMPG = 150; - public static final int DCMPL = 151; - public static final int DCMPG = 152; - public static final int IFEQ = 153; - public static final int IFNE = 154; - public static final int IFLT = 155; - public static final int IFGE = 156; - public static final int IFGT = 157; - public static final int IFLE = 158; - public static final int IF_ICMPEQ = 159; - public static final int IF_ICMPNE = 160; - public static final int IF_ICMPLT = 161; - public static final int IF_ICMPGE = 162; - public static final int IF_ICMPGT = 163; - public static final int IF_ICMPLE = 164; - public static final int IF_ACMPEQ = 165; - public static final int IF_ACMPNE = 166; - public static final int GOTO = 167; - public static final int JSR = 168; - public static final int RET = 169; - public static final int TABLESWITCH = 170; - public static final int LOOKUPSWITCH = 171; - public static final int IRETURN = 172; - public static final int LRETURN = 173; - public static final int FRETURN = 174; - public static final int DRETURN = 175; - public static final int ARETURN = 176; - public static final int RETURN = 177; - public static final int GETSTATIC = 178; - public static final int PUTSTATIC = 179; - public static final int GETFIELD = 180; - public static final int PUTFIELD = 181; - public static final int INVOKEVIRTUAL = 182; - public static final int INVOKENONVIRTUAL = 183; - public static final int INVOKESTATIC = 184; - public static final int INVOKEINTERFACE = 185; - public static final int INVOKEDYNAMIC = 186; - public static final int NEW = 187; - public static final int NEWARRAY = 188; - public static final int ANEWARRAY = 189; - public static final int ARRAYLENGTH = 190; - public static final int ATHROW = 191; - public static final int CHECKCAST = 192; - public static final int INSTANCEOF = 193; - public static final int MONITORENTER = 194; - public static final int MONITOREXIT = 195; - public static final int WIDE = 196; - public static final int MULTIANEWARRAY = 197; - public static final int IFNULL = 198; - public static final int IFNONNULL = 199; - public static final int GOTO_W = 200; - public static final int JSR_W = 201; - public static final int BREAKPOINT = 202; - /* - * public static final int = 203; public static final int = 204; public static final int = 205; public static final int = - * 206; public static final int = 207; public static final int = 208; - */ - public static final int RET_W = 209; - /* - * public static final int = 210; public static final int = 211; public static final int = 212; public static final int = - * 213; public static final int = 214; public static final int = 215; public static final int = 216; public static final - * int = 217; public static final int = 218; public static final int = 219; public static final int = 220; public static - * final int = 221; public static final int = 222; public static final int = 223; public static final int = 224; public - * static final int = 225; public static final int = 226; public static final int = 227; public static final int = 228; - * public static final int = 229; public static final int = 230; public static final int = 231; public static final int = - * 232; public static final int = 233; public static final int = 234; public static final int = 235; public static final - * int = 236; public static final int = 237; public static final int = 238; public static final int = 239; public static - * final int = 240; public static final int = 241; public static final int = 242; public static final int = 243; public - * static final int = 244; public static final int = 245; public static final int = 246; public static final int = 247; - * public static final int = 248; public static final int = 249; public static final int = 250; public static final int = - * 251; public static final int = 252; public static final int = 253; public static final int = 254; public static final - * int = 255; - */ - - private int icount; - private Instruction instructions[]; - - /** Constructor---does nothing. */ - ByteCode() { - } - - /** - * Main.v() entry point for disassembling bytecode into Instructions; this method converts the given single bytecode into - * an Instruction (with label set to index). - * - * @param bc - * complete array of bytecode. - * @param index - * offset within bc of the bytecode to parse. - * @return a single Instruction object; note that Instruction references will not be filled in (use build to post-process). - * @see ClassFile#parseMethod - * @see Instruction#parse - * @see ByteCode#build - */ - public Instruction disassemble_bytecode(byte bc[], int index) { - // returns a string representing the disassembly of the - // bytecode at the given index - byte b = bc[index]; - boolean isWide = false; - Instruction i; - int x; - - x = (b) & 0xff; - - switch (x) { - case BIPUSH: - i = new Instruction_Bipush(); - break; - case SIPUSH: - i = new Instruction_Sipush(); - break; - case LDC1: - i = new Instruction_Ldc1(); - break; - case LDC2: - i = new Instruction_Ldc2(); - break; - case LDC2W: - i = new Instruction_Ldc2w(); - break; - case ACONST_NULL: - i = new Instruction_Aconst_null(); - break; - case ICONST_M1: - i = new Instruction_Iconst_m1(); - break; - case ICONST_0: - i = new Instruction_Iconst_0(); - break; - case ICONST_1: - i = new Instruction_Iconst_1(); - break; - case ICONST_2: - i = new Instruction_Iconst_2(); - break; - case ICONST_3: - i = new Instruction_Iconst_3(); - break; - case ICONST_4: - i = new Instruction_Iconst_4(); - break; - case ICONST_5: - i = new Instruction_Iconst_5(); - break; - case LCONST_0: - i = new Instruction_Lconst_0(); - break; - case LCONST_1: - i = new Instruction_Lconst_1(); - break; - case FCONST_0: - i = new Instruction_Fconst_0(); - break; - case FCONST_1: - i = new Instruction_Fconst_1(); - break; - case FCONST_2: - i = new Instruction_Fconst_2(); - break; - case DCONST_0: - i = new Instruction_Dconst_0(); - break; - case DCONST_1: - i = new Instruction_Dconst_1(); - break; - case ILOAD: - i = new Instruction_Iload(); - break; - case ILOAD_0: - i = new Instruction_Iload_0(); - break; - case ILOAD_1: - i = new Instruction_Iload_1(); - break; - case ILOAD_2: - i = new Instruction_Iload_2(); - break; - case ILOAD_3: - i = new Instruction_Iload_3(); - break; - case LLOAD: - i = new Instruction_Lload(); - break; - case LLOAD_0: - i = new Instruction_Lload_0(); - break; - case LLOAD_1: - i = new Instruction_Lload_1(); - break; - case LLOAD_2: - i = new Instruction_Lload_2(); - break; - case LLOAD_3: - i = new Instruction_Lload_3(); - break; - case FLOAD: - i = new Instruction_Fload(); - break; - case FLOAD_0: - i = new Instruction_Fload_0(); - break; - case FLOAD_1: - i = new Instruction_Fload_1(); - break; - case FLOAD_2: - i = new Instruction_Fload_2(); - break; - case FLOAD_3: - i = new Instruction_Fload_3(); - break; - case DLOAD: - i = new Instruction_Dload(); - break; - case DLOAD_0: - i = new Instruction_Dload_0(); - break; - case DLOAD_1: - i = new Instruction_Dload_1(); - break; - case DLOAD_2: - i = new Instruction_Dload_2(); - break; - case DLOAD_3: - i = new Instruction_Dload_3(); - break; - case ALOAD: - i = new Instruction_Aload(); - break; - case ALOAD_0: - i = new Instruction_Aload_0(); - break; - case ALOAD_1: - i = new Instruction_Aload_1(); - break; - case ALOAD_2: - i = new Instruction_Aload_2(); - break; - case ALOAD_3: - i = new Instruction_Aload_3(); - break; - case ISTORE: - i = new Instruction_Istore(); - break; - case ISTORE_0: - i = new Instruction_Istore_0(); - break; - case ISTORE_1: - i = new Instruction_Istore_1(); - break; - case ISTORE_2: - i = new Instruction_Istore_2(); - break; - case ISTORE_3: - i = new Instruction_Istore_3(); - break; - case LSTORE: - i = new Instruction_Lstore(); - break; - case LSTORE_0: - i = new Instruction_Lstore_0(); - break; - case LSTORE_1: - i = new Instruction_Lstore_1(); - break; - case LSTORE_2: - i = new Instruction_Lstore_2(); - break; - case LSTORE_3: - i = new Instruction_Lstore_3(); - break; - case FSTORE: - i = new Instruction_Fstore(); - break; - case FSTORE_0: - i = new Instruction_Fstore_0(); - break; - case FSTORE_1: - i = new Instruction_Fstore_1(); - break; - case FSTORE_2: - i = new Instruction_Fstore_2(); - break; - case FSTORE_3: - i = new Instruction_Fstore_3(); - break; - case DSTORE: - i = new Instruction_Dstore(); - break; - case DSTORE_0: - i = new Instruction_Dstore_0(); - break; - case DSTORE_1: - i = new Instruction_Dstore_1(); - break; - case DSTORE_2: - i = new Instruction_Dstore_2(); - break; - case DSTORE_3: - i = new Instruction_Dstore_3(); - break; - case ASTORE: - i = new Instruction_Astore(); - break; - case ASTORE_0: - i = new Instruction_Astore_0(); - break; - case ASTORE_1: - i = new Instruction_Astore_1(); - break; - case ASTORE_2: - i = new Instruction_Astore_2(); - break; - case ASTORE_3: - i = new Instruction_Astore_3(); - break; - case IINC: - i = new Instruction_Iinc(); - break; - case WIDE: { - int nextIndex = (bc[index + 1]) & 0xff; - - switch (nextIndex) { - case ILOAD: - i = new Instruction_Iload(); - break; - - case FLOAD: - i = new Instruction_Fload(); - break; - - case ALOAD: - i = new Instruction_Aload(); - break; - - case LLOAD: - i = new Instruction_Lload(); - break; - - case DLOAD: - i = new Instruction_Dload(); - break; - - case ISTORE: - i = new Instruction_Istore(); - break; - - case FSTORE: - i = new Instruction_Fstore(); - break; - - case ASTORE: - i = new Instruction_Astore(); - break; - - case LSTORE: - i = new Instruction_Lstore(); - break; - - case DSTORE: - i = new Instruction_Dstore(); - break; - - case RET: - i = new Instruction_Ret(); - break; - - case IINC: - i = new Instruction_Iinc(); - break; - - default: - throw new RuntimeException("invalid wide instruction: " + nextIndex); - } - - ((Instruction_bytevar) i).isWide = true; - isWide = true; - } - - break; - - case NEWARRAY: - i = new Instruction_Newarray(); - break; - case ANEWARRAY: - i = new Instruction_Anewarray(); - break; - case MULTIANEWARRAY: - i = new Instruction_Multianewarray(); - break; - case ARRAYLENGTH: - i = new Instruction_Arraylength(); - break; - case IALOAD: - i = new Instruction_Iaload(); - break; - case LALOAD: - i = new Instruction_Laload(); - break; - case FALOAD: - i = new Instruction_Faload(); - break; - case DALOAD: - i = new Instruction_Daload(); - break; - case AALOAD: - i = new Instruction_Aaload(); - break; - case BALOAD: - i = new Instruction_Baload(); - break; - case CALOAD: - i = new Instruction_Caload(); - break; - case SALOAD: - i = new Instruction_Saload(); - break; - case IASTORE: - i = new Instruction_Iastore(); - break; - case LASTORE: - i = new Instruction_Lastore(); - break; - case FASTORE: - i = new Instruction_Fastore(); - break; - case DASTORE: - i = new Instruction_Dastore(); - break; - case AASTORE: - i = new Instruction_Aastore(); - break; - case BASTORE: - i = new Instruction_Bastore(); - break; - case CASTORE: - i = new Instruction_Castore(); - break; - case SASTORE: - i = new Instruction_Sastore(); - break; - case NOP: - i = new Instruction_Nop(); - break; - case POP: - i = new Instruction_Pop(); - break; - case POP2: - i = new Instruction_Pop2(); - break; - case DUP: - i = new Instruction_Dup(); - break; - case DUP2: - i = new Instruction_Dup2(); - break; - case DUP_X1: - i = new Instruction_Dup_x1(); - break; - case DUP_X2: - i = new Instruction_Dup_x2(); - break; - case DUP2_X1: - i = new Instruction_Dup2_x1(); - break; - case DUP2_X2: - i = new Instruction_Dup2_x2(); - break; - case SWAP: - i = new Instruction_Swap(); - break; - case IADD: - i = new Instruction_Iadd(); - break; - case LADD: - i = new Instruction_Ladd(); - break; - case FADD: - i = new Instruction_Fadd(); - break; - case DADD: - i = new Instruction_Dadd(); - break; - case ISUB: - i = new Instruction_Isub(); - break; - case LSUB: - i = new Instruction_Lsub(); - break; - case FSUB: - i = new Instruction_Fsub(); - break; - case DSUB: - i = new Instruction_Dsub(); - break; - case IMUL: - i = new Instruction_Imul(); - break; - case LMUL: - i = new Instruction_Lmul(); - break; - case FMUL: - i = new Instruction_Fmul(); - break; - case DMUL: - i = new Instruction_Dmul(); - break; - case IDIV: - i = new Instruction_Idiv(); - break; - case LDIV: - i = new Instruction_Ldiv(); - break; - case FDIV: - i = new Instruction_Fdiv(); - break; - case DDIV: - i = new Instruction_Ddiv(); - break; - case IREM: - i = new Instruction_Irem(); - break; - case LREM: - i = new Instruction_Lrem(); - break; - case FREM: - i = new Instruction_Frem(); - break; - case DREM: - i = new Instruction_Drem(); - break; - case INEG: - i = new Instruction_Ineg(); - break; - case LNEG: - i = new Instruction_Lneg(); - break; - case FNEG: - i = new Instruction_Fneg(); - break; - case DNEG: - i = new Instruction_Dneg(); - break; - case ISHL: - i = new Instruction_Ishl(); - break; - case ISHR: - i = new Instruction_Ishr(); - break; - case IUSHR: - i = new Instruction_Iushr(); - break; - case LSHL: - i = new Instruction_Lshl(); - break; - case LSHR: - i = new Instruction_Lshr(); - break; - case LUSHR: - i = new Instruction_Lushr(); - break; - case IAND: - i = new Instruction_Iand(); - break; - case LAND: - i = new Instruction_Land(); - break; - case IOR: - i = new Instruction_Ior(); - break; - case LOR: - i = new Instruction_Lor(); - break; - case IXOR: - i = new Instruction_Ixor(); - break; - case LXOR: - i = new Instruction_Lxor(); - break; - case I2L: - i = new Instruction_I2l(); - break; - case I2F: - i = new Instruction_I2f(); - break; - case I2D: - i = new Instruction_I2d(); - break; - case L2I: - i = new Instruction_L2i(); - break; - case L2F: - i = new Instruction_L2f(); - break; - case L2D: - i = new Instruction_L2d(); - break; - case F2I: - i = new Instruction_F2i(); - break; - case F2L: - i = new Instruction_F2l(); - break; - case F2D: - i = new Instruction_F2d(); - break; - case D2I: - i = new Instruction_D2i(); - break; - case D2L: - i = new Instruction_D2l(); - break; - case D2F: - i = new Instruction_D2f(); - break; - case INT2BYTE: - i = new Instruction_Int2byte(); - break; - case INT2CHAR: - i = new Instruction_Int2char(); - break; - case INT2SHORT: - i = new Instruction_Int2short(); - break; - case IFEQ: - i = new Instruction_Ifeq(); - break; - case IFNULL: - i = new Instruction_Ifnull(); - break; - case IFLT: - i = new Instruction_Iflt(); - break; - case IFLE: - i = new Instruction_Ifle(); - break; - case IFNE: - i = new Instruction_Ifne(); - break; - case IFNONNULL: - i = new Instruction_Ifnonnull(); - break; - case IFGT: - i = new Instruction_Ifgt(); - break; - case IFGE: - i = new Instruction_Ifge(); - break; - case IF_ICMPEQ: - i = new Instruction_If_icmpeq(); - break; - case IF_ICMPLT: - i = new Instruction_If_icmplt(); - break; - case IF_ICMPLE: - i = new Instruction_If_icmple(); - break; - case IF_ICMPNE: - i = new Instruction_If_icmpne(); - break; - case IF_ICMPGT: - i = new Instruction_If_icmpgt(); - break; - case IF_ICMPGE: - i = new Instruction_If_icmpge(); - break; - case LCMP: - i = new Instruction_Lcmp(); - break; - case FCMPL: - i = new Instruction_Fcmpl(); - break; - case FCMPG: - i = new Instruction_Fcmpg(); - break; - case DCMPL: - i = new Instruction_Dcmpl(); - break; - case DCMPG: - i = new Instruction_Dcmpg(); - break; - case IF_ACMPEQ: - i = new Instruction_If_acmpeq(); - break; - case IF_ACMPNE: - i = new Instruction_If_acmpne(); - break; - case GOTO: - i = new Instruction_Goto(); - break; - case GOTO_W: - i = new Instruction_Goto_w(); - break; - case JSR: - i = new Instruction_Jsr(); - break; - case JSR_W: - i = new Instruction_Jsr_w(); - break; - case RET: - i = new Instruction_Ret(); - break; - case RET_W: - i = new Instruction_Ret_w(); - break; - case RETURN: - i = new Instruction_Return(); - break; - case IRETURN: - i = new Instruction_Ireturn(); - break; - case LRETURN: - i = new Instruction_Lreturn(); - break; - case FRETURN: - i = new Instruction_Freturn(); - break; - case DRETURN: - i = new Instruction_Dreturn(); - break; - case ARETURN: - i = new Instruction_Areturn(); - break; - case BREAKPOINT: - i = new Instruction_Breakpoint(); - break; - case TABLESWITCH: - i = (Instruction) new Instruction_Tableswitch(); - break; - case LOOKUPSWITCH: - i = (Instruction) new Instruction_Lookupswitch(); - break; - case PUTFIELD: - i = (Instruction) new Instruction_Putfield(); - break; - case GETFIELD: - i = (Instruction) new Instruction_Getfield(); - break; - case PUTSTATIC: - i = (Instruction) new Instruction_Putstatic(); - break; - case GETSTATIC: - i = (Instruction) new Instruction_Getstatic(); - break; - case INVOKEVIRTUAL: - i = (Instruction) new Instruction_Invokevirtual(); - break; - case INVOKENONVIRTUAL: - i = (Instruction) new Instruction_Invokenonvirtual(); - break; - case INVOKESTATIC: - i = (Instruction) new Instruction_Invokestatic(); - break; - case INVOKEINTERFACE: - i = (Instruction) new Instruction_Invokeinterface(); - break; - case INVOKEDYNAMIC: - i = (Instruction) new Instruction_Invokedynamic(); - break; - case ATHROW: - i = (Instruction) new Instruction_Athrow(); - break; - case NEW: - i = (Instruction) new Instruction_New(); - break; - case CHECKCAST: - i = (Instruction) new Instruction_Checkcast(); - break; - case INSTANCEOF: - i = (Instruction) new Instruction_Instanceof(); - break; - case MONITORENTER: - i = (Instruction) new Instruction_Monitorenter(); - break; - case MONITOREXIT: - i = (Instruction) new Instruction_Monitorexit(); - break; - default: - // int j; - // j = ((int)b)&0xff; - // logger.debug("Unknown instruction op=" + j + - // " at offset " + index); - i = (Instruction) new Instruction_Unknown(b); - break; - } - - i.label = index; - - if (isWide) { - i.parse(bc, index + 2); - } else { - i.parse(bc, index + 1); - } - - return i; - } - - /** - * Given a list of Instructions, this method converts all offsets to pointers. - * - * @param insts - * list of instructions; labels must be accurate. - * @see Instruction#offsetToPointer - * @see ClassFile#parseMethod - * @see ClassFile#relabel - */ - public void build(Instruction insts) { - Instruction i; - i = insts; - // find out how many instructions that is - icount = 0; - while (i != null) { - icount++; - i = i.next; - } - // build array of instructions - if (icount > 0) { - instructions = new Instruction[icount]; - // and put the instructions into the array - // identify targets of branch instructions. Why build an array - // when we already have a list? In order to be able to locate - // an instruction given its numeric label quickly. - int k; - k = 0; - i = insts; - while (i != null) { - instructions[k] = i; - k++; - i = i.next; - } - - // now convert all offsets to pointers - i = insts; - while (i != null) { - i.offsetToPointer(this); - i = i.next; - } - } - } - - /** - * Displays the code (in the form of Instructions) for the given list of Instructions. - * - * @param inst - * input list of instructions. - * @param constant_pool - * constant pool of the ClassFile object. - * @see ByteCode#showCode(Instruction, int, cp_info) - */ - public static void showCode(Instruction inst, cp_info constant_pool[]) { - showCode(inst, 0, constant_pool); - } - - /** - * Displays the code (in the form of Instructions) for the given list of Instructions. - * - * @param inst - * input list of instructions. - * @param startinst - * index of the label of the instruction at which to begin. - * @param constant_pool - * constant pool of the ClassFile object. - * @see ByteCode#showCode(Instruction, cp_info) - */ - public static void showCode(Instruction inst, int startinst, cp_info constant_pool[]) { - int i; - Instruction j = inst; - String pref; - i = startinst; - while (j != null) { - if (i > 999) { - pref = ""; - } else if (i > 99) { - pref = " "; - } else if (i > 9) { - pref = " "; - } else { - pref = " "; - } - logger.debug("" + pref + i + ": "); - logger.debug("" + j.toString(constant_pool)); - i = j.nextOffset(i); - j = j.next; - } - } - - /** - * Locates the Instruction in the list with the given label. - * - * @param index - * label of desired instruction - * @return Instruction object wiht that label, or null if not found. - */ - // locates the instruction with an index value of the given - public Instruction locateInst(int index) { - return locateInstr(index, 0, icount); - } - - /** Performs a binary search of the instructions[] array. */ - private Instruction locateInstr(int index, int mini, int maxi) { - int mid = (maxi - mini) / 2 + mini; - - if (mini > maxi) { - return null; - } - if (instructions[mid].label == index) { - return instructions[mid]; - } - if (instructions[mid].label > index) { - return locateInstr(index, mini, mid - 1); - } - return locateInstr(index, mid + 1, maxi); - } - - /** Returns true if the bytecode is a local store */ - public static boolean isLocalStore(int bc) { - switch (bc) { - case ByteCode.ISTORE: - case ByteCode.FSTORE: - case ByteCode.ASTORE: - case ByteCode.LSTORE: - case ByteCode.DSTORE: - case ByteCode.ISTORE_0: - case ByteCode.ISTORE_1: - case ByteCode.ISTORE_2: - case ByteCode.ISTORE_3: - case ByteCode.FSTORE_0: - case ByteCode.FSTORE_1: - case ByteCode.FSTORE_2: - case ByteCode.FSTORE_3: - case ByteCode.ASTORE_0: - case ByteCode.ASTORE_1: - case ByteCode.ASTORE_2: - case ByteCode.ASTORE_3: - case ByteCode.LSTORE_0: - case ByteCode.LSTORE_1: - case ByteCode.LSTORE_2: - case ByteCode.LSTORE_3: - case ByteCode.DSTORE_0: - case ByteCode.DSTORE_1: - case ByteCode.DSTORE_2: - case ByteCode.DSTORE_3: - return true; - default: - return false; - } - } -} diff --git a/src/main/java/soot/coffi/CFG.java b/src/main/java/soot/coffi/CFG.java deleted file mode 100644 index 49f3a287919..00000000000 --- a/src/main/java/soot/coffi/CFG.java +++ /dev/null @@ -1,4137 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.Set; -import java.util.Vector; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import soot.ArrayType; -import soot.BooleanType; -import soot.ByteType; -import soot.CharType; -import soot.DoubleType; -import soot.FloatType; -import soot.IntType; -import soot.Local; -import soot.LongType; -import soot.Modifier; -import soot.PatchingChain; -import soot.RefType; -import soot.Scene; -import soot.ShortType; -import soot.SootClass; -import soot.SootFieldRef; -import soot.SootMethod; -import soot.SootMethodRef; -import soot.StmtAddressType; -import soot.Trap; -import soot.Type; -import soot.Unit; -import soot.UnknownType; -import soot.Value; -import soot.VoidType; -import soot.jimple.ArrayRef; -import soot.jimple.ClassConstant; -import soot.jimple.ConditionExpr; -import soot.jimple.DoubleConstant; -import soot.jimple.Expr; -import soot.jimple.FloatConstant; -import soot.jimple.GotoStmt; -import soot.jimple.IdentityStmt; -import soot.jimple.IfStmt; -import soot.jimple.InstanceFieldRef; -import soot.jimple.IntConstant; -import soot.jimple.Jimple; -import soot.jimple.JimpleBody; -import soot.jimple.LongConstant; -import soot.jimple.LookupSwitchStmt; -import soot.jimple.NullConstant; -import soot.jimple.StaticFieldRef; -import soot.jimple.Stmt; -import soot.jimple.StringConstant; -import soot.jimple.TableSwitchStmt; -import soot.options.Options; -import soot.tagkit.BytecodeOffsetTag; -import soot.tagkit.LineNumberTag; -import soot.tagkit.Tag; -import soot.util.ArraySet; -import soot.util.Chain; - -/** - * A Control Flow Graph. - * - * @author Clark Verbrugge - */ -public class CFG { - private static final Logger logger = LoggerFactory.getLogger(CFG.class); - - /** - * Method for which this is a control flow graph. - * - * @see method_info - */ - private method_info method; - /** - * Ordered list of BasicBlocks comprising the code of this CFG. - */ - BasicBlock cfg; - - Chain units; - JimpleBody listBody; - - Map instructionToFirstStmt; - Map instructionToLastStmt; - SootMethod jmethod; - Scene cm; - - Instruction firstInstruction; - Instruction lastInstruction; - - private Instruction sentinel; - private Hashtable h2bb, t2bb; - - /** - * Constructs a new control flow graph for the given method. - * - * @param m - * the method in question. - * @see method_info - */ - public CFG(method_info m) { - this.method = m; - - this.sentinel = new Instruction_Nop(); - this.sentinel.next = m.instructions; - m.instructions.prev = this.sentinel; - - // printInstructions(); - // printExceptionTable(); - - eliminateJsrRets(); - - // printInstructions(); - // printExceptionTable(); - - buildBBCFG(); - - // printBBs(); - // printBBCFGSucc(); - - m.cfg = this; - - if (cfg != null) { - cfg.beginCode = true; - firstInstruction = cfg.head; - } else { - firstInstruction = null; - } - - // calculate complexity metrics - if (soot.jbco.Main.metrics) { - complexity(); - } - } - - public static HashMap methodsToVEM = new HashMap(); - - private void complexity() { - // ignore all non-app classes - if (!method.jmethod.getDeclaringClass().isApplicationClass()) { - return; - } - - BasicBlock b = this.cfg; - HashMap block2exc = new HashMap(); - int tmp, nodes = 0, edges = 0, highest = 0; - - while (b != null) { - tmp = 0; - for (exception_table_entry element : method.code_attr.exception_table) { - Instruction start = element.start_inst; - Instruction end = element.start_inst; - if ((start.label >= b.head.label && start.label <= b.tail.label) - || (end.label > b.head.label && (b.tail.next == null || end.label <= b.tail.next.label))) { - tmp++; - } - } - block2exc.put(b, new Integer(tmp)); - b = b.next; - } - - b = this.cfg; - while (b != null) { - nodes++; - tmp = b.succ.size() + block2exc.get(b).intValue(); - - // exceptions are not counted in succs and preds so we need to do so manually - int deg = b.pred.size() + tmp + (b.beginException ? 1 : 0); - if (deg > highest) { - highest = deg; - } - edges += tmp; - b = b.next; - } - methodsToVEM.put(method.jmethod, new int[] { nodes, edges, highest }); - } - - // Constructs the actual control flow graph. Assumes the hash table - // currently associates leaders with BasicBlocks, this function - // builds the next[] and prev[] pointer arrays. - private void buildBBCFG() { - Object branches[]; - Code_attribute ca = method.locate_code_attribute(); - - { - h2bb = new Hashtable(100, 25); - t2bb = new Hashtable(100, 25); - - Instruction insn = this.sentinel.next; - BasicBlock blast = null; - if (insn != null) { - Instruction tail = buildBasicBlock(insn); - cfg = new BasicBlock(insn, tail); - h2bb.put(insn, cfg); - t2bb.put(tail, cfg); - insn = tail.next; - blast = cfg; - } - - while (insn != null) { - Instruction tail = buildBasicBlock(insn); - BasicBlock block = new BasicBlock(insn, tail); - blast.next = block; - blast = block; - h2bb.put(insn, block); - t2bb.put(tail, block); - insn = tail.next; - } - } - - BasicBlock block = cfg; - - while (block != null) { - Instruction insn = block.tail; - - if (insn.branches) { - if (insn instanceof Instruction_Athrow) { - // see how many targets it can reach. Note that this is a - // subset of the exception_table. - HashSet ethandlers = new HashSet(); - - // not quite a subset---could also be that control - // exits this method, so start icount at 1 - for (int i = 0; i < ca.exception_table_length; i++) { - exception_table_entry etentry = ca.exception_table[i]; - - if (insn.label >= etentry.start_inst.label - && (etentry.end_inst == null || insn.label < etentry.end_inst.label)) { - ethandlers.add(etentry.handler_inst); - } - } - - branches = ethandlers.toArray(); - } else { - branches = insn.branchpoints(insn.next); - } - - if (branches != null) { - block.succ.ensureCapacity(block.succ.size() + branches.length); - - for (Object element : branches) { - if (element != null) { - BasicBlock bb = h2bb.get(element); - - if (bb == null) { - logger.warn("target of a branch is null"); - logger.debug("" + insn); - } else { - block.succ.addElement(bb); - bb.pred.addElement(block); - } - } - } - } - } else if (block.next != null) { // BB ended not with a branch, so just go to next - block.succ.addElement(block.next); - block.next.pred.addElement(block); - } - block = block.next; - } - - // One final step, run through exception handlers and mark which - // basic blocks begin their code - for (int i = 0; i < ca.exception_table_length; i++) { - BasicBlock bb = h2bb.get(ca.exception_table[i].handler_inst); - if (bb == null) { - logger.warn("No basic block found for" + " start of exception handler code."); - } else { - bb.beginException = true; - ca.exception_table[i].b = bb; - } - } - } - - /* - * given the list of instructions head, this pulls off the front basic block, terminates it with a null, and returns the - * next instruction after. - */ - private static Instruction buildBasicBlock(Instruction head) { - Instruction insn, next; - insn = head; - next = insn.next; - - if (next == null) { - return insn; - } - - do { - if (insn.branches || next.labelled) { - break; - } else { - insn = next; - next = insn.next; - } - } while (next != null); - - return insn; - } - - /* We only handle simple cases. */ - Map jsr2astore = new HashMap(); - Map astore2ret = new HashMap(); - - LinkedList jsrorder = new LinkedList(); - - /* - * Eliminate subroutines ( JSR/RET instructions ) by inlining the routine bodies. - */ - private boolean eliminateJsrRets() { - Instruction insn = this.sentinel; - - // find the last instruction, for copying blocks. - while (insn.next != null) { - insn = insn.next; - } - this.lastInstruction = insn; - - HashMap todoBlocks = new HashMap(); - todoBlocks.put(this.sentinel.next, this.lastInstruction); - LinkedList todoList = new LinkedList(); - todoList.add(this.sentinel.next); - - while (!todoList.isEmpty()) { - Instruction firstInsn = todoList.removeFirst(); - Instruction lastInsn = todoBlocks.get(firstInsn); - - jsrorder.clear(); - jsr2astore.clear(); - astore2ret.clear(); - - if (findOutmostJsrs(firstInsn, lastInsn)) { - HashMap newblocks = inliningJsrTargets(); - todoBlocks.putAll(newblocks); - todoList.addAll(newblocks.keySet()); - } - } - - /* patch exception table and others. */ - { - method.instructions = this.sentinel.next; - - adjustExceptionTable(); - adjustLineNumberTable(); - adjustBranchTargets(); - } - - // we should prune the code and exception table here. - // remove any exception handler whose region is in a jsr/ret block. - // pruneExceptionTable(); - - return true; - } - - // find outmost jsr/ret pairs in a code area, all information is - // saved in jsr2astore, and astore2ret - // start : start instruction, inclusively. - // end : the last instruction, inclusively. - // return the last instruction encounted ( before end ) - // the caller cleans jsr2astore, astore2ret - private boolean findOutmostJsrs(Instruction start, Instruction end) { - // use to put innerJsrs. - HashSet innerJsrs = new HashSet(); - boolean unusual = false; - - Instruction insn = start; - do { - if (insn instanceof Instruction_Jsr || insn instanceof Instruction_Jsr_w) { - if (innerJsrs.contains(insn)) { - // skip it - insn = insn.next; - continue; - } - - Instruction astore = ((Instruction_branch) insn).target; - if (!(astore instanceof Interface_Astore)) { - unusual = true; - break; - } - - Instruction ret = findMatchingRet(astore, insn, innerJsrs); - - /* - * if (ret == null) { unusual = true; break; } - */ - - jsrorder.addLast(insn); - jsr2astore.put(insn, astore); - astore2ret.put(astore, ret); - } - - insn = insn.next; - - } while (insn != end.next); - - if (unusual) { - logger.debug("Sorry, I cannot handle this method."); - return false; - } - - return true; - } - - private Instruction findMatchingRet(Instruction astore, Instruction jsr, HashSet innerJsrs) { - int astorenum = ((Interface_Astore) astore).getLocalNumber(); - - Instruction insn = astore.next; - while (insn != null) { - if (insn instanceof Instruction_Ret || insn instanceof Instruction_Ret_w) { - int retnum = ((Interface_OneIntArg) insn).getIntArg(); - if (astorenum == retnum) { - return insn; - } - } else if (insn instanceof Instruction_Jsr || insn instanceof Instruction_Jsr_w) { - /* adjust the jsr inlining order. */ - innerJsrs.add(insn); - } - - insn = insn.next; - } - - return null; - } - - // make copies of jsr/ret blocks - // return new blocks - private HashMap inliningJsrTargets() { - /* - * for (int i=0, n=jsrorder.size(); i newblocks = new HashMap(); - - while (!jsrorder.isEmpty()) { - Instruction jsr = jsrorder.removeFirst(); - Instruction astore = jsr2astore.get(jsr); - - Instruction ret = astore2ret.get(astore); - - // make a copy of the code, append to the last instruction. - Instruction newhead = makeCopyOf(astore, ret, jsr.next); - - // jsr is replaced by goto newhead - // astore has been removed - // ret is replaced by goto jsr.next - Instruction_Goto togo = new Instruction_Goto(); - togo.target = newhead; - newhead.labelled = true; - togo.label = jsr.label; - togo.labelled = jsr.labelled; - togo.prev = jsr.prev; - togo.next = jsr.next; - togo.prev.next = togo; - togo.next.prev = togo; - - replacedInsns.put(jsr, togo); - - // just quick hack - if (ret != null) { - newblocks.put(newhead, this.lastInstruction); - } - } - - return newblocks; - } - - /* - * make a copy of code between from and to exclusively, fixup targets of branch instructions in the code. - */ - private Instruction makeCopyOf(Instruction astore, Instruction ret, Instruction target) { - // do a quick hacker for ret == null - if (ret == null) { - return astore.next; - } - - Instruction last = this.lastInstruction; - Instruction headbefore = last; - - int curlabel = this.lastInstruction.label; - - // mapping from original instructions to new instructions. - HashMap insnmap = new HashMap(); - Instruction insn = astore.next; - - while (insn != ret && insn != null) { - try { - Instruction newone = (Instruction) insn.clone(); - - newone.label = ++curlabel; - newone.prev = last; - last.next = newone; - last = newone; - - insnmap.put(insn, newone); - } catch (CloneNotSupportedException e) { - logger.debug("Error !"); - } - insn = insn.next; - } - - // replace ret by a goto - Instruction_Goto togo = new Instruction_Goto(); - togo.target = target; - target.labelled = true; - togo.label = ++curlabel; - last.next = togo; - togo.prev = last; - last = togo; - - this.lastInstruction = last; - - // The ret instruction is removed, - insnmap.put(astore, headbefore.next); - insnmap.put(ret, togo); - - // fixup targets in new instruction (only in the scope of - // new instructions). - // do not forget set target labelled as TRUE - insn = headbefore.next; - while (insn != last) { - if (insn instanceof Instruction_branch) { - Instruction oldtgt = ((Instruction_branch) insn).target; - Instruction newtgt = insnmap.get(oldtgt); - if (newtgt != null) { - ((Instruction_branch) insn).target = newtgt; - newtgt.labelled = true; - } - } else if (insn instanceof Instruction_Lookupswitch) { - Instruction_Lookupswitch switchinsn = (Instruction_Lookupswitch) insn; - - Instruction newdefault = insnmap.get(switchinsn.default_inst); - if (newdefault != null) { - switchinsn.default_inst = newdefault; - newdefault.labelled = true; - } - - for (int i = 0; i < switchinsn.match_insts.length; i++) { - Instruction newtgt = insnmap.get(switchinsn.match_insts[i]); - if (newtgt != null) { - switchinsn.match_insts[i] = newtgt; - newtgt.labelled = true; - } - } - } else if (insn instanceof Instruction_Tableswitch) { - Instruction_Tableswitch switchinsn = (Instruction_Tableswitch) insn; - - Instruction newdefault = insnmap.get(switchinsn.default_inst); - if (newdefault != null) { - switchinsn.default_inst = newdefault; - newdefault.labelled = true; - } - - for (int i = 0; i < switchinsn.jump_insts.length; i++) { - Instruction newtgt = insnmap.get(switchinsn.jump_insts[i]); - if (newtgt != null) { - switchinsn.jump_insts[i] = newtgt; - newtgt.labelled = true; - } - } - } - - insn = insn.next; - } - - // do we need to copy a new exception table entry? - // new exception table has new exception range, - // and the new exception handler. - { - Code_attribute ca = method.locate_code_attribute(); - - LinkedList newentries = new LinkedList(); - - int orig_start_of_subr = astore.next.originalIndex; // inclusive - int orig_end_of_subr = ret.originalIndex; // again, inclusive - - for (int i = 0; i < ca.exception_table_length; i++) { - exception_table_entry etentry = ca.exception_table[i]; - - int orig_start_of_trap = etentry.start_pc; // inclusive - int orig_end_of_trap = etentry.end_pc; // exclusive - if (orig_start_of_trap < orig_end_of_subr && orig_end_of_trap > orig_start_of_subr) { - // At least a portion of the cloned subroutine is trapped. - exception_table_entry newone = new exception_table_entry(); - if (orig_start_of_trap <= orig_start_of_subr) { - newone.start_inst = headbefore.next; - } else { - Instruction ins = insnmap.get(etentry.start_inst); - if (ins != null) { - newone.start_inst = insnmap.get(etentry.start_inst); - } else { - newone.start_inst = etentry.start_inst; - } - } - if (orig_end_of_trap > orig_end_of_subr) { - newone.end_inst = null; // Representing the insn after - // the last instruction in the - // subr; we need to fix it if - // we inline another subr. - } else { - newone.end_inst = insnmap.get(etentry.end_inst); - } - - newone.handler_inst = insnmap.get(etentry.handler_inst); - if (newone.handler_inst == null) { - newone.handler_inst = etentry.handler_inst; - } - - // We can leave newone.start_pc == 0 and newone.end_pc == 0. - // since that cannot overlap the range of any other - // subroutines that get inlined later. - - newentries.add(newone); - } - // Finally, fix up the old entry if its protected area - // ran to the end of the method we have just lengthened: - // patch its end marker to be the first - // instruction in the subroutine we've just inlined. - if (etentry.end_inst == null) { - etentry.end_inst = headbefore.next; - } - } - - if (newentries.size() > 0) { - ca.exception_table_length += newentries.size(); - exception_table_entry[] newtable = new exception_table_entry[ca.exception_table_length]; - System.arraycopy(ca.exception_table, 0, newtable, 0, ca.exception_table.length); - for (int i = 0, j = ca.exception_table.length; i < newentries.size(); i++, j++) { - newtable[j] = newentries.get(i); - } - - ca.exception_table = newtable; - } - } - - return headbefore.next; - } - - /* if a jsr/astore/ret is replaced by some other instruction, it will be put on this table. */ - private final Hashtable replacedInsns = new Hashtable(); - /* bootstrap methods table */ - private BootstrapMethods_attribute bootstrap_methods_attribute; - - /* do not forget set the target labelled as TRUE. */ - private void adjustBranchTargets() { - Instruction insn = this.sentinel.next; - while (insn != null) { - if (insn instanceof Instruction_branch) { - Instruction_branch binsn = (Instruction_branch) insn; - Instruction newtgt = replacedInsns.get(binsn.target); - if (newtgt != null) { - binsn.target = newtgt; - newtgt.labelled = true; - } - } else if (insn instanceof Instruction_Lookupswitch) { - Instruction_Lookupswitch switchinsn = (Instruction_Lookupswitch) insn; - - Instruction newdefault = replacedInsns.get(switchinsn.default_inst); - if (newdefault != null) { - switchinsn.default_inst = newdefault; - newdefault.labelled = true; - } - - for (int i = 0; i < switchinsn.npairs; i++) { - Instruction newtgt = replacedInsns.get(switchinsn.match_insts[i]); - if (newtgt != null) { - switchinsn.match_insts[i] = newtgt; - newtgt.labelled = true; - } - } - } else if (insn instanceof Instruction_Tableswitch) { - Instruction_Tableswitch switchinsn = (Instruction_Tableswitch) insn; - - Instruction newdefault = replacedInsns.get(switchinsn.default_inst); - if (newdefault != null) { - switchinsn.default_inst = newdefault; - newdefault.labelled = true; - } - - for (int i = 0; i <= switchinsn.high - switchinsn.low; i++) { - Instruction newtgt = replacedInsns.get(switchinsn.jump_insts[i]); - if (newtgt != null) { - switchinsn.jump_insts[i] = newtgt; - newtgt.labelled = true; - } - } - } - - insn = insn.next; - } - } - - private void adjustExceptionTable() { - Code_attribute codeAttribute = method.locate_code_attribute(); - - for (int i = 0; i < codeAttribute.exception_table_length; i++) { - exception_table_entry entry = codeAttribute.exception_table[i]; - - Instruction oldinsn = entry.start_inst; - Instruction newinsn = replacedInsns.get(oldinsn); - if (newinsn != null) { - entry.start_inst = newinsn; - } - - oldinsn = entry.end_inst; - if (entry.end_inst != null) { - newinsn = replacedInsns.get(oldinsn); - if (newinsn != null) { - entry.end_inst = newinsn; - } - } - - oldinsn = entry.handler_inst; - newinsn = replacedInsns.get(oldinsn); - if (newinsn != null) { - entry.handler_inst = newinsn; - } - } - } - - private void adjustLineNumberTable() { - if (!Options.v().keep_line_number() || (method.code_attr == null)) { - return; - } - - attribute_info[] attributes = method.code_attr.attributes; - - for (attribute_info element : attributes) { - if (element instanceof LineNumberTable_attribute) { - LineNumberTable_attribute lntattr = (LineNumberTable_attribute) element; - for (line_number_table_entry element0 : lntattr.line_number_table) { - Instruction oldinst = element0.start_inst; - Instruction newinst = replacedInsns.get(oldinst); - if (newinst != null) { - element0.start_inst = newinst; - } - } - } - } - } - - /** - * Reconstructs the instruction stream by appending the Instruction lists associated with each basic block. - *

- * Note that this joins up the basic block Instruction lists, and so they will no longer end with null after this. - * - * @return the head of the list of instructions. - */ - public Instruction reconstructInstructions() { - if (cfg != null) { - return cfg.head; - } else { - return null; - } - } - - /** - * Main.v() entry point for converting list of Instructions to Jimple statements; performs flow analysis, constructs Jimple - * statements, and fixes jumps. - * - * @param constant_pool - * constant pool of ClassFile. - * @param this_class - * constant pool index of the CONSTANT_Class_info object for this' class. - * @param bootstrap_methods_attribute - * @return true if all ok, false if there was an error. - * @see Stmt - */ - public boolean jimplify(cp_info constant_pool[], int this_class, BootstrapMethods_attribute bootstrap_methods_attribute, - JimpleBody listBody) { - this.bootstrap_methods_attribute = bootstrap_methods_attribute; - - Chain units = listBody.getUnits(); - - this.listBody = listBody; - this.units = units; - instructionToFirstStmt = new HashMap(); - instructionToLastStmt = new HashMap(); - - jmethod = listBody.getMethod(); - cm = Scene.v(); - - // TypeArray.setClassManager(cm); - // TypeStack.setClassManager(cm); - - Set initialLocals = new ArraySet(); - - List parameterTypes = jmethod.getParameterTypes(); - - // Initialize nameToLocal which is an index*Type->Local map, which is used - // to determine local in bytecode references. - { - Code_attribute ca = method.locate_code_attribute(); - LocalVariableTable_attribute la = ca.findLocalVariableTable(); - LocalVariableTypeTable_attribute lt = ca.findLocalVariableTypeTable(); - - Util.v().bodySetup(la, lt, constant_pool); - - boolean isStatic = Modifier.isStatic(jmethod.getModifiers()); - - int currentLocalIndex = 0; - - // Initialize the 'this' variable - { - if (!isStatic) { - Local local = Util.v().getLocalForParameter(listBody, currentLocalIndex); - currentLocalIndex++; - - units.add(Jimple.v().newIdentityStmt(local, Jimple.v().newThisRef(jmethod.getDeclaringClass().getType()))); - } - } - - // Initialize parameters - { - Iterator typeIt = parameterTypes.iterator(); - int argCount = 0; - - while (typeIt.hasNext()) { - Local local = Util.v().getLocalForParameter(listBody, currentLocalIndex); - Type type = typeIt.next(); - initialLocals.add(local); - - units.add(Jimple.v().newIdentityStmt(local, Jimple.v().newParameterRef(type, argCount))); - - if (type.equals(DoubleType.v()) || type.equals(LongType.v())) { - currentLocalIndex += 2; - } else { - currentLocalIndex += 1; - } - - argCount++; - } - } - - Util.v().resetEasyNames(); - } - - jimplify(constant_pool, this_class); - - return true; - } - - private void buildInsnCFGfromBBCFG() { - BasicBlock block = cfg; - - while (block != null) { - Instruction insn = block.head; - while (insn != block.tail) { - Instruction[] succs = new Instruction[1]; - succs[0] = insn.next; - insn.succs = succs; - insn = insn.next; - } - - { - // The successors are the ones from the basic block. - Vector bsucc = block.succ; - int size = bsucc.size(); - Instruction[] succs = new Instruction[size]; - - for (int i = 0; i < size; i++) { - succs[i] = bsucc.elementAt(i).head; - } - insn.succs = succs; - } - - block = block.next; - } - } - - /** - * Main.v() entry point for converting list of Instructions to Jimple statements; performs flow analysis, constructs Jimple - * statements, and fixes jumps. - * - * @param constant_pool - * constant pool of ClassFile. - * @param this_class - * constant pool index of the CONSTANT_Class_info object for this' class. - * @param clearStacks - * if true semantic stacks will be deleted after the process is complete. - * @return true if all ok, false if there was an error. - * @see CFG#jimplify(cp_info[], int) - * @see Stmt - */ - void jimplify(cp_info constant_pool[], int this_class) { - Code_attribute codeAttribute = method.locate_code_attribute(); - Set handlerInstructions = new ArraySet(); - - Map handlerInstructionToException = new HashMap(); - Map instructionToTypeStack; - Map instructionToPostTypeStack; - - { - // build graph in - buildInsnCFGfromBBCFG(); - - // Put in successors due to exception handlers - { - for (int i = 0; i < codeAttribute.exception_table_length; i++) { - Instruction startIns = codeAttribute.exception_table[i].start_inst; - Instruction endIns = codeAttribute.exception_table[i].end_inst; - Instruction handlerIns = codeAttribute.exception_table[i].handler_inst; - - handlerInstructions.add(handlerIns); - - // Determine exception to catch - { - int catchType = codeAttribute.exception_table[i].catch_type; - - SootClass exception; - - if (catchType != 0) { - CONSTANT_Class_info classinfo = (CONSTANT_Class_info) constant_pool[catchType]; - - String name = ((CONSTANT_Utf8_info) (constant_pool[classinfo.name_index])).convert(); - name = name.replace('/', '.'); - - exception = cm.getSootClass(name); - } else { - exception = cm.getSootClass("java.lang.Throwable"); - } - - handlerInstructionToException.put(handlerIns, exception); - } - - if (startIns == endIns) { - throw new RuntimeException("Empty catch range for exception handler"); - } - - Instruction ins = startIns; - - for (;;) { - Instruction[] succs = ins.succs; - Instruction[] newsuccs = new Instruction[succs.length + 1]; - - System.arraycopy(succs, 0, newsuccs, 0, succs.length); - - newsuccs[succs.length] = handlerIns; - ins.succs = newsuccs; - - ins = ins.next; - if (ins == endIns || ins == null) { - break; - } - } - } - } - } - - Set reachableInstructions = new HashSet(); - - // Mark all the reachable instructions - { - LinkedList instructionsToVisit = new LinkedList(); - - reachableInstructions.add(firstInstruction); - instructionsToVisit.addLast(firstInstruction); - - while (!instructionsToVisit.isEmpty()) { - Instruction ins = instructionsToVisit.removeFirst(); - - Instruction[] succs = ins.succs; - - for (Instruction succ : succs) { - if (!reachableInstructions.contains(succ)) { - reachableInstructions.add(succ); - instructionsToVisit.addLast(succ); - } - } - } - } - - /* - * // Check to see if any instruction is unmarked. { BasicBlock b = cfg; - * - * while(b != null) { Instruction ins = b.head; - * - * while(ins != null) { if(!reachableInstructions.contains(ins)) throw new - * RuntimeException("Method to jimplify contains unreachable code! (not handled for now)"); - * - * ins = ins.next; } - * - * b = b.next; } } - */ - - // Perform the flow analysis, and build up instructionToTypeStack and instructionToLocalArray - { - instructionToTypeStack = new HashMap(); - instructionToPostTypeStack = new HashMap(); - - Set visitedInstructions = new HashSet(); - List changedInstructions = new ArrayList(); - - TypeStack initialTypeStack; - - // Build up initial type stack and initial local array (for the first instruction) - { - initialTypeStack = TypeStack.v(); - // the empty stack with nothing on it. - } - - // Get the loop cranked up. - { - instructionToTypeStack.put(firstInstruction, initialTypeStack); - - visitedInstructions.add(firstInstruction); - changedInstructions.add(firstInstruction); - } - - { - while (!changedInstructions.isEmpty()) { - Instruction ins = changedInstructions.get(0); - - changedInstructions.remove(0); - - OutFlow ret = processFlow(ins, instructionToTypeStack.get(ins), constant_pool); - - instructionToPostTypeStack.put(ins, ret.typeStack); - - Instruction[] successors = ins.succs; - - for (Instruction s : successors) { - if (!visitedInstructions.contains(s)) { - // Special case for the first time visiting. - - if (handlerInstructions.contains(s)) { - TypeStack exceptionTypeStack - = (TypeStack.v()).push(RefType.v(handlerInstructionToException.get(s).getName())); - - instructionToTypeStack.put(s, exceptionTypeStack); - } else { - instructionToTypeStack.put(s, ret.typeStack); - } - - visitedInstructions.add(s); - changedInstructions.add(s); - - // logger.debug("adding successor: " + s); - } else { - // logger.debug("considering successor: " + s); - - TypeStack newTypeStack, oldTypeStack = instructionToTypeStack.get(s); - - if (handlerInstructions.contains(s)) { - // The type stack for an instruction handler should always be that of - // single object on the stack. - - TypeStack exceptionTypeStack - = (TypeStack.v()).push(RefType.v(handlerInstructionToException.get(s).getName())); - - newTypeStack = exceptionTypeStack; - } else { - try { - newTypeStack = ret.typeStack.merge(oldTypeStack); - } catch (RuntimeException re) { - logger.debug("Considering " + s); - throw re; - } - } - if (!newTypeStack.equals(oldTypeStack)) { - changedInstructions.add(s); - // logger.debug("requires a revisit: " + s); - } - - instructionToTypeStack.put(s, newTypeStack); - } - } - } - } - } - - // logger.debug("Producing Jimple code..."); - - // Jimplify each statement - { - BasicBlock b = cfg; - - while (b != null) { - Instruction ins = b.head; - b.statements = new ArrayList(); - - List blockStatements = b.statements; - - for (;;) { - List statementsForIns = new ArrayList(); - - if (reachableInstructions.contains(ins)) { - generateJimple(ins, instructionToTypeStack.get(ins), instructionToPostTypeStack.get(ins), constant_pool, - statementsForIns, b); - } else { - statementsForIns.add(Jimple.v().newNopStmt()); - } - - if (!statementsForIns.isEmpty()) { - for (int i = 0; i < statementsForIns.size(); i++) { - units.add(statementsForIns.get(i)); - blockStatements.add(statementsForIns.get(i)); - } - - instructionToFirstStmt.put(ins, statementsForIns.get(0)); - instructionToLastStmt.put(ins, statementsForIns.get(statementsForIns.size() - 1)); - } - - if (ins == b.tail) { - break; - } - - ins = ins.next; - } - - b = b.next; - } - } - - jimpleTargetFixup(); // fix up jump targets - - /* - * // Print out basic blocks { BasicBlock b = cfg; - * - * logger.debug("Basic blocks for: " + jmethod.getName()); - * - * while(b != null) { Instruction ins = b.head; - * - * - * - * while(ins != null) { logger.debug(""+ins.toString()); ins = ins.next; } - * - * b = b.next; } } - */ - - // Insert beginCatch/endCatch statements for exception handling - { - Map targetToHandler = new HashMap(); - - for (int i = 0; i < codeAttribute.exception_table_length; i++) { - Instruction startIns = codeAttribute.exception_table[i].start_inst; - Instruction endIns = codeAttribute.exception_table[i].end_inst; - Instruction targetIns = codeAttribute.exception_table[i].handler_inst; - - if (!instructionToFirstStmt.containsKey(startIns) - || (endIns != null && (!instructionToLastStmt.containsKey(endIns)))) { - throw new RuntimeException("Exception range does not coincide with jimple instructions"); - } - - if (!instructionToFirstStmt.containsKey(targetIns)) { - throw new RuntimeException("Exception handler does not coincide with jimple instruction"); - } - - SootClass exception; - - // Determine exception to catch - { - int catchType = codeAttribute.exception_table[i].catch_type; - if (catchType != 0) { - CONSTANT_Class_info classinfo = (CONSTANT_Class_info) constant_pool[catchType]; - - String name = ((CONSTANT_Utf8_info) (constant_pool[classinfo.name_index])).convert(); - name = name.replace('/', '.'); - exception = cm.getSootClass(name); - } else { - exception = cm.getSootClass("java.lang.Throwable"); - } - } - - Stmt newTarget; - - // Insert assignment of exception - { - Stmt firstTargetStmt = instructionToFirstStmt.get(targetIns); - - if (targetToHandler.containsKey(firstTargetStmt)) { - newTarget = targetToHandler.get(firstTargetStmt); - } else { - Local local = Util.v().getLocalCreatingIfNecessary(listBody, "$stack0", UnknownType.v()); - - newTarget = Jimple.v().newIdentityStmt(local, Jimple.v().newCaughtExceptionRef()); - - // changed to account for catch blocks which are also part of normal control flow - // units.insertBefore(newTarget, firstTargetStmt); - ((PatchingChain) units).insertBeforeNoRedirect(newTarget, firstTargetStmt); - - targetToHandler.put(firstTargetStmt, newTarget); - if (units.getFirst() != newTarget) { - Unit prev = (Unit) units.getPredOf(newTarget); - if (prev != null && prev.fallsThrough()) { - units.insertAfter(Jimple.v().newGotoStmt(firstTargetStmt), prev); - } - } - } - } - - // Insert trap - { - Stmt firstStmt = instructionToFirstStmt.get(startIns); - Stmt afterEndStmt; - if (endIns == null) { - // A kludge which isn't really correct, but - // gets us closer to correctness (until we - // clean up the rest of Soot to properly - // represent Traps which extend to the end - // of a method): if the protected code extends - // to the end of the method, use the last Stmt - // as the endUnit of the Trap, even though - // that will leave the last unit outside - // the protected area. - afterEndStmt = (Stmt) units.getLast(); - } else { - afterEndStmt = instructionToLastStmt.get(endIns); - IdentityStmt catchStart = (IdentityStmt) targetToHandler.get(afterEndStmt); - // (Cast to IdentityStmt as an assertion check.) - if (catchStart != null) { - // The protected region extends to the beginning of an - // exception handler, so we need to reset afterEndStmt - // to the identity statement which we have inserted - // before the old afterEndStmt. - if (catchStart != units.getPredOf(afterEndStmt)) { - throw new IllegalStateException("Assertion failure: catchStart != pred of afterEndStmt"); - } - afterEndStmt = catchStart; - } - } - - Trap trap = Jimple.v().newTrap(exception, firstStmt, afterEndStmt, newTarget); - listBody.getTraps().add(trap); - } - } - } - - /* convert line number table to tags attached to statements */ - if (Options.v().keep_line_number()) { - HashMap stmtstags = new HashMap(); - LinkedList startstmts = new LinkedList(); - - attribute_info[] attrs = codeAttribute.attributes; - for (attribute_info element : attrs) { - if (element instanceof LineNumberTable_attribute) { - LineNumberTable_attribute lntattr = (LineNumberTable_attribute) element; - for (line_number_table_entry element0 : lntattr.line_number_table) { - Stmt start_stmt = instructionToFirstStmt.get(element0.start_inst); - - if (start_stmt != null) { - LineNumberTag lntag = new LineNumberTag(element0.line_number); - stmtstags.put(start_stmt, lntag); - startstmts.add(start_stmt); - } - } - } - } - - /* - * if the predecessor of a statement is a caughtexcetionref, give it the tag of its successor - */ - for (Iterator stmtIt = new ArrayList(stmtstags.keySet()).iterator(); stmtIt.hasNext();) { - final Stmt stmt = stmtIt.next(); - Stmt pred = stmt; - Tag tag = stmtstags.get(stmt); - while (true) { - pred = (Stmt) units.getPredOf(pred); - if ((pred == null) || !(pred instanceof IdentityStmt)) { - break; - } - stmtstags.put(pred, tag); - pred.addTag(tag); - } - } - - /* attach line number tag to each statement. */ - for (int i = 0; i < startstmts.size(); i++) { - Stmt stmt = startstmts.get(i); - Tag tag = stmtstags.get(stmt); - - stmt.addTag(tag); - - stmt = (Stmt) units.getSuccOf(stmt); - while (stmt != null && !stmtstags.containsKey(stmt)) { - stmt.addTag(tag); - stmt = (Stmt) units.getSuccOf(stmt); - } - } - } - } - - private Type byteCodeTypeOf(Type type) { - if (type.equals(ShortType.v()) || type.equals(CharType.v()) || type.equals(ByteType.v()) - || type.equals(BooleanType.v())) { - return IntType.v(); - } else { - return type; - } - } - - OutFlow processFlow(Instruction ins, TypeStack typeStack, cp_info[] constant_pool) { - int x; - x = ((ins.code)) & 0xff; - - switch (x) { - case ByteCode.BIPUSH: - typeStack = typeStack.push(IntType.v()); - break; - - case ByteCode.SIPUSH: - typeStack = typeStack.push(IntType.v()); - break; - - case ByteCode.LDC1: - return processCPEntry(constant_pool, ((Instruction_Ldc1) ins).arg_b, typeStack, jmethod); - - case ByteCode.LDC2: - case ByteCode.LDC2W: - return processCPEntry(constant_pool, ((Instruction_intindex) ins).arg_i, typeStack, jmethod); - - case ByteCode.ACONST_NULL: - typeStack = typeStack.push(RefType.v("java.lang.Object")); - break; - - case ByteCode.ICONST_M1: - case ByteCode.ICONST_0: - case ByteCode.ICONST_1: - case ByteCode.ICONST_2: - case ByteCode.ICONST_3: - case ByteCode.ICONST_4: - case ByteCode.ICONST_5: - typeStack = typeStack.push(IntType.v()); - break; - case ByteCode.LCONST_0: - case ByteCode.LCONST_1: - typeStack = typeStack.push(LongType.v()); - typeStack = typeStack.push(Long2ndHalfType.v()); - break; - case ByteCode.FCONST_0: - case ByteCode.FCONST_1: - case ByteCode.FCONST_2: - typeStack = typeStack.push(FloatType.v()); - break; - case ByteCode.DCONST_0: - case ByteCode.DCONST_1: - typeStack = typeStack.push(DoubleType.v()); - typeStack = typeStack.push(Double2ndHalfType.v()); - break; - case ByteCode.ILOAD: - typeStack = typeStack.push(IntType.v()); - break; - - case ByteCode.FLOAD: - typeStack = typeStack.push(FloatType.v()); - break; - - case ByteCode.ALOAD: - typeStack = typeStack.push(RefType.v("java.lang.Object")); - // this is highly imprecise - break; - - case ByteCode.DLOAD: - typeStack = typeStack.push(DoubleType.v()); - typeStack = typeStack.push(Double2ndHalfType.v()); - break; - - case ByteCode.LLOAD: - typeStack = typeStack.push(LongType.v()); - typeStack = typeStack.push(Long2ndHalfType.v()); - break; - - case ByteCode.ILOAD_0: - case ByteCode.ILOAD_1: - case ByteCode.ILOAD_2: - case ByteCode.ILOAD_3: - typeStack = typeStack.push(IntType.v()); - break; - - case ByteCode.FLOAD_0: - case ByteCode.FLOAD_1: - case ByteCode.FLOAD_2: - case ByteCode.FLOAD_3: - typeStack = typeStack.push(FloatType.v()); - break; - - case ByteCode.ALOAD_0: - case ByteCode.ALOAD_1: - case ByteCode.ALOAD_2: - case ByteCode.ALOAD_3: - typeStack = typeStack.push(RefType.v("java.lang.Object")); - // this is highly imprecise - break; - - case ByteCode.LLOAD_0: - case ByteCode.LLOAD_1: - case ByteCode.LLOAD_2: - case ByteCode.LLOAD_3: - typeStack = typeStack.push(LongType.v()); - typeStack = typeStack.push(Long2ndHalfType.v()); - break; - - case ByteCode.DLOAD_0: - case ByteCode.DLOAD_1: - case ByteCode.DLOAD_2: - case ByteCode.DLOAD_3: - typeStack = typeStack.push(DoubleType.v()); - typeStack = typeStack.push(Double2ndHalfType.v()); - break; - - case ByteCode.ISTORE: - typeStack = popSafe(typeStack, IntType.v()); - break; - - case ByteCode.FSTORE: - typeStack = popSafe(typeStack, FloatType.v()); - break; - - case ByteCode.ASTORE: - typeStack = typeStack.pop(); - break; - - case ByteCode.LSTORE: - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - break; - - case ByteCode.DSTORE: - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - break; - - case ByteCode.ISTORE_0: - case ByteCode.ISTORE_1: - case ByteCode.ISTORE_2: - case ByteCode.ISTORE_3: - typeStack = popSafe(typeStack, IntType.v()); - break; - - case ByteCode.FSTORE_0: - case ByteCode.FSTORE_1: - case ByteCode.FSTORE_2: - case ByteCode.FSTORE_3: - typeStack = popSafe(typeStack, FloatType.v()); - break; - - case ByteCode.ASTORE_0: - case ByteCode.ASTORE_1: - case ByteCode.ASTORE_2: - case ByteCode.ASTORE_3: - if (!(typeStack.top() instanceof StmtAddressType) && !(typeStack.top() instanceof RefType) - && !(typeStack.top() instanceof ArrayType)) { - throw new RuntimeException("Astore failed, invalid stack type: " + typeStack.top()); - } - - typeStack = typeStack.pop(); - break; - - case ByteCode.LSTORE_0: - case ByteCode.LSTORE_1: - case ByteCode.LSTORE_2: - case ByteCode.LSTORE_3: - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - break; - - case ByteCode.DSTORE_0: - case ByteCode.DSTORE_1: - case ByteCode.DSTORE_2: - case ByteCode.DSTORE_3: - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - break; - - case ByteCode.IINC: - break; - - case ByteCode.WIDE: - throw new RuntimeException("Wide instruction should not be encountered"); - // break; - - case ByteCode.NEWARRAY: { - typeStack = popSafe(typeStack, IntType.v()); - Type baseType = jimpleTypeOfAtype(((Instruction_Newarray) ins).atype); - - typeStack = typeStack.push(ArrayType.v(baseType, 1)); - break; - } - - case ByteCode.ANEWARRAY: { - CONSTANT_Class_info c = (CONSTANT_Class_info) constant_pool[((Instruction_Anewarray) ins).arg_i]; - - String name = ((CONSTANT_Utf8_info) (constant_pool[c.name_index])).convert(); - name = name.replace('/', '.'); - - Type baseType; - - if (name.startsWith("[")) { - String baseName = getClassName(constant_pool, ((Instruction_Anewarray) ins).arg_i); - baseType = Util.v().jimpleTypeOfFieldDescriptor(baseName); - } else { - baseType = RefType.v(name); - } - - typeStack = popSafe(typeStack, IntType.v()); - typeStack = typeStack.push(baseType.makeArrayType()); - break; - } - - case ByteCode.MULTIANEWARRAY: { - int bdims = (((Instruction_Multianewarray) ins).dims); - - CONSTANT_Class_info c = (CONSTANT_Class_info) constant_pool[((Instruction_Multianewarray) ins).arg_i]; - - String arrayDescriptor = ((CONSTANT_Utf8_info) (constant_pool[c.name_index])).convert(); - - ArrayType arrayType = (ArrayType) Util.v().jimpleTypeOfFieldDescriptor(arrayDescriptor); - - for (int j = 0; j < bdims; j++) { - typeStack = popSafe(typeStack, IntType.v()); - } - - typeStack = typeStack.push(arrayType); - break; - } - - case ByteCode.ARRAYLENGTH: - typeStack = popSafeRefType(typeStack); - typeStack = typeStack.push(IntType.v()); - break; - - case ByteCode.IALOAD: - case ByteCode.BALOAD: - case ByteCode.CALOAD: - case ByteCode.SALOAD: - typeStack = popSafe(typeStack, IntType.v()); - typeStack = popSafeRefType(typeStack); - typeStack = typeStack.push(IntType.v()); - break; - case ByteCode.FALOAD: - typeStack = popSafe(typeStack, FloatType.v()); - typeStack = popSafeRefType(typeStack); - typeStack = typeStack.push(FloatType.v()); - break; - - case ByteCode.AALOAD: { - - typeStack = popSafe(typeStack, IntType.v()); - - if (typeStack.top() instanceof ArrayType) { - ArrayType arrayType = (ArrayType) typeStack.top(); - typeStack = popSafeRefType(typeStack); - - if (arrayType.numDimensions == 1) { - typeStack = typeStack.push(arrayType.baseType); - } else { - typeStack = typeStack.push(ArrayType.v(arrayType.baseType, arrayType.numDimensions - 1)); - } - } else { - // it's a null object - - typeStack = popSafeRefType(typeStack); - - typeStack = typeStack.push(RefType.v("java.lang.Object")); - } - - break; - } - case ByteCode.LALOAD: - typeStack = popSafe(typeStack, IntType.v()); - typeStack = popSafeRefType(typeStack); - typeStack = typeStack.push(LongType.v()); - typeStack = typeStack.push(Long2ndHalfType.v()); - break; - - case ByteCode.DALOAD: - typeStack = popSafe(typeStack, IntType.v()); - typeStack = popSafeRefType(typeStack); - typeStack = typeStack.push(DoubleType.v()); - typeStack = typeStack.push(Double2ndHalfType.v()); - break; - - case ByteCode.IASTORE: - case ByteCode.BASTORE: - case ByteCode.CASTORE: - case ByteCode.SASTORE: - typeStack = popSafe(typeStack, IntType.v()); - typeStack = popSafe(typeStack, IntType.v()); - typeStack = popSafeRefType(typeStack); - break; - - case ByteCode.AASTORE: - typeStack = popSafeRefType(typeStack); - typeStack = popSafe(typeStack, IntType.v()); - typeStack = popSafeRefType(typeStack); - break; - - case ByteCode.FASTORE: - typeStack = popSafe(typeStack, FloatType.v()); - typeStack = popSafe(typeStack, IntType.v()); - typeStack = popSafeRefType(typeStack); - break; - - case ByteCode.LASTORE: - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - typeStack = popSafe(typeStack, IntType.v()); - typeStack = popSafeRefType(typeStack); - break; - - case ByteCode.DASTORE: - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - typeStack = popSafe(typeStack, IntType.v()); - typeStack = popSafeRefType(typeStack); - break; - - case ByteCode.NOP: - break; - - case ByteCode.POP: - typeStack = typeStack.pop(); - break; - - case ByteCode.POP2: - typeStack = typeStack.pop(); - typeStack = typeStack.pop(); - break; - - case ByteCode.DUP: - typeStack = typeStack.push(typeStack.top()); - break; - - case ByteCode.DUP2: { - Type topType = typeStack.get(typeStack.topIndex()), secondType = typeStack.get(typeStack.topIndex() - 1); - typeStack = (typeStack.push(secondType)).push(topType); - break; - } - - case ByteCode.DUP_X1: { - Type topType = typeStack.get(typeStack.topIndex()), secondType = typeStack.get(typeStack.topIndex() - 1); - - typeStack = typeStack.pop().pop(); - - typeStack = typeStack.push(topType).push(secondType).push(topType); - break; - } - - case ByteCode.DUP_X2: { - Type topType = typeStack.get(typeStack.topIndex()), secondType = typeStack.get(typeStack.topIndex() - 1), - thirdType = typeStack.get(typeStack.topIndex() - 2); - - typeStack = typeStack.pop().pop().pop(); - - typeStack = typeStack.push(topType).push(thirdType).push(secondType).push(topType); - break; - } - - case ByteCode.DUP2_X1: { - Type topType = typeStack.get(typeStack.topIndex()), secondType = typeStack.get(typeStack.topIndex() - 1), - thirdType = typeStack.get(typeStack.topIndex() - 2); - - typeStack = typeStack.pop().pop().pop(); - - typeStack = typeStack.push(secondType).push(topType).push(thirdType).push(secondType).push(topType); - break; - } - - case ByteCode.DUP2_X2: { - Type topType = typeStack.get(typeStack.topIndex()), secondType = typeStack.get(typeStack.topIndex() - 1), - thirdType = typeStack.get(typeStack.topIndex() - 2), fourthType = typeStack.get(typeStack.topIndex() - 3); - - typeStack = typeStack.pop().pop().pop().pop(); - - typeStack = typeStack.push(secondType).push(topType).push(fourthType).push(thirdType).push(secondType).push(topType); - break; - } - - case ByteCode.SWAP: { - Type topType = typeStack.top(); - - typeStack = typeStack.pop(); - - Type secondType = typeStack.top(); - - typeStack = typeStack.pop(); - - typeStack = typeStack.push(topType); - typeStack = typeStack.push(secondType); - break; - } - - case ByteCode.IADD: - case ByteCode.ISUB: - case ByteCode.IMUL: - case ByteCode.IDIV: - case ByteCode.IREM: - case ByteCode.ISHL: - case ByteCode.ISHR: - case ByteCode.IUSHR: - case ByteCode.IAND: - case ByteCode.IOR: - case ByteCode.IXOR: - typeStack = popSafe(typeStack, IntType.v()); - typeStack = popSafe(typeStack, IntType.v()); - typeStack = typeStack.push(IntType.v()); - break; - - case ByteCode.LUSHR: - case ByteCode.LSHR: - case ByteCode.LSHL: - typeStack = popSafe(typeStack, IntType.v()); - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - typeStack = typeStack.push(LongType.v()); - typeStack = typeStack.push(Long2ndHalfType.v()); - break; - - case ByteCode.LREM: - case ByteCode.LDIV: - case ByteCode.LMUL: - case ByteCode.LSUB: - case ByteCode.LADD: - case ByteCode.LAND: - case ByteCode.LOR: - case ByteCode.LXOR: - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - typeStack = typeStack.push(LongType.v()); - typeStack = typeStack.push(Long2ndHalfType.v()); - break; - - case ByteCode.FREM: - case ByteCode.FDIV: - case ByteCode.FMUL: - case ByteCode.FSUB: - case ByteCode.FADD: - typeStack = popSafe(typeStack, FloatType.v()); - typeStack = popSafe(typeStack, FloatType.v()); - typeStack = typeStack.push(FloatType.v()); - break; - - case ByteCode.DREM: - case ByteCode.DDIV: - case ByteCode.DMUL: - case ByteCode.DSUB: - case ByteCode.DADD: - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - typeStack = typeStack.push(DoubleType.v()); - typeStack = typeStack.push(Double2ndHalfType.v()); - break; - - case ByteCode.INEG: - case ByteCode.LNEG: - case ByteCode.FNEG: - case ByteCode.DNEG: - // Doesn't check to see if the required types are on the stack, but it should - // if it wanted to be safe. - break; - - case ByteCode.I2L: - typeStack = popSafe(typeStack, IntType.v()); - typeStack = typeStack.push(LongType.v()); - typeStack = typeStack.push(Long2ndHalfType.v()); - break; - - case ByteCode.I2F: - typeStack = popSafe(typeStack, IntType.v()); - typeStack = typeStack.push(FloatType.v()); - break; - - case ByteCode.I2D: - typeStack = popSafe(typeStack, IntType.v()); - typeStack = typeStack.push(DoubleType.v()); - typeStack = typeStack.push(Double2ndHalfType.v()); - break; - - case ByteCode.L2I: - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - typeStack = typeStack.push(IntType.v()); - break; - - case ByteCode.L2F: - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - typeStack = typeStack.push(FloatType.v()); - break; - - case ByteCode.L2D: - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - typeStack = typeStack.push(DoubleType.v()); - typeStack = typeStack.push(Double2ndHalfType.v()); - break; - - case ByteCode.F2I: - typeStack = popSafe(typeStack, FloatType.v()); - typeStack = typeStack.push(IntType.v()); - break; - - case ByteCode.F2L: - typeStack = popSafe(typeStack, FloatType.v()); - typeStack = typeStack.push(LongType.v()); - typeStack = typeStack.push(Long2ndHalfType.v()); - break; - - case ByteCode.F2D: - typeStack = popSafe(typeStack, FloatType.v()); - typeStack = typeStack.push(DoubleType.v()); - typeStack = typeStack.push(Double2ndHalfType.v()); - break; - - case ByteCode.D2I: - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - typeStack = typeStack.push(IntType.v()); - break; - - case ByteCode.D2L: - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - typeStack = typeStack.push(LongType.v()); - typeStack = typeStack.push(Long2ndHalfType.v()); - break; - - case ByteCode.D2F: - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - typeStack = typeStack.push(FloatType.v()); - break; - - case ByteCode.INT2BYTE: - break; - case ByteCode.INT2CHAR: - break; - case ByteCode.INT2SHORT: - break; - - case ByteCode.IFEQ: - case ByteCode.IFGT: - case ByteCode.IFLT: - case ByteCode.IFLE: - case ByteCode.IFNE: - case ByteCode.IFGE: - typeStack = popSafe(typeStack, IntType.v()); - break; - - case ByteCode.IFNULL: - case ByteCode.IFNONNULL: - typeStack = popSafeRefType(typeStack); - break; - - case ByteCode.IF_ICMPEQ: - case ByteCode.IF_ICMPLT: - case ByteCode.IF_ICMPLE: - case ByteCode.IF_ICMPNE: - case ByteCode.IF_ICMPGT: - case ByteCode.IF_ICMPGE: - typeStack = popSafe(typeStack, IntType.v()); - typeStack = popSafe(typeStack, IntType.v()); - break; - - case ByteCode.LCMP: - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - typeStack = typeStack.push(IntType.v()); - break; - - case ByteCode.FCMPL: - case ByteCode.FCMPG: - typeStack = popSafe(typeStack, FloatType.v()); - typeStack = popSafe(typeStack, FloatType.v()); - typeStack = typeStack.push(IntType.v()); - break; - - case ByteCode.DCMPL: - case ByteCode.DCMPG: - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - typeStack = typeStack.push(IntType.v()); - break; - - case ByteCode.IF_ACMPEQ: - case ByteCode.IF_ACMPNE: - typeStack = popSafeRefType(typeStack); - typeStack = popSafeRefType(typeStack); - break; - - case ByteCode.GOTO: - case ByteCode.GOTO_W: - break; - - case ByteCode.JSR: - case ByteCode.JSR_W: - typeStack = typeStack.push(StmtAddressType.v()); - break; - - case ByteCode.RET: - break; - - case ByteCode.RET_W: - break; - - case ByteCode.RETURN: - break; - - case ByteCode.IRETURN: - typeStack = popSafe(typeStack, IntType.v()); - break; - - case ByteCode.FRETURN: - typeStack = popSafe(typeStack, FloatType.v()); - break; - - case ByteCode.ARETURN: - typeStack = popSafeRefType(typeStack); - break; - - case ByteCode.DRETURN: - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - break; - - case ByteCode.LRETURN: - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - break; - - case ByteCode.BREAKPOINT: - break; - - case ByteCode.TABLESWITCH: - typeStack = popSafe(typeStack, IntType.v()); - break; - - case ByteCode.LOOKUPSWITCH: - typeStack = popSafe(typeStack, IntType.v()); - break; - - case ByteCode.PUTFIELD: { - Type type = byteCodeTypeOf(jimpleTypeOfFieldInFieldRef(cm, constant_pool, ((Instruction_Putfield) ins).arg_i)); - - if (type.equals(DoubleType.v())) { - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - } else if (type.equals(LongType.v())) { - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - } else if (type instanceof RefType) { - typeStack = popSafeRefType(typeStack); - } else { - typeStack = popSafe(typeStack, type); - } - - typeStack = popSafeRefType(typeStack); - break; - } - - case ByteCode.GETFIELD: { - Type type = byteCodeTypeOf(jimpleTypeOfFieldInFieldRef(cm, constant_pool, ((Instruction_Getfield) ins).arg_i)); - - typeStack = popSafeRefType(typeStack); - - if (type.equals(DoubleType.v())) { - typeStack = typeStack.push(DoubleType.v()); - typeStack = typeStack.push(Double2ndHalfType.v()); - } else if (type.equals(LongType.v())) { - typeStack = typeStack.push(LongType.v()); - typeStack = typeStack.push(Long2ndHalfType.v()); - } else { - typeStack = typeStack.push(type); - } - break; - } - - case ByteCode.PUTSTATIC: { - Type type = byteCodeTypeOf(jimpleTypeOfFieldInFieldRef(cm, constant_pool, ((Instruction_Putstatic) ins).arg_i)); - - if (type.equals(DoubleType.v())) { - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - } else if (type.equals(LongType.v())) { - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - } else if (type instanceof RefType) { - typeStack = popSafeRefType(typeStack); - } else { - typeStack = popSafe(typeStack, type); - } - - break; - } - - case ByteCode.GETSTATIC: { - Type type = byteCodeTypeOf(jimpleTypeOfFieldInFieldRef(cm, constant_pool, ((Instruction_Getstatic) ins).arg_i)); - - if (type.equals(DoubleType.v())) { - typeStack = typeStack.push(DoubleType.v()); - typeStack = typeStack.push(Double2ndHalfType.v()); - } else if (type.equals(LongType.v())) { - typeStack = typeStack.push(LongType.v()); - typeStack = typeStack.push(Long2ndHalfType.v()); - } else { - typeStack = typeStack.push(type); - } - break; - } - - case ByteCode.INVOKEDYNAMIC: { - Instruction_Invokedynamic iv = (Instruction_Invokedynamic) ins; - CONSTANT_InvokeDynamic_info iv_info = (CONSTANT_InvokeDynamic_info) constant_pool[iv.invoke_dynamic_index]; - int args = cp_info.countParams(constant_pool, iv_info.name_and_type_index); - Type returnType = byteCodeTypeOf(jimpleReturnTypeOfNameAndType(cm, constant_pool, iv_info.name_and_type_index)); - - // pop off parameters. - for (int j = args - 1; j >= 0; j--) { - if (typeStack.top().equals(Long2ndHalfType.v())) { - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - - } else if (typeStack.top().equals(Double2ndHalfType.v())) { - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - } else { - typeStack = popSafe(typeStack, typeStack.top()); - } - } - - if (!returnType.equals(VoidType.v())) { - typeStack = smartPush(typeStack, returnType); - } - break; - } - - case ByteCode.INVOKEVIRTUAL: { - Instruction_Invokevirtual iv = (Instruction_Invokevirtual) ins; - int args = cp_info.countParams(constant_pool, iv.arg_i); - Type returnType = byteCodeTypeOf(jimpleReturnTypeOfMethodRef(cm, constant_pool, iv.arg_i)); - - // pop off parameters. - for (int j = args - 1; j >= 0; j--) { - if (typeStack.top().equals(Long2ndHalfType.v())) { - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - - } else if (typeStack.top().equals(Double2ndHalfType.v())) { - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - } else { - typeStack = popSafe(typeStack, typeStack.top()); - } - } - - typeStack = popSafeRefType(typeStack); - - if (!returnType.equals(VoidType.v())) { - typeStack = smartPush(typeStack, returnType); - } - break; - } - - case ByteCode.INVOKENONVIRTUAL: { - Instruction_Invokenonvirtual iv = (Instruction_Invokenonvirtual) ins; - int args = cp_info.countParams(constant_pool, iv.arg_i); - Type returnType = byteCodeTypeOf(jimpleReturnTypeOfMethodRef(cm, constant_pool, iv.arg_i)); - - // pop off parameters. - for (int j = args - 1; j >= 0; j--) { - if (typeStack.top().equals(Long2ndHalfType.v())) { - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - - } else if (typeStack.top().equals(Double2ndHalfType.v())) { - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - } else { - typeStack = popSafe(typeStack, typeStack.top()); - } - } - - typeStack = popSafeRefType(typeStack); - - if (!returnType.equals(VoidType.v())) { - typeStack = smartPush(typeStack, returnType); - } - break; - } - - case ByteCode.INVOKESTATIC: { - Instruction_Invokestatic iv = (Instruction_Invokestatic) ins; - int args = cp_info.countParams(constant_pool, iv.arg_i); - Type returnType = byteCodeTypeOf(jimpleReturnTypeOfMethodRef(cm, constant_pool, iv.arg_i)); - - // pop off parameters. - for (int j = args - 1; j >= 0; j--) { - if (typeStack.top().equals(Long2ndHalfType.v())) { - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - - } else if (typeStack.top().equals(Double2ndHalfType.v())) { - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - } else { - typeStack = popSafe(typeStack, typeStack.top()); - } - } - - if (!returnType.equals(VoidType.v())) { - typeStack = smartPush(typeStack, returnType); - } - break; - } - - case ByteCode.INVOKEINTERFACE: { - Instruction_Invokeinterface iv = (Instruction_Invokeinterface) ins; - int args = cp_info.countParams(constant_pool, iv.arg_i); - Type returnType = byteCodeTypeOf(jimpleReturnTypeOfInterfaceMethodRef(cm, constant_pool, iv.arg_i)); - - // pop off parameters. - for (int j = args - 1; j >= 0; j--) { - if (typeStack.top().equals(Long2ndHalfType.v())) { - typeStack = popSafe(typeStack, Long2ndHalfType.v()); - typeStack = popSafe(typeStack, LongType.v()); - - } else if (typeStack.top().equals(Double2ndHalfType.v())) { - typeStack = popSafe(typeStack, Double2ndHalfType.v()); - typeStack = popSafe(typeStack, DoubleType.v()); - } else { - typeStack = popSafe(typeStack, typeStack.top()); - } - } - - typeStack = popSafeRefType(typeStack); - - if (!returnType.equals(VoidType.v())) { - typeStack = smartPush(typeStack, returnType); - } - break; - } - - case ByteCode.ATHROW: - // technically athrow leaves the stack in an undefined - // state. In fact, the top value is the one we actually - // throw, but it should stay on the stack since the exception - // handler expects to start that way, at least in the real JVM. - break; - - case ByteCode.NEW: { - Type type = RefType.v(getClassName(constant_pool, ((Instruction_New) ins).arg_i)); - - typeStack = typeStack.push(type); - break; - } - - case ByteCode.CHECKCAST: { - String className = getClassName(constant_pool, ((Instruction_Checkcast) ins).arg_i); - - Type castType; - - if (className.startsWith("[")) { - castType = Util.v().jimpleTypeOfFieldDescriptor(getClassName(constant_pool, ((Instruction_Checkcast) ins).arg_i)); - } else { - castType = RefType.v(className); - } - - typeStack = popSafeRefType(typeStack); - typeStack = typeStack.push(castType); - break; - } - - case ByteCode.INSTANCEOF: { - typeStack = popSafeRefType(typeStack); - typeStack = typeStack.push(IntType.v()); - break; - } - - case ByteCode.MONITORENTER: - typeStack = popSafeRefType(typeStack); - break; - case ByteCode.MONITOREXIT: - typeStack = popSafeRefType(typeStack); - break; - - default: - throw new RuntimeException("processFlow failed: Unknown bytecode instruction: " + x); - } - - return new OutFlow(typeStack); - } - - private Type jimpleTypeOfFieldInFieldRef(Scene cm, cp_info[] constant_pool, int index) { - CONSTANT_Fieldref_info fr = (CONSTANT_Fieldref_info) (constant_pool[index]); - - CONSTANT_NameAndType_info nat = (CONSTANT_NameAndType_info) (constant_pool[fr.name_and_type_index]); - - String fieldDescriptor = ((CONSTANT_Utf8_info) (constant_pool[nat.descriptor_index])).convert(); - - return Util.v().jimpleTypeOfFieldDescriptor(fieldDescriptor); - } - - private Type jimpleReturnTypeOfNameAndType(Scene cm, cp_info[] constant_pool, int index) { - CONSTANT_NameAndType_info nat = (CONSTANT_NameAndType_info) (constant_pool[index]); - - String methodDescriptor = ((CONSTANT_Utf8_info) (constant_pool[nat.descriptor_index])).convert(); - - return Util.v().jimpleReturnTypeOfMethodDescriptor(methodDescriptor); - } - - private Type jimpleReturnTypeOfMethodRef(Scene cm, cp_info[] constant_pool, int index) { - CONSTANT_Methodref_info mr = (CONSTANT_Methodref_info) (constant_pool[index]); - - CONSTANT_NameAndType_info nat = (CONSTANT_NameAndType_info) (constant_pool[mr.name_and_type_index]); - - String methodDescriptor = ((CONSTANT_Utf8_info) (constant_pool[nat.descriptor_index])).convert(); - - return Util.v().jimpleReturnTypeOfMethodDescriptor(methodDescriptor); - } - - private Type jimpleReturnTypeOfInterfaceMethodRef(Scene cm, cp_info[] constant_pool, int index) { - CONSTANT_InterfaceMethodref_info mr = (CONSTANT_InterfaceMethodref_info) (constant_pool[index]); - - CONSTANT_NameAndType_info nat = (CONSTANT_NameAndType_info) (constant_pool[mr.name_and_type_index]); - - String methodDescriptor = ((CONSTANT_Utf8_info) (constant_pool[nat.descriptor_index])).convert(); - - return Util.v().jimpleReturnTypeOfMethodDescriptor(methodDescriptor); - } - - private OutFlow processCPEntry(cp_info constant_pool[], int i, TypeStack typeStack, SootMethod jmethod) { - cp_info c = constant_pool[i]; - - if (c instanceof CONSTANT_Integer_info) { - typeStack = typeStack.push(IntType.v()); - } else if (c instanceof CONSTANT_Float_info) { - typeStack = typeStack.push(FloatType.v()); - } else if (c instanceof CONSTANT_Long_info) { - typeStack = typeStack.push(LongType.v()); - typeStack = typeStack.push(Long2ndHalfType.v()); - } else if (c instanceof CONSTANT_Double_info) { - typeStack = typeStack.push(DoubleType.v()); - typeStack = typeStack.push(Double2ndHalfType.v()); - } else if (c instanceof CONSTANT_String_info) { - typeStack = typeStack.push(RefType.v("java.lang.String")); - } else if (c instanceof CONSTANT_Utf8_info) { - typeStack = typeStack.push(RefType.v("java.lang.String")); - } else if (c instanceof CONSTANT_Class_info) { - CONSTANT_Class_info info = (CONSTANT_Class_info) c; - String name = ((CONSTANT_Utf8_info) (constant_pool[info.name_index])).convert(); - name = name.replace('/', '.'); - if (name.charAt(0) == '[') { - int dim = 0; - while (name.charAt(dim) == '[') { - dim++; - } - // array type - Type baseType = null; - char typeIndicator = name.charAt(dim); - switch (typeIndicator) { - case 'I': - baseType = IntType.v(); - break; - case 'C': - baseType = CharType.v(); - break; - case 'F': - baseType = FloatType.v(); - break; - case 'D': - baseType = DoubleType.v(); - break; - case 'B': - baseType = ByteType.v(); - break; - case 'S': - baseType = ShortType.v(); - break; - case 'Z': - baseType = BooleanType.v(); - break; - case 'J': - baseType = LongType.v(); - break; - case 'L': - baseType = RefType.v(name.substring(dim + 1, name.length() - 1)); - break; - default: - throw new RuntimeException("Unknown Array Base Type in Class Constant"); - } - typeStack = typeStack.push(ArrayType.v(baseType, dim)); - } else { - typeStack = typeStack.push(RefType.v(name)); - } - } else { - throw new RuntimeException("Attempting to push a non-constant cp entry" + c.getClass()); - } - - return new OutFlow(typeStack); - } - - TypeStack smartPush(TypeStack typeStack, Type type) { - if (type.equals(LongType.v())) { - typeStack = typeStack.push(LongType.v()); - typeStack = typeStack.push(Long2ndHalfType.v()); - } else if (type.equals(DoubleType.v())) { - typeStack = typeStack.push(DoubleType.v()); - typeStack = typeStack.push(Double2ndHalfType.v()); - } else { - typeStack = typeStack.push(type); - } - - return typeStack; - } - - TypeStack popSafeRefType(TypeStack typeStack) { - /* - * if(!(typeStack.top() instanceof RefType) && !(typeStack.top() instanceof ArrayType)) { throw new - * RuntimeException("popSafe failed; top: " + typeStack.top() + " required: RefType"); } - */ - - return typeStack.pop(); - } - - TypeStack popSafeArrayType(TypeStack typeStack) { - /* - * if(!(typeStack.top() instanceof ArrayType) && !(RefType.v("null").equals(typeStack.top()))) { throw new - * RuntimeException("popSafe failed; top: " + typeStack.top() + " required: ArrayType"); } - */ - - return typeStack.pop(); - } - - TypeStack popSafe(TypeStack typeStack, Type requiredType) { - /* - * if(!typeStack.top().equals(requiredType)) throw new RuntimeException("popSafe failed; top: " + typeStack.top() + - * " required: " + requiredType); - */ - - return typeStack.pop(); - } - - void confirmType(Type actualType, Type requiredType) { - /* - * if(!actualType.equals(requiredType)) throw new RuntimeException("confirmType failed; actualType: " + actualType + - * " required: " + requiredType); - */ - } - - String getClassName(cp_info[] constant_pool, int index) { - CONSTANT_Class_info c = (CONSTANT_Class_info) constant_pool[index]; - - String name = ((CONSTANT_Utf8_info) (constant_pool[c.name_index])).convert(); - - return name.replace('/', '.'); - } - - void confirmRefType(Type actualType) { - /* - * if(!(actualType instanceof RefType) && !(actualType instanceof ArrayType)) throw new - * RuntimeException("confirmRefType failed; actualType: " + actualType); - */ - } - - /** - * Runs through the given bbq contents performing the target fix-up pass; Requires all reachable blocks to have their done - * flags set to true, and this resets them all back to false; - * - * @param bbq - * queue of BasicBlocks to process. - * @see jimpleTargetFixup - */ - private void processTargetFixup(BBQ bbq) { - BasicBlock b, p; - Stmt s; - while (!bbq.isEmpty()) { - try { - b = bbq.pull(); - } catch (NoSuchElementException e) { - break; - } - - s = b.getTailJStmt(); - - if (s instanceof GotoStmt) { - if (b.succ.size() == 1) { - // Regular goto - - ((GotoStmt) s).setTarget(b.succ.firstElement().getHeadJStmt()); - } else { - // Goto derived from a jsr bytecode - /* - * if((BasicBlock)(b.succ.firstElement())==b.next) ((GotoStmt)s).setTarget(((BasicBlock) - * b.succ.elementAt(1)).getHeadJStmt()); else ((GotoStmt)s).setTarget(((BasicBlock) - * b.succ.firstElement()).getHeadJStmt()); - */ - logger.debug("Error :"); - for (int i = 0; i < b.statements.size(); i++) { - logger.debug("" + b.statements.get(i)); - } - - throw new RuntimeException(b + " has " + b.succ.size() + " successors."); - } - } else if (s instanceof IfStmt) { - if (b.succ.size() != 2) { - logger.debug("How can an if not have 2 successors?"); - } - - if ((b.succ.firstElement()) == b.next) { - ((IfStmt) s).setTarget(b.succ.elementAt(1).getHeadJStmt()); - } else { - ((IfStmt) s).setTarget(b.succ.firstElement().getHeadJStmt()); - } - - } else if (s instanceof TableSwitchStmt) { - int count = 0; - TableSwitchStmt sts = (TableSwitchStmt) s; - // Successors of the basic block ending with a switch statement - // are listed in the successor vector in order, with the - // default as the very first (0-th entry) - - for (BasicBlock basicBlock : b.succ) { - p = (basicBlock); - if (count == 0) { - sts.setDefaultTarget(p.getHeadJStmt()); - } else { - sts.setTarget(count - 1, p.getHeadJStmt()); - } - count++; - } - } else if (s instanceof LookupSwitchStmt) { - int count = 0; - LookupSwitchStmt sls = (LookupSwitchStmt) s; - // Successors of the basic block ending with a switch statement - // are listed in the successor vector in order, with the - // default as the very first (0-th entry) - - for (BasicBlock basicBlock : b.succ) { - p = (basicBlock); - if (count == 0) { - sls.setDefaultTarget(p.getHeadJStmt()); - } else { - sls.setTarget(count - 1, p.getHeadJStmt()); - } - count++; - } - } - - b.done = false; - for (BasicBlock basicBlock : b.succ) { - p = (basicBlock); - if (p.done) { - bbq.push(p); - } - } - } - } - - /** - * After the initial jimple construction, a second pass is made to fix up missing Stmt targets for gotos, - * if's etc. - * - * @param c - * code attribute of this method. - * @see CFG#jimplify - */ - void jimpleTargetFixup() { - BasicBlock b; - BBQ bbq = new BBQ(); - - Code_attribute c = method.locate_code_attribute(); - if (c == null) { - return; - } - - // Reset all the dones to true - { - BasicBlock bb = cfg; - - while (bb != null) { - bb.done = true; - bb = bb.next; - } - } - - // first process the main code - bbq.push(cfg); - processTargetFixup(bbq); - - // then the exceptions - if (bbq.isEmpty()) { - int i; - for (i = 0; i < c.exception_table_length; i++) { - b = c.exception_table[i].b; - // if block hasn't yet been processed... - if (b != null && b.done) { - bbq.push(b); - processTargetFixup(bbq); - if (!bbq.isEmpty()) { - logger.debug("Error 2nd processing exception block."); - break; - } - } - } - } - } - - private void generateJimpleForCPEntry(cp_info constant_pool[], int i, TypeStack typeStack, TypeStack postTypeStack, - SootMethod jmethod, List statements) { - Stmt stmt; - Value rvalue; - - cp_info c = constant_pool[i]; - - if (c instanceof CONSTANT_Integer_info) { - CONSTANT_Integer_info ci = (CONSTANT_Integer_info) c; - - rvalue = IntConstant.v((int) ci.bytes); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - } else if (c instanceof CONSTANT_Float_info) { - CONSTANT_Float_info cf = (CONSTANT_Float_info) c; - - rvalue = FloatConstant.v(cf.convert()); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - } else if (c instanceof CONSTANT_Long_info) { - CONSTANT_Long_info cl = (CONSTANT_Long_info) c; - - rvalue = LongConstant.v(cl.convert()); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - } else if (c instanceof CONSTANT_Double_info) { - CONSTANT_Double_info cd = (CONSTANT_Double_info) c; - - rvalue = DoubleConstant.v(cd.convert()); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - } else if (c instanceof CONSTANT_String_info) { - CONSTANT_String_info cs = (CONSTANT_String_info) c; - - String constant = cs.toString(constant_pool); - - if (constant.startsWith("\"") && constant.endsWith("\"")) { - constant = constant.substring(1, constant.length() - 1); - } - - rvalue = StringConstant.v(constant); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - } else if (c instanceof CONSTANT_Utf8_info) { - CONSTANT_Utf8_info cu = (CONSTANT_Utf8_info) c; - - String constant = cu.convert(); - - if (constant.startsWith("\"") && constant.endsWith("\"")) { - constant = constant.substring(1, constant.length() - 1); - } - - rvalue = StringConstant.v(constant); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - } else if (c instanceof CONSTANT_Class_info) { - - String className = ((CONSTANT_Utf8_info) (constant_pool[((CONSTANT_Class_info) c).name_index])).convert(); - - rvalue = ClassConstant.v(className); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - } else { - throw new RuntimeException("Attempting to push a non-constant cp entry" + c); - } - - statements.add(stmt); - } - - void generateJimple(Instruction ins, TypeStack typeStack, TypeStack postTypeStack, cp_info constant_pool[], - List statements, BasicBlock basicBlock) { - Value[] params; - Local l1 = null, l2 = null, l3 = null, l4 = null; - - Expr rhs = null; - ConditionExpr co = null; - - ArrayRef a = null; - int args; - Value rvalue; - - // int localIndex; - - Stmt stmt = null; - - int x = ((ins.code)) & 0xff; - - switch (x) { - case ByteCode.BIPUSH: - rvalue = IntConstant.v(((Instruction_Bipush) ins).arg_b); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - break; - - case ByteCode.SIPUSH: - rvalue = IntConstant.v(((Instruction_Sipush) ins).arg_i); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - break; - - case ByteCode.LDC1: - generateJimpleForCPEntry(constant_pool, ((Instruction_Ldc1) ins).arg_b, typeStack, postTypeStack, jmethod, - statements); - break; - - case ByteCode.LDC2: - case ByteCode.LDC2W: - generateJimpleForCPEntry(constant_pool, ((Instruction_intindex) ins).arg_i, typeStack, postTypeStack, jmethod, - statements); - break; - - case ByteCode.ACONST_NULL: - rvalue = NullConstant.v(); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - break; - - case ByteCode.ICONST_M1: - case ByteCode.ICONST_0: - case ByteCode.ICONST_1: - case ByteCode.ICONST_2: - case ByteCode.ICONST_3: - case ByteCode.ICONST_4: - case ByteCode.ICONST_5: - rvalue = IntConstant.v(x - ByteCode.ICONST_0); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - break; - - case ByteCode.LCONST_0: - case ByteCode.LCONST_1: - rvalue = LongConstant.v(x - ByteCode.LCONST_0); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - break; - - case ByteCode.FCONST_0: - case ByteCode.FCONST_1: - case ByteCode.FCONST_2: - rvalue = FloatConstant.v((x - ByteCode.FCONST_0)); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - break; - - case ByteCode.DCONST_0: - case ByteCode.DCONST_1: - rvalue = DoubleConstant.v((x - ByteCode.DCONST_0)); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - break; - - case ByteCode.ILOAD: { - Local local = Util.v().getLocalForIndex(listBody, ((Instruction_bytevar) ins).arg_b, ins); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - local); - break; - } - - case ByteCode.FLOAD: { - Local local = Util.v().getLocalForIndex(listBody, ((Instruction_bytevar) ins).arg_b, ins); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - local); - break; - } - - case ByteCode.ALOAD: { - Local local = Util.v().getLocalForIndex(listBody, ((Instruction_bytevar) ins).arg_b, ins); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - local); - break; - } - - case ByteCode.DLOAD: { - Local local = Util.v().getLocalForIndex(listBody, ((Instruction_bytevar) ins).arg_b, ins); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - local); - break; - } - - case ByteCode.LLOAD: { - Local local = Util.v().getLocalForIndex(listBody, ((Instruction_bytevar) ins).arg_b, ins); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - local); - break; - } - - case ByteCode.ILOAD_0: - case ByteCode.ILOAD_1: - case ByteCode.ILOAD_2: - case ByteCode.ILOAD_3: { - Local local = Util.v().getLocalForIndex(listBody, (x - ByteCode.ILOAD_0), ins); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - local); - break; - } - - case ByteCode.FLOAD_0: - case ByteCode.FLOAD_1: - case ByteCode.FLOAD_2: - case ByteCode.FLOAD_3: { - Local local = Util.v().getLocalForIndex(listBody, (x - ByteCode.FLOAD_0), ins); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - local); - break; - } - - case ByteCode.ALOAD_0: - case ByteCode.ALOAD_1: - case ByteCode.ALOAD_2: - case ByteCode.ALOAD_3: { - Local local = Util.v().getLocalForIndex(listBody, (x - ByteCode.ALOAD_0), ins); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - local); - break; - } - - case ByteCode.LLOAD_0: - case ByteCode.LLOAD_1: - case ByteCode.LLOAD_2: - case ByteCode.LLOAD_3: { - Local local = Util.v().getLocalForIndex(listBody, (x - ByteCode.LLOAD_0), ins); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - local); - break; - } - - case ByteCode.DLOAD_0: - case ByteCode.DLOAD_1: - case ByteCode.DLOAD_2: - case ByteCode.DLOAD_3: { - Local local = Util.v().getLocalForIndex(listBody, (x - ByteCode.DLOAD_0), ins); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - local); - break; - } - - case ByteCode.ISTORE: { - Local local = Util.v().getLocalForIndex(listBody, ((Instruction_bytevar) ins).arg_b, ins); - - stmt = Jimple.v().newAssignStmt(local, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - } - - case ByteCode.FSTORE: { - Local local = Util.v().getLocalForIndex(listBody, ((Instruction_bytevar) ins).arg_b, ins); - - stmt = Jimple.v().newAssignStmt(local, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - } - - case ByteCode.ASTORE: { - Local local = Util.v().getLocalForIndex(listBody, ((Instruction_bytevar) ins).arg_b, ins); - - stmt = Jimple.v().newAssignStmt(local, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - } - - case ByteCode.LSTORE: { - Local local = Util.v().getLocalForIndex(listBody, ((Instruction_bytevar) ins).arg_b, ins); - - stmt = Jimple.v().newAssignStmt(local, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - } - - case ByteCode.DSTORE: { - Local local = Util.v().getLocalForIndex(listBody, ((Instruction_bytevar) ins).arg_b, ins); - - stmt = Jimple.v().newAssignStmt(local, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - } - - case ByteCode.ISTORE_0: - case ByteCode.ISTORE_1: - case ByteCode.ISTORE_2: - case ByteCode.ISTORE_3: { - Local local = Util.v().getLocalForIndex(listBody, (x - ByteCode.ISTORE_0), ins); - - stmt = Jimple.v().newAssignStmt(local, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - } - - case ByteCode.FSTORE_0: - case ByteCode.FSTORE_1: - case ByteCode.FSTORE_2: - case ByteCode.FSTORE_3: { - Local local = Util.v().getLocalForIndex(listBody, (x - ByteCode.FSTORE_0), ins); - - stmt = Jimple.v().newAssignStmt(local, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - } - - case ByteCode.ASTORE_0: - case ByteCode.ASTORE_1: - case ByteCode.ASTORE_2: - case ByteCode.ASTORE_3: { - Local local = Util.v().getLocalForIndex(listBody, (x - ByteCode.ASTORE_0), ins); - - stmt = Jimple.v().newAssignStmt(local, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - } - - case ByteCode.LSTORE_0: - case ByteCode.LSTORE_1: - case ByteCode.LSTORE_2: - case ByteCode.LSTORE_3: { - Local local = Util.v().getLocalForIndex(listBody, (x - ByteCode.LSTORE_0), ins); - - stmt = Jimple.v().newAssignStmt(local, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - } - - case ByteCode.DSTORE_0: - case ByteCode.DSTORE_1: - case ByteCode.DSTORE_2: - case ByteCode.DSTORE_3: { - Local local = Util.v().getLocalForIndex(listBody, (x - ByteCode.DSTORE_0), ins); - - stmt = Jimple.v().newAssignStmt(local, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - } - - case ByteCode.IINC: { - Local local = Util.v().getLocalForIndex(listBody, ((Instruction_Iinc) ins).arg_b, ins); - - int amt = (((Instruction_Iinc) ins).arg_c); - rhs = Jimple.v().newAddExpr(local, IntConstant.v(amt)); - stmt = Jimple.v().newAssignStmt(local, rhs); - break; - } - - case ByteCode.WIDE: - throw new RuntimeException("WIDE instruction should not be encountered anymore"); - // break; - - case ByteCode.NEWARRAY: { - Type baseType = jimpleTypeOfAtype(((Instruction_Newarray) ins).atype); - - rhs = Jimple.v().newNewArrayExpr(baseType, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - - break; - } - - case ByteCode.ANEWARRAY: { - String baseName = getClassName(constant_pool, ((Instruction_Anewarray) ins).arg_i); - - Type baseType; - - if (baseName.startsWith("[")) { - baseType = Util.v().jimpleTypeOfFieldDescriptor(getClassName(constant_pool, ((Instruction_Anewarray) ins).arg_i)); - } else { - baseType = RefType.v(baseName); - } - - rhs = Jimple.v().newNewArrayExpr(baseType, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - } - - case ByteCode.MULTIANEWARRAY: { - int bdims = (((Instruction_Multianewarray) ins).dims); - List dims = new ArrayList(); - - for (int j = 0; j < bdims; j++) { - dims.add(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - bdims + j + 1)); - } - - String mstype = constant_pool[((Instruction_Multianewarray) ins).arg_i].toString(constant_pool); - - ArrayType jimpleType = (ArrayType) Util.v().jimpleTypeOfFieldDescriptor(mstype); - - rhs = Jimple.v().newNewMultiArrayExpr(jimpleType, dims); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - } - - case ByteCode.ARRAYLENGTH: - rhs = Jimple.v().newLengthExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.IALOAD: - case ByteCode.BALOAD: - case ByteCode.CALOAD: - case ByteCode.SALOAD: - case ByteCode.FALOAD: - case ByteCode.LALOAD: - case ByteCode.DALOAD: - case ByteCode.AALOAD: - a = Jimple.v().newArrayRef(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), a); - - break; - - case ByteCode.IASTORE: - case ByteCode.FASTORE: - case ByteCode.AASTORE: - case ByteCode.BASTORE: - case ByteCode.CASTORE: - case ByteCode.SASTORE: - a = Jimple.v().newArrayRef(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 2), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - - stmt = Jimple.v().newAssignStmt(a, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - - case ByteCode.LASTORE: - case ByteCode.DASTORE: - a = Jimple.v().newArrayRef(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 2)); - - stmt = Jimple.v().newAssignStmt(a, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - - case ByteCode.NOP: - stmt = Jimple.v().newNopStmt(); - break; - - case ByteCode.POP: - case ByteCode.POP2: - stmt = Jimple.v().newNopStmt(); - break; - - case ByteCode.DUP: - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - - case ByteCode.DUP2: - if (typeSize(typeStack.top()) == 2) { - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - } else { - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - statements.add(stmt); - - stmt = null; - } - break; - - case ByteCode.DUP_X1: - l1 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()); - l2 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), l1); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 1), - l2); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 2), - Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex())); - - statements.add(stmt); - - stmt = null; - break; - - case ByteCode.DUP_X2: - if (typeSize(typeStack.get(typeStack.topIndex() - 2)) == 2) { - l3 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 2); - l1 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 2), - l3); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 3), - l1); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - l1); - - statements.add(stmt); - - stmt = null; - } else { - l3 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 2); - l2 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1); - l1 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - l1); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 1), - l2); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 2), - l3); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex())); - - statements.add(stmt); - - stmt = null; - } - break; - - case ByteCode.DUP2_X1: - if (typeSize(typeStack.get(typeStack.topIndex() - 1)) == 2) { - l2 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1); - l3 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 2); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 1), - l2); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 2), - l3); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 4), - Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 1)); - - statements.add(stmt); - - stmt = null; - } else { - l3 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 2); - l2 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1); - l1 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - l1); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 1), - l2); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 2), - l3); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex())); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 4), - Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 1)); - - statements.add(stmt); - - stmt = null; - } - break; - - case ByteCode.DUP2_X2: - if (typeSize(typeStack.get(typeStack.topIndex() - 1)) == 2) { - l2 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 1), - l2); - - statements.add(stmt); - } else { - l1 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()); - l2 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 1), - l2); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - l1); - - statements.add(stmt); - - } - - if (typeSize(typeStack.get(typeStack.topIndex() - 3)) == 2) { - l4 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 3), - l4); - - statements.add(stmt); - } else { - l4 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3); - l3 = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 2); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 3), - l4); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 2), - l3); - - statements.add(stmt); - - } - - if (typeSize(typeStack.get(typeStack.topIndex() - 1)) == 2) { - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 5), - Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 1)); - - statements.add(stmt); - } else { - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 5), - Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 1)); - - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 4), - Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex())); - - statements.add(stmt); - } - stmt = null; - break; - - case ByteCode.SWAP: { - Local first; - - typeStack = typeStack.push(typeStack.top()); - first = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()); - typeStack = typeStack.pop(); - // generation of a free temporary - - Local second = Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()); - - Local third = Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex() - 1); - - stmt = Jimple.v().newAssignStmt(first, second); - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(second, third); - statements.add(stmt); - - stmt = Jimple.v().newAssignStmt(third, first); - statements.add(stmt); - - stmt = null; - break; - } - - case ByteCode.FADD: - case ByteCode.IADD: - rhs = Jimple.v().newAddExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.DADD: - case ByteCode.LADD: - rhs = Jimple.v().newAddExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.FSUB: - case ByteCode.ISUB: - rhs = Jimple.v().newSubExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.DSUB: - case ByteCode.LSUB: - rhs = Jimple.v().newSubExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.FMUL: - case ByteCode.IMUL: - rhs = Jimple.v().newMulExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.DMUL: - case ByteCode.LMUL: - rhs = Jimple.v().newMulExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.FDIV: - case ByteCode.IDIV: - rhs = Jimple.v().newDivExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.DDIV: - case ByteCode.LDIV: - rhs = Jimple.v().newDivExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.FREM: - case ByteCode.IREM: - rhs = Jimple.v().newRemExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.DREM: - case ByteCode.LREM: - rhs = Jimple.v().newRemExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.INEG: - case ByteCode.LNEG: - case ByteCode.FNEG: - case ByteCode.DNEG: - rhs = Jimple.v().newNegExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.ISHL: - rhs = Jimple.v().newShlExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.ISHR: - rhs = Jimple.v().newShrExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.IUSHR: - rhs = Jimple.v().newUshrExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.LSHL: - rhs = Jimple.v().newShlExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 2), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.LSHR: - rhs = Jimple.v().newShrExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 2), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.LUSHR: - rhs = Jimple.v().newUshrExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 2), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.IAND: - rhs = Jimple.v().newAndExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.LAND: - rhs = Jimple.v().newAndExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.IOR: - rhs = Jimple.v().newOrExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.LOR: - rhs = Jimple.v().newOrExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.IXOR: - rhs = Jimple.v().newXorExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.LXOR: - rhs = Jimple.v().newXorExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.D2L: - case ByteCode.F2L: - case ByteCode.I2L: - rhs = Jimple.v().newCastExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), LongType.v()); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.D2F: - case ByteCode.L2F: - case ByteCode.I2F: - rhs = Jimple.v().newCastExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), FloatType.v()); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.I2D: - case ByteCode.L2D: - case ByteCode.F2D: - rhs = Jimple.v().newCastExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), DoubleType.v()); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.L2I: - case ByteCode.F2I: - case ByteCode.D2I: - rhs = Jimple.v().newCastExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), IntType.v()); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.INT2BYTE: - rhs = Jimple.v().newCastExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), ByteType.v()); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.INT2CHAR: - rhs = Jimple.v().newCastExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), CharType.v()); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.INT2SHORT: - rhs = Jimple.v().newCastExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), ShortType.v()); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.IFEQ: - co = Jimple.v().newEqExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), IntConstant.v(0)); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IFNULL: - co = Jimple.v().newEqExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), NullConstant.v()); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IFLT: - co = Jimple.v().newLtExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), IntConstant.v(0)); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IFLE: - co = Jimple.v().newLeExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), IntConstant.v(0)); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IFNE: - co = Jimple.v().newNeExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), IntConstant.v(0)); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IFNONNULL: - co = Jimple.v().newNeExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), NullConstant.v()); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IFGT: - co = Jimple.v().newGtExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), IntConstant.v(0)); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IFGE: - co = Jimple.v().newGeExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), IntConstant.v(0)); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IF_ICMPEQ: - co = Jimple.v().newEqExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IF_ICMPLT: - co = Jimple.v().newLtExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IF_ICMPLE: - co = Jimple.v().newLeExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IF_ICMPNE: - co = Jimple.v().newNeExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IF_ICMPGT: - co = Jimple.v().newGtExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IF_ICMPGE: - co = Jimple.v().newGeExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.LCMP: - rhs = Jimple.v().newCmpExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.FCMPL: - rhs = Jimple.v().newCmplExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.FCMPG: - rhs = Jimple.v().newCmpgExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.DCMPL: - rhs = Jimple.v().newCmplExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.DCMPG: - rhs = Jimple.v().newCmpgExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 3), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1)); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - - case ByteCode.IF_ACMPEQ: - co = Jimple.v().newEqExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.IF_ACMPNE: - co = Jimple.v().newNeExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - 1), - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - - stmt = Jimple.v().newIfStmt(co, new FutureStmt()); - break; - - case ByteCode.GOTO: - stmt = Jimple.v().newGotoStmt(new FutureStmt()); - break; - - case ByteCode.GOTO_W: - stmt = Jimple.v().newGotoStmt(new FutureStmt()); - break; - /* - * case ByteCode.JSR: case ByteCode.JSR_W: { stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, - * postTypeStack, postTypeStack.topIndex()), Jimple.v().newNextNextStmtRef()); - * - * statements.add(stmt); - * - * stmt = Jimple.v().newGotoStmt(new FutureStmt()); statements.add(stmt); - * - * stmt = null; break; } - */ - - case ByteCode.RET: { - Local local = Util.v().getLocalForIndex(listBody, ((Instruction_Ret) ins).arg_b, ins); - - stmt = Jimple.v().newRetStmt(local); - break; - } - - case ByteCode.RET_W: { - Local local = Util.v().getLocalForIndex(listBody, ((Instruction_Ret_w) ins).arg_i, ins); - - stmt = Jimple.v().newRetStmt(local); - break; - } - - case ByteCode.RETURN: - stmt = Jimple.v().newReturnVoidStmt(); - break; - - case ByteCode.LRETURN: - case ByteCode.DRETURN: - case ByteCode.IRETURN: - case ByteCode.FRETURN: - case ByteCode.ARETURN: - stmt = Jimple.v().newReturnStmt(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - - case ByteCode.BREAKPOINT: - stmt = Jimple.v().newBreakpointStmt(); - break; - - case ByteCode.TABLESWITCH: { - int lowIndex = ((Instruction_Tableswitch) ins).low, highIndex = ((Instruction_Tableswitch) ins).high; - - int npairs = highIndex - lowIndex + 1; - - stmt = Jimple.v().newTableSwitchStmt(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), - lowIndex, highIndex, Arrays.asList(new FutureStmt[npairs]), new FutureStmt()); - break; - } - - case ByteCode.LOOKUPSWITCH: { - List matches = new ArrayList(); - int npairs = ((Instruction_Lookupswitch) ins).npairs; - - for (int j = 0; j < npairs; j++) { - matches.add(IntConstant.v(((Instruction_Lookupswitch) ins).match_offsets[j * 2])); - } - - stmt = Jimple.v().newLookupSwitchStmt(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), - matches, Arrays.asList(new FutureStmt[npairs]), new FutureStmt()); - break; - } - - case ByteCode.PUTFIELD: { - CONSTANT_Fieldref_info fieldInfo = (CONSTANT_Fieldref_info) constant_pool[((Instruction_Putfield) ins).arg_i]; - - CONSTANT_Class_info c = (CONSTANT_Class_info) constant_pool[fieldInfo.class_index]; - - String className = ((CONSTANT_Utf8_info) (constant_pool[c.name_index])).convert(); - className = className.replace('/', '.'); - - CONSTANT_NameAndType_info i = (CONSTANT_NameAndType_info) constant_pool[fieldInfo.name_and_type_index]; - - String fieldName = ((CONSTANT_Utf8_info) (constant_pool[i.name_index])).convert(); - String fieldDescriptor = ((CONSTANT_Utf8_info) (constant_pool[i.descriptor_index])).convert(); - - Type fieldType = Util.v().jimpleTypeOfFieldDescriptor(fieldDescriptor); - - SootClass bclass = cm.getSootClass(className); - - SootFieldRef fieldRef = Scene.v().makeFieldRef(bclass, fieldName, fieldType, false); - - InstanceFieldRef fr = Jimple.v().newInstanceFieldRef( - Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex() - typeSize(typeStack.top())), fieldRef); - - rvalue = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()); - stmt = Jimple.v().newAssignStmt(fr, rvalue); - break; - } - - case ByteCode.GETFIELD: { - InstanceFieldRef fr = null; - - CONSTANT_Fieldref_info fieldInfo = (CONSTANT_Fieldref_info) constant_pool[((Instruction_Getfield) ins).arg_i]; - - CONSTANT_Class_info c = (CONSTANT_Class_info) constant_pool[fieldInfo.class_index]; - - String className = ((CONSTANT_Utf8_info) (constant_pool[c.name_index])).convert(); - className = className.replace('/', '.'); - - CONSTANT_NameAndType_info i = (CONSTANT_NameAndType_info) constant_pool[fieldInfo.name_and_type_index]; - - String fieldName = ((CONSTANT_Utf8_info) (constant_pool[i.name_index])).convert(); - String fieldDescriptor = ((CONSTANT_Utf8_info) (constant_pool[i.descriptor_index])).convert(); - - if (className.charAt(0) == '[') { - className = "java.lang.Object"; - } - - SootClass bclass = cm.getSootClass(className); - - Type fieldType = Util.v().jimpleTypeOfFieldDescriptor(fieldDescriptor); - SootFieldRef fieldRef = Scene.v().makeFieldRef(bclass, fieldName, fieldType, false); - - fr = Jimple.v().newInstanceFieldRef(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), - fieldRef); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), fr); - break; - } - - case ByteCode.PUTSTATIC: { - StaticFieldRef fr = null; - - CONSTANT_Fieldref_info fieldInfo = (CONSTANT_Fieldref_info) constant_pool[((Instruction_Putstatic) ins).arg_i]; - - CONSTANT_Class_info c = (CONSTANT_Class_info) constant_pool[fieldInfo.class_index]; - - String className = ((CONSTANT_Utf8_info) (constant_pool[c.name_index])).convert(); - className = className.replace('/', '.'); - - CONSTANT_NameAndType_info i = (CONSTANT_NameAndType_info) constant_pool[fieldInfo.name_and_type_index]; - - String fieldName = ((CONSTANT_Utf8_info) (constant_pool[i.name_index])).convert(); - String fieldDescriptor = ((CONSTANT_Utf8_info) (constant_pool[i.descriptor_index])).convert(); - - Type fieldType = Util.v().jimpleTypeOfFieldDescriptor(fieldDescriptor); - - SootClass bclass = cm.getSootClass(className); - SootFieldRef fieldRef = Scene.v().makeFieldRef(bclass, fieldName, fieldType, true); - - fr = Jimple.v().newStaticFieldRef(fieldRef); - - stmt = Jimple.v().newAssignStmt(fr, Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - } - - case ByteCode.GETSTATIC: { - StaticFieldRef fr = null; - - CONSTANT_Fieldref_info fieldInfo = (CONSTANT_Fieldref_info) constant_pool[((Instruction_Getstatic) ins).arg_i]; - - CONSTANT_Class_info c = (CONSTANT_Class_info) constant_pool[fieldInfo.class_index]; - - String className = ((CONSTANT_Utf8_info) (constant_pool[c.name_index])).convert(); - className = className.replace('/', '.'); - - CONSTANT_NameAndType_info i = (CONSTANT_NameAndType_info) constant_pool[fieldInfo.name_and_type_index]; - - String fieldName = ((CONSTANT_Utf8_info) (constant_pool[i.name_index])).convert(); - String fieldDescriptor = ((CONSTANT_Utf8_info) (constant_pool[i.descriptor_index])).convert(); - - Type fieldType = Util.v().jimpleTypeOfFieldDescriptor(fieldDescriptor); - - SootClass bclass = cm.getSootClass(className); - SootFieldRef fieldRef = Scene.v().makeFieldRef(bclass, fieldName, fieldType, true); - - fr = Jimple.v().newStaticFieldRef(fieldRef); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), fr); - break; - } - - case ByteCode.INVOKEDYNAMIC: { - Instruction_Invokedynamic iv = (Instruction_Invokedynamic) ins; - CONSTANT_InvokeDynamic_info iv_info = (CONSTANT_InvokeDynamic_info) constant_pool[iv.invoke_dynamic_index]; - args = cp_info.countParams(constant_pool, iv_info.name_and_type_index); - - SootMethodRef bootstrapMethodRef; - List bootstrapArgs = new LinkedList(); - int kind; - { - short[] bootstrapMethodTable = bootstrap_methods_attribute.method_handles; - short methodSigIndex = bootstrapMethodTable[iv_info.bootstrap_method_index]; - CONSTANT_MethodHandle_info mhInfo = (CONSTANT_MethodHandle_info) constant_pool[methodSigIndex]; - CONSTANT_Methodref_info bsmInfo = (CONSTANT_Methodref_info) constant_pool[mhInfo.target_index]; - bootstrapMethodRef = createMethodRef(constant_pool, bsmInfo, false); - kind = mhInfo.kind; - - short[] bsmArgIndices = bootstrap_methods_attribute.arg_indices[iv_info.bootstrap_method_index]; - if (bsmArgIndices.length > 0) { - // logger.debug("Soot does not currently support static arguments to bootstrap methods. They will be stripped."); - for (short bsmArgIndex : bsmArgIndices) { - cp_info cpEntry = constant_pool[bsmArgIndex]; - Value val = cpEntry.createJimpleConstantValue(constant_pool); - bootstrapArgs.add(val); - } - } - } - - SootMethodRef methodRef = null; - - CONSTANT_NameAndType_info nameAndTypeInfo = (CONSTANT_NameAndType_info) constant_pool[iv_info.name_and_type_index]; - - String methodName = ((CONSTANT_Utf8_info) (constant_pool[nameAndTypeInfo.name_index])).convert(); - String methodDescriptor = ((CONSTANT_Utf8_info) (constant_pool[nameAndTypeInfo.descriptor_index])).convert(); - - SootClass bclass = cm.getSootClass(SootClass.INVOKEDYNAMIC_DUMMY_CLASS_NAME); - - List parameterTypes; - Type returnType; - - // Generate parameters & returnType & parameterTypes - { - Type[] types = Util.v().jimpleTypesOfFieldOrMethodDescriptor(methodDescriptor); - - parameterTypes = new ArrayList(); - - for (int k = 0; k < types.length - 1; k++) { - parameterTypes.add(types[k]); - } - - returnType = types[types.length - 1]; - } - // we always model invokeDynamic method refs as static method references of methods on the type - // SootClass.INVOKEDYNAMIC_DUMMY_CLASS_NAME - methodRef = Scene.v().makeMethodRef(bclass, methodName, parameterTypes, returnType, true); - - // build Vector of parameters - params = new Value[args]; - for (int j = args - 1; j >= 0; j--) { - params[j] = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()); - - if (typeSize(typeStack.top()) == 2) { - typeStack = typeStack.pop(); - typeStack = typeStack.pop(); - } else { - typeStack = typeStack.pop(); - } - } - - rvalue = Jimple.v().newDynamicInvokeExpr(bootstrapMethodRef, bootstrapArgs, methodRef, kind, Arrays.asList(params)); - - if (!returnType.equals(VoidType.v())) { - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - } else { - stmt = Jimple.v().newInvokeStmt(rvalue); - } - - break; - } - - case ByteCode.INVOKEVIRTUAL: { - Instruction_Invokevirtual iv = (Instruction_Invokevirtual) ins; - args = cp_info.countParams(constant_pool, iv.arg_i); - - CONSTANT_Methodref_info methodInfo = (CONSTANT_Methodref_info) constant_pool[iv.arg_i]; - - SootMethodRef methodRef = createMethodRef(constant_pool, methodInfo, false); - - Type returnType = methodRef.returnType(); - // build array of parameters - params = new Value[args]; - for (int j = args - 1; j >= 0; j--) { - params[j] = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()); - - if (typeSize(typeStack.top()) == 2) { - typeStack = typeStack.pop(); - typeStack = typeStack.pop(); - } else { - typeStack = typeStack.pop(); - } - } - - rvalue = Jimple.v().newVirtualInvokeExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), - methodRef, Arrays.asList(params)); - - if (!returnType.equals(VoidType.v())) { - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - } else { - stmt = Jimple.v().newInvokeStmt(rvalue); - } - break; - } - - case ByteCode.INVOKENONVIRTUAL: { - Instruction_Invokenonvirtual iv = (Instruction_Invokenonvirtual) ins; - args = cp_info.countParams(constant_pool, iv.arg_i); - - CONSTANT_Methodref_info methodInfo = (CONSTANT_Methodref_info) constant_pool[iv.arg_i]; - - SootMethodRef methodRef = createMethodRef(constant_pool, methodInfo, false); - - Type returnType = methodRef.returnType(); - - // build array of parameters - params = new Value[args]; - for (int j = args - 1; j >= 0; j--) { - params[j] = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()); - - if (typeSize(typeStack.top()) == 2) { - typeStack = typeStack.pop(); - typeStack = typeStack.pop(); - } else { - typeStack = typeStack.pop(); - } - } - - rvalue = Jimple.v().newSpecialInvokeExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), - methodRef, Arrays.asList(params)); - - if (!returnType.equals(VoidType.v())) { - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - } else { - stmt = Jimple.v().newInvokeStmt(rvalue); - } - break; - } - - case ByteCode.INVOKESTATIC: { - Instruction_Invokestatic is = (Instruction_Invokestatic) ins; - args = cp_info.countParams(constant_pool, is.arg_i); - - CONSTANT_Methodref_info methodInfo = (CONSTANT_Methodref_info) constant_pool[is.arg_i]; - - SootMethodRef methodRef = createMethodRef(constant_pool, methodInfo, true); - - Type returnType = methodRef.returnType(); - - // build Vector of parameters - params = new Value[args]; - for (int j = args - 1; j >= 0; j--) { - /* - * logger.debug("BeforeTypeStack"); typeStack.print(G.v().out); - * - * logger.debug("AfterTypeStack"); postTypeStack.print(G.v().out); - */ - - params[j] = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()); - - if (typeSize(typeStack.top()) == 2) { - typeStack = typeStack.pop(); - typeStack = typeStack.pop(); - } else { - typeStack = typeStack.pop(); - } - } - - rvalue = Jimple.v().newStaticInvokeExpr(methodRef, Arrays.asList(params)); - - if (!returnType.equals(VoidType.v())) { - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - } else { - stmt = Jimple.v().newInvokeStmt(rvalue); - } - - break; - } - - case ByteCode.INVOKEINTERFACE: { - Instruction_Invokeinterface ii = (Instruction_Invokeinterface) ins; - args = cp_info.countParams(constant_pool, ii.arg_i); - - CONSTANT_InterfaceMethodref_info methodInfo = (CONSTANT_InterfaceMethodref_info) constant_pool[ii.arg_i]; - - SootMethodRef methodRef = createMethodRef(constant_pool, methodInfo, false); - - Type returnType = methodRef.returnType(); - - // build Vector of parameters - params = new Value[args]; - for (int j = args - 1; j >= 0; j--) { - params[j] = Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()); - - if (typeSize(typeStack.top()) == 2) { - typeStack = typeStack.pop(); - typeStack = typeStack.pop(); - } else { - typeStack = typeStack.pop(); - } - } - - rvalue = Jimple.v().newInterfaceInvokeExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), - methodRef, Arrays.asList(params)); - - if (!returnType.equals(VoidType.v())) { - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - rvalue); - } else { - stmt = Jimple.v().newInvokeStmt(rvalue); - } - break; - } - - case ByteCode.ATHROW: - stmt = Jimple.v().newThrowStmt(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - - case ByteCode.NEW: { - SootClass bclass = cm.getSootClass(getClassName(constant_pool, ((Instruction_New) ins).arg_i)); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), - Jimple.v().newNewExpr(RefType.v(bclass.getName()))); - break; - } - - case ByteCode.CHECKCAST: { - String className = getClassName(constant_pool, ((Instruction_Checkcast) ins).arg_i); - - Type castType; - - if (className.startsWith("[")) { - castType = Util.v().jimpleTypeOfFieldDescriptor(getClassName(constant_pool, ((Instruction_Checkcast) ins).arg_i)); - } else { - castType = RefType.v(className); - } - - rhs = Jimple.v().newCastExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), castType); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - } - - case ByteCode.INSTANCEOF: { - Type checkType; - - String className = getClassName(constant_pool, ((Instruction_Instanceof) ins).arg_i); - - if (className.startsWith("[")) { - checkType - = Util.v().jimpleTypeOfFieldDescriptor(getClassName(constant_pool, ((Instruction_Instanceof) ins).arg_i)); - } else { - checkType = RefType.v(className); - } - - rhs = Jimple.v().newInstanceOfExpr(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex()), - checkType); - - stmt = Jimple.v().newAssignStmt(Util.v().getLocalForStackOp(listBody, postTypeStack, postTypeStack.topIndex()), rhs); - break; - } - - case ByteCode.MONITORENTER: - stmt = Jimple.v().newEnterMonitorStmt(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - case ByteCode.MONITOREXIT: - stmt = Jimple.v().newExitMonitorStmt(Util.v().getLocalForStackOp(listBody, typeStack, typeStack.topIndex())); - break; - - default: - throw new RuntimeException("Unrecognized bytecode instruction: " + x); - } - - if (stmt != null) { - if (Options.v().keep_offset()) { - stmt.addTag(new BytecodeOffsetTag(ins.label)); - } - statements.add(stmt); - } - } - - private SootMethodRef createMethodRef(cp_info[] constant_pool, ICONSTANT_Methodref_info methodInfo, boolean isStatic) { - SootMethodRef methodRef; - - CONSTANT_Class_info c = (CONSTANT_Class_info) constant_pool[methodInfo.getClassIndex()]; - - String className = ((CONSTANT_Utf8_info) (constant_pool[c.name_index])).convert(); - className = className.replace('/', '.'); - - CONSTANT_NameAndType_info i = (CONSTANT_NameAndType_info) constant_pool[methodInfo.getNameAndTypeIndex()]; - - String methodName = ((CONSTANT_Utf8_info) (constant_pool[i.name_index])).convert(); - String methodDescriptor = ((CONSTANT_Utf8_info) (constant_pool[i.descriptor_index])).convert(); - - if (className.charAt(0) == '[') { - className = "java.lang.Object"; - } - - SootClass bclass = cm.getSootClass(className); - - List parameterTypes; - Type returnType; - // Generate parameters & returnType & parameterTypes - { - Type[] types = Util.v().jimpleTypesOfFieldOrMethodDescriptor(methodDescriptor); - - parameterTypes = new ArrayList(); - - for (int k = 0; k < types.length - 1; k++) { - parameterTypes.add(types[k]); - } - - returnType = types[types.length - 1]; - } - - methodRef = Scene.v().makeMethodRef(bclass, methodName, parameterTypes, returnType, isStatic); - return methodRef; - } - - Type jimpleTypeOfAtype(int atype) { - switch (atype) { - case 4: - return BooleanType.v(); - - case 5: - return CharType.v(); - - case 6: - return FloatType.v(); - - case 7: - return DoubleType.v(); - - case 8: - return ByteType.v(); - - case 9: - return ShortType.v(); - - case 10: - return IntType.v(); - - case 11: - return LongType.v(); - - default: - throw new RuntimeException("Undefined 'atype' in NEWARRAY byte instruction"); - } - } - - int typeSize(Type type) { - if (type.equals(LongType.v()) || type.equals(DoubleType.v()) || type.equals(Long2ndHalfType.v()) - || type.equals(Double2ndHalfType.v())) { - return 2; - } else { - return 1; - } - } -} - -class OutFlow { - TypeStack typeStack; - - OutFlow(TypeStack typeStack) { - this.typeStack = typeStack; - } -} diff --git a/src/main/java/soot/coffi/CONSTANT_Class_info.java b/src/main/java/soot/coffi/CONSTANT_Class_info.java deleted file mode 100644 index 36c6864ce78..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_Class_info.java +++ /dev/null @@ -1,96 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.Value; -import soot.jimple.ClassConstant; - -/** - * A constant pool entry of type CONSTANT_Class. - * - * @see cp_info - * @author Clark Verbrugge - */ -public class CONSTANT_Class_info extends cp_info { - /** Constant pool index of name of this class. */ - public int name_index; - - /** - * Returns the size of this cp_info object. - * - * @return number of bytes occupied by this object. - * @see cp_info#size - */ - public int size() { - return 3; - } - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - * @see cp_info#toString - */ - public String toString(cp_info constant_pool[]) { - CONSTANT_Utf8_info ci = (CONSTANT_Utf8_info) (constant_pool[name_index]); - return ci.convert(); - } - - /** - * Returns a String description of what kind of entry this is. - * - * @return the String "class". - * @see cp_info#typeName - */ - public String typeName() { - return "class"; - } - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - */ - public int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]) { - if (tag != cp.tag) { - return tag - cp.tag; - } - CONSTANT_Class_info cu = (CONSTANT_Class_info) cp; - return ((CONSTANT_Utf8_info) (constant_pool[name_index])).compareTo(cp_constant_pool[cu.name_index]); - } - - public Value createJimpleConstantValue(cp_info[] constant_pool) { - CONSTANT_Utf8_info ci = (CONSTANT_Utf8_info) (constant_pool[name_index]); - String name = ci.convert(); - return ClassConstant.v(name); - } -} diff --git a/src/main/java/soot/coffi/CONSTANT_Double_info.java b/src/main/java/soot/coffi/CONSTANT_Double_info.java deleted file mode 100644 index 9d283098121..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_Double_info.java +++ /dev/null @@ -1,102 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.Value; -import soot.jimple.DoubleConstant; - -/** - * A constant pool entry of type CONSTANT_Double. - * - * @see cp_info - * @author Clark Verbrugge - */ -class CONSTANT_Double_info extends cp_info { - /** High-order 32 bits of the double. */ - public long high; - /** High-order 32 bits of the double. */ - public long low; - - /** - * Returns the size of this cp_info object. - * - * @return number of bytes occupied by this object. - * @see cp_info#size - */ - public int size() { - return 9; - } - - /** Converts the internal representation (two ints) to a double. */ - public double convert() { - return Double.longBitsToDouble(ints2long(high, low)); - } - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - * @see cp_info#toString - */ - public String toString(cp_info constant_pool[]) { - return Double.toString(convert()); - } - - /** - * Returns a String description of what kind of entry this is. - * - * @return the String "double". - * @see cp_info#typeName - */ - public String typeName() { - return "double"; - } - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - */ - public int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]) { - double d; - if (tag != cp.tag) { - return tag - cp.tag; - } - CONSTANT_Double_info cu = (CONSTANT_Double_info) cp; - d = convert() - cu.convert(); - return ((d > 0.0) ? 1 : ((d < 0.0) ? -1 : 0)); - } - - public Value createJimpleConstantValue(cp_info[] constant_pool) { - return DoubleConstant.v(convert()); - } -} diff --git a/src/main/java/soot/coffi/CONSTANT_Fieldref_info.java b/src/main/java/soot/coffi/CONSTANT_Fieldref_info.java deleted file mode 100644 index d7d48f51ba6..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_Fieldref_info.java +++ /dev/null @@ -1,121 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.Scene; -import soot.Type; -import soot.Value; -import soot.jimple.Jimple; - -/** - * A constant pool entry of type CONSTANT_Fieldref. - * - * @see cp_info - * @author Clark Verbrugge - */ -class CONSTANT_Fieldref_info extends cp_info { - /** - * Constant pool index of a CONSTANT_Class object. - * - * @see CONSTANT_Class_info - */ - public int class_index; - /** - * Constant pool index of a CONSTANT_NameAndType object. - * - * @see CONSTANT_NameAndType_info - */ - public int name_and_type_index; - - /** - * Returns the size of this cp_info object. - * - * @return number of bytes occupied by this object. - * @see cp_info#size - */ - public int size() { - return 5; - } - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - * @see cp_info#toString - */ - public String toString(cp_info constant_pool[]) { - CONSTANT_Class_info cc = (CONSTANT_Class_info) (constant_pool[class_index]); - CONSTANT_NameAndType_info cn = (CONSTANT_NameAndType_info) (constant_pool[name_and_type_index]); - return cc.toString(constant_pool) + "." + cn.toString(constant_pool); - } - - /** - * Returns a String description of what kind of entry this is. - * - * @return the String "fieldref". - * @see cp_info#typeName - */ - public String typeName() { - return "fieldref"; - } - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - */ - public int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]) { - int i; - if (tag != cp.tag) { - return tag - cp.tag; - } - CONSTANT_Fieldref_info cu = (CONSTANT_Fieldref_info) cp; - i = constant_pool[class_index].compareTo(constant_pool, cp_constant_pool[cu.class_index], cp_constant_pool); - if (i != 0) { - return i; - } - return constant_pool[name_and_type_index].compareTo(constant_pool, cp_constant_pool[cu.name_and_type_index], - cp_constant_pool); - } - - public Value createJimpleConstantValue(cp_info[] constant_pool) { - CONSTANT_Class_info cc = (CONSTANT_Class_info) (constant_pool[class_index]); - CONSTANT_NameAndType_info cn = (CONSTANT_NameAndType_info) (constant_pool[name_and_type_index]); - String className = cc.toString(constant_pool); - String nameAndType = cn.toString(constant_pool); - String name = nameAndType.substring(0, nameAndType.indexOf(":")); - String typeName = nameAndType.substring(nameAndType.indexOf(":") + 1); - Type type = Util.v().jimpleTypeOfFieldDescriptor(typeName); - return Jimple.v().newStaticFieldRef(Scene.v().makeFieldRef(Scene.v().getSootClass(className), name, type, true)); - } - -} diff --git a/src/main/java/soot/coffi/CONSTANT_Float_info.java b/src/main/java/soot/coffi/CONSTANT_Float_info.java deleted file mode 100644 index fcf92c7133a..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_Float_info.java +++ /dev/null @@ -1,100 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.Value; -import soot.jimple.FloatConstant; - -/** - * A constant pool entry of type CONSTANT_Float - * - * @see cp_info - * @author Clark Verbrugge - */ -class CONSTANT_Float_info extends cp_info { - /** Internal representation of the float. */ - public long bytes; - - /** - * Returns the size of this cp_info object. - * - * @return number of bytes occupied by this object. - * @see cp_info#size - */ - public int size() { - return 5; - } - - /** Converts the internal representation to an actual float. */ - public float convert() { - return Float.intBitsToFloat((int) bytes); - } - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - * @see cp_info#toString - */ - public String toString(cp_info constant_pool[]) { - return Float.toString(bytes); - } - - /** - * Returns a String description of what kind of entry this is. - * - * @return the String "float". - * @see cp_info#typeName - */ - public String typeName() { - return "float"; - } - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - */ - public int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]) { - float d; - if (tag != cp.tag) { - return tag - cp.tag; - } - CONSTANT_Float_info cu = (CONSTANT_Float_info) cp; - d = convert() - cu.convert(); - return ((d > 0.0) ? 1 : ((d < 0.0) ? -1 : 0)); - } - - public Value createJimpleConstantValue(cp_info[] constant_pool) { - return FloatConstant.v(convert()); - } -} diff --git a/src/main/java/soot/coffi/CONSTANT_Integer_info.java b/src/main/java/soot/coffi/CONSTANT_Integer_info.java deleted file mode 100644 index c9a756aa38d..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_Integer_info.java +++ /dev/null @@ -1,93 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.Value; -import soot.jimple.IntConstant; - -/** - * A constant pool entry of type CONSTANT_Integer - * - * @see cp_info - * @author Clark Verbrugge - */ -class CONSTANT_Integer_info extends cp_info { - /** Internal representation. */ - public long bytes; - - /** - * Returns the size of this cp_info object. - * - * @return number of bytes occupied by this object. - * @see cp_info#size - */ - public int size() { - return 5; - } - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - * @see cp_info#toString - */ - public String toString(cp_info constant_pool[]) { - return Integer.toString((int) bytes); - } - - /** - * Returns a String description of what kind of entry this is. - * - * @return the String "int". - * @see cp_info#typeName - */ - public String typeName() { - return "int"; - } - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - */ - public int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]) { - if (tag != cp.tag) { - return tag - cp.tag; - } - CONSTANT_Integer_info cu = (CONSTANT_Integer_info) cp; - return ((int) bytes) - (int) cu.bytes; - } - - public Value createJimpleConstantValue(cp_info[] constant_pool) { - return IntConstant.v((int) bytes); - } -} diff --git a/src/main/java/soot/coffi/CONSTANT_InterfaceMethodref_info.java b/src/main/java/soot/coffi/CONSTANT_InterfaceMethodref_info.java deleted file mode 100644 index 8b76b483a4b..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_InterfaceMethodref_info.java +++ /dev/null @@ -1,118 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.Value; - -/** - * A constant pool entry of type CONSTANT_InterfaceMethodref - * - * @see cp_info - * @author Clark Verbrugge - */ -class CONSTANT_InterfaceMethodref_info extends cp_info implements ICONSTANT_Methodref_info { - /** - * Constant pool index of a CONSTANT_Class object. - * - * @see CONSTANT_Class_info - */ - public int class_index; - /** - * Constant pool index of a CONSTANT_NameAndType object. - * - * @see CONSTANT_NameAndType_info - */ - public int name_and_type_index; - - /** - * Returns the size of this cp_info object. - * - * @return number of bytes occupied by this object. - * @see cp_info#size - */ - public int size() { - return 5; - } - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - * @see cp_info#toString - */ - public String toString(cp_info constant_pool[]) { - CONSTANT_Class_info cc = (CONSTANT_Class_info) (constant_pool[class_index]); - CONSTANT_NameAndType_info cn = (CONSTANT_NameAndType_info) (constant_pool[name_and_type_index]); - return cc.toString(constant_pool) + "." + cn.toString(constant_pool); - } - - /** - * Returns a String description of what kind of entry this is. - * - * @return the String "interfacemethodref". - * @see cp_info#typeName - */ - public String typeName() { - return "interfacemethodref"; - } - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - */ - public int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]) { - int i; - if (tag != cp.tag) { - return tag - cp.tag; - } - CONSTANT_InterfaceMethodref_info cu = (CONSTANT_InterfaceMethodref_info) cp; - i = constant_pool[class_index].compareTo(constant_pool, cp_constant_pool[cu.class_index], cp_constant_pool); - if (i != 0) { - return i; - } - return constant_pool[name_and_type_index].compareTo(constant_pool, cp_constant_pool[cu.name_and_type_index], - cp_constant_pool); - } - - public Value createJimpleConstantValue(cp_info[] constant_pool) { - throw new UnsupportedOperationException("cannot convert to Jimple: " + typeName()); - } - - public int getClassIndex() { - return class_index; - } - - public int getNameAndTypeIndex() { - return name_and_type_index; - } -} diff --git a/src/main/java/soot/coffi/CONSTANT_InvokeDynamic_info.java b/src/main/java/soot/coffi/CONSTANT_InvokeDynamic_info.java deleted file mode 100644 index 9a50f23beb4..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_InvokeDynamic_info.java +++ /dev/null @@ -1,99 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2012 Eric Bodden - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.Value; - -/** - * A constant pool entry of type CONSTANT_InvokeDynamic - * - * @see cp_info - * @author Eric Bodden - */ -class CONSTANT_InvokeDynamic_info extends cp_info { - - public int bootstrap_method_index; - - public int name_and_type_index; - - public int size() { - return 5; - } - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - * @see cp_info#toString - */ - public String toString(cp_info constant_pool[]) { - // currently neglects field "kind" - cp_info bsm = constant_pool[bootstrap_method_index]; - cp_info nat = constant_pool[name_and_type_index]; - return nat.toString(constant_pool) + " - " + bsm.toString(constant_pool); - } - - /** - * Returns a String description of what kind of entry this is. - * - * @return the String "methodhandle". - * @see cp_info#typeName - */ - public String typeName() { - return "invokedynamic"; - } - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - */ - public int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]) { - int i; - if (tag != cp.tag) { - return tag - cp.tag; - } - CONSTANT_InvokeDynamic_info cu = (CONSTANT_InvokeDynamic_info) cp; - i = constant_pool[bootstrap_method_index].compareTo(constant_pool, cp_constant_pool[cu.bootstrap_method_index], - cp_constant_pool); - if (i != 0) { - return i; - } - i = constant_pool[name_and_type_index].compareTo(constant_pool, cp_constant_pool[cu.name_and_type_index], - cp_constant_pool); - return i; - } - - public Value createJimpleConstantValue(cp_info[] constant_pool) { - throw new UnsupportedOperationException("cannot convert to Jimple: " + typeName()); - } -} diff --git a/src/main/java/soot/coffi/CONSTANT_Long_info.java b/src/main/java/soot/coffi/CONSTANT_Long_info.java deleted file mode 100644 index c06c5b8e502..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_Long_info.java +++ /dev/null @@ -1,102 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.Value; -import soot.jimple.LongConstant; - -/** - * A constant pool entry of type CONSTANT_Long - * - * @see cp_info - * @author Clark Verbrugge - */ -class CONSTANT_Long_info extends cp_info { - /** the upper 32 bits of the long. */ - public long high; - /** the lower 32 bits of the long. */ - public long low; - - /** - * Returns the size of this cp_info object. - * - * @return number of bytes occupied by this object. - * @see cp_info#size - */ - public int size() { - return 9; - } - - /** Converts the internal two-int representation to an actual long. */ - public long convert() { - return ints2long(high, low); - } - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - * @see cp_info#toString - */ - public String toString(cp_info constant_pool[]) { - return "(" + high + "," + low + ") = " + Long.toString(convert()); - } - - /** - * Returns a String description of what kind of entry this is. - * - * @return the String "long". - * @see cp_info#typeName - */ - public String typeName() { - return "long"; - } - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - */ - public int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]) { - long d; - if (tag != cp.tag) { - return tag - cp.tag; - } - CONSTANT_Long_info cu = (CONSTANT_Long_info) cp; - d = convert() - cu.convert(); - return ((d > 0) ? 1 : ((d < 0) ? -1 : 0)); - } - - public Value createJimpleConstantValue(cp_info[] constant_pool) { - return LongConstant.v(convert()); - } -} diff --git a/src/main/java/soot/coffi/CONSTANT_MethodHandle_info.java b/src/main/java/soot/coffi/CONSTANT_MethodHandle_info.java deleted file mode 100644 index b83598960ae..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_MethodHandle_info.java +++ /dev/null @@ -1,96 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2012 Eric Bodden - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.Value; - -/** - * A constant pool entry of type CONSTANT_MethodHandle - * - * @see cp_info - * @author Eric Bodden - */ -class CONSTANT_MethodHandle_info extends cp_info { - - public int kind; - - public int target_index; - - public int size() { - return 4; - } - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - * @see cp_info#toString - */ - public String toString(cp_info constant_pool[]) { - // currently neglects field "kind" - cp_info target = constant_pool[target_index]; - return target.toString(constant_pool); - } - - /** - * Returns a String description of what kind of entry this is. - * - * @return the String "methodhandle". - * @see cp_info#typeName - */ - public String typeName() { - return "methodhandle"; - } - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - */ - public int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]) { - int i; - if (tag != cp.tag) { - return tag - cp.tag; - } - CONSTANT_MethodHandle_info cu = (CONSTANT_MethodHandle_info) cp; - i = constant_pool[target_index].compareTo(constant_pool, cp_constant_pool[cu.target_index], cp_constant_pool); - if (i != 0) { - return i; - } - return kind - cu.kind; - } - - public Value createJimpleConstantValue(cp_info[] constant_pool) { - // FIXME may need to determine static-ness based on "kind" field - return constant_pool[target_index].createJimpleConstantValue(constant_pool); - } -} diff --git a/src/main/java/soot/coffi/CONSTANT_Methodref_info.java b/src/main/java/soot/coffi/CONSTANT_Methodref_info.java deleted file mode 100644 index c9b79068dad..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_Methodref_info.java +++ /dev/null @@ -1,146 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.util.ArrayList; -import java.util.List; - -import soot.Scene; -import soot.Type; -import soot.Value; -import soot.jimple.Jimple; - -/** - * A constant pool entry of type CONSTANT_Methodref - * - * @see cp_info - * @author Clark Verbrugge - */ -class CONSTANT_Methodref_info extends cp_info implements ICONSTANT_Methodref_info { - /** - * Constant pool index of a CONSTANT_Class object. - * - * @see CONSTANT_Class_info - */ - public int class_index; - /** - * Constant pool index of a CONSTANT_NameAndType object. - * - * @see CONSTANT_NameAndType_info - */ - public int name_and_type_index; - - /** - * Returns the size of this cp_info object. - * - * @return number of bytes occupied by this object. - * @see cp_info#size - */ - public int size() { - return 5; - } - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - * @see cp_info#toString - */ - public String toString(cp_info constant_pool[]) { - CONSTANT_Class_info cc = (CONSTANT_Class_info) (constant_pool[class_index]); - CONSTANT_NameAndType_info cn = (CONSTANT_NameAndType_info) (constant_pool[name_and_type_index]); - return cc.toString(constant_pool) + "." + cn.toString(constant_pool); - } - - /** - * Returns a String description of what kind of entry this is. - * - * @return the String "methodref". - * @see cp_info#typeName - */ - public String typeName() { - return "methodref"; - } - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - */ - public int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]) { - int i; - if (tag != cp.tag) { - return tag - cp.tag; - } - CONSTANT_Methodref_info cu = (CONSTANT_Methodref_info) cp; - i = constant_pool[class_index].compareTo(constant_pool, cp_constant_pool[cu.class_index], cp_constant_pool); - if (i != 0) { - return i; - } - return constant_pool[name_and_type_index].compareTo(constant_pool, cp_constant_pool[cu.name_and_type_index], - cp_constant_pool); - } - - public Value createJimpleConstantValue(cp_info[] constant_pool) { - CONSTANT_Class_info cc = (CONSTANT_Class_info) (constant_pool[class_index]); - CONSTANT_NameAndType_info cn = (CONSTANT_NameAndType_info) (constant_pool[name_and_type_index]); - String className = cc.toString(constant_pool); - String nameAndType = cn.toString(constant_pool); - String name = nameAndType.substring(0, nameAndType.indexOf(":")); - String typeName = nameAndType.substring(nameAndType.indexOf(":") + 1); - - List parameterTypes; - Type returnType; - - // Generate parameters & returnType & parameterTypes - { - Type[] types = Util.v().jimpleTypesOfFieldOrMethodDescriptor(typeName); - parameterTypes = new ArrayList(); - for (int k = 0; k < types.length - 1; k++) { - parameterTypes.add(types[k]); - } - returnType = types[types.length - 1]; - } - - return Jimple.v().newStaticInvokeExpr( - Scene.v().makeMethodRef(Scene.v().getSootClass(className), name, parameterTypes, returnType, true)); - } - - public int getClassIndex() { - return class_index; - } - - public int getNameAndTypeIndex() { - return name_and_type_index; - } - -} diff --git a/src/main/java/soot/coffi/CONSTANT_NameAndType_info.java b/src/main/java/soot/coffi/CONSTANT_NameAndType_info.java deleted file mode 100644 index 7d4e3b10602..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_NameAndType_info.java +++ /dev/null @@ -1,110 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.Value; - -/** - * A constant pool entry of type CONSTANT_NameAndType - * - * @see cp_info - * @author Clark Verbrugge - */ -class CONSTANT_NameAndType_info extends cp_info { - /** - * Constant pool index of the CONSTANT_Utf8 object for the name. - * - * @see CONSTANT_Utf8_info - */ - public int name_index; - /** - * Constant pool index of the CONSTANT_Utf8 object for the descriptor. - * - * @see CONSTANT_Utf8_info - */ - public int descriptor_index; - - /** - * Returns the size of this cp_info object. - * - * @return number of bytes occupied by this object. - * @see cp_info#size - */ - public int size() { - return 5; - } - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - * @see cp_info#toString - */ - public String toString(cp_info constant_pool[]) { - CONSTANT_Utf8_info ci = (CONSTANT_Utf8_info) (constant_pool[name_index]); - // CONSTANT_Utf8_info di = (CONSTANT_Utf8_info)(constant_pool[descriptor_index]); - return ci.convert(); // + "/" + di.convert(); - } - - /** - * Returns a String description of what kind of entry this is. - * - * @return the String "nameandtype". - * @see cp_info#typeName - */ - public String typeName() { - return "nameandtype"; - } - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - */ - public int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]) { - int i; - if (tag != cp.tag) { - return tag - cp.tag; - } - CONSTANT_NameAndType_info cu = (CONSTANT_NameAndType_info) cp; - i = ((CONSTANT_Utf8_info) (constant_pool[name_index])).compareTo(cp_constant_pool[cu.name_index]); - if (i != 0) { - return i; - } - return ((CONSTANT_Utf8_info) (constant_pool[descriptor_index])).compareTo(cp_constant_pool[cu.descriptor_index]); - } - - public Value createJimpleConstantValue(cp_info[] constant_pool) { - throw new UnsupportedOperationException("cannot convert to Jimple: " + typeName()); - } - -} diff --git a/src/main/java/soot/coffi/CONSTANT_String_info.java b/src/main/java/soot/coffi/CONSTANT_String_info.java deleted file mode 100644 index 56e0fa3450b..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_String_info.java +++ /dev/null @@ -1,99 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.Value; -import soot.jimple.StringConstant; - -/** - * A constant pool entry of type CONSTANT_String. - * - * @see cp_info - * @author Clark Verbrugge - */ -class CONSTANT_String_info extends cp_info { - /** - * Constant pool index of the CONSTANT_Utf8 object for the actual string. - * - * @see CONSTANT_Utf8_info - */ - public int string_index; - - /** - * Returns the size of this cp_info object. - * - * @return number of bytes occupied by this object. - * @see cp_info#size - */ - public int size() { - return 3; - } - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - * @see cp_info#toString - */ - public String toString(cp_info constant_pool[]) { - CONSTANT_Utf8_info ci = (CONSTANT_Utf8_info) (constant_pool[string_index]); - return "\"" + ci.convert() + "\""; - } - - /** - * Returns a String description of what kind of entry this is. - * - * @return the String "string". - * @see cp_info#typeName - */ - public String typeName() { - return "string"; - } - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - */ - public int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]) { - if (tag != cp.tag) { - return tag - cp.tag; - } - CONSTANT_String_info cu = (CONSTANT_String_info) cp; - return ((CONSTANT_Utf8_info) (constant_pool[string_index])).compareTo(cp_constant_pool[cu.string_index]); - } - - public Value createJimpleConstantValue(cp_info[] constant_pool) { - CONSTANT_Utf8_info ci = (CONSTANT_Utf8_info) (constant_pool[string_index]); - return StringConstant.v(ci.convert()); - } -} diff --git a/src/main/java/soot/coffi/CONSTANT_Utf8_collector.java b/src/main/java/soot/coffi/CONSTANT_Utf8_collector.java deleted file mode 100644 index 17b6140e8f9..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_Utf8_collector.java +++ /dev/null @@ -1,57 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2001 Michael Pan (pan@math.tau.ac.il) - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.util.HashMap; - -import soot.G; -import soot.Singletons; - -/** - * Provides sharing for Utf8_info string objects reused in different contexts. - */ - -public class CONSTANT_Utf8_collector { - public CONSTANT_Utf8_collector(Singletons.Global g) { - } - - public static CONSTANT_Utf8_collector v() { - return G.v().soot_coffi_CONSTANT_Utf8_collector(); - } - - HashMap hash = null; - - synchronized CONSTANT_Utf8_info add(CONSTANT_Utf8_info _Utf8_info) { - if (hash == null) { - hash = new HashMap(); - } - - String Utf8_str_key = _Utf8_info.convert(); - if (hash.containsKey(Utf8_str_key)) { - return hash.get(Utf8_str_key); - } - hash.put(Utf8_str_key, _Utf8_info); - _Utf8_info.fixConversion(Utf8_str_key); - return _Utf8_info; - } -} diff --git a/src/main/java/soot/coffi/CONSTANT_Utf8_info.java b/src/main/java/soot/coffi/CONSTANT_Utf8_info.java deleted file mode 100644 index 57e59243546..00000000000 --- a/src/main/java/soot/coffi/CONSTANT_Utf8_info.java +++ /dev/null @@ -1,243 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import soot.G; -import soot.Value; -import soot.jimple.StringConstant; - -/** - * A constant pool entry of type CONSTANT_Utf8; note this is not multithread safe. It is, however, immutable. - * - * @see cp_info - * @author Clark Verbrugge - */ -public class CONSTANT_Utf8_info extends cp_info { - private static final Logger logger = LoggerFactory.getLogger(CONSTANT_Utf8_info.class); - // Some local private objects to help with efficient comparisons. - private int sHashCode; - // for caching the conversion. - private String s; - /** Byte array of actual utf8 string. */ - private final byte bytes[]; - - /** Constructor from a DataInputSream */ - public CONSTANT_Utf8_info(DataInputStream d) throws IOException { - int len; - len = d.readUnsignedShort(); - bytes = new byte[len + 2]; - bytes[0] = (byte) (len >> 8); - bytes[1] = (byte) (len & 0xff); - if (len > 0) { - int j; - for (j = 0; j < len; j++) { - bytes[j + 2] = (byte) d.readUnsignedByte(); - } - } - } - - /** For writing out the byte stream for this utf8 properly (incl size). */ - public void writeBytes(DataOutputStream dd) throws IOException { - int len; - len = bytes.length; - dd.writeShort(len - 2); - dd.write(bytes, 2, len - 2); - } - - /** Length in bytes of byte array. */ - public int length() { - return (((((bytes[0])) & 0xff) << 8) + (((bytes[1])) & 0xff)); - } - - /** - * Returns the size of this cp_info object. - * - * @return number of bytes occupied by this object. - * @see cp_info#size - */ - public int size() { - return length() + 3; - } - - /** - * Converts internal representation into an actual String. - * - * @return String version of this utf8 object. - */ - public String convert() { - if (s == null) { - try { - ByteArrayInputStream bs = new ByteArrayInputStream(bytes); - DataInputStream d = new DataInputStream(bs); - String buf = d.readUTF(); - sHashCode = buf.hashCode(); - return buf; - } catch (IOException e) { - return "!!IOException!!"; - } - } - return s; - } - - /** - * Fixes the actual String used to represent the internal representation. We must have rep == convert(); we verify - * hashCodes() to spot-check this. No user-visible effects. - */ - public void fixConversion(String rep) { - if (sHashCode != rep.hashCode()) { - throw new RuntimeException("bad use of fixConversion!"); - } - - if (s == null) { - s = rep; - } - } - - /** - * Answers whether this utf8 string is the same as a given one. - * - * @param cu - * utf8 object with which to compare. - * @return true if they are equal, false if they are not. - */ - public boolean equals(CONSTANT_Utf8_info cu) { - int i, j; - j = bytes.length; - if (j != cu.bytes.length) { - return false; - } - for (i = 0; i < j; i++) { - if (bytes[i] != cu.bytes[i]) { - return false; - } - } - return true; - } - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - * @see CONSTANT_Utf8_info#compareTo(cp_info) - */ - public int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]) { - return compareTo(cp); - } - - /** - * Compares this entry with another cp_info object; note that for Utf8 object it really doesn't matter whether they're in - * the same or a different constant pool, since they really do carry all their data. - * - * @param cp - * constant pool entry to compare against. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - * @see cp_info#compareTo - * @see CONSTANT_Utf8_info#compareTo(cp_info[],cp_info,cp_info[]) - */ - public int compareTo(cp_info cp) { - if (tag != cp.tag) { - return tag - cp.tag; - } - CONSTANT_Utf8_info cu = (CONSTANT_Utf8_info) cp; - G.v().coffi_CONSTANT_Utf8_info_e1.reset(bytes); - G.v().coffi_CONSTANT_Utf8_info_e2.reset(cu.bytes); - for (; G.v().coffi_CONSTANT_Utf8_info_e1.hasMoreElements() && G.v().coffi_CONSTANT_Utf8_info_e2.hasMoreElements();) { - G.v().coffi_CONSTANT_Utf8_info_e1.nextElement(); - G.v().coffi_CONSTANT_Utf8_info_e2.nextElement(); - if (G.v().coffi_CONSTANT_Utf8_info_e1.c < G.v().coffi_CONSTANT_Utf8_info_e2.c) { - return -1; - } - if (G.v().coffi_CONSTANT_Utf8_info_e2.c < G.v().coffi_CONSTANT_Utf8_info_e1.c) { - return 1; - } - } - if (G.v().coffi_CONSTANT_Utf8_info_e1.hasMoreElements()) { - return -1; - } - if (G.v().coffi_CONSTANT_Utf8_info_e2.hasMoreElements()) { - return 1; - } - return 0; - } - - /** - * Utility method; converts the given String into a utf8 encoded array of bytes. - * - * @param s - * String to encode. - * @return array of bytes, utf8 encoded version of s. - */ - public static byte[] toUtf8(String s) { - try { - ByteArrayOutputStream bs = new ByteArrayOutputStream(s.length()); - DataOutputStream d = new DataOutputStream(bs); - d.writeUTF(s); - return bs.toByteArray(); - } catch (IOException e) { - logger.debug("Some sort of IO exception in toUtf8 with " + s); - } - return null; - } - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - * @see cp_info#toString - */ - public String toString(cp_info constant_pool[]) { - return convert(); - } - - /** - * Returns a String description of what kind of entry this is. - * - * @return the String "utf8". - * @see cp_info#typeName - */ - public String typeName() { - return "utf8"; - } - - public Value createJimpleConstantValue(cp_info[] constant_pool) { - return StringConstant.v(convert()); - } -} diff --git a/src/main/java/soot/coffi/ClassFile.java b/src/main/java/soot/coffi/ClassFile.java deleted file mode 100644 index 14f7ae48924..00000000000 --- a/src/main/java/soot/coffi/ClassFile.java +++ /dev/null @@ -1,1869 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.io.ByteArrayInputStream; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import soot.Timers; -import soot.options.Options; - -/** - * A ClassFile object represents the contents of a .class file. - *

- * A ClassFile contains code for manipulation of its constituents. - * - * @author Clark Verbrugge - */ -public class ClassFile { - private static final Logger logger = LoggerFactory.getLogger(ClassFile.class); - - /** Magic number. */ - static final long MAGIC = 0xCAFEBABEL; - - /** Access bit flag. */ - static final short ACC_PUBLIC = 0x0001; - /** Access bit flag. */ - static final short ACC_PRIVATE = 0x0002; - /** Access bit flag. */ - static final short ACC_PROTECTED = 0x0004; - /** Access bit flag. */ - static final short ACC_STATIC = 0x0008; - /** Access bit flag. */ - static final short ACC_FINAL = 0x0010; - /** Access bit flag. */ - static final short ACC_SUPER = 0x0020; - /** Access bit flag. */ - static final short ACC_VOLATILE = 0x0040; - /** Access bit flag. */ - static final short ACC_TRANSIENT = 0x0080; - /** Access bit flag. */ - static final short ACC_INTERFACE = 0x0200; - /** Access bit flag. */ - static final short ACC_ABSTRACT = 0x0400; - /** Access bit flag. */ - static final short ACC_STRICT = 0x0800; - /** Access bit flag. */ - static final short ACC_ANNOTATION = 0x2000; - /** Access bit flag. */ - static final short ACC_ENUM = 0x4000; - /** Remaining bits in the access bit flag. */ - static final short ACC_UNKNOWN = 0x7000; - - /** Descriptor code string. */ - static final String DESC_BYTE = "B"; - /** Descriptor code string. */ - static final String DESC_CHAR = "C"; - /** Descriptor code string. */ - static final String DESC_DOUBLE = "D"; - /** Descriptor code string. */ - static final String DESC_FLOAT = "F"; - /** Descriptor code string. */ - static final String DESC_INT = "I"; - /** Descriptor code string. */ - static final String DESC_LONG = "J"; - /** Descriptor code string. */ - static final String DESC_OBJECT = "L"; - /** Descriptor code string. */ - static final String DESC_SHORT = "S"; - /** Descriptor code string. */ - static final String DESC_BOOLEAN = "Z"; - /** Descriptor code string. */ - static final String DESC_VOID = "V"; - /** Descriptor code string. */ - static final String DESC_ARRAY = "["; - - /** Debugging flag. */ - boolean debug; - - /** File name of the .class this represents. */ - String fn; - - /* - * For chaining ClassFiles into a list. ClassFile next; - */ - - /** - * Magic number read in. - * - * @see ClassFile#MAGIC - */ - long magic; - /** Minor version. */ - int minor_version; - /** Major version. */ - int major_version; - /** Number of items in the constant pool. */ - public int constant_pool_count; - /** - * Array of constant pool items. - * - * @see cp_info - */ - public cp_info constant_pool[]; - /** - * Access flags for this Class. - */ - public int access_flags; - /** - * Constant pool index of the Class constant describing this. - * - * @see CONSTANT_Class_info - */ - public int this_class; - /** - * Constant pool index of the Class constant describing super. - * - * @see CONSTANT_Class_info - */ - public int super_class; - /** Count of interfaces implemented. */ - public int interfaces_count; - /** - * Array of constant pool indices of Class constants describing each interace implemented by this class, as given in the - * source for this class. - * - * @see CONSTANT_Class_info - */ - public int interfaces[]; - /** Count of fields this Class contains. */ - public int fields_count; - /** - * Array of field_info objects describing each field. - * - * @see field_info - */ - public field_info fields[]; - /** Count of methods this Class contains. */ - public int methods_count; - /** - * Array of method_info objects describing each field. - * - * @see method_info - */ - public method_info methods[]; - /** Count of attributes this class contains. */ - public int attributes_count; - /** - * Array of attribute_info objects for this class. - * - * @see attribute_info - */ - public attribute_info attributes[]; - - /** bootstrap-methods attribute (if any) */ - public BootstrapMethods_attribute bootstrap_methods_attribute; - - /** - * Creates a new ClassFile object given the name of the file. - * - * @param nfn - * file name which this ClassFile will represent. - */ - public ClassFile(String nfn) { - fn = nfn; - } - - /** Returns the name of this Class. */ - public String toString() { - return (constant_pool[this_class].toString(constant_pool)); - } - - public boolean loadClassFile(InputStream is) { - InputStream f = null; - InputStream classFileStream; - DataInputStream d; - boolean b; - - classFileStream = is; - - byte[] data; - - if (Options.v().time()) { - Timers.v().readTimer.start(); - } - - try { - DataInputStream classDataStream = new DataInputStream(classFileStream); - data = new byte[classDataStream.available()]; - classDataStream.readFully(data); - f = new ByteArrayInputStream(data); - - } catch (IOException e) { - logger.debug(e.getMessage(), e); - } - - if (Options.v().time()) { - Timers.v().readTimer.end(); - } - - d = new DataInputStream(f); - b = readClass(d); - - try { - classFileStream.close(); - d.close(); - if (f != null) { - f.close(); - } - } catch (IOException e) { - logger.debug("IOException with " + fn + ": " + e.getMessage()); - return false; - } - - if (!b) { - return false; - } - // parse(); // parse all methods & builds CFGs - // logger.debug("-- Read " + cf + " --"); - return true; - } - - /** - * Main entry point for writing a class file. The file name is given in the constructor; this opens the file and writes the - * internal representation. - * - * @return true on success. - */ - boolean saveClassFile() { - FileOutputStream f; - DataOutputStream d; - boolean b; - try { - f = new FileOutputStream(fn); - } catch (FileNotFoundException e) { - if (fn.indexOf(".class") >= 0) { - logger.debug("Can't find " + fn); - return false; - } - fn = fn + ".class"; - try { - f = new FileOutputStream(fn); - } catch (FileNotFoundException ee) { - logger.debug("Can't find " + fn); - return false; - } - } - d = new DataOutputStream(f); - b = writeClass(d); - try { - d.close(); - f.close(); - } catch (IOException e) { - logger.debug("IOException with " + fn + ": " + e.getMessage()); - return false; - } - return b; - } - - /** - * Returns a String constructed by parsing the bits in the given access code (as defined by the ACC_* constants). - * - * @param af - * access code. - * @param separator - * String used to separate words used for access bits. - * @see ClassFile#access_flags - * @see method_info#access_flags - * @see field_info#access_flags - */ - static String access_string(int af, String separator) { - boolean hasone = false; - String s = ""; - if ((af & ACC_PUBLIC) != 0) { - s = "public"; - hasone = true; - } - if ((af & ACC_PRIVATE) != 0) { - if (hasone) { - s = s + separator; - } else { - hasone = true; - } - s = s + "private"; - } - if ((af & ACC_PROTECTED) != 0) { - if (hasone) { - s = s + separator; - } else { - hasone = true; - } - s = s + "protected"; - } - if ((af & ACC_STATIC) != 0) { - if (hasone) { - s = s + separator; - } else { - hasone = true; - } - s = s + "static"; - } - if ((af & ACC_FINAL) != 0) { - if (hasone) { - s = s + separator; - } else { - hasone = true; - } - s = s + "final"; - } - if ((af & ACC_SUPER) != 0) { - if (hasone) { - s = s + separator; - } else { - hasone = true; - } - s = s + "super"; - } - if ((af & ACC_VOLATILE) != 0) { - if (hasone) { - s = s + separator; - } else { - hasone = true; - } - s = s + "volatile"; - } - if ((af & ACC_TRANSIENT) != 0) { - if (hasone) { - s = s + separator; - } else { - hasone = true; - } - s = s + "transient"; - } - if ((af & ACC_INTERFACE) != 0) { - if (hasone) { - s = s + separator; - } else { - hasone = true; - } - s = s + "interface"; - } - if ((af & ACC_ABSTRACT) != 0) { - if (hasone) { - s = s + separator; - } else { - hasone = true; - } - s = s + "abstract"; - } - if ((af & ACC_STRICT) != 0) { - if (hasone) { - s = s + separator; - } else { - hasone = true; - } - s = s + "strict"; - } - if ((af & ACC_ANNOTATION) != 0) { - if (hasone) { - s = s + separator; - } else { - hasone = true; - } - s = s + "annotation"; - } - if ((af & ACC_ENUM) != 0) { - if (hasone) { - s = s + separator; - } else { - hasone = true; - } - s = s + "enum"; - } - if ((af & ACC_UNKNOWN) != 0) { - if (hasone) { - s = s + separator; - } else { - hasone = true; - } - s = s + "unknown"; - } - return s; - } - - /** - * Builds the internal representation of this Class by reading in the given class file. - * - * @param d - * Stream forming the .class file. - * @return true if read was successful, false on some error. - */ - public boolean readClass(DataInputStream d) { - try { - // first read in magic number - magic = d.readInt() & 0xFFFFFFFFL; - if (magic != MAGIC) { - logger.debug("Wrong magic number in " + fn + ": " + magic); - return false; - } - minor_version = d.readUnsignedShort(); - major_version = d.readUnsignedShort(); - constant_pool_count = d.readUnsignedShort(); - - if (!readConstantPool(d)) { - return false; - } - - access_flags = d.readUnsignedShort(); - this_class = d.readUnsignedShort(); - super_class = d.readUnsignedShort(); - interfaces_count = d.readUnsignedShort(); - if (interfaces_count > 0) { - interfaces = new int[interfaces_count]; - int j; - for (j = 0; j < interfaces_count; j++) { - interfaces[j] = d.readUnsignedShort(); - } - } - - if (Options.v().time()) { - Timers.v().fieldTimer.start(); - } - - fields_count = d.readUnsignedShort(); - readFields(d); - - if (Options.v().time()) { - Timers.v().fieldTimer.end(); - } - - if (Options.v().time()) { - Timers.v().methodTimer.start(); - } - methods_count = d.readUnsignedShort(); - readMethods(d); - - if (Options.v().time()) { - Timers.v().methodTimer.end(); - } - - if (Options.v().time()) { - Timers.v().attributeTimer.start(); - } - - attributes_count = d.readUnsignedShort(); - if (attributes_count > 0) { - attributes = new attribute_info[attributes_count]; - readAttributes(d, attributes_count, attributes); - } - if (Options.v().time()) { - Timers.v().attributeTimer.end(); - } - - } catch (IOException e) { - throw new RuntimeException("IOException with " + fn + ": " + e.getMessage(), e); - } - - return true; - } - - /** - * Reads in the constant pool from the given stream. - * - * @param d - * Stream forming the .class file. - * @return true if read was successful, false on some error. - * @exception java.io.IOException - * on error. - */ - protected boolean readConstantPool(DataInputStream d) throws IOException { - byte tag; - cp_info cp; - int i; - boolean skipone; // set if next cp entry is to be skipped - - constant_pool = new cp_info[constant_pool_count]; - // Instruction.constant_pool = constant_pool; - skipone = false; - - for (i = 1; i < constant_pool_count; i++) { - if (skipone) { - skipone = false; - continue; - } - tag = (byte) d.readUnsignedByte(); - switch (tag) { - case cp_info.CONSTANT_Class: - cp = new CONSTANT_Class_info(); - ((CONSTANT_Class_info) cp).name_index = d.readUnsignedShort(); - if (debug) { - logger.debug("Constant pool[" + i + "]: Class"); - } - break; - case cp_info.CONSTANT_Fieldref: - cp = new CONSTANT_Fieldref_info(); - ((CONSTANT_Fieldref_info) cp).class_index = d.readUnsignedShort(); - ((CONSTANT_Fieldref_info) cp).name_and_type_index = d.readUnsignedShort(); - if (debug) { - logger.debug("Constant pool[" + i + "]: Fieldref"); - } - break; - case cp_info.CONSTANT_Methodref: - cp = new CONSTANT_Methodref_info(); - ((CONSTANT_Methodref_info) cp).class_index = d.readUnsignedShort(); - ((CONSTANT_Methodref_info) cp).name_and_type_index = d.readUnsignedShort(); - if (debug) { - logger.debug("Constant pool[" + i + "]: Methodref"); - } - break; - case cp_info.CONSTANT_InterfaceMethodref: - cp = new CONSTANT_InterfaceMethodref_info(); - ((CONSTANT_InterfaceMethodref_info) cp).class_index = d.readUnsignedShort(); - ((CONSTANT_InterfaceMethodref_info) cp).name_and_type_index = d.readUnsignedShort(); - if (debug) { - logger.debug("Constant pool[" + i + "]: MethodHandle"); - } - break; - case cp_info.CONSTANT_String: - cp = new CONSTANT_String_info(); - ((CONSTANT_String_info) cp).string_index = d.readUnsignedShort(); - if (debug) { - logger.debug("Constant pool[" + i + "]: String"); - } - break; - case cp_info.CONSTANT_Integer: - cp = new CONSTANT_Integer_info(); - ((CONSTANT_Integer_info) cp).bytes = d.readInt(); - if (debug) { - logger.debug("Constant pool[" + i + "]: Integer = " + ((CONSTANT_Integer_info) cp).bytes); - } - break; - case cp_info.CONSTANT_Float: - cp = new CONSTANT_Float_info(); - ((CONSTANT_Float_info) cp).bytes = d.readInt(); - if (debug) { - logger.debug("Constant pool[" + i + "]: Float = " + ((CONSTANT_Float_info) cp).convert()); - } - break; - case cp_info.CONSTANT_Long: - cp = new CONSTANT_Long_info(); - ((CONSTANT_Long_info) cp).high = d.readInt() & 0xFFFFFFFFL; - ((CONSTANT_Long_info) cp).low = d.readInt() & 0xFFFFFFFFL; - - if (debug) { - String temp = cp.toString(constant_pool); - logger.debug("Constant pool[" + i + "]: Long = " + temp); - /* - * logger.debug("Constant pool[" + i + "]: that's " + cp.printBits(((CONSTANT_Long_info)cp).high) + " <<32 + " + - * cp.printBits(((CONSTANT_Long_info)cp).low) + " = " + cp.printBits(((CONSTANT_Long_info)cp).convert())); - */ - } - skipone = true; // next entry needs to be skipped - break; - case cp_info.CONSTANT_Double: - cp = new CONSTANT_Double_info(); - ((CONSTANT_Double_info) cp).high = d.readInt() & 0xFFFFFFFFL; - ((CONSTANT_Double_info) cp).low = d.readInt() & 0xFFFFFFFFL; - if (debug) { - logger.debug("Constant pool[" + i + "]: Double = " + ((CONSTANT_Double_info) cp).convert()); - } - skipone = true; // next entry needs to be skipped - break; - case cp_info.CONSTANT_NameAndType: - cp = new CONSTANT_NameAndType_info(); - ((CONSTANT_NameAndType_info) cp).name_index = d.readUnsignedShort(); - ((CONSTANT_NameAndType_info) cp).descriptor_index = d.readUnsignedShort(); - if (debug) { - logger.debug("Constant pool[" + i + "]: Name and Type"); - } - break; - case cp_info.CONSTANT_Utf8: - CONSTANT_Utf8_info cputf8 = new CONSTANT_Utf8_info(d); - // If an equivalent CONSTANT_Utf8 already exists, we return - // the pre-existing one and allow cputf8 to be GC'd. - cp = (cp_info) CONSTANT_Utf8_collector.v().add(cputf8); - if (debug) { - logger.debug("Constant pool[" + i + "]: Utf8 = \"" + cputf8.convert() + "\""); - } - break; - case cp_info.CONSTANT_MethodHandle: - cp = new CONSTANT_MethodHandle_info(); - ((CONSTANT_MethodHandle_info) cp).kind = d.readByte(); - ((CONSTANT_MethodHandle_info) cp).target_index = d.readUnsignedShort(); - break; - case cp_info.CONSTANT_InvokeDynamic: - cp = new CONSTANT_InvokeDynamic_info(); - ((CONSTANT_InvokeDynamic_info) cp).bootstrap_method_index = d.readUnsignedShort(); - ((CONSTANT_InvokeDynamic_info) cp).name_and_type_index = d.readUnsignedShort(); - break; - default: - logger.debug("Unknown tag in constant pool: " + tag + " at entry " + i); - return false; - } - cp.tag = tag; - constant_pool[i] = cp; - } - return true; - } - - private void readAllBytes(byte[] dest, DataInputStream d) throws IOException { - int total_len = dest.length; - int read_len = 0; - while (read_len < total_len) { - int to_read = total_len - read_len; - int curr_read = d.read(dest, read_len, to_read); - read_len += curr_read; - } - } - - /** - * Reads in the given number of attributes from the given stream. - * - * @param d - * Stream forming the .class file. - * @param attributes_count - * number of attributes to read in. - * @param ai - * pre-allocated array of attributes to be filled in. - * @return true if read was successful, false on some error. - * @exception java.io.IOException - * on error. - */ - protected boolean readAttributes(DataInputStream d, int attributes_count, attribute_info[] ai) throws IOException { - attribute_info a = null; - int i; - int j; - long len; - String s; - - for (i = 0; i < attributes_count; i++) { - - j = d.readUnsignedShort(); // read attribute name before allocating - len = d.readInt() & 0xFFFFFFFFL; - s = ((CONSTANT_Utf8_info) (constant_pool[j])).convert(); - if (s.compareTo(attribute_info.SourceFile) == 0) { - SourceFile_attribute sa = new SourceFile_attribute(); - sa.sourcefile_index = d.readUnsignedShort(); - a = (attribute_info) sa; - } else if (s.compareTo(attribute_info.ConstantValue) == 0) { - ConstantValue_attribute ca = new ConstantValue_attribute(); - ca.constantvalue_index = d.readUnsignedShort(); - a = (attribute_info) ca; - } else if (s.compareTo(attribute_info.Code) == 0) { - Code_attribute ca = new Code_attribute(); - ca.max_stack = d.readUnsignedShort(); - ca.max_locals = d.readUnsignedShort(); - ca.code_length = d.readInt() & 0xFFFFFFFFL; - ca.code = new byte[(int) ca.code_length]; - readAllBytes(ca.code, d); - ca.exception_table_length = d.readUnsignedShort(); - ca.exception_table = new exception_table_entry[ca.exception_table_length]; - int k; - exception_table_entry e; - for (k = 0; k < ca.exception_table_length; k++) { - e = new exception_table_entry(); - e.start_pc = d.readUnsignedShort(); - e.end_pc = d.readUnsignedShort(); - e.handler_pc = d.readUnsignedShort(); - e.catch_type = d.readUnsignedShort(); - ca.exception_table[k] = e; - } - ca.attributes_count = d.readUnsignedShort(); - ca.attributes = new attribute_info[ca.attributes_count]; - readAttributes(d, ca.attributes_count, ca.attributes); - a = (attribute_info) ca; - - } else if (s.compareTo(attribute_info.Exceptions) == 0) { - Exception_attribute ea = new Exception_attribute(); - ea.number_of_exceptions = d.readUnsignedShort(); - if (ea.number_of_exceptions > 0) { - int k; - ea.exception_index_table = new int[ea.number_of_exceptions]; - for (k = 0; k < ea.number_of_exceptions; k++) { - ea.exception_index_table[k] = d.readUnsignedShort(); - } - } - a = (attribute_info) ea; - } else if (s.compareTo(attribute_info.LineNumberTable) == 0) { - LineNumberTable_attribute la = new LineNumberTable_attribute(); - la.line_number_table_length = d.readUnsignedShort(); - int k; - line_number_table_entry e; - la.line_number_table = new line_number_table_entry[la.line_number_table_length]; - for (k = 0; k < la.line_number_table_length; k++) { - e = new line_number_table_entry(); - e.start_pc = d.readUnsignedShort(); - e.line_number = d.readUnsignedShort(); - la.line_number_table[k] = e; - } - a = (attribute_info) la; - } else if (s.compareTo(attribute_info.LocalVariableTable) == 0) { - LocalVariableTable_attribute la = new LocalVariableTable_attribute(); - la.local_variable_table_length = d.readUnsignedShort(); - int k; - local_variable_table_entry e; - la.local_variable_table = new local_variable_table_entry[la.local_variable_table_length]; - for (k = 0; k < la.local_variable_table_length; k++) { - e = new local_variable_table_entry(); - e.start_pc = d.readUnsignedShort(); - e.length = d.readUnsignedShort(); - e.name_index = d.readUnsignedShort(); - e.descriptor_index = d.readUnsignedShort(); - e.index = d.readUnsignedShort(); - la.local_variable_table[k] = e; - } - a = (attribute_info) la; - } else if (s.compareTo(attribute_info.LocalVariableTypeTable) == 0) { - LocalVariableTypeTable_attribute la = new LocalVariableTypeTable_attribute(); - la.local_variable_type_table_length = d.readUnsignedShort(); - int k; - local_variable_type_table_entry e; - la.local_variable_type_table = new local_variable_type_table_entry[la.local_variable_type_table_length]; - for (k = 0; k < la.local_variable_type_table_length; k++) { - e = new local_variable_type_table_entry(); - e.start_pc = d.readUnsignedShort(); - e.length = d.readUnsignedShort(); - e.name_index = d.readUnsignedShort(); - e.signature_index = d.readUnsignedShort(); - e.index = d.readUnsignedShort(); - la.local_variable_type_table[k] = e; - } - a = (attribute_info) la; - } else if (s.compareTo(attribute_info.Synthetic) == 0) { - Synthetic_attribute ia = new Synthetic_attribute(); - a = (attribute_info) ia; - } else if (s.compareTo(attribute_info.Signature) == 0) { - Signature_attribute ia = new Signature_attribute(); - ia.signature_index = d.readUnsignedShort(); - a = (attribute_info) ia; - } else if (s.compareTo(attribute_info.Deprecated) == 0) { - Deprecated_attribute da = new Deprecated_attribute(); - a = (attribute_info) da; - } else if (s.compareTo(attribute_info.EnclosingMethod) == 0) { - EnclosingMethod_attribute ea = new EnclosingMethod_attribute(); - ea.class_index = d.readUnsignedShort(); - ea.method_index = d.readUnsignedShort(); - a = (attribute_info) ea; - } else if (s.compareTo(attribute_info.InnerClasses) == 0) { - InnerClasses_attribute ia = new InnerClasses_attribute(); - ia.inner_classes_length = d.readUnsignedShort(); - ia.inner_classes = new inner_class_entry[ia.inner_classes_length]; - for (int k = 0; k < ia.inner_classes_length; k++) { - inner_class_entry e = new inner_class_entry(); - e.inner_class_index = d.readUnsignedShort(); - e.outer_class_index = d.readUnsignedShort(); - e.name_index = d.readUnsignedShort(); - e.access_flags = d.readUnsignedShort(); - ia.inner_classes[k] = e; - } - a = (attribute_info) ia; - } else if (s.compareTo(attribute_info.RuntimeVisibleAnnotations) == 0) { - RuntimeVisibleAnnotations_attribute ra = new RuntimeVisibleAnnotations_attribute(); - ra.number_of_annotations = d.readUnsignedShort(); - ra.annotations = new annotation[ra.number_of_annotations]; - for (int k = 0; k < ra.number_of_annotations; k++) { - annotation annot = new annotation(); - annot.type_index = d.readUnsignedShort(); - annot.num_element_value_pairs = d.readUnsignedShort(); - annot.element_value_pairs = readElementValues(annot.num_element_value_pairs, d, true, 0); - ra.annotations[k] = annot; - } - - a = (attribute_info) ra; - } else if (s.compareTo(attribute_info.RuntimeInvisibleAnnotations) == 0) { - RuntimeInvisibleAnnotations_attribute ra = new RuntimeInvisibleAnnotations_attribute(); - ra.number_of_annotations = d.readUnsignedShort(); - ra.annotations = new annotation[ra.number_of_annotations]; - for (int k = 0; k < ra.number_of_annotations; k++) { - annotation annot = new annotation(); - annot.type_index = d.readUnsignedShort(); - annot.num_element_value_pairs = d.readUnsignedShort(); - annot.element_value_pairs = readElementValues(annot.num_element_value_pairs, d, true, 0); - ra.annotations[k] = annot; - } - a = (attribute_info) ra; - } else if (s.compareTo(attribute_info.RuntimeVisibleParameterAnnotations) == 0) { - RuntimeVisibleParameterAnnotations_attribute ra = new RuntimeVisibleParameterAnnotations_attribute(); - ra.num_parameters = d.readUnsignedByte(); - ra.parameter_annotations = new parameter_annotation[ra.num_parameters]; - for (int x = 0; x < ra.num_parameters; x++) { - parameter_annotation pAnnot = new parameter_annotation(); - pAnnot.num_annotations = d.readUnsignedShort(); - pAnnot.annotations = new annotation[pAnnot.num_annotations]; - for (int k = 0; k < pAnnot.num_annotations; k++) { - annotation annot = new annotation(); - annot.type_index = d.readUnsignedShort(); - annot.num_element_value_pairs = d.readUnsignedShort(); - annot.element_value_pairs = readElementValues(annot.num_element_value_pairs, d, true, 0); - pAnnot.annotations[k] = annot; - } - ra.parameter_annotations[x] = pAnnot; - } - a = (attribute_info) ra; - } else if (s.compareTo(attribute_info.RuntimeInvisibleParameterAnnotations) == 0) { - RuntimeInvisibleParameterAnnotations_attribute ra = new RuntimeInvisibleParameterAnnotations_attribute(); - ra.num_parameters = d.readUnsignedByte(); - ra.parameter_annotations = new parameter_annotation[ra.num_parameters]; - for (int x = 0; x < ra.num_parameters; x++) { - parameter_annotation pAnnot = new parameter_annotation(); - pAnnot.num_annotations = d.readUnsignedShort(); - pAnnot.annotations = new annotation[pAnnot.num_annotations]; - for (int k = 0; k < pAnnot.num_annotations; k++) { - annotation annot = new annotation(); - annot.type_index = d.readUnsignedShort(); - annot.num_element_value_pairs = d.readUnsignedShort(); - annot.element_value_pairs = readElementValues(annot.num_element_value_pairs, d, true, 0); - pAnnot.annotations[k] = annot; - } - ra.parameter_annotations[x] = pAnnot; - } - a = (attribute_info) ra; - } else if (s.compareTo(attribute_info.AnnotationDefault) == 0) { - AnnotationDefault_attribute da = new AnnotationDefault_attribute(); - element_value[] result = readElementValues(1, d, false, 0); - da.default_value = result[0]; - a = (attribute_info) da; - } else if (s.equals(attribute_info.BootstrapMethods)) { - BootstrapMethods_attribute bsma = new BootstrapMethods_attribute(); - int count = d.readUnsignedShort(); - bsma.method_handles = new short[count]; - bsma.arg_indices = new short[count][]; - for (int num = 0; num < count; num++) { - short index = (short) d.readUnsignedShort(); - bsma.method_handles[num] = index; - int argCount = d.readUnsignedShort(); - bsma.arg_indices[num] = new short[argCount]; - for (int numArg = 0; numArg < argCount; numArg++) { - short indexArg = (short) d.readUnsignedShort(); - bsma.arg_indices[num][numArg] = indexArg; - } - } - assert bootstrap_methods_attribute == null : "More than one bootstrap methods attribute!"; - a = bootstrap_methods_attribute = bsma; - } else { - // unknown attribute - // logger.debug("Generic/Unknown Attribute: " + s); - Generic_attribute ga = new Generic_attribute(); - if (len > 0) { - ga.info = new byte[(int) len]; - readAllBytes(ga.info, d); - } - a = (attribute_info) ga; - } - a.attribute_name = j; - a.attribute_length = len; - ai[i] = a; - } - return true; - } - - private element_value[] readElementValues(int count, DataInputStream d, boolean needName, int name_index) - throws IOException { - element_value[] list = new element_value[count]; - for (int x = 0; x < count; x++) { - if (needName) { - name_index = d.readUnsignedShort(); - } - int tag = d.readUnsignedByte(); - char kind = (char) tag; - if (kind == 'B' || kind == 'C' || kind == 'D' || kind == 'F' || kind == 'I' || kind == 'J' || kind == 'S' - || kind == 'Z' || kind == 's') { - constant_element_value elem = new constant_element_value(); - elem.name_index = name_index; - elem.tag = kind; - elem.constant_value_index = d.readUnsignedShort(); - list[x] = elem; - } else if (kind == 'e') { - enum_constant_element_value elem = new enum_constant_element_value(); - elem.name_index = name_index; - elem.tag = kind; - elem.type_name_index = d.readUnsignedShort(); - elem.constant_name_index = d.readUnsignedShort(); - list[x] = elem; - } else if (kind == 'c') { - class_element_value elem = new class_element_value(); - elem.name_index = name_index; - elem.tag = kind; - elem.class_info_index = d.readUnsignedShort(); - list[x] = elem; - } else if (kind == '[') { - array_element_value elem = new array_element_value(); - elem.name_index = name_index; - elem.tag = kind; - elem.num_values = d.readUnsignedShort(); - elem.values = readElementValues(elem.num_values, d, false, name_index); - list[x] = elem; - } else if (kind == '@') { - annotation_element_value elem = new annotation_element_value(); - elem.name_index = name_index; - elem.tag = kind; - annotation annot = new annotation(); - annot.type_index = d.readUnsignedShort(); - annot.num_element_value_pairs = d.readUnsignedShort(); - annot.element_value_pairs = readElementValues(annot.num_element_value_pairs, d, true, 0); - elem.annotation_value = annot; - list[x] = elem; - } else { - throw new RuntimeException("Unknown element value pair kind: " + kind); - } - } - return list; - } - - /** - * Reads in the fields from the given stream. - * - * @param d - * Stream forming the .class file. - * @return true if read was successful, false on some error. - * @exception java.io.IOException - * on error. - */ - protected boolean readFields(DataInputStream d) throws IOException { - field_info fi; - int i; - - fields = new field_info[fields_count]; - - for (i = 0; i < fields_count; i++) { - fi = new field_info(); - fi.access_flags = d.readUnsignedShort(); - fi.name_index = d.readUnsignedShort(); - fi.descriptor_index = d.readUnsignedShort(); - fi.attributes_count = d.readUnsignedShort(); - if (fi.attributes_count > 0) { - fi.attributes = new attribute_info[fi.attributes_count]; - readAttributes(d, fi.attributes_count, fi.attributes); - } - /* - * CONSTANT_Utf8_info ci; ci = (CONSTANT_Utf8_info)(constant_pool[fi.name_index]); logger.debug("Field: " + - * ci.convert()); - */ - fields[i] = fi; - } - - return true; - } - - /** - * Reads in the methods from the given stream. - * - * @param d - * Stream forming the .class file. - * @return true if read was successful, false on some error. - * @exception java.io.IOException - * on error. - */ - protected boolean readMethods(DataInputStream d) throws IOException { - method_info mi; - int i; - - methods = new method_info[methods_count]; - - for (i = 0; i < methods_count; i++) { - mi = new method_info(); - mi.access_flags = d.readUnsignedShort(); - - mi.name_index = d.readUnsignedShort(); - - mi.descriptor_index = d.readUnsignedShort(); - - mi.attributes_count = d.readUnsignedShort(); - - // logger.debug("Has " + mi.attributes_count + " attribute(s)"); - - if (mi.attributes_count > 0) { - mi.attributes = new attribute_info[mi.attributes_count]; - readAttributes(d, mi.attributes_count, mi.attributes); - - for (int j = 0; j < mi.attributes_count; j++) { - if (mi.attributes[j] instanceof Code_attribute) { - mi.code_attr = (Code_attribute) mi.attributes[j]; - break; - } - } - } - - /* - * if ("main".compareTo(ci.convert())==0) { decompile(mi); } - */ - - methods[i] = mi; - } - - return true; - } - - /* - * DEPRECATED public void showByteCode(Code_attribute ca) { int i=0,j; - * - * logger.debug("Code bytes follow..."); while(itrue if write was successful, false on some error. - * @exception java.io.IOException - * on error. - */ - protected boolean writeConstantPool(DataOutputStream dd) throws IOException { - cp_info cp; - int i; - boolean skipone = false; - - for (i = 1; i < constant_pool_count; i++) { - if (skipone) { - skipone = false; - continue; - } - cp = constant_pool[i]; - dd.writeByte(cp.tag); - switch (cp.tag) { - case cp_info.CONSTANT_Class: - dd.writeShort(((CONSTANT_Class_info) cp).name_index); - break; - case cp_info.CONSTANT_Fieldref: - dd.writeShort(((CONSTANT_Fieldref_info) cp).class_index); - dd.writeShort(((CONSTANT_Fieldref_info) cp).name_and_type_index); - break; - case cp_info.CONSTANT_Methodref: - dd.writeShort(((CONSTANT_Methodref_info) cp).class_index); - dd.writeShort(((CONSTANT_Methodref_info) cp).name_and_type_index); - break; - case cp_info.CONSTANT_InterfaceMethodref: - dd.writeShort(((CONSTANT_InterfaceMethodref_info) cp).class_index); - dd.writeShort(((CONSTANT_InterfaceMethodref_info) cp).name_and_type_index); - break; - case cp_info.CONSTANT_String: - dd.writeShort(((CONSTANT_String_info) cp).string_index); - break; - case cp_info.CONSTANT_Integer: - dd.writeInt((int) ((CONSTANT_Integer_info) cp).bytes); - break; - case cp_info.CONSTANT_Float: - dd.writeInt((int) ((CONSTANT_Float_info) cp).bytes); - break; - case cp_info.CONSTANT_Long: - dd.writeInt((int) ((CONSTANT_Long_info) cp).high); - dd.writeInt((int) ((CONSTANT_Long_info) cp).low); - skipone = true; - break; - case cp_info.CONSTANT_Double: - dd.writeInt((int) ((CONSTANT_Double_info) cp).high); - dd.writeInt((int) ((CONSTANT_Double_info) cp).low); - skipone = true; - break; - case cp_info.CONSTANT_NameAndType: - dd.writeShort(((CONSTANT_NameAndType_info) cp).name_index); - dd.writeShort(((CONSTANT_NameAndType_info) cp).descriptor_index); - break; - case cp_info.CONSTANT_Utf8: - ((CONSTANT_Utf8_info) cp).writeBytes(dd); - break; - default: - logger.debug("Unknown tag in constant pool: " + cp.tag); - return false; - } - } - return true; - } - - /** - * Writes the given array of attributes to the given stream. - * - * @param dd - * output stream. - * @param attributes_count - * number of attributes to write. - * @param ai - * array of attributes to write. - * @return true if write was successful, false on some error. - * @exception java.io.IOException - * on error. - */ - protected boolean writeAttributes(DataOutputStream dd, int attributes_count, attribute_info[] ai) throws IOException { - attribute_info a = null; - int i; - - for (i = 0; i < attributes_count; i++) { - a = ai[i]; - dd.writeShort(a.attribute_name); - dd.writeInt((int) a.attribute_length); - if (a instanceof SourceFile_attribute) { - SourceFile_attribute sa = (SourceFile_attribute) a; - dd.writeShort(sa.sourcefile_index); - } else if (a instanceof ConstantValue_attribute) { - ConstantValue_attribute ca = (ConstantValue_attribute) a; - dd.writeShort(ca.constantvalue_index); - } else if (a instanceof Code_attribute) { - Code_attribute ca = (Code_attribute) a; - dd.writeShort(ca.max_stack); - dd.writeShort(ca.max_locals); - dd.writeInt((int) ca.code_length); - dd.write(ca.code, 0, (int) ca.code_length); - dd.writeShort(ca.exception_table_length); - int k; - exception_table_entry e; - for (k = 0; k < ca.exception_table_length; k++) { - e = ca.exception_table[k]; - dd.writeShort(e.start_pc); - dd.writeShort(e.end_pc); - dd.writeShort(e.handler_pc); - dd.writeShort(e.catch_type); - } - dd.writeShort(ca.attributes_count); - if (ca.attributes_count > 0) { - writeAttributes(dd, ca.attributes_count, ca.attributes); - } - } else if (a instanceof Exception_attribute) { - Exception_attribute ea = (Exception_attribute) a; - dd.writeShort(ea.number_of_exceptions); - if (ea.number_of_exceptions > 0) { - int k; - for (k = 0; k < ea.number_of_exceptions; k++) { - dd.writeShort(ea.exception_index_table[k]); - } - } - } else if (a instanceof LineNumberTable_attribute) { - LineNumberTable_attribute la = (LineNumberTable_attribute) a; - dd.writeShort(la.line_number_table_length); - int k; - line_number_table_entry e; - for (k = 0; k < la.line_number_table_length; k++) { - e = la.line_number_table[k]; - dd.writeShort(e.start_pc); - dd.writeShort(e.line_number); - } - } else if (a instanceof LocalVariableTable_attribute) { - LocalVariableTable_attribute la = (LocalVariableTable_attribute) a; - dd.writeShort(la.local_variable_table_length); - int k; - local_variable_table_entry e; - for (k = 0; k < la.local_variable_table_length; k++) { - e = la.local_variable_table[k]; - dd.writeShort(e.start_pc); - dd.writeShort(e.length); - dd.writeShort(e.name_index); - dd.writeShort(e.descriptor_index); - dd.writeShort(e.index); - } - } else { - // unknown attribute - logger.debug("Generic/Unknown Attribute in output"); - Generic_attribute ga = (Generic_attribute) a; - if (ga.attribute_length > 0) { - dd.write(ga.info, 0, (int) ga.attribute_length); - } - } - } - return true; - } - - /** - * Writes the fields to the given stream. - * - * @param dd - * output stream. - * @return true if write was successful, false on some error. - * @exception java.io.IOException - * on error. - */ - protected boolean writeFields(DataOutputStream dd) throws IOException { - field_info fi; - int i; - - for (i = 0; i < fields_count; i++) { - fi = fields[i]; - dd.writeShort(fi.access_flags); - dd.writeShort(fi.name_index); - dd.writeShort(fi.descriptor_index); - dd.writeShort(fi.attributes_count); - if (fi.attributes_count > 0) { - writeAttributes(dd, fi.attributes_count, fi.attributes); - } - } - return true; - } - - /** - * Writes the methods to the given stream. - * - * @param dd - * output stream. - * @return true if write was successful, false on some error. - * @exception java.io.IOException - * on error. - */ - protected boolean writeMethods(DataOutputStream dd) throws IOException { - method_info mi; - int i; - - for (i = 0; i < methods_count; i++) { - mi = methods[i]; - dd.writeShort(mi.access_flags); - dd.writeShort(mi.name_index); - dd.writeShort(mi.descriptor_index); - dd.writeShort(mi.attributes_count); - if (mi.attributes_count > 0) { - writeAttributes(dd, mi.attributes_count, mi.attributes); - } - } - return true; - } - - /** - * Writes this entire ClassFile object to the given stream. - * - * @param dd - * output stream. - * @return true if write was successful, false on some error. - */ - boolean writeClass(DataOutputStream dd) { - // outputs the .class file from the loaded one - try { - // first write magic number - dd.writeInt((int) magic); - - dd.writeShort(minor_version); - dd.writeShort(major_version); - dd.writeShort(constant_pool_count); - - if (!writeConstantPool(dd)) { - return false; - } - - dd.writeShort(access_flags); - dd.writeShort(this_class); - dd.writeShort(super_class); - dd.writeShort(interfaces_count); - if (interfaces_count > 0) { - int j; - for (j = 0; j < interfaces_count; j++) { - dd.writeShort(interfaces[j]); - } - } - - dd.writeShort(fields_count); - writeFields(dd); - - dd.writeShort(methods_count); - writeMethods(dd); - - dd.writeShort(attributes_count); - if (attributes_count > 0) { - writeAttributes(dd, attributes_count, attributes); - } - } catch (IOException e) { - logger.debug("IOException with " + fn + ": " + e.getMessage()); - return false; - } - return true; - } - - /** - * Parses the given method, converting its bytecode array into a list of Instruction objects. - * - * @param m - * method to parse. - * @return head of a list of Instructions. - * @see Instruction - * @see ByteCode - * @see ByteCode#disassemble_bytecode - */ - public Instruction parseMethod(method_info m) { - // first task, look through attributes for a code attribute - int j; - Code_attribute ca; - ByteCode bc; - Instruction inst, head, tail; - exception_table_entry e; - - head = null; - tail = null; - bc = new ByteCode(); - - ca = m.locate_code_attribute(); - if (ca == null) { - return null; - } - - j = 0; - while (j < ca.code_length) { - inst = bc.disassemble_bytecode(ca.code, j); - inst.originalIndex = j; - // logger.debug(""+inst + ": " + (((int)(inst.code))&0xff)); - // logger.debug(""+j + " : " + inst); - - if (inst instanceof Instruction_Unknown) { - logger.debug("Unknown instruction in \"" + m.toName(constant_pool) + "\" at offset " + j); - logger.debug(" bytecode = " + (((int) (inst.code)) & 0xff)); - } - // logger.debug("before: " + j); - j = inst.nextOffset(j); - // logger.debug("after: " + j); - - if (head == null) { - head = inst; - } else { - tail.next = inst; - inst.prev = tail; - } - tail = inst; - } - - // bytecode converted into instructions, now build pointers - bc.build(head); - - // also change exception table to use pointers instead of absolute addresses - for (j = 0; j < ca.exception_table_length; j++) { - e = ca.exception_table[j]; - e.start_inst = bc.locateInst(e.start_pc); - if (e.end_pc == ca.code_length) { - e.end_inst = null; - } else { - e.end_inst = bc.locateInst(e.end_pc); - } - e.handler_inst = bc.locateInst(e.handler_pc); - if (e.handler_inst != null) { - e.handler_inst.labelled = true; - } - } - - m.instructions = head; - - for (attribute_info element : ca.attributes) { - if (element instanceof LineNumberTable_attribute) { - LineNumberTable_attribute lntattr = (LineNumberTable_attribute) element; - - for (line_number_table_entry element0 : lntattr.line_number_table) { - element0.start_inst = bc.locateInst(element0.start_pc); - } - } - } - - return head; - } - - /** - * For every method, this calls parseMethod, storing the list of Instructions in the method_info object, and also - * constructs the corresponding CFG. - * - * @see ClassFile#parseMethod - * @see CFG - */ - public void parse() { - method_info mi; - int i; - - for (i = 0; i < methods_count; i++) { - mi = methods[i]; - mi.instructions = parseMethod(mi); - // new CFG(mi); - // don't build it right away for now - } - } - - /** - * Recomputes the offset of each Instruction starting from 0; used when converting references back to offsets. - * - * @param i - * list of Instructions to process. - * @return length of corresponding bytecode. - * @see Instruction#nextOffset - */ - int relabel(Instruction i) { - int index = 0; - while (i != null) { - i.label = index; - index = i.nextOffset(index); - i = i.next; - } - return index; - } - - /** - * Inversive to parseMethod, this converts the list of Instructions stored in a method_info object back to an array of - * bytecode. - * - * @param m - * method to unparse. - * @return array of bytecode, or null on error. - * @see CFG#reconstructInstructions - * @see ClassFile#parseMethod - * @see ClassFile#relabel - * @see Instruction#compile - */ - byte[] unparseMethod(method_info m) { - int codesize; - byte bc[]; - Instruction i; - - // Rebuild instruction sequence - m.cfg.reconstructInstructions(); - - // relabel instructions and get size of code array - codesize = relabel(m.instructions); - - // construct a new array for the byte-code - bc = new byte[codesize]; - - // then recompile the instructions into byte-code - i = m.instructions; - codesize = 0; - while (i != null) { - codesize = i.compile(bc, codesize); - i = i.next; - } - if (codesize != bc.length) { - logger.warn("code size doesn't match array length!"); - } - - return bc; - } - - /** - * Inversive to parse, this method calls unparseMethod for each method, storing the resulting bytecode in the method's code - * attribute, and recomputing offsets for exception handlers. - * - * @see ClassFile#unparseMethod - */ - void unparse() { - int i, j; - Code_attribute ca; - byte bc[]; - method_info mi; - exception_table_entry e; - - for (i = 0; i < methods_count; i++) { - mi = methods[i]; - // locate code attribute - ca = mi.locate_code_attribute(); - if (ca == null) { - continue; - } - bc = unparseMethod(mi); - if (bc == null) { - logger.debug("Recompile of " + mi.toName(constant_pool) + " failed!"); - } else { - ca.code_length = bc.length; - ca.code = bc; - // also recompile exception table - for (j = 0; j < ca.exception_table_length; j++) { - e = ca.exception_table[j]; - e.start_pc = (e.start_inst.label); - if (e.end_inst != null) { - e.end_pc = (e.end_inst.label); - } else { - e.end_pc = (int) (ca.code_length); - } - e.handler_pc = (e.handler_inst.label); - } - } - } - } - - /** - * Static utility method to parse the given method descriptor string. - * - * @param s - * descriptor string. - * @return return type of method. - * @see ClassFile#parseDesc - * @see ClassFile#parseMethodDesc_params - */ - static String parseMethodDesc_return(String s) { - int j; - j = s.lastIndexOf(')'); - if (j >= 0) { - return parseDesc(s.substring(j + 1), ","); - } - return parseDesc(s, ","); - } - - /** - * Static utility method to parse the given method descriptor string. - * - * @param s - * descriptor string. - * @return comma-separated ordered list of parameter types - * @see ClassFile#parseDesc - * @see ClassFile#parseMethodDesc_return - */ - static String parseMethodDesc_params(String s) { - int i, j; - i = s.indexOf('('); - if (i >= 0) { - j = s.indexOf(')', i + 1); - if (j >= 0) { - return parseDesc(s.substring(i + 1, j), ","); - } - } - return ""; - } - - /** - * Static utility method to parse the given method descriptor string. - * - * @param desc - * descriptor string. - * @param sep - * String to use as a separator between types. - * @return String of types parsed. - * @see ClassFile#parseDesc - * @see ClassFile#parseMethodDesc_return - */ - static String parseDesc(String desc, String sep) { - String params = "", param; - char c; - int i, len, arraylevel = 0; - boolean didone = false; - - len = desc.length(); - for (i = 0; i < len; i++) { - c = desc.charAt(i); - if (c == DESC_BYTE.charAt(0)) { - param = "byte"; - } else if (c == DESC_CHAR.charAt(0)) { - param = "char"; - } else if (c == DESC_DOUBLE.charAt(0)) { - param = "double"; - } else if (c == DESC_FLOAT.charAt(0)) { - param = "float"; - } else if (c == DESC_INT.charAt(0)) { - param = "int"; - } else if (c == DESC_LONG.charAt(0)) { - param = "long"; - } else if (c == DESC_SHORT.charAt(0)) { - param = "short"; - } else if (c == DESC_BOOLEAN.charAt(0)) { - param = "boolean"; - } else if (c == DESC_VOID.charAt(0)) { - param = "void"; - } else if (c == DESC_ARRAY.charAt(0)) { - arraylevel++; - continue; - } else if (c == DESC_OBJECT.charAt(0)) { - int j; - j = desc.indexOf(';', i + 1); - if (j < 0) { - logger.warn("Parse error -- can't find a ; in " + desc.substring(i + 1)); - param = ""; - } else { - if (j - i > 10 && desc.substring(i + 1, i + 11).compareTo("java/lang/") == 0) { - i = i + 10; - } - param = desc.substring(i + 1, j); - // replace '/'s with '.'s - param = param.replace('/', '.'); - i = j; - } - } else { - param = "???"; - } - if (didone) { - params = params + sep; - } - params = params + param; - while (arraylevel > 0) { - params = params + "[]"; - arraylevel--; - } - didone = true; - } - return params; - } - - /** - * Locates a method by name. - * - * @param s - * name of method. - * @return method_info object representing method, or null if not found. - * @see method_info#toName - */ - method_info findMethod(String s) { - method_info m; - int i; - - for (i = 0; i < methods_count; i++) { - m = methods[i]; - if (s.equals(m.toName(constant_pool))) { - return m; - } - } - return null; - } - - /** - * Displays a the prototypes for all the methods defined in this ClassFile. - * - * @see ClassFile#methods - * @see ClassFile#methods_count - * @see method_info#prototype - */ - void listMethods() { - int i; - - for (i = 0; i < methods_count; i++) { - logger.debug("" + methods[i].prototype(constant_pool)); - } - } - - /** - * Displays the entire constant pool. - * - * @see ClassFile#constant_pool - * @see ClassFile#constant_pool_count - * @see cp_info#toString - */ - void listConstantPool() { - cp_info c; - int i; - - // note that we start at 1 in the constant pool - for (i = 1; i < constant_pool_count; i++) { - c = constant_pool[i]; - logger.debug("[" + i + "] " + c.typeName() + "=" + c.toString(constant_pool)); - if ((constant_pool[i]).tag == cp_info.CONSTANT_Long || (constant_pool[i]).tag == cp_info.CONSTANT_Double) { - // must skip an entry after a long or double constant - i++; - } - } - } - - /** - * Displays the list of fields defined in this ClassFile, including any static initializers (constants). - * - * @see ClassFile#fields - * @see ClassFile#fields_count - * @see field_info#prototype - * @see ConstantValue_attribute - */ - void listFields() { - field_info fi; - ConstantValue_attribute cva; - CONSTANT_Utf8_info cm; - int i, j; - - for (i = 0; i < fields_count; i++) { - fi = fields[i]; - logger.debug("" + fi.prototype(constant_pool)); - // see if has a constant value attribute - for (j = 0; j < fi.attributes_count; j++) { - cm = (CONSTANT_Utf8_info) (constant_pool[fi.attributes[j].attribute_name]); - if (cm.convert().compareTo(attribute_info.ConstantValue) == 0) { - cva = (ConstantValue_attribute) (fi.attributes[j]); - // dm = (CONSTANT_Utf8_info)(constant_pool[cva.constantvalue_index]); - logger.debug(" = " + constant_pool[cva.constantvalue_index].toString(constant_pool)); - break; - } - } - logger.debug(";"); - } - } - - /** - * Moves a method to a different index in the methods array. - * - * @param m - * name of method to move. - * @param pos - * desired index. - * @see ClassFile#methods - */ - void moveMethod(String m, int pos) { - int i, j; - method_info mthd; - logger.debug("Moving " + m + " to position " + pos + " of " + methods_count); - - for (i = 0; i < methods_count; i++) { - if (m.compareTo(methods[i].toName(constant_pool)) == 0) { - mthd = methods[i]; - if (i > pos) { - for (j = i; j > pos && j > 0; j--) { - methods[j] = methods[j - 1]; - } - methods[pos] = mthd; - } else if (i < pos) { - for (j = i; j < pos && j < methods_count - 1; j++) { - methods[j] = methods[j + 1]; - } - methods[pos] = mthd; - } - return; - } - } - } - - /** - * Answers whether this class is an immediate descendant (as subclass or as an implementation of an interface) of the given - * class. - * - * @param cf - * ClassFile of supposed parent. - * @return true if it is a parent, false otherwise. - * @see ClassFile#descendsFrom(String) - */ - boolean descendsFrom(ClassFile cf) { - return descendsFrom(cf.toString()); - } - - /** - * Answers whether this class is an immediate descendant (as subclass or as an implementation of an interface) of the given - * class. - * - * @param cname - * name of supposed parent. - * @return true if it is a parent, false otherwise. - * @see ClassFile#descendsFrom(ClassFile) - */ - boolean descendsFrom(String cname) { - cp_info cf; - int i; - cf = constant_pool[super_class]; - if (cf.toString(constant_pool).compareTo(cname) == 0) { - return true; - } - for (i = 0; i < interfaces_count; i++) { - cf = constant_pool[interfaces[i]]; - if (cf.toString(constant_pool).compareTo(cname) == 0) { - return true; - } - } - return false; - } - - /** - * Answers whether this class can have subclasses outside its package. - * - * @return true if it cannot, false if it might. - */ - boolean isSterile() { - if ((access_flags & ACC_PUBLIC) != 0 && (access_flags & ACC_FINAL) == 0) { - return false; - } - return true; - } - - /** - * Given the name of a class --- possibly with .class after it, this answers whether the class might refer to this - * ClassFile object. - * - * @return true if it does, false if it doesn't. - */ - boolean sameClass(String cfn) { - String s = cfn; - int i = s.lastIndexOf(".class"); - if (i > 0) { // has .class after it - s = s.substring(0, i); // cut off the .class - } - if (s.compareTo(toString()) == 0) { - return true; - } - return false; - } - - /** - * Returns the name of a specific field in the field array. - * - * @param i - * index of field in field array. - * @return name of field. - */ - String fieldName(int i) { - return fields[i].toName(constant_pool); - } - - /* - * DEPRECATED // Locates the given classfile, and extracts it from the list. // It cannot be the first one in the list, and - * this returns null // or the classfile. static ClassFile removeClassFile(ClassFile cfhead,String cfn) { ClassFile - * cf,cfprev; cf = cfhead; cfprev = null; while (cf!=null) { if (cf.sameClass(cfn)) { if (cfprev==null) return null; // - * this shouldn't happen cfprev.next = cf.next; cf.next = null; return cf; } cfprev = cf; cf = cf.next; } return null; } - * - * // returns true if this class contains any references to the given // cuClass.cuName, which is of type cuDesc. Searches - * for methods if // ismethod is true, fields otherwise. boolean refersTo(boolean ismethod,CONSTANT_Utf8_info cuClass, - * CONSTANT_Utf8_info cuName,CONSTANT_Utf8_info cuDesc) { int i; CONSTANT_Utf8_info cu; // note that we start at 1 in the - * constant pool if (ismethod) { for (i=1;i=1;largest--) { for (i=0;ia[largest]) { s = a[i]; a[i] = a[largest]; a[largest] = s; } } } return a; } - * - * // Given a new constant pool, and a list of redirections // (new index = redirect[old index]), this changes all constant - * // pool entries, and installs the new constant pool of size size void changeConstantPool(short redirect[],cp_info - * newCP[],short size) { Debig d = new Debig(this); d.redirectCPRefs(redirect); constant_pool = newCP; constant_pool_count - * = size; } - * - * // the constant pool is typically a few hundred entries in size, and so // is just a bit too big to make use of - * insertion/selection sort. // However, the variable size of the entries makes using a heapsort // or quicksort rather - * cumbersome, so since it is quite close to the // limits of efficient insertion/selection sort, we'll use that anyway. - * void sortConstantPool() { cp_info newcp[] = new cp_info[constant_pool_count]; short redirect[] = new - * short[constant_pool_count]; newcp[0] = constant_pool[0]; // the 0-entry stays put redirect[0] = (short)0; int - * smallest,j; for (int i=1;i " + i); - * - * if (constant_pool[smallest].tag==cp_info.CONSTANT_Double || constant_pool[smallest].tag==cp_info.CONSTANT_Long) { - * redirect[++smallest] = (short)(++i); newcp[i] = constant_pool[smallest]; } } // constant pool is now sorted into newcp - * changeConstantPool(redirect,newcp,constant_pool_count); logger.debug("Finished sorting constant pool"); } - * - * // just a wrapper for the debigulation, so we can elegantly allocate // a new debigulator, debigualte and then produce - * some output void debigulate(boolean attribs,boolean privates) { Debig debigulator = new Debig(this); - * debigulator.debigulate(attribs,privates); debigulator.setCF(null); - * - * inf.verboseReport(G.v().out); } - */ - -} diff --git a/src/main/java/soot/coffi/Code_attribute.java b/src/main/java/soot/coffi/Code_attribute.java deleted file mode 100644 index 21bf5747efa..00000000000 --- a/src/main/java/soot/coffi/Code_attribute.java +++ /dev/null @@ -1,95 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There should be exactly one code attribute in every method; there may also be a code attribute associated with a field (as - * an initializer). - * - * @see attribute_info - * @see method_info#attributes - * @see field_info#attributes - * @see ClassFile@attributes - * @author Clark Verbrugge - */ -class Code_attribute extends attribute_info { - /** Maximum size of the operand stack. */ - public int max_stack; - /** Maximum number of locals required. */ - - public int max_locals; - /** Length of code array. */ - public long code_length; - /** Actual array of bytecode. */ - public byte code[]; - /** Length of exception table array. */ - public int exception_table_length; - /** - * Exception table array. - * - * @see exception_table_entry - */ - public exception_table_entry exception_table[]; - /** Length of attributes array. */ - int attributes_count; - /** - * Array of attributes. - * - * @see attribute_info - */ - attribute_info attributes[]; - - /** - * Locates the LocalVariableTable attribute, if one is present. - * - * @return the local variable table attribute, or null if not found. - * @see LocalVariableTable_attribute - * @see method_info#makeLocals - */ - public LocalVariableTable_attribute findLocalVariableTable() { - int i; - for (i = 0; i < attributes_count; i++) { - if (attributes[i] instanceof LocalVariableTable_attribute) { - return (LocalVariableTable_attribute) (attributes[i]); - } - } - return null; - } - - /** - * Locates the LocalVariableTypeTable attribute, if one is present. - * - * @return the local variable type table attribute, or null if not found. - * @see LocalVariableTypeTable_attribute - * @see method_info#makeLocals - */ - public LocalVariableTypeTable_attribute findLocalVariableTypeTable() { - int i; - for (i = 0; i < attributes_count; i++) { - if (attributes[i] instanceof LocalVariableTypeTable_attribute) { - return (LocalVariableTypeTable_attribute) (attributes[i]); - } - } - return null; - } -} diff --git a/src/main/java/soot/coffi/CoffiMethodSource.java b/src/main/java/soot/coffi/CoffiMethodSource.java deleted file mode 100644 index bf57f650dc7..00000000000 --- a/src/main/java/soot/coffi/CoffiMethodSource.java +++ /dev/null @@ -1,125 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1999 Patrick Lam - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.util.Map; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import soot.Body; -import soot.MethodSource; -import soot.PackManager; -import soot.PhaseOptions; -import soot.Scene; -import soot.SootMethod; -import soot.Timers; -import soot.jimple.Jimple; -import soot.jimple.JimpleBody; -import soot.options.Options; - -public class CoffiMethodSource implements MethodSource { - private static final Logger logger = LoggerFactory.getLogger(CoffiMethodSource.class); - public ClassFile coffiClass; - public method_info coffiMethod; - - CoffiMethodSource(soot.coffi.ClassFile coffiClass, soot.coffi.method_info coffiMethod) { - this.coffiClass = coffiClass; - this.coffiMethod = coffiMethod; - } - - public Body getBody(SootMethod m, String phaseName) { - JimpleBody jb = Jimple.v().newBody(m); - - Map options = PhaseOptions.v().getPhaseOptions(phaseName); - boolean useOriginalNames = PhaseOptions.getBoolean(options, "use-original-names"); - - if (useOriginalNames) { - soot.coffi.Util.v().setFaithfulNaming(true); - } - - /* - * I need to set these to null to free Coffi structures. fileBody.coffiClass = null; bafBody.coffiMethod = null; - * - */ - if (Options.v().verbose()) { - logger.debug("[" + m.getName() + "] Constructing JimpleBody from coffi..."); - } - - if (m.isAbstract() || m.isNative() || m.isPhantom()) { - return jb; - } - - if (Options.v().time()) { - Timers.v().conversionTimer.start(); - } - - if (coffiMethod.instructions == null) { - if (Options.v().verbose()) { - logger.debug("[" + m.getName() + "] Parsing Coffi instructions..."); - } - - coffiClass.parseMethod(coffiMethod); - } - - if (coffiMethod.cfg == null) { - if (Options.v().verbose()) { - logger.debug("[" + m.getName() + "] Building Coffi CFG..."); - } - - new soot.coffi.CFG(coffiMethod); - - // if just computing metrics, we don't need to actually return body - if (soot.jbco.Main.metrics) { - return null; - } - } - - if (Options.v().verbose()) { - logger.debug("[" + m.getName() + "] Producing naive Jimple..."); - } - - boolean oldPhantomValue = Scene.v().getPhantomRefs(); - - Scene.v().setPhantomRefs(true); - coffiMethod.cfg.jimplify(coffiClass.constant_pool, coffiClass.this_class, coffiClass.bootstrap_methods_attribute, jb); - Scene.v().setPhantomRefs(oldPhantomValue); - - if (Options.v().time()) { - Timers.v().conversionTimer.end(); - } - - coffiMethod.instructions = null; - coffiMethod.cfg = null; - coffiMethod.attributes = null; - coffiMethod.code_attr = null; - coffiMethod.jmethod = null; - coffiMethod.instructionList = null; - - coffiMethod = null; - coffiClass = null; - - PackManager.v().getPack("jb").apply(jb); - return jb; - } -} diff --git a/src/main/java/soot/coffi/ConstantValue_attribute.java b/src/main/java/soot/coffi/ConstantValue_attribute.java deleted file mode 100644 index b8da0bac4ef..00000000000 --- a/src/main/java/soot/coffi/ConstantValue_attribute.java +++ /dev/null @@ -1,35 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * An attribute for a constant value; used for field initializers. - * - * @see attribute_info - * @see field_info#attributes - * @author Clark Verbrugge - */ -class ConstantValue_attribute extends attribute_info { - /** The constant pool index of the actual constant. */ - public int constantvalue_index; -} diff --git a/src/main/java/soot/coffi/Deprecated_attribute.java b/src/main/java/soot/coffi/Deprecated_attribute.java deleted file mode 100644 index 610f0a2916d..00000000000 --- a/src/main/java/soot/coffi/Deprecated_attribute.java +++ /dev/null @@ -1,32 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Attribute that connects deprecated attribute. - * - * @see attribute_info - * @author Jennifer Lhotak - */ -class Deprecated_attribute extends attribute_info { -} diff --git a/src/main/java/soot/coffi/Double2ndHalfType.java b/src/main/java/soot/coffi/Double2ndHalfType.java deleted file mode 100644 index f3df996ef40..00000000000 --- a/src/main/java/soot/coffi/Double2ndHalfType.java +++ /dev/null @@ -1,46 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.G; -import soot.Singletons; -import soot.Type; - -public class Double2ndHalfType extends Type { - - public Double2ndHalfType(Singletons.Global g) { - } - - public static Double2ndHalfType v() { - return G.v().soot_coffi_Double2ndHalfType(); - } - - public boolean equals(Type otherType) { - return otherType instanceof Double2ndHalfType; - } - - @Override - public String toString() { - return "double2ndhalf"; - } -} diff --git a/src/main/java/soot/coffi/EnclosingMethod_attribute.java b/src/main/java/soot/coffi/EnclosingMethod_attribute.java deleted file mode 100644 index 88556ad07d7..00000000000 --- a/src/main/java/soot/coffi/EnclosingMethod_attribute.java +++ /dev/null @@ -1,35 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Attribute that connects enclosing method attribute. - * - * @see attribute_info - * @author Jennifer Lhotak - */ -class EnclosingMethod_attribute extends attribute_info { - - public int class_index; - public int method_index; -} diff --git a/src/main/java/soot/coffi/Exception_attribute.java b/src/main/java/soot/coffi/Exception_attribute.java deleted file mode 100644 index 658f708fb44..00000000000 --- a/src/main/java/soot/coffi/Exception_attribute.java +++ /dev/null @@ -1,42 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There should be exactly one Exceptions attribute in every method, indicating the types of exceptions the method might - * throw. - * - * @see attribute_info - * @see method_info#attributes - * @author Clark Verbrugge - */ -public class Exception_attribute extends attribute_info { - /** Length of exception table array. */ - public int number_of_exceptions; - /** - * Constant pool indices of CONSTANT_Class types representing exceptions the associated method might throw. - * - * @see CONSTANT_Class_info - */ - public int exception_index_table[]; -} diff --git a/src/main/java/soot/coffi/FutureStmt.java b/src/main/java/soot/coffi/FutureStmt.java deleted file mode 100644 index f4f10c317f7..00000000000 --- a/src/main/java/soot/coffi/FutureStmt.java +++ /dev/null @@ -1,62 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.UnitPrinter; -import soot.util.Switch; - -class FutureStmt extends soot.jimple.internal.AbstractStmt { - public Object object; - - public FutureStmt(Object object) { - this.object = object; - } - - public FutureStmt() { - } - - public String toString() { - return ""; - } - - public void toString(UnitPrinter up) { - up.literal(""); - } - - public void apply(Switch sw) { - ((soot.jimple.StmtSwitch) sw).defaultCase(this); - } - - public boolean fallsThrough() { - throw new RuntimeException(); - } - - public boolean branches() { - throw new RuntimeException(); - } - - public Object clone() { - throw new RuntimeException(); - } - -} \ No newline at end of file diff --git a/src/main/java/soot/coffi/Generic_attribute.java b/src/main/java/soot/coffi/Generic_attribute.java deleted file mode 100644 index 71da3f2536b..00000000000 --- a/src/main/java/soot/coffi/Generic_attribute.java +++ /dev/null @@ -1,34 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * For representing an unknown, or generic attribute. - * - * @see attribute_info - * @author Clark Verbrugge - */ -class Generic_attribute extends attribute_info { - /** Actual attribute information in byte form. */ - public byte info[]; -} diff --git a/src/main/java/soot/coffi/ICONSTANT_Methodref_info.java b/src/main/java/soot/coffi/ICONSTANT_Methodref_info.java deleted file mode 100644 index e2e942f47cf..00000000000 --- a/src/main/java/soot/coffi/ICONSTANT_Methodref_info.java +++ /dev/null @@ -1,34 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2012 Eric Bodden - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * A {@link CONSTANT_Methodref_info} or {@link CONSTANT_InterfaceMethodref_info}. - */ -public interface ICONSTANT_Methodref_info { - - public int getClassIndex(); - - public int getNameAndTypeIndex(); - -} diff --git a/src/main/java/soot/coffi/Info.java b/src/main/java/soot/coffi/Info.java deleted file mode 100644 index bbcd15184bc..00000000000 --- a/src/main/java/soot/coffi/Info.java +++ /dev/null @@ -1,74 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ -// for storing statistical or informative data about a class file - -import java.io.PrintStream; - -class Info { - - public ClassFile cf; - public long flength; // file length - - public int cp; // number of constant pool entries - public int fields; // number of fields - public int methods; // number of methods - public int pfields; // private fields - public int pmethods; // private methods - - public int attribsave; // savings through attribute elimination - public int attribcpsave;// savings through cp compression after attribute elim. - public int psave; // savings through renaming privates - - public Info(ClassFile newcf) { - cf = newcf; - } - - public void verboseReport(PrintStream ps) { - int total; - - ps.println(" -- Debigulation Report on " + cf.fn + " --"); - ps.println(" Length: " + flength); - ps.println(" CP: " + cp + " reduced to " + cf.constant_pool_count); - ps.println(" Fields: " + fields + " (" + pfields + " private)" + " reduced to " + cf.fields_count); - ps.println(" Methods: " + methods + " (" + pmethods + " private)" + " reduced to " + cf.methods_count); - total = attribsave + attribcpsave + psave; - if (total > 0) { - ps.println(" -- Savings through debigulation --"); - if (attribsave > 0) { - ps.println(" Attributes: " + attribsave); - } - if (attribcpsave > 0) { - ps.println(" CP Compression: " + attribcpsave); - } - if (psave > 0) { - ps.println(" Private renaming: " + psave); - } - ps.println(" Total savings: " + total); - double d = ((total) * 100000.0) / (flength); - int x = (int) d; - d = (x) / 1000.0; - ps.println(" ratio: " + d + "%"); - } - } -} diff --git a/src/main/java/soot/coffi/InnerClasses_attribute.java b/src/main/java/soot/coffi/InnerClasses_attribute.java deleted file mode 100644 index 401bbdfa980..00000000000 --- a/src/main/java/soot/coffi/InnerClasses_attribute.java +++ /dev/null @@ -1,45 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2004 Archie L. Cobbs - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Attribute that connects inner classes with their containing classes. - * - * @see attribute_info - * @author Archie L. Cobbs - */ -class InnerClasses_attribute extends attribute_info { - /** Length of the inner classes table. */ - public int inner_classes_length; - /** Actual table of local variables. */ - public inner_class_entry inner_classes[]; - - public String toString() { - StringBuffer buffer = new StringBuffer(); - for (int i = 0; i < inner_classes_length; i++) { - buffer.append(inner_classes[i]); - buffer.append('\n'); - } - return buffer.toString(); - } -} diff --git a/src/main/java/soot/coffi/Instruction.java b/src/main/java/soot/coffi/Instruction.java deleted file mode 100644 index 47e311dfd84..00000000000 --- a/src/main/java/soot/coffi/Instruction.java +++ /dev/null @@ -1,326 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -abstract class Instruction implements Cloneable { - - /** String used to separate arguments in printing. */ - public static final String argsep = " "; - /** String used to construct names for local variables. */ - public static final String LOCALPREFIX = "local_"; - // public static int w; // set by the wide instr. and used by other instrs - - /** Actual byte code of this instruction. */ - public byte code; - /** - * Offset of this instruction from the start of code. - * - * @see ClassFile#relabel - */ - public int label; - /** - * Name of this instruction. - * - * @see Instruction#toString - */ - public String name; - - /** Reference for chaining. */ - public Instruction next; - /** More convenient for chaining. */ - public Instruction prev; - /** Whether this instruction is the target of a branch. */ - public boolean labelled; - /** Whether this instruction branches. */ - public boolean branches; - /** Whether this instruction is a method invocation. */ - public boolean calls; - /** Whether this instruction is a return. */ - public boolean returns; - - /** Successor array. It is different from the field 'next'. */ - public Instruction[] succs; - - int originalIndex; - - /** - * Constructs a new Instruction for this bytecode. - * - * @param c - * bytecode of the instruction. - */ - public Instruction(byte c) { - code = c; - next = null; - branches = false; - calls = false; - returns = false; - } - - protected Object clone() throws CloneNotSupportedException { - - return super.clone(); - - } - - public String toString() { - return label + ": " + name + "[" + originalIndex + "]"; - } - - /** - * Assuming the actual bytecode for this instruction has been extracted already, and index is the offset of the next byte, - * this method parses whatever arguments the instruction requires and return the offset of the next available byte. - * - * @param bc - * complete array of bytecode. - * @param index - * offset of remaining bytecode after this instruction's bytecode was parsed. - * @return offset of the next available bytecode. - * @see ByteCode#disassemble_bytecode - * @see Instruction#compile - */ - public abstract int parse(byte bc[], int index); - - /** - * Writes out the sequence of bytecodes represented by this instruction, including any arguments. - * - * @param bc - * complete array of bytecode. - * @param index - * offset of remaining bytecode at which to start writing. - * @return offset of the next available bytecode. - * @see ClassFile#unparseMethod - * @see Instruction#parse - */ - public abstract int compile(byte bc[], int index); - - /** - * Changes offset values in this instruction to Instruction references; default behaviour is to do nothing. - * - * @param bc - * complete array of bytecode. - * @see ByteCode#build - */ - public void offsetToPointer(ByteCode bc) { - } - - /** - * Returns the next available offset assuming this instruction begins on the indicated offset; default assumes no - * arguments. - * - * @param curr - * offset this instruction would be on. - * @return next available offset. - * @see ClassFile#relabel - */ - public int nextOffset(int curr) { - return curr + 1; - } - - /** - * Returns an array of the instructions to which this instruction might branch (only valid if branches==true; - * default action is to return null). - * - * @param next - * the instruction following this one, in case of default flow through. - * @return array of instructions which may be targets of this instruction. - * @see Instruction#branches - */ - public Instruction[] branchpoints(Instruction next) { - /* - * Instruction[] bps= new Instruction[1]; bps[0] = next; return bps; - */ - return null; - } - - /** - * Marks the appropriate spot if that constant_pool entry is used by this instr. For every constant pool entry used - * (referenced) by this instruction, the corresponding boolean in the given array is set to true. - * - * @param refs - * array of booleans the same size as the constant pool array. - * @see ClassFile#constant_pool - */ - public void markCPRefs(boolean[] refs) { - } - - /** - * Updates all constant pool references within this instruction to use new indices, based on the given redirection array. - * - * @param redirect - * array of new indices of constant pool entries. - * @see ClassFile#constant_pool - */ - public void redirectCPRefs(short redirect[]) { - } - - /** - * For storing in a Hashtable. - * - * @return unique hash code for this instruction, assuming labels are unique. - */ - public int hashCode() { - return (new Integer(label)).hashCode(); - } - - /** - * For storing in a Hashtable. - * - * @param i - * the Instruction to which this is compared. - * @return true if i is the same, false otherwise. - */ - public boolean equals(Instruction i) { - return (this == i); - /* - * if (label == i.label) return true; return false; - */ - } - - /** - * Utility routines, used mostly by the parse routines of various Instruction subclasses; this method converts two bytes - * into a short. - * - * @param bc - * complete array of bytecode. - * @param index - * offset of data in bc. - * @return the short constructed from the two bytes. - * @see Instruction#parse - * @see Instruction#shortToBytes - */ - public static short getShort(byte bc[], int index) { - short s, bh, bl; - bh = (bc[index]); - bl = (bc[index + 1]); - s = (short) (((bh << 8) & 0xff00) | (bl & 0xff)); - // s = (short)((int)(bc[index])<<8 + bc[index+1]); - return s; - } - - /** - * Utility routines, used mostly by the parse routines of various Instruction subclasses; this method converts four bytes - * into an int. - * - * @param bc - * complete array of bytecode. - * @param index - * offset of data in bc. - * @return the int constructed from the four bytes. - * @see Instruction#parse - * @see Instruction#intToBytes - */ - public static int getInt(byte bc[], int index) { - int i, bhh, bhl, blh, bll; - bhh = (((bc[index])) << 24) & 0xff000000; - bhl = (((bc[index + 1])) << 16) & 0xff0000; - blh = (((bc[index + 2])) << 8) & 0xff00; - bll = ((bc[index + 3])) & 0xff; - i = bhh | bhl | blh | bll; - return i; - } - - /** - * Utility routines, used mostly by the compile routines of various Instruction subclasses; this method converts a short - * into two bytes. - * - * @param bc - * complete array of bytecode in which to store the short. - * @param index - * next available offset in bc. - * @return the next available offset in bc - * @see Instruction#compile - * @see Instruction#getShort - */ - public static int shortToBytes(short s, byte bc[], int index) { - bc[index++] = (byte) ((s >> 8) & 0xff); - bc[index++] = (byte) (s & 0xff); - return index; - } - - /** - * Utility routines, used mostly by the compile routines of various Instruction subclasses; this method converts an int - * into four bytes. - * - * @param bc - * complete array of bytecode in which to store the int. - * @param index - * next available offset in bc. - * @return the next available offset in bc - * @see Instruction#compile - * @see Instruction#getInt - */ - public static int intToBytes(int s, byte bc[], int index) { - bc[index++] = (byte) ((s >> 24) & 0xff); - bc[index++] = (byte) ((s >> 16) & 0xff); - bc[index++] = (byte) ((s >> 8) & 0xff); - bc[index++] = (byte) (s & 0xff); - return index; - } - - /** - * For displaying instructions. - * - * @param constant_pool - * constant pool of associated ClassFile - * @return String representation of this instruction. - */ - public String toString(cp_info constant_pool[]) { - int i = (code) & 0xff; - if (name == null) { - name = "null???=" + Integer.toString(i); - } - return name; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Aaload.java b/src/main/java/soot/coffi/Instruction_Aaload.java deleted file mode 100644 index 8e1dcdb5130..00000000000 --- a/src/main/java/soot/coffi/Instruction_Aaload.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Aaload extends Instruction_noargs { - public Instruction_Aaload() { - super((byte) ByteCode.AALOAD); - name = "aaload"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Aastore.java b/src/main/java/soot/coffi/Instruction_Aastore.java deleted file mode 100644 index 8472871e579..00000000000 --- a/src/main/java/soot/coffi/Instruction_Aastore.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Aastore extends Instruction_noargs { - public Instruction_Aastore() { - super((byte) ByteCode.AASTORE); - name = "aastore"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Aconst_null.java b/src/main/java/soot/coffi/Instruction_Aconst_null.java deleted file mode 100644 index ed82f3a6930..00000000000 --- a/src/main/java/soot/coffi/Instruction_Aconst_null.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Aconst_null extends Instruction_noargs { - public Instruction_Aconst_null() { - super((byte) ByteCode.ACONST_NULL); - name = "aconst_null"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Aload.java b/src/main/java/soot/coffi/Instruction_Aload.java deleted file mode 100644 index 54ff0f7a192..00000000000 --- a/src/main/java/soot/coffi/Instruction_Aload.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Aload extends Instruction_bytevar { - public Instruction_Aload() { - super((byte) ByteCode.ALOAD); - name = "aload"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Aload_0.java b/src/main/java/soot/coffi/Instruction_Aload_0.java deleted file mode 100644 index 64ab1bb9f3f..00000000000 --- a/src/main/java/soot/coffi/Instruction_Aload_0.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Aload_0 extends Instruction_noargs { - public Instruction_Aload_0() { - super((byte) ByteCode.ALOAD_0); - name = "aload_0"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Aload_1.java b/src/main/java/soot/coffi/Instruction_Aload_1.java deleted file mode 100644 index 2b6c322066c..00000000000 --- a/src/main/java/soot/coffi/Instruction_Aload_1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Aload_1 extends Instruction_noargs { - public Instruction_Aload_1() { - super((byte) ByteCode.ALOAD_1); - name = "aload_1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Aload_2.java b/src/main/java/soot/coffi/Instruction_Aload_2.java deleted file mode 100644 index 59e0a81ba21..00000000000 --- a/src/main/java/soot/coffi/Instruction_Aload_2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Aload_2 extends Instruction_noargs { - public Instruction_Aload_2() { - super((byte) ByteCode.ALOAD_2); - name = "aload_2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Aload_3.java b/src/main/java/soot/coffi/Instruction_Aload_3.java deleted file mode 100644 index 84e238fa87a..00000000000 --- a/src/main/java/soot/coffi/Instruction_Aload_3.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Aload_3 extends Instruction_noargs { - public Instruction_Aload_3() { - super((byte) ByteCode.ALOAD_3); - name = "aload_3"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Anewarray.java b/src/main/java/soot/coffi/Instruction_Anewarray.java deleted file mode 100644 index e31c0f83400..00000000000 --- a/src/main/java/soot/coffi/Instruction_Anewarray.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Anewarray extends Instruction_intindex { - public Instruction_Anewarray() { - super((byte) ByteCode.ANEWARRAY); - name = "anewarray"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Areturn.java b/src/main/java/soot/coffi/Instruction_Areturn.java deleted file mode 100644 index 03cea44bbed..00000000000 --- a/src/main/java/soot/coffi/Instruction_Areturn.java +++ /dev/null @@ -1,63 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Areturn extends Instruction_noargs { - public Instruction_Areturn() { - super((byte) ByteCode.ARETURN); - name = "areturn"; - branches = true; - returns = true; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Arraylength.java b/src/main/java/soot/coffi/Instruction_Arraylength.java deleted file mode 100644 index 0308bc6d101..00000000000 --- a/src/main/java/soot/coffi/Instruction_Arraylength.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Arraylength extends Instruction_noargs { - public Instruction_Arraylength() { - super((byte) ByteCode.ARRAYLENGTH); - name = "arraylength"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Astore.java b/src/main/java/soot/coffi/Instruction_Astore.java deleted file mode 100644 index e4873d68df6..00000000000 --- a/src/main/java/soot/coffi/Instruction_Astore.java +++ /dev/null @@ -1,65 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Astore extends Instruction_bytevar implements Interface_Astore { - public Instruction_Astore() { - super((byte) ByteCode.ASTORE); - name = "astore"; - } - - public int getLocalNumber() { - return arg_b; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Astore_0.java b/src/main/java/soot/coffi/Instruction_Astore_0.java deleted file mode 100644 index 32b9caeca8b..00000000000 --- a/src/main/java/soot/coffi/Instruction_Astore_0.java +++ /dev/null @@ -1,65 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Astore_0 extends Instruction_noargs implements Interface_Astore { - public Instruction_Astore_0() { - super((byte) ByteCode.ASTORE_0); - name = "astore_0"; - } - - public int getLocalNumber() { - return 0; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Astore_1.java b/src/main/java/soot/coffi/Instruction_Astore_1.java deleted file mode 100644 index 3505c86ad12..00000000000 --- a/src/main/java/soot/coffi/Instruction_Astore_1.java +++ /dev/null @@ -1,65 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Astore_1 extends Instruction_noargs implements Interface_Astore { - public Instruction_Astore_1() { - super((byte) ByteCode.ASTORE_1); - name = "astore_1"; - } - - public int getLocalNumber() { - return 1; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Astore_2.java b/src/main/java/soot/coffi/Instruction_Astore_2.java deleted file mode 100644 index d5d6b525349..00000000000 --- a/src/main/java/soot/coffi/Instruction_Astore_2.java +++ /dev/null @@ -1,65 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Astore_2 extends Instruction_noargs implements Interface_Astore { - public Instruction_Astore_2() { - super((byte) ByteCode.ASTORE_2); - name = "astore_2"; - } - - public int getLocalNumber() { - return 2; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Astore_3.java b/src/main/java/soot/coffi/Instruction_Astore_3.java deleted file mode 100644 index 17ded20d308..00000000000 --- a/src/main/java/soot/coffi/Instruction_Astore_3.java +++ /dev/null @@ -1,65 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Astore_3 extends Instruction_noargs implements Interface_Astore { - public Instruction_Astore_3() { - super((byte) ByteCode.ASTORE_3); - name = "astore_3"; - } - - public int getLocalNumber() { - return 3; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Athrow.java b/src/main/java/soot/coffi/Instruction_Athrow.java deleted file mode 100644 index 743ede0ff03..00000000000 --- a/src/main/java/soot/coffi/Instruction_Athrow.java +++ /dev/null @@ -1,68 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Athrow extends Instruction_noargs { - public Instruction_Athrow() { - super((byte) ByteCode.ATHROW); - name = "athrow"; - branches = true; - } - - public Instruction[] branchpoints(Instruction next) { - Instruction i[] = new Instruction[1]; - i[0] = null; - return i; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Baload.java b/src/main/java/soot/coffi/Instruction_Baload.java deleted file mode 100644 index ae6021a227b..00000000000 --- a/src/main/java/soot/coffi/Instruction_Baload.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Baload extends Instruction_noargs { - public Instruction_Baload() { - super((byte) ByteCode.BALOAD); - name = "baload"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Bastore.java b/src/main/java/soot/coffi/Instruction_Bastore.java deleted file mode 100644 index 3915baa2310..00000000000 --- a/src/main/java/soot/coffi/Instruction_Bastore.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Bastore extends Instruction_noargs { - public Instruction_Bastore() { - super((byte) ByteCode.BASTORE); - name = "bastore"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Bipush.java b/src/main/java/soot/coffi/Instruction_Bipush.java deleted file mode 100644 index fe016f1b7fc..00000000000 --- a/src/main/java/soot/coffi/Instruction_Bipush.java +++ /dev/null @@ -1,66 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Bipush extends Instruction_byte { - public Instruction_Bipush() { - super((byte) ByteCode.BIPUSH); - name = "bipush"; - } - - public Instruction_Bipush(byte b) { - this(); - arg_b = b; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Breakpoint.java b/src/main/java/soot/coffi/Instruction_Breakpoint.java deleted file mode 100644 index 62fcfefab78..00000000000 --- a/src/main/java/soot/coffi/Instruction_Breakpoint.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Breakpoint extends Instruction_noargs { - public Instruction_Breakpoint() { - super((byte) ByteCode.BREAKPOINT); - name = "breakpoint"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Caload.java b/src/main/java/soot/coffi/Instruction_Caload.java deleted file mode 100644 index 1358358a222..00000000000 --- a/src/main/java/soot/coffi/Instruction_Caload.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Caload extends Instruction_noargs { - public Instruction_Caload() { - super((byte) ByteCode.CALOAD); - name = "caload"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Castore.java b/src/main/java/soot/coffi/Instruction_Castore.java deleted file mode 100644 index 94a4fe4a9ce..00000000000 --- a/src/main/java/soot/coffi/Instruction_Castore.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Castore extends Instruction_noargs { - public Instruction_Castore() { - super((byte) ByteCode.CASTORE); - name = "castore"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Checkcast.java b/src/main/java/soot/coffi/Instruction_Checkcast.java deleted file mode 100644 index 77e39579340..00000000000 --- a/src/main/java/soot/coffi/Instruction_Checkcast.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Checkcast extends Instruction_intindex { - public Instruction_Checkcast() { - super((byte) ByteCode.CHECKCAST); - name = "checkcast"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_D2f.java b/src/main/java/soot/coffi/Instruction_D2f.java deleted file mode 100644 index d0d3e94ced1..00000000000 --- a/src/main/java/soot/coffi/Instruction_D2f.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_D2f extends Instruction_noargs { - public Instruction_D2f() { - super((byte) ByteCode.D2F); - name = "d2f"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_D2i.java b/src/main/java/soot/coffi/Instruction_D2i.java deleted file mode 100644 index bca74ef6ed5..00000000000 --- a/src/main/java/soot/coffi/Instruction_D2i.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_D2i extends Instruction_noargs { - public Instruction_D2i() { - super((byte) ByteCode.D2I); - name = "d2i"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_D2l.java b/src/main/java/soot/coffi/Instruction_D2l.java deleted file mode 100644 index e7ee3c71409..00000000000 --- a/src/main/java/soot/coffi/Instruction_D2l.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_D2l extends Instruction_noargs { - public Instruction_D2l() { - super((byte) ByteCode.D2L); - name = "d2l"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dadd.java b/src/main/java/soot/coffi/Instruction_Dadd.java deleted file mode 100644 index 8bc51984f01..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dadd.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dadd extends Instruction_noargs { - public Instruction_Dadd() { - super((byte) ByteCode.DADD); - name = "dadd"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Daload.java b/src/main/java/soot/coffi/Instruction_Daload.java deleted file mode 100644 index 421ea21b940..00000000000 --- a/src/main/java/soot/coffi/Instruction_Daload.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Daload extends Instruction_noargs { - public Instruction_Daload() { - super((byte) ByteCode.DALOAD); - name = "daload"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dastore.java b/src/main/java/soot/coffi/Instruction_Dastore.java deleted file mode 100644 index b506c3ca3c7..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dastore.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dastore extends Instruction_noargs { - public Instruction_Dastore() { - super((byte) ByteCode.DASTORE); - name = "dastore"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dcmpg.java b/src/main/java/soot/coffi/Instruction_Dcmpg.java deleted file mode 100644 index 63b094515f8..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dcmpg.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dcmpg extends Instruction_noargs { - public Instruction_Dcmpg() { - super((byte) ByteCode.DCMPG); - name = "dcmpg"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dcmpl.java b/src/main/java/soot/coffi/Instruction_Dcmpl.java deleted file mode 100644 index 0587db4d5aa..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dcmpl.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dcmpl extends Instruction_noargs { - public Instruction_Dcmpl() { - super((byte) ByteCode.DCMPL); - name = "dcmpl"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dconst_0.java b/src/main/java/soot/coffi/Instruction_Dconst_0.java deleted file mode 100644 index 44681512129..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dconst_0.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dconst_0 extends Instruction_noargs { - public Instruction_Dconst_0() { - super((byte) ByteCode.DCONST_0); - name = "dconst_0"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dconst_1.java b/src/main/java/soot/coffi/Instruction_Dconst_1.java deleted file mode 100644 index 90df92a30dc..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dconst_1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dconst_1 extends Instruction_noargs { - public Instruction_Dconst_1() { - super((byte) ByteCode.DCONST_1); - name = "dconst_1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ddiv.java b/src/main/java/soot/coffi/Instruction_Ddiv.java deleted file mode 100644 index 749c099283d..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ddiv.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ddiv extends Instruction_noargs { - public Instruction_Ddiv() { - super((byte) ByteCode.DDIV); - name = "ddiv"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dload.java b/src/main/java/soot/coffi/Instruction_Dload.java deleted file mode 100644 index 0f8d461967a..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dload.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dload extends Instruction_bytevar { - public Instruction_Dload() { - super((byte) ByteCode.DLOAD); - name = "dload"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dload_0.java b/src/main/java/soot/coffi/Instruction_Dload_0.java deleted file mode 100644 index fafbc3a825a..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dload_0.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dload_0 extends Instruction_noargs { - public Instruction_Dload_0() { - super((byte) ByteCode.DLOAD_0); - name = "dload_0"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dload_1.java b/src/main/java/soot/coffi/Instruction_Dload_1.java deleted file mode 100644 index 0721cfe8a8f..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dload_1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dload_1 extends Instruction_noargs { - public Instruction_Dload_1() { - super((byte) ByteCode.DLOAD_1); - name = "dload_1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dload_2.java b/src/main/java/soot/coffi/Instruction_Dload_2.java deleted file mode 100644 index cee1f43fc59..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dload_2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dload_2 extends Instruction_noargs { - public Instruction_Dload_2() { - super((byte) ByteCode.DLOAD_2); - name = "dload_2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dload_3.java b/src/main/java/soot/coffi/Instruction_Dload_3.java deleted file mode 100644 index 452ec6f0f43..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dload_3.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dload_3 extends Instruction_noargs { - public Instruction_Dload_3() { - super((byte) ByteCode.DLOAD_3); - name = "dload_3"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dmul.java b/src/main/java/soot/coffi/Instruction_Dmul.java deleted file mode 100644 index 769117af38f..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dmul.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dmul extends Instruction_noargs { - public Instruction_Dmul() { - super((byte) ByteCode.DMUL); - name = "dmul"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dneg.java b/src/main/java/soot/coffi/Instruction_Dneg.java deleted file mode 100644 index d0765db570a..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dneg.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dneg extends Instruction_noargs { - public Instruction_Dneg() { - super((byte) ByteCode.DNEG); - name = "dneg"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Drem.java b/src/main/java/soot/coffi/Instruction_Drem.java deleted file mode 100644 index 788bcadb811..00000000000 --- a/src/main/java/soot/coffi/Instruction_Drem.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Drem extends Instruction_noargs { - public Instruction_Drem() { - super((byte) ByteCode.DREM); - name = "drem"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dreturn.java b/src/main/java/soot/coffi/Instruction_Dreturn.java deleted file mode 100644 index 64286653b8e..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dreturn.java +++ /dev/null @@ -1,63 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dreturn extends Instruction_noargs { - public Instruction_Dreturn() { - super((byte) ByteCode.DRETURN); - name = "dreturn"; - branches = true; - returns = true; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dstore.java b/src/main/java/soot/coffi/Instruction_Dstore.java deleted file mode 100644 index fd65eb31c8e..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dstore.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dstore extends Instruction_bytevar { - public Instruction_Dstore() { - super((byte) ByteCode.DSTORE); - name = "dstore"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dstore_0.java b/src/main/java/soot/coffi/Instruction_Dstore_0.java deleted file mode 100644 index 3f33ccd707a..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dstore_0.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dstore_0 extends Instruction_noargs { - public Instruction_Dstore_0() { - super((byte) ByteCode.DSTORE_0); - name = "dstore_0"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dstore_1.java b/src/main/java/soot/coffi/Instruction_Dstore_1.java deleted file mode 100644 index fcce55fc19f..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dstore_1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dstore_1 extends Instruction_noargs { - public Instruction_Dstore_1() { - super((byte) ByteCode.DSTORE_1); - name = "dstore_1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dstore_2.java b/src/main/java/soot/coffi/Instruction_Dstore_2.java deleted file mode 100644 index 587620b1f3b..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dstore_2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dstore_2 extends Instruction_noargs { - public Instruction_Dstore_2() { - super((byte) ByteCode.DSTORE_2); - name = "dstore_2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dstore_3.java b/src/main/java/soot/coffi/Instruction_Dstore_3.java deleted file mode 100644 index 636574b94cf..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dstore_3.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dstore_3 extends Instruction_noargs { - public Instruction_Dstore_3() { - super((byte) ByteCode.DSTORE_3); - name = "dstore_3"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dsub.java b/src/main/java/soot/coffi/Instruction_Dsub.java deleted file mode 100644 index a40af758d94..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dsub.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dsub extends Instruction_noargs { - public Instruction_Dsub() { - super((byte) ByteCode.DSUB); - name = "dsub"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dup.java b/src/main/java/soot/coffi/Instruction_Dup.java deleted file mode 100644 index a34b33d53c2..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dup.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dup extends Instruction_noargs { - public Instruction_Dup() { - super((byte) ByteCode.DUP); - name = "dup"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dup2.java b/src/main/java/soot/coffi/Instruction_Dup2.java deleted file mode 100644 index 618fddbac9b..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dup2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dup2 extends Instruction_noargs { - public Instruction_Dup2() { - super((byte) ByteCode.DUP2); - name = "dup2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dup2_x1.java b/src/main/java/soot/coffi/Instruction_Dup2_x1.java deleted file mode 100644 index 10cbb33b2d3..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dup2_x1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dup2_x1 extends Instruction_noargs { - public Instruction_Dup2_x1() { - super((byte) ByteCode.DUP2_X1); - name = "dup2_x1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dup2_x2.java b/src/main/java/soot/coffi/Instruction_Dup2_x2.java deleted file mode 100644 index 101d2749055..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dup2_x2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dup2_x2 extends Instruction_noargs { - public Instruction_Dup2_x2() { - super((byte) ByteCode.DUP2_X2); - name = "dup2_x2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dup_x1.java b/src/main/java/soot/coffi/Instruction_Dup_x1.java deleted file mode 100644 index 463eebfd1f4..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dup_x1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dup_x1 extends Instruction_noargs { - public Instruction_Dup_x1() { - super((byte) ByteCode.DUP_X1); - name = "dup_x1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Dup_x2.java b/src/main/java/soot/coffi/Instruction_Dup_x2.java deleted file mode 100644 index dc86345d9c4..00000000000 --- a/src/main/java/soot/coffi/Instruction_Dup_x2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Dup_x2 extends Instruction_noargs { - public Instruction_Dup_x2() { - super((byte) ByteCode.DUP_X2); - name = "dup_x2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_F2d.java b/src/main/java/soot/coffi/Instruction_F2d.java deleted file mode 100644 index 84fedab87eb..00000000000 --- a/src/main/java/soot/coffi/Instruction_F2d.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_F2d extends Instruction_noargs { - public Instruction_F2d() { - super((byte) ByteCode.F2D); - name = "f2d"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_F2i.java b/src/main/java/soot/coffi/Instruction_F2i.java deleted file mode 100644 index d89c6c4bd23..00000000000 --- a/src/main/java/soot/coffi/Instruction_F2i.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_F2i extends Instruction_noargs { - public Instruction_F2i() { - super((byte) ByteCode.F2I); - name = "f2i"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_F2l.java b/src/main/java/soot/coffi/Instruction_F2l.java deleted file mode 100644 index 660cad9daef..00000000000 --- a/src/main/java/soot/coffi/Instruction_F2l.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_F2l extends Instruction_noargs { - public Instruction_F2l() { - super((byte) ByteCode.F2L); - name = "f2l"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fadd.java b/src/main/java/soot/coffi/Instruction_Fadd.java deleted file mode 100644 index 3ea66f4eaec..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fadd.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fadd extends Instruction_noargs { - public Instruction_Fadd() { - super((byte) ByteCode.FADD); - name = "fadd"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Faload.java b/src/main/java/soot/coffi/Instruction_Faload.java deleted file mode 100644 index 9f2857f6a73..00000000000 --- a/src/main/java/soot/coffi/Instruction_Faload.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Faload extends Instruction_noargs { - public Instruction_Faload() { - super((byte) ByteCode.FALOAD); - name = "faload"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fastore.java b/src/main/java/soot/coffi/Instruction_Fastore.java deleted file mode 100644 index 5649feb9b24..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fastore.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fastore extends Instruction_noargs { - public Instruction_Fastore() { - super((byte) ByteCode.FASTORE); - name = "fastore"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fcmpg.java b/src/main/java/soot/coffi/Instruction_Fcmpg.java deleted file mode 100644 index 7b38110361d..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fcmpg.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fcmpg extends Instruction_noargs { - public Instruction_Fcmpg() { - super((byte) ByteCode.FCMPG); - name = "fcmpg"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fcmpl.java b/src/main/java/soot/coffi/Instruction_Fcmpl.java deleted file mode 100644 index a19b0fc17df..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fcmpl.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fcmpl extends Instruction_noargs { - public Instruction_Fcmpl() { - super((byte) ByteCode.FCMPL); - name = "fcmpl"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fconst_0.java b/src/main/java/soot/coffi/Instruction_Fconst_0.java deleted file mode 100644 index 31ac8a5c51b..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fconst_0.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fconst_0 extends Instruction_noargs { - public Instruction_Fconst_0() { - super((byte) ByteCode.FCONST_0); - name = "fconst_0"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fconst_1.java b/src/main/java/soot/coffi/Instruction_Fconst_1.java deleted file mode 100644 index 40c8876f317..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fconst_1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fconst_1 extends Instruction_noargs { - public Instruction_Fconst_1() { - super((byte) ByteCode.FCONST_1); - name = "fconst_1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fconst_2.java b/src/main/java/soot/coffi/Instruction_Fconst_2.java deleted file mode 100644 index e0e9b198eaf..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fconst_2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fconst_2 extends Instruction_noargs { - public Instruction_Fconst_2() { - super((byte) ByteCode.FCONST_2); - name = "fconst_2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fdiv.java b/src/main/java/soot/coffi/Instruction_Fdiv.java deleted file mode 100644 index 744a2ee67fd..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fdiv.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fdiv extends Instruction_noargs { - public Instruction_Fdiv() { - super((byte) ByteCode.FDIV); - name = "fdiv"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fload.java b/src/main/java/soot/coffi/Instruction_Fload.java deleted file mode 100644 index acc15564c64..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fload.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fload extends Instruction_bytevar { - public Instruction_Fload() { - super((byte) ByteCode.FLOAD); - name = "fload"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fload_0.java b/src/main/java/soot/coffi/Instruction_Fload_0.java deleted file mode 100644 index a0814bdd3ae..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fload_0.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fload_0 extends Instruction_noargs { - public Instruction_Fload_0() { - super((byte) ByteCode.FLOAD_0); - name = "fload_0"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fload_1.java b/src/main/java/soot/coffi/Instruction_Fload_1.java deleted file mode 100644 index 6426fdc5c53..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fload_1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fload_1 extends Instruction_noargs { - public Instruction_Fload_1() { - super((byte) ByteCode.FLOAD_1); - name = "fload_1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fload_2.java b/src/main/java/soot/coffi/Instruction_Fload_2.java deleted file mode 100644 index abd391f527c..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fload_2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fload_2 extends Instruction_noargs { - public Instruction_Fload_2() { - super((byte) ByteCode.FLOAD_2); - name = "fload_2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fload_3.java b/src/main/java/soot/coffi/Instruction_Fload_3.java deleted file mode 100644 index 17cc4be734c..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fload_3.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fload_3 extends Instruction_noargs { - public Instruction_Fload_3() { - super((byte) ByteCode.FLOAD_3); - name = "fload_3"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fmul.java b/src/main/java/soot/coffi/Instruction_Fmul.java deleted file mode 100644 index 9bc9c78a04f..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fmul.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fmul extends Instruction_noargs { - public Instruction_Fmul() { - super((byte) ByteCode.FMUL); - name = "fmul"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fneg.java b/src/main/java/soot/coffi/Instruction_Fneg.java deleted file mode 100644 index 85efe143b9b..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fneg.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fneg extends Instruction_noargs { - public Instruction_Fneg() { - super((byte) ByteCode.FNEG); - name = "fneg"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Frem.java b/src/main/java/soot/coffi/Instruction_Frem.java deleted file mode 100644 index 934d78b5fd1..00000000000 --- a/src/main/java/soot/coffi/Instruction_Frem.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Frem extends Instruction_noargs { - public Instruction_Frem() { - super((byte) ByteCode.FREM); - name = "frem"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Freturn.java b/src/main/java/soot/coffi/Instruction_Freturn.java deleted file mode 100644 index 1ddf293e20c..00000000000 --- a/src/main/java/soot/coffi/Instruction_Freturn.java +++ /dev/null @@ -1,63 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Freturn extends Instruction_noargs { - public Instruction_Freturn() { - super((byte) ByteCode.FRETURN); - name = "freturn"; - branches = true; - returns = true; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fstore.java b/src/main/java/soot/coffi/Instruction_Fstore.java deleted file mode 100644 index 18d60550f59..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fstore.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fstore extends Instruction_bytevar { - public Instruction_Fstore() { - super((byte) ByteCode.FSTORE); - name = "fstore"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fstore_0.java b/src/main/java/soot/coffi/Instruction_Fstore_0.java deleted file mode 100644 index 396b75205ca..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fstore_0.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fstore_0 extends Instruction_noargs { - public Instruction_Fstore_0() { - super((byte) ByteCode.FSTORE_0); - name = "fstore_0"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fstore_1.java b/src/main/java/soot/coffi/Instruction_Fstore_1.java deleted file mode 100644 index 4782173cf32..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fstore_1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fstore_1 extends Instruction_noargs { - public Instruction_Fstore_1() { - super((byte) ByteCode.FSTORE_1); - name = "fstore_1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fstore_2.java b/src/main/java/soot/coffi/Instruction_Fstore_2.java deleted file mode 100644 index c3b473ce182..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fstore_2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fstore_2 extends Instruction_noargs { - public Instruction_Fstore_2() { - super((byte) ByteCode.FSTORE_2); - name = "fstore_2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fstore_3.java b/src/main/java/soot/coffi/Instruction_Fstore_3.java deleted file mode 100644 index 65f480bf0c1..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fstore_3.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fstore_3 extends Instruction_noargs { - public Instruction_Fstore_3() { - super((byte) ByteCode.FSTORE_3); - name = "fstore_3"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Fsub.java b/src/main/java/soot/coffi/Instruction_Fsub.java deleted file mode 100644 index d488e5fca4b..00000000000 --- a/src/main/java/soot/coffi/Instruction_Fsub.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Fsub extends Instruction_noargs { - public Instruction_Fsub() { - super((byte) ByteCode.FSUB); - name = "fsub"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Getfield.java b/src/main/java/soot/coffi/Instruction_Getfield.java deleted file mode 100644 index 4bd3e763ef6..00000000000 --- a/src/main/java/soot/coffi/Instruction_Getfield.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Getfield extends Instruction_intindex { - public Instruction_Getfield() { - super((byte) ByteCode.GETFIELD); - name = "getfield"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Getstatic.java b/src/main/java/soot/coffi/Instruction_Getstatic.java deleted file mode 100644 index 339d997fa80..00000000000 --- a/src/main/java/soot/coffi/Instruction_Getstatic.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Getstatic extends Instruction_intindex { - public Instruction_Getstatic() { - super((byte) ByteCode.GETSTATIC); - name = "getstatic"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Goto.java b/src/main/java/soot/coffi/Instruction_Goto.java deleted file mode 100644 index 12bcc399ef2..00000000000 --- a/src/main/java/soot/coffi/Instruction_Goto.java +++ /dev/null @@ -1,67 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Goto extends Instruction_intbranch { - public Instruction_Goto() { - super((byte) ByteCode.GOTO); - name = "goto"; - } - - public Instruction[] branchpoints(Instruction next) { - Instruction i[] = new Instruction[1]; - i[0] = target; - return i; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Goto_w.java b/src/main/java/soot/coffi/Instruction_Goto_w.java deleted file mode 100644 index df56ba1086b..00000000000 --- a/src/main/java/soot/coffi/Instruction_Goto_w.java +++ /dev/null @@ -1,67 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Goto_w extends Instruction_longbranch { - public Instruction_Goto_w() { - super((byte) ByteCode.GOTO_W); - name = "goto_w"; - } - - public Instruction[] branchpoints(Instruction next) { - Instruction i[] = new Instruction[1]; - i[0] = target; - return i; - } -} diff --git a/src/main/java/soot/coffi/Instruction_I2d.java b/src/main/java/soot/coffi/Instruction_I2d.java deleted file mode 100644 index f72cc66e90b..00000000000 --- a/src/main/java/soot/coffi/Instruction_I2d.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_I2d extends Instruction_noargs { - public Instruction_I2d() { - super((byte) ByteCode.I2D); - name = "i2d"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_I2f.java b/src/main/java/soot/coffi/Instruction_I2f.java deleted file mode 100644 index 939d0f57324..00000000000 --- a/src/main/java/soot/coffi/Instruction_I2f.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_I2f extends Instruction_noargs { - public Instruction_I2f() { - super((byte) ByteCode.I2F); - name = "i2f"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_I2l.java b/src/main/java/soot/coffi/Instruction_I2l.java deleted file mode 100644 index a15928bf002..00000000000 --- a/src/main/java/soot/coffi/Instruction_I2l.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_I2l extends Instruction_noargs { - public Instruction_I2l() { - super((byte) ByteCode.I2L); - name = "i2l"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iadd.java b/src/main/java/soot/coffi/Instruction_Iadd.java deleted file mode 100644 index 07a4b5ced19..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iadd.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iadd extends Instruction_noargs { - public Instruction_Iadd() { - super((byte) ByteCode.IADD); - name = "iadd"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iaload.java b/src/main/java/soot/coffi/Instruction_Iaload.java deleted file mode 100644 index d00be7ba29a..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iaload.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iaload extends Instruction_noargs { - public Instruction_Iaload() { - super((byte) ByteCode.IALOAD); - name = "iaload"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iand.java b/src/main/java/soot/coffi/Instruction_Iand.java deleted file mode 100644 index 6f71c4a7e20..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iand.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iand extends Instruction_noargs { - public Instruction_Iand() { - super((byte) ByteCode.IAND); - name = "iand"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iastore.java b/src/main/java/soot/coffi/Instruction_Iastore.java deleted file mode 100644 index a3de94b270b..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iastore.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iastore extends Instruction_noargs { - public Instruction_Iastore() { - super((byte) ByteCode.IASTORE); - name = "iastore"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iconst_0.java b/src/main/java/soot/coffi/Instruction_Iconst_0.java deleted file mode 100644 index 9e631e27af7..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iconst_0.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iconst_0 extends Instruction_noargs { - public Instruction_Iconst_0() { - super((byte) ByteCode.ICONST_0); - name = "iconst_0"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iconst_1.java b/src/main/java/soot/coffi/Instruction_Iconst_1.java deleted file mode 100644 index 8ce9a98cf01..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iconst_1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iconst_1 extends Instruction_noargs { - public Instruction_Iconst_1() { - super((byte) ByteCode.ICONST_1); - name = "iconst_1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iconst_2.java b/src/main/java/soot/coffi/Instruction_Iconst_2.java deleted file mode 100644 index ef977ca435d..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iconst_2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iconst_2 extends Instruction_noargs { - public Instruction_Iconst_2() { - super((byte) ByteCode.ICONST_2); - name = "iconst_2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iconst_3.java b/src/main/java/soot/coffi/Instruction_Iconst_3.java deleted file mode 100644 index 862e3564b91..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iconst_3.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iconst_3 extends Instruction_noargs { - public Instruction_Iconst_3() { - super((byte) ByteCode.ICONST_3); - name = "iconst_3"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iconst_4.java b/src/main/java/soot/coffi/Instruction_Iconst_4.java deleted file mode 100644 index f0da527a25c..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iconst_4.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iconst_4 extends Instruction_noargs { - public Instruction_Iconst_4() { - super((byte) ByteCode.ICONST_4); - name = "iconst_4"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iconst_5.java b/src/main/java/soot/coffi/Instruction_Iconst_5.java deleted file mode 100644 index 1b22e121e5e..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iconst_5.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iconst_5 extends Instruction_noargs { - public Instruction_Iconst_5() { - super((byte) ByteCode.ICONST_5); - name = "iconst_5"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iconst_m1.java b/src/main/java/soot/coffi/Instruction_Iconst_m1.java deleted file mode 100644 index 68e09ce0c5a..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iconst_m1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iconst_m1 extends Instruction_noargs { - public Instruction_Iconst_m1() { - super((byte) ByteCode.ICONST_M1); - name = "iconst_m1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Idiv.java b/src/main/java/soot/coffi/Instruction_Idiv.java deleted file mode 100644 index c88607866cc..00000000000 --- a/src/main/java/soot/coffi/Instruction_Idiv.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Idiv extends Instruction_noargs { - public Instruction_Idiv() { - super((byte) ByteCode.IDIV); - name = "idiv"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_If_acmpeq.java b/src/main/java/soot/coffi/Instruction_If_acmpeq.java deleted file mode 100644 index 4ddc3f7a9ad..00000000000 --- a/src/main/java/soot/coffi/Instruction_If_acmpeq.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_If_acmpeq extends Instruction_intbranch { - public Instruction_If_acmpeq() { - super((byte) ByteCode.IF_ACMPEQ); - name = "if_acmpeq"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_If_acmpne.java b/src/main/java/soot/coffi/Instruction_If_acmpne.java deleted file mode 100644 index dfa44569088..00000000000 --- a/src/main/java/soot/coffi/Instruction_If_acmpne.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_If_acmpne extends Instruction_intbranch { - public Instruction_If_acmpne() { - super((byte) ByteCode.IF_ACMPNE); - name = "if_acmpne"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_If_icmpeq.java b/src/main/java/soot/coffi/Instruction_If_icmpeq.java deleted file mode 100644 index 40f9b5c0ede..00000000000 --- a/src/main/java/soot/coffi/Instruction_If_icmpeq.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_If_icmpeq extends Instruction_intbranch { - public Instruction_If_icmpeq() { - super((byte) ByteCode.IF_ICMPEQ); - name = "if_icmpeq"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_If_icmpge.java b/src/main/java/soot/coffi/Instruction_If_icmpge.java deleted file mode 100644 index 41ad8ff74ae..00000000000 --- a/src/main/java/soot/coffi/Instruction_If_icmpge.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_If_icmpge extends Instruction_intbranch { - public Instruction_If_icmpge() { - super((byte) ByteCode.IF_ICMPGE); - name = "if_icmpge"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_If_icmpgt.java b/src/main/java/soot/coffi/Instruction_If_icmpgt.java deleted file mode 100644 index 198cf08d82d..00000000000 --- a/src/main/java/soot/coffi/Instruction_If_icmpgt.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_If_icmpgt extends Instruction_intbranch { - public Instruction_If_icmpgt() { - super((byte) ByteCode.IF_ICMPGT); - name = "if_icmpgt"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_If_icmple.java b/src/main/java/soot/coffi/Instruction_If_icmple.java deleted file mode 100644 index 271f8564988..00000000000 --- a/src/main/java/soot/coffi/Instruction_If_icmple.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_If_icmple extends Instruction_intbranch { - public Instruction_If_icmple() { - super((byte) ByteCode.IF_ICMPLE); - name = "if_icmple"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_If_icmplt.java b/src/main/java/soot/coffi/Instruction_If_icmplt.java deleted file mode 100644 index d5e44d358cf..00000000000 --- a/src/main/java/soot/coffi/Instruction_If_icmplt.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_If_icmplt extends Instruction_intbranch { - public Instruction_If_icmplt() { - super((byte) ByteCode.IF_ICMPLT); - name = "if_icmplt"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_If_icmpne.java b/src/main/java/soot/coffi/Instruction_If_icmpne.java deleted file mode 100644 index 84482fe041f..00000000000 --- a/src/main/java/soot/coffi/Instruction_If_icmpne.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_If_icmpne extends Instruction_intbranch { - public Instruction_If_icmpne() { - super((byte) ByteCode.IF_ICMPNE); - name = "if_icmpne"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ifeq.java b/src/main/java/soot/coffi/Instruction_Ifeq.java deleted file mode 100644 index a63cc4988e8..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ifeq.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ifeq extends Instruction_intbranch { - public Instruction_Ifeq() { - super((byte) ByteCode.IFEQ); - name = "ifeq"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ifge.java b/src/main/java/soot/coffi/Instruction_Ifge.java deleted file mode 100644 index d8181aa9865..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ifge.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ifge extends Instruction_intbranch { - public Instruction_Ifge() { - super((byte) ByteCode.IFGE); - name = "ifge"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ifgt.java b/src/main/java/soot/coffi/Instruction_Ifgt.java deleted file mode 100644 index 465345599f7..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ifgt.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ifgt extends Instruction_intbranch { - public Instruction_Ifgt() { - super((byte) ByteCode.IFGT); - name = "ifgt"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ifle.java b/src/main/java/soot/coffi/Instruction_Ifle.java deleted file mode 100644 index 33b6215cf07..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ifle.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ifle extends Instruction_intbranch { - public Instruction_Ifle() { - super((byte) ByteCode.IFLE); - name = "ifle"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iflt.java b/src/main/java/soot/coffi/Instruction_Iflt.java deleted file mode 100644 index 4d74ae6ba7a..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iflt.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iflt extends Instruction_intbranch { - public Instruction_Iflt() { - super((byte) ByteCode.IFLT); - name = "iflt"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ifne.java b/src/main/java/soot/coffi/Instruction_Ifne.java deleted file mode 100644 index 4baeded4904..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ifne.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ifne extends Instruction_intbranch { - public Instruction_Ifne() { - super((byte) ByteCode.IFNE); - name = "ifne"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ifnonnull.java b/src/main/java/soot/coffi/Instruction_Ifnonnull.java deleted file mode 100644 index 2f97adfc285..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ifnonnull.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ifnonnull extends Instruction_intbranch { - public Instruction_Ifnonnull() { - super((byte) ByteCode.IFNONNULL); - name = "ifnonnull"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ifnull.java b/src/main/java/soot/coffi/Instruction_Ifnull.java deleted file mode 100644 index c354b2dd658..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ifnull.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ifnull extends Instruction_intbranch { - public Instruction_Ifnull() { - super((byte) ByteCode.IFNULL); - name = "ifnull"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iinc.java b/src/main/java/soot/coffi/Instruction_Iinc.java deleted file mode 100644 index fb7d0f3463d..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iinc.java +++ /dev/null @@ -1,93 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iinc extends Instruction_bytevar { - public int arg_c; - - public Instruction_Iinc() { - super((byte) ByteCode.IINC); - name = "iinc"; - } - - public String toString(cp_info constant_pool[]) { - return super.toString(constant_pool) + argsep + arg_c; - } - - public int nextOffset(int curr) { - return super.nextOffset(curr) + ((isWide) ? 2 : 1); - } - - public int parse(byte bc[], int index) { - index = super.parse(bc, index); - - if (!isWide) { - arg_c = bc[index]; - return index + 1; - } else { - int constbyte1 = (bc[index]) & 0xff; - int constbyte2 = (bc[index + 1]) & 0xff; - - arg_c = (short) ((constbyte1 << 8) | constbyte2); - - return index + 2; - } - } - - public int compile(byte bc[], int index) { - index = super.compile(bc, index); - bc[index] = (byte) (arg_c & 0xff); - return index + 1; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iload.java b/src/main/java/soot/coffi/Instruction_Iload.java deleted file mode 100644 index cd647db089f..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iload.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iload extends Instruction_bytevar { - public Instruction_Iload() { - super((byte) ByteCode.ILOAD); - name = "iload"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iload_0.java b/src/main/java/soot/coffi/Instruction_Iload_0.java deleted file mode 100644 index cf229c813da..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iload_0.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iload_0 extends Instruction_noargs { - public Instruction_Iload_0() { - super((byte) ByteCode.ILOAD_0); - name = "iload_0"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iload_1.java b/src/main/java/soot/coffi/Instruction_Iload_1.java deleted file mode 100644 index ff1d2660515..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iload_1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iload_1 extends Instruction_noargs { - public Instruction_Iload_1() { - super((byte) ByteCode.ILOAD_1); - name = "iload_1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iload_2.java b/src/main/java/soot/coffi/Instruction_Iload_2.java deleted file mode 100644 index d0693cb5d52..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iload_2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iload_2 extends Instruction_noargs { - public Instruction_Iload_2() { - super((byte) ByteCode.ILOAD_2); - name = "iload_2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iload_3.java b/src/main/java/soot/coffi/Instruction_Iload_3.java deleted file mode 100644 index 253766f0797..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iload_3.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iload_3 extends Instruction_noargs { - public Instruction_Iload_3() { - super((byte) ByteCode.ILOAD_3); - name = "iload_3"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Imul.java b/src/main/java/soot/coffi/Instruction_Imul.java deleted file mode 100644 index 0d02409a6df..00000000000 --- a/src/main/java/soot/coffi/Instruction_Imul.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Imul extends Instruction_noargs { - public Instruction_Imul() { - super((byte) ByteCode.IMUL); - name = "imul"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ineg.java b/src/main/java/soot/coffi/Instruction_Ineg.java deleted file mode 100644 index 42698775359..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ineg.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ineg extends Instruction_noargs { - public Instruction_Ineg() { - super((byte) ByteCode.INEG); - name = "ineg"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Instanceof.java b/src/main/java/soot/coffi/Instruction_Instanceof.java deleted file mode 100644 index dd5d58cdd24..00000000000 --- a/src/main/java/soot/coffi/Instruction_Instanceof.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Instanceof extends Instruction_intindex { - public Instruction_Instanceof() { - super((byte) ByteCode.INSTANCEOF); - name = "instanceof"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Int2byte.java b/src/main/java/soot/coffi/Instruction_Int2byte.java deleted file mode 100644 index 9dfcb9c3708..00000000000 --- a/src/main/java/soot/coffi/Instruction_Int2byte.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Int2byte extends Instruction_noargs { - public Instruction_Int2byte() { - super((byte) ByteCode.INT2BYTE); - name = "int2byte"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Int2char.java b/src/main/java/soot/coffi/Instruction_Int2char.java deleted file mode 100644 index c03bdc9d80e..00000000000 --- a/src/main/java/soot/coffi/Instruction_Int2char.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Int2char extends Instruction_noargs { - public Instruction_Int2char() { - super((byte) ByteCode.INT2CHAR); - name = "int2char"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Int2short.java b/src/main/java/soot/coffi/Instruction_Int2short.java deleted file mode 100644 index c1dd0591408..00000000000 --- a/src/main/java/soot/coffi/Instruction_Int2short.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Int2short extends Instruction_noargs { - public Instruction_Int2short() { - super((byte) ByteCode.INT2SHORT); - name = "int2short"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Invokedynamic.java b/src/main/java/soot/coffi/Instruction_Invokedynamic.java deleted file mode 100644 index cd067dc66a2..00000000000 --- a/src/main/java/soot/coffi/Instruction_Invokedynamic.java +++ /dev/null @@ -1,98 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -// INSERTED Instruction_Invokedynamic - -class Instruction_Invokedynamic extends Instruction_intindex { - private static final Logger logger = LoggerFactory.getLogger(Instruction_Invokedynamic.class); - - public Instruction_Invokedynamic() { - super((byte) ByteCode.INVOKEDYNAMIC); - name = "invokedynamic"; - // branches = true; - calls = true; - } - /* - * Instruction[] branchpoints(Instruction next) { public Instruction i[] = new Instruction[1]; i[0] = null; return i; } - */ - - public short invoke_dynamic_index; - - public short reserved; - - public int parse(byte bc[], int index) { - invoke_dynamic_index = getShort(bc, index); - index += 2; - reserved = getShort(bc, index); - if (reserved > 0) { - logger.debug("reserved value in invokedynamic is " + reserved); - } - index += 2; - return index; - } - - public int compile(byte bc[], int index) { - bc[index++] = code; - shortToBytes(invoke_dynamic_index, bc, index); - index += 2; - shortToBytes(reserved, bc, index); - index += 2; - return index; - } - -} diff --git a/src/main/java/soot/coffi/Instruction_Invokeinterface.java b/src/main/java/soot/coffi/Instruction_Invokeinterface.java deleted file mode 100644 index 598652d7b66..00000000000 --- a/src/main/java/soot/coffi/Instruction_Invokeinterface.java +++ /dev/null @@ -1,92 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Invokeinterface extends Instruction_intindex { - public Instruction_Invokeinterface() { - super((byte) ByteCode.INVOKEINTERFACE); - name = "invokeinterface"; - // branches = true; - calls = true; - } - - public byte nargs; - public byte reserved; - - public String toString(cp_info constant_pool[]) { - return super.toString(constant_pool) + argsep + nargs + argsep + "(reserved " + reserved + ")"; - } - - public int nextOffset(int curr) { - return super.nextOffset(curr) + 2; - } - - public int parse(byte bc[], int index) { - index = super.parse(bc, index); - nargs = bc[index]; - index++; - reserved = bc[index]; - return index + 1; - } - - public int compile(byte bc[], int index) { - index = super.compile(bc, index); - bc[index++] = nargs; - bc[index++] = reserved; - return index; - } - /* - * Instruction[] branchpoints(Instruction next) { public Instruction i[] = new Instruction[1]; i[0] = null; return i; } - */ -} diff --git a/src/main/java/soot/coffi/Instruction_Invokenonvirtual.java b/src/main/java/soot/coffi/Instruction_Invokenonvirtual.java deleted file mode 100644 index 2f2805b36a5..00000000000 --- a/src/main/java/soot/coffi/Instruction_Invokenonvirtual.java +++ /dev/null @@ -1,66 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Invokenonvirtual extends Instruction_intindex { - public Instruction_Invokenonvirtual() { - super((byte) ByteCode.INVOKENONVIRTUAL); - name = "invokenonvirtual"; - // branches = true; - calls = true; - } - /* - * Instruction[] branchpoints(Instruction next) { public Instruction i[] = new Instruction[1]; i[0] = null; return i; } - */ -} diff --git a/src/main/java/soot/coffi/Instruction_Invokestatic.java b/src/main/java/soot/coffi/Instruction_Invokestatic.java deleted file mode 100644 index 2672eaa05f9..00000000000 --- a/src/main/java/soot/coffi/Instruction_Invokestatic.java +++ /dev/null @@ -1,66 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Invokestatic extends Instruction_intindex { - public Instruction_Invokestatic() { - super((byte) ByteCode.INVOKESTATIC); - name = "invokestatic"; - // branches = true; - calls = true; - } - /* - * Instruction[] branchpoints(Instruction next) { public Instruction i[] = new Instruction[1]; i[0] = null; return i; } - */ -} diff --git a/src/main/java/soot/coffi/Instruction_Invokevirtual.java b/src/main/java/soot/coffi/Instruction_Invokevirtual.java deleted file mode 100644 index 2a50a676ff0..00000000000 --- a/src/main/java/soot/coffi/Instruction_Invokevirtual.java +++ /dev/null @@ -1,66 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Invokevirtual extends Instruction_intindex { - public Instruction_Invokevirtual() { - super((byte) ByteCode.INVOKEVIRTUAL); - name = "invokevirtual"; - // branches = true; - calls = true; - } - /* - * Instruction[] branchpoints(Instruction next) { public Instruction i[] = new Instruction[1]; i[0] = null; return i; } - */ -} diff --git a/src/main/java/soot/coffi/Instruction_Ior.java b/src/main/java/soot/coffi/Instruction_Ior.java deleted file mode 100644 index 408bb560673..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ior.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ior extends Instruction_noargs { - public Instruction_Ior() { - super((byte) ByteCode.IOR); - name = "ior"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Irem.java b/src/main/java/soot/coffi/Instruction_Irem.java deleted file mode 100644 index 9b9043eeaf3..00000000000 --- a/src/main/java/soot/coffi/Instruction_Irem.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Irem extends Instruction_noargs { - public Instruction_Irem() { - super((byte) ByteCode.IREM); - name = "irem"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ireturn.java b/src/main/java/soot/coffi/Instruction_Ireturn.java deleted file mode 100644 index d9eb6f8c28d..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ireturn.java +++ /dev/null @@ -1,63 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ireturn extends Instruction_noargs { - public Instruction_Ireturn() { - super((byte) ByteCode.IRETURN); - name = "ireturn"; - branches = true; - returns = true; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ishl.java b/src/main/java/soot/coffi/Instruction_Ishl.java deleted file mode 100644 index d142c276d4d..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ishl.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ishl extends Instruction_noargs { - public Instruction_Ishl() { - super((byte) ByteCode.ISHL); - name = "ishl"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ishr.java b/src/main/java/soot/coffi/Instruction_Ishr.java deleted file mode 100644 index 1eced1c839f..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ishr.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ishr extends Instruction_noargs { - public Instruction_Ishr() { - super((byte) ByteCode.ISHR); - name = "ishr"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Istore.java b/src/main/java/soot/coffi/Instruction_Istore.java deleted file mode 100644 index f46173a9a17..00000000000 --- a/src/main/java/soot/coffi/Instruction_Istore.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Istore extends Instruction_bytevar { - public Instruction_Istore() { - super((byte) ByteCode.ISTORE); - name = "istore"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Istore_0.java b/src/main/java/soot/coffi/Instruction_Istore_0.java deleted file mode 100644 index 753b4dce337..00000000000 --- a/src/main/java/soot/coffi/Instruction_Istore_0.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Istore_0 extends Instruction_noargs { - public Instruction_Istore_0() { - super((byte) ByteCode.ISTORE_0); - name = "istore_0"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Istore_1.java b/src/main/java/soot/coffi/Instruction_Istore_1.java deleted file mode 100644 index 00c21b6b768..00000000000 --- a/src/main/java/soot/coffi/Instruction_Istore_1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Istore_1 extends Instruction_noargs { - public Instruction_Istore_1() { - super((byte) ByteCode.ISTORE_1); - name = "istore_1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Istore_2.java b/src/main/java/soot/coffi/Instruction_Istore_2.java deleted file mode 100644 index f6466d5135b..00000000000 --- a/src/main/java/soot/coffi/Instruction_Istore_2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Istore_2 extends Instruction_noargs { - public Instruction_Istore_2() { - super((byte) ByteCode.ISTORE_2); - name = "istore_2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Istore_3.java b/src/main/java/soot/coffi/Instruction_Istore_3.java deleted file mode 100644 index e4922481fa5..00000000000 --- a/src/main/java/soot/coffi/Instruction_Istore_3.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Istore_3 extends Instruction_noargs { - public Instruction_Istore_3() { - super((byte) ByteCode.ISTORE_3); - name = "istore_3"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Isub.java b/src/main/java/soot/coffi/Instruction_Isub.java deleted file mode 100644 index 1f380c3ac1e..00000000000 --- a/src/main/java/soot/coffi/Instruction_Isub.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Isub extends Instruction_noargs { - public Instruction_Isub() { - super((byte) ByteCode.ISUB); - name = "isub"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Iushr.java b/src/main/java/soot/coffi/Instruction_Iushr.java deleted file mode 100644 index 6cdb2802ea4..00000000000 --- a/src/main/java/soot/coffi/Instruction_Iushr.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Iushr extends Instruction_noargs { - public Instruction_Iushr() { - super((byte) ByteCode.IUSHR); - name = "iushr"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ixor.java b/src/main/java/soot/coffi/Instruction_Ixor.java deleted file mode 100644 index 3ef91ea3c78..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ixor.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ixor extends Instruction_noargs { - public Instruction_Ixor() { - super((byte) ByteCode.IXOR); - name = "ixor"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Jsr.java b/src/main/java/soot/coffi/Instruction_Jsr.java deleted file mode 100644 index 1398936ff92..00000000000 --- a/src/main/java/soot/coffi/Instruction_Jsr.java +++ /dev/null @@ -1,67 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Jsr extends Instruction_intbranch { - public Instruction_Jsr() { - super((byte) ByteCode.JSR); - name = "jsr"; - } - - public Instruction[] branchpoints(Instruction next) { - Instruction i[] = new Instruction[1]; - i[0] = target; - return i; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Jsr_w.java b/src/main/java/soot/coffi/Instruction_Jsr_w.java deleted file mode 100644 index afd90633621..00000000000 --- a/src/main/java/soot/coffi/Instruction_Jsr_w.java +++ /dev/null @@ -1,68 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Jsr_w extends Instruction_longbranch { - public Instruction_Jsr_w() { - super((byte) ByteCode.JSR_W); - name = "jsr_w"; - // calls = true; - } - - public Instruction[] branchpoints(Instruction next) { - Instruction i[] = new Instruction[1]; - i[0] = target; - return i; - } -} diff --git a/src/main/java/soot/coffi/Instruction_L2d.java b/src/main/java/soot/coffi/Instruction_L2d.java deleted file mode 100644 index 0c3d9db960a..00000000000 --- a/src/main/java/soot/coffi/Instruction_L2d.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_L2d extends Instruction_noargs { - public Instruction_L2d() { - super((byte) ByteCode.L2D); - name = "l2d"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_L2f.java b/src/main/java/soot/coffi/Instruction_L2f.java deleted file mode 100644 index 20995a78810..00000000000 --- a/src/main/java/soot/coffi/Instruction_L2f.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_L2f extends Instruction_noargs { - public Instruction_L2f() { - super((byte) ByteCode.L2F); - name = "l2f"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_L2i.java b/src/main/java/soot/coffi/Instruction_L2i.java deleted file mode 100644 index 4ae36dddaa5..00000000000 --- a/src/main/java/soot/coffi/Instruction_L2i.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_L2i extends Instruction_noargs { - public Instruction_L2i() { - super((byte) ByteCode.L2I); - name = "l2i"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ladd.java b/src/main/java/soot/coffi/Instruction_Ladd.java deleted file mode 100644 index 3737fca7e3c..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ladd.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ladd extends Instruction_noargs { - public Instruction_Ladd() { - super((byte) ByteCode.LADD); - name = "ladd"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Laload.java b/src/main/java/soot/coffi/Instruction_Laload.java deleted file mode 100644 index 7656f363e26..00000000000 --- a/src/main/java/soot/coffi/Instruction_Laload.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Laload extends Instruction_noargs { - public Instruction_Laload() { - super((byte) ByteCode.LALOAD); - name = "laload"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Land.java b/src/main/java/soot/coffi/Instruction_Land.java deleted file mode 100644 index 46f6b8d5c2c..00000000000 --- a/src/main/java/soot/coffi/Instruction_Land.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Land extends Instruction_noargs { - public Instruction_Land() { - super((byte) ByteCode.LAND); - name = "land"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lastore.java b/src/main/java/soot/coffi/Instruction_Lastore.java deleted file mode 100644 index 6bfd12fdc9b..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lastore.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lastore extends Instruction_noargs { - public Instruction_Lastore() { - super((byte) ByteCode.LASTORE); - name = "lastore"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lcmp.java b/src/main/java/soot/coffi/Instruction_Lcmp.java deleted file mode 100644 index f86ec8c8d31..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lcmp.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lcmp extends Instruction_noargs { - public Instruction_Lcmp() { - super((byte) ByteCode.LCMP); - name = "lcmp"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lconst_0.java b/src/main/java/soot/coffi/Instruction_Lconst_0.java deleted file mode 100644 index 5d761c029d3..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lconst_0.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lconst_0 extends Instruction_noargs { - public Instruction_Lconst_0() { - super((byte) ByteCode.LCONST_0); - name = "lconst_0"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lconst_1.java b/src/main/java/soot/coffi/Instruction_Lconst_1.java deleted file mode 100644 index 8884fc53bdf..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lconst_1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lconst_1 extends Instruction_noargs { - public Instruction_Lconst_1() { - super((byte) ByteCode.LCONST_1); - name = "lconst_1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ldc1.java b/src/main/java/soot/coffi/Instruction_Ldc1.java deleted file mode 100644 index c946523cf07..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ldc1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ldc1 extends Instruction_byteindex { - public Instruction_Ldc1() { - super((byte) ByteCode.LDC1); - name = "ldc1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ldc2.java b/src/main/java/soot/coffi/Instruction_Ldc2.java deleted file mode 100644 index d7e7bd504cb..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ldc2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ldc2 extends Instruction_intindex { - public Instruction_Ldc2() { - super((byte) ByteCode.LDC2); - name = "ldc2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ldc2w.java b/src/main/java/soot/coffi/Instruction_Ldc2w.java deleted file mode 100644 index 597551b7fdc..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ldc2w.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ldc2w extends Instruction_intindex { - public Instruction_Ldc2w() { - super((byte) ByteCode.LDC2W); - name = "ldc2w"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ldiv.java b/src/main/java/soot/coffi/Instruction_Ldiv.java deleted file mode 100644 index f85a1d48e7f..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ldiv.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ldiv extends Instruction_noargs { - public Instruction_Ldiv() { - super((byte) ByteCode.LDIV); - name = "ldiv"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lload.java b/src/main/java/soot/coffi/Instruction_Lload.java deleted file mode 100644 index 398efe5a2c7..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lload.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lload extends Instruction_bytevar { - public Instruction_Lload() { - super((byte) ByteCode.LLOAD); - name = "lload"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lload_0.java b/src/main/java/soot/coffi/Instruction_Lload_0.java deleted file mode 100644 index ec431d1c78b..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lload_0.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lload_0 extends Instruction_noargs { - public Instruction_Lload_0() { - super((byte) ByteCode.LLOAD_0); - name = "lload_0"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lload_1.java b/src/main/java/soot/coffi/Instruction_Lload_1.java deleted file mode 100644 index d8f28f17591..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lload_1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lload_1 extends Instruction_noargs { - public Instruction_Lload_1() { - super((byte) ByteCode.LLOAD_1); - name = "lload_1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lload_2.java b/src/main/java/soot/coffi/Instruction_Lload_2.java deleted file mode 100644 index 52093372e67..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lload_2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lload_2 extends Instruction_noargs { - public Instruction_Lload_2() { - super((byte) ByteCode.LLOAD_2); - name = "lload_2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lload_3.java b/src/main/java/soot/coffi/Instruction_Lload_3.java deleted file mode 100644 index a4a7cf5c608..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lload_3.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lload_3 extends Instruction_noargs { - public Instruction_Lload_3() { - super((byte) ByteCode.LLOAD_3); - name = "lload_3"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lmul.java b/src/main/java/soot/coffi/Instruction_Lmul.java deleted file mode 100644 index d78bd736fad..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lmul.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lmul extends Instruction_noargs { - public Instruction_Lmul() { - super((byte) ByteCode.LMUL); - name = "lmul"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lneg.java b/src/main/java/soot/coffi/Instruction_Lneg.java deleted file mode 100644 index 772d4e1da31..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lneg.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lneg extends Instruction_noargs { - public Instruction_Lneg() { - super((byte) ByteCode.LNEG); - name = "lneg"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lookupswitch.java b/src/main/java/soot/coffi/Instruction_Lookupswitch.java deleted file mode 100644 index f0d055be353..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lookupswitch.java +++ /dev/null @@ -1,182 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lookupswitch extends Instruction { - private static final Logger logger = LoggerFactory.getLogger(Instruction_Lookupswitch.class); - - public Instruction_Lookupswitch() { - super((byte) ByteCode.LOOKUPSWITCH); - name = "lookupswitch"; - branches = true; - } - - public byte pad; // number of bytes used for padding - public int default_offset; - public int npairs; - public int match_offsets[]; - public Instruction default_inst; - public Instruction match_insts[]; - - public String toString(cp_info constant_pool[]) { - // first figure out padding to next 4-byte quantity - String args; - int i; - args = super.toString(constant_pool) + argsep + "(" + Integer.toString(pad) + ")"; - args = args + argsep + Integer.toString(default_inst.label); - args = args + argsep + Integer.toString(npairs) + ": "; - for (i = 0; i < npairs; i++) { - args = args + "case " + Integer.toString(match_offsets[i * 2]) + ": label_" + Integer.toString(match_insts[i].label); - } - return args; - } - - public int parse(byte bc[], int index) { - // first figure out padding to next 4-byte quantity - int i, j; - i = index % 4; - if (i != 0) { - pad = (byte) (4 - i); - } else { - pad = (byte) 0; - } - index += pad; - default_offset = getInt(bc, index); - index += 4; - npairs = getInt(bc, index); - index += 4; - if (npairs > 0) { - match_offsets = new int[npairs * 2]; - j = 0; - do { - match_offsets[j] = getInt(bc, index); - j++; - index += 4; - match_offsets[j] = getInt(bc, index); - index += 4; - j++; - } while (j < npairs * 2); - } - return index; - } - - public int nextOffset(int curr) { - int i, siz = 0; - i = (curr + 1) % 4; - if (i != 0) { - siz = (4 - i); - } - return (curr + siz + 9 + npairs * 8); - } - - public int compile(byte bc[], int index) { - int i; - bc[index++] = code; - // insert padding so next instruction is on a 4-byte boundary - for (i = 0; i < pad; i++) { - bc[index++] = 0; - } - if (default_inst != null) { - index = intToBytes(default_inst.label - label, bc, index); - } else { - index = intToBytes(default_offset, bc, index); - } - index = intToBytes(npairs, bc, index); - for (i = 0; i < npairs; i++) { - index = intToBytes(match_offsets[i * 2], bc, index); - if (match_insts[i] != null) { - index = intToBytes((match_insts[i]).label - label, bc, index); - } else { - index = intToBytes(match_offsets[i * 2 + 1], bc, index); - } - } - return index; - } - - public void offsetToPointer(ByteCode bc) { - int i; - default_inst = bc.locateInst(default_offset + label); - if (default_inst == null) { - logger.warn("can't locate target of instruction"); - logger.debug(" which should be at byte address " + (label + default_offset)); - } else { - default_inst.labelled = true; - } - if (npairs > 0) { - match_insts = new Instruction[npairs]; - for (i = 0; i < npairs; i++) { - match_insts[i] = bc.locateInst(match_offsets[i * 2 + 1] + label); - if (match_insts[i] == null) { - logger.warn("can't locate target of instruction"); - logger.debug(" which should be at byte address " + (label + match_offsets[i * 2 + 1])); - } else { - match_insts[i].labelled = true; - } - } - } - } - - public Instruction[] branchpoints(Instruction next) { - Instruction i[] = new Instruction[npairs + 1]; - int j; - i[0] = default_inst; - for (j = 1; j < npairs + 1; j++) { - i[j] = match_insts[j - 1]; - } - return i; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lor.java b/src/main/java/soot/coffi/Instruction_Lor.java deleted file mode 100644 index f66efa8c4ea..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lor.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lor extends Instruction_noargs { - public Instruction_Lor() { - super((byte) ByteCode.LOR); - name = "lor"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lrem.java b/src/main/java/soot/coffi/Instruction_Lrem.java deleted file mode 100644 index af6fcadf381..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lrem.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lrem extends Instruction_noargs { - public Instruction_Lrem() { - super((byte) ByteCode.LREM); - name = "lrem"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lreturn.java b/src/main/java/soot/coffi/Instruction_Lreturn.java deleted file mode 100644 index 3ba2c6342a6..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lreturn.java +++ /dev/null @@ -1,63 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lreturn extends Instruction_noargs { - public Instruction_Lreturn() { - super((byte) ByteCode.LRETURN); - name = "lreturn"; - branches = true; - returns = true; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lshl.java b/src/main/java/soot/coffi/Instruction_Lshl.java deleted file mode 100644 index 9de51d2d981..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lshl.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lshl extends Instruction_noargs { - public Instruction_Lshl() { - super((byte) ByteCode.LSHL); - name = "lshl"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lshr.java b/src/main/java/soot/coffi/Instruction_Lshr.java deleted file mode 100644 index eec25521f4d..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lshr.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lshr extends Instruction_noargs { - public Instruction_Lshr() { - super((byte) ByteCode.LSHR); - name = "lshr"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lstore.java b/src/main/java/soot/coffi/Instruction_Lstore.java deleted file mode 100644 index efa6a0ec44e..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lstore.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lstore extends Instruction_bytevar { - public Instruction_Lstore() { - super((byte) ByteCode.LSTORE); - name = "lstore"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lstore_0.java b/src/main/java/soot/coffi/Instruction_Lstore_0.java deleted file mode 100644 index c2a8ed02249..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lstore_0.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lstore_0 extends Instruction_noargs { - public Instruction_Lstore_0() { - super((byte) ByteCode.LSTORE_0); - name = "lstore_0"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lstore_1.java b/src/main/java/soot/coffi/Instruction_Lstore_1.java deleted file mode 100644 index ade220a133c..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lstore_1.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lstore_1 extends Instruction_noargs { - public Instruction_Lstore_1() { - super((byte) ByteCode.LSTORE_1); - name = "lstore_1"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lstore_2.java b/src/main/java/soot/coffi/Instruction_Lstore_2.java deleted file mode 100644 index cfc7f6911ce..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lstore_2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lstore_2 extends Instruction_noargs { - public Instruction_Lstore_2() { - super((byte) ByteCode.LSTORE_2); - name = "lstore_2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lstore_3.java b/src/main/java/soot/coffi/Instruction_Lstore_3.java deleted file mode 100644 index b67e0e8e75d..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lstore_3.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lstore_3 extends Instruction_noargs { - public Instruction_Lstore_3() { - super((byte) ByteCode.LSTORE_3); - name = "lstore_3"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lsub.java b/src/main/java/soot/coffi/Instruction_Lsub.java deleted file mode 100644 index e660667d933..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lsub.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lsub extends Instruction_noargs { - public Instruction_Lsub() { - super((byte) ByteCode.LSUB); - name = "lsub"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lushr.java b/src/main/java/soot/coffi/Instruction_Lushr.java deleted file mode 100644 index 9e60be058b9..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lushr.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lushr extends Instruction_noargs { - public Instruction_Lushr() { - super((byte) ByteCode.LUSHR); - name = "lushr"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Lxor.java b/src/main/java/soot/coffi/Instruction_Lxor.java deleted file mode 100644 index fa1726b0014..00000000000 --- a/src/main/java/soot/coffi/Instruction_Lxor.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Lxor extends Instruction_noargs { - public Instruction_Lxor() { - super((byte) ByteCode.LXOR); - name = "lxor"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Monitorenter.java b/src/main/java/soot/coffi/Instruction_Monitorenter.java deleted file mode 100644 index dd6ae48bd73..00000000000 --- a/src/main/java/soot/coffi/Instruction_Monitorenter.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Monitorenter extends Instruction_noargs { - public Instruction_Monitorenter() { - super((byte) ByteCode.MONITORENTER); - name = "monitorenter"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Monitorexit.java b/src/main/java/soot/coffi/Instruction_Monitorexit.java deleted file mode 100644 index 2a0fe61bf46..00000000000 --- a/src/main/java/soot/coffi/Instruction_Monitorexit.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Monitorexit extends Instruction_noargs { - public Instruction_Monitorexit() { - super((byte) ByteCode.MONITOREXIT); - name = "monitorexit"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Multianewarray.java b/src/main/java/soot/coffi/Instruction_Multianewarray.java deleted file mode 100644 index ee6e9b59814..00000000000 --- a/src/main/java/soot/coffi/Instruction_Multianewarray.java +++ /dev/null @@ -1,83 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Multianewarray extends Instruction_intindex { - public byte dims; - - public Instruction_Multianewarray() { - super((byte) ByteCode.MULTIANEWARRAY); - name = "multianewarray"; - } - - public String toString(cp_info constant_pool[]) { - return super.toString(constant_pool) + argsep + dims; - } - - public int nextOffset(int curr) { - return super.nextOffset(curr) + 1; - } - - public int parse(byte bc[], int index) { - index = super.parse(bc, index); - dims = bc[index]; - return index + 1; - } - - public int compile(byte bc[], int index) { - index = super.compile(bc, index); - bc[index] = dims; - return index + 1; - } -} diff --git a/src/main/java/soot/coffi/Instruction_New.java b/src/main/java/soot/coffi/Instruction_New.java deleted file mode 100644 index c3cdfc44391..00000000000 --- a/src/main/java/soot/coffi/Instruction_New.java +++ /dev/null @@ -1,68 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_New extends Instruction_intindex { - public Instruction_New() { - super((byte) ByteCode.NEW); - name = "new"; - /* branches = true; */ calls = true; - } - - public Instruction[] branchpoints(Instruction next) { - Instruction i[] = new Instruction[1]; - i[0] = null; - return i; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Newarray.java b/src/main/java/soot/coffi/Instruction_Newarray.java deleted file mode 100644 index 9ef544411f1..00000000000 --- a/src/main/java/soot/coffi/Instruction_Newarray.java +++ /dev/null @@ -1,121 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Newarray extends Instruction { - public static final int T_BOOLEAN = 4; - public static final int T_CHAR = 5; - public static final int T_FLOAT = 6; - public static final int T_DOUBLE = 7; - public static final int T_BYTE = 8; - public static final int T_SHORT = 9; - public static final int T_INT = 10; - public static final int T_LONG = 11; - /** one of the T_* constants. */ - public byte atype; - - public Instruction_Newarray() { - super((byte) ByteCode.NEWARRAY); - name = "newarray"; - } - - public String toString(cp_info constant_pool[]) { - String args; - switch (atype) { - case T_BOOLEAN: - args = "boolean"; - break; - case T_CHAR: - args = "char"; - break; - case T_FLOAT: - args = "float"; - break; - case T_DOUBLE: - args = "double"; - break; - case T_BYTE: - args = "byte"; - break; - case T_SHORT: - args = "short"; - break; - case T_INT: - args = "int"; - break; - case T_LONG: - args = "long"; - break; - default: - args = Integer.toString(atype); - break; - } - return super.toString(constant_pool) + argsep + args; - } - - public int nextOffset(int curr) { - return curr + 2; - } - - public int parse(byte bc[], int index) { - atype = bc[index]; - return index + 1; - } - - public int compile(byte bc[], int index) { - bc[index++] = code; - bc[index] = atype; - return index + 1; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Nop.java b/src/main/java/soot/coffi/Instruction_Nop.java deleted file mode 100644 index 81787dcb964..00000000000 --- a/src/main/java/soot/coffi/Instruction_Nop.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Nop extends Instruction_noargs { - public Instruction_Nop() { - super((byte) ByteCode.NOP); - name = "nop"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Pop.java b/src/main/java/soot/coffi/Instruction_Pop.java deleted file mode 100644 index 613776deb9a..00000000000 --- a/src/main/java/soot/coffi/Instruction_Pop.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Pop extends Instruction_noargs { - public Instruction_Pop() { - super((byte) ByteCode.POP); - name = "pop"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Pop2.java b/src/main/java/soot/coffi/Instruction_Pop2.java deleted file mode 100644 index 7dceb462d12..00000000000 --- a/src/main/java/soot/coffi/Instruction_Pop2.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Pop2 extends Instruction_noargs { - public Instruction_Pop2() { - super((byte) ByteCode.POP2); - name = "pop2"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Putfield.java b/src/main/java/soot/coffi/Instruction_Putfield.java deleted file mode 100644 index 733866c5e52..00000000000 --- a/src/main/java/soot/coffi/Instruction_Putfield.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Putfield extends Instruction_intindex { - public Instruction_Putfield() { - super((byte) ByteCode.PUTFIELD); - name = "putfield"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Putstatic.java b/src/main/java/soot/coffi/Instruction_Putstatic.java deleted file mode 100644 index b4c7907f57a..00000000000 --- a/src/main/java/soot/coffi/Instruction_Putstatic.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Putstatic extends Instruction_intindex { - public Instruction_Putstatic() { - super((byte) ByteCode.PUTSTATIC); - name = "putstatic"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ret.java b/src/main/java/soot/coffi/Instruction_Ret.java deleted file mode 100644 index 8f59f1f5e66..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ret.java +++ /dev/null @@ -1,63 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ret extends Instruction_bytevar { - public Instruction_Ret() { - super((byte) ByteCode.RET); - name = "ret"; - branches = true; - /* returns = true; */ - } -} diff --git a/src/main/java/soot/coffi/Instruction_Ret_w.java b/src/main/java/soot/coffi/Instruction_Ret_w.java deleted file mode 100644 index 60c4ba8b74e..00000000000 --- a/src/main/java/soot/coffi/Instruction_Ret_w.java +++ /dev/null @@ -1,63 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Ret_w extends Instruction_intvar { - public Instruction_Ret_w() { - super((byte) ByteCode.RET_W); - name = "ret_w"; - branches = true; - /* returns = true; */ - } -} diff --git a/src/main/java/soot/coffi/Instruction_Return.java b/src/main/java/soot/coffi/Instruction_Return.java deleted file mode 100644 index d96d386a0bb..00000000000 --- a/src/main/java/soot/coffi/Instruction_Return.java +++ /dev/null @@ -1,63 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Return extends Instruction_noargs { - public Instruction_Return() { - super((byte) ByteCode.RETURN); - name = "return"; - branches = true; - returns = true; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Saload.java b/src/main/java/soot/coffi/Instruction_Saload.java deleted file mode 100644 index 4567e45e01b..00000000000 --- a/src/main/java/soot/coffi/Instruction_Saload.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Saload extends Instruction_noargs { - public Instruction_Saload() { - super((byte) ByteCode.SALOAD); - name = "saload"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Sastore.java b/src/main/java/soot/coffi/Instruction_Sastore.java deleted file mode 100644 index 515352404ae..00000000000 --- a/src/main/java/soot/coffi/Instruction_Sastore.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Sastore extends Instruction_noargs { - public Instruction_Sastore() { - super((byte) ByteCode.SASTORE); - name = "sastore"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Sipush.java b/src/main/java/soot/coffi/Instruction_Sipush.java deleted file mode 100644 index 27cc797f067..00000000000 --- a/src/main/java/soot/coffi/Instruction_Sipush.java +++ /dev/null @@ -1,66 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Sipush extends Instruction_int { - public Instruction_Sipush() { - super((byte) ByteCode.SIPUSH); - name = "sipush"; - } - - public Instruction_Sipush(int i) { - this(); - arg_i = i; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Swap.java b/src/main/java/soot/coffi/Instruction_Swap.java deleted file mode 100644 index ba6c562f71c..00000000000 --- a/src/main/java/soot/coffi/Instruction_Swap.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Swap extends Instruction_noargs { - public Instruction_Swap() { - super((byte) ByteCode.SWAP); - name = "swap"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Tableswitch.java b/src/main/java/soot/coffi/Instruction_Tableswitch.java deleted file mode 100644 index 912b38b7df7..00000000000 --- a/src/main/java/soot/coffi/Instruction_Tableswitch.java +++ /dev/null @@ -1,183 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Tableswitch extends Instruction { - private static final Logger logger = LoggerFactory.getLogger(Instruction_Tableswitch.class); - - public Instruction_Tableswitch() { - super((byte) ByteCode.TABLESWITCH); - name = "tableswitch"; - branches = true; - } - - public byte pad; // number of bytes used for padding - public int default_offset; - public int low; - public int high; - public int jump_offsets[]; - public Instruction default_inst; - public Instruction jump_insts[]; - - public String toString(cp_info constant_pool[]) { - String args; - int i; - args = super.toString(constant_pool) + argsep + "(" + Integer.toString(pad) + ")"; - args = args + argsep + "label_" + Integer.toString(default_inst.label); - args = args + argsep + Integer.toString(low); - args = args + argsep + Integer.toString(high) + ": "; - for (i = 0; i < high - low + 1; i++) { - args = args + argsep + "label_" + Integer.toString(jump_insts[i].label); - } - return args; - } - - public int parse(byte bc[], int index) { - // first figure out padding to next 4-byte quantity - int i, j; - i = index % 4; - if (i != 0) { - pad = (byte) (4 - i); - } else { - pad = (byte) 0; - } - index += pad; - default_offset = getInt(bc, index); - index += 4; - low = getInt(bc, index); - index += 4; - high = getInt(bc, index); - index += 4; - i = high - low + 1; - if (i > 0) { - jump_offsets = new int[i]; - j = 0; - do { - jump_offsets[j] = getInt(bc, index); - index += 4; - j++; - } while (j < i); - } - return index; - } - - public int nextOffset(int curr) { - int i, siz = 0; - i = (curr + 1) % 4; - if (i != 0) { - siz = (4 - i); - } - return (curr + siz + 13 + (high - low + 1) * 4); - } - - public int compile(byte bc[], int index) { - int i; - bc[index++] = code; - // insert padding so next instruction is on a 4-byte boundary - for (i = 0; i < pad; i++) { - bc[index++] = 0; - } - if (default_inst != null) { - index = intToBytes(default_inst.label - label, bc, index); - } else { - index = intToBytes(default_offset, bc, index); - } - index = intToBytes(low, bc, index); - index = intToBytes(high, bc, index); - for (i = 0; i <= high - low; i++) { - if (jump_insts[i] != null) { - index = intToBytes((jump_insts[i]).label - label, bc, index); - } else { - index = intToBytes(jump_offsets[i], bc, index); - } - } - return index; - } - - public void offsetToPointer(ByteCode bc) { - int i; - default_inst = bc.locateInst(default_offset + label); - if (default_inst == null) { - logger.warn("can't locate target of instruction"); - logger.debug(" which should be at byte address " + (label + default_offset)); - } else { - default_inst.labelled = true; - } - if (high - low + 1 > 0) { - jump_insts = new Instruction[high - low + 1]; - for (i = 0; i < high - low + 1; i++) { - jump_insts[i] = bc.locateInst(jump_offsets[i] + label); - if (jump_insts[i] == null) { - logger.warn("can't locate target of instruction"); - logger.debug(" which should be at byte address " + (label + jump_offsets[i])); - } else { - jump_insts[i].labelled = true; - } - } - } - } - - public Instruction[] branchpoints(Instruction next) { - Instruction i[] = new Instruction[high - low + 2]; - int j; - i[0] = default_inst; - for (j = 1; j < high - low + 2; j++) { - i[j] = jump_insts[j - 1]; - } - return i; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Unknown.java b/src/main/java/soot/coffi/Instruction_Unknown.java deleted file mode 100644 index ef79d1b9c6c..00000000000 --- a/src/main/java/soot/coffi/Instruction_Unknown.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Unknown extends Instruction_noargs { - public Instruction_Unknown(byte c) { - super(c); - name = "unknown instruction (" + ((c) & 0xff) + ")"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_Wide.java b/src/main/java/soot/coffi/Instruction_Wide.java deleted file mode 100644 index 7c2f3c3c7ab..00000000000 --- a/src/main/java/soot/coffi/Instruction_Wide.java +++ /dev/null @@ -1,61 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_Wide extends Instruction_noargs { - public Instruction_Wide() { - super((byte) ByteCode.WIDE); - name = "wide"; - } -} diff --git a/src/main/java/soot/coffi/Instruction_branch.java b/src/main/java/soot/coffi/Instruction_branch.java deleted file mode 100644 index eb39502bf44..00000000000 --- a/src/main/java/soot/coffi/Instruction_branch.java +++ /dev/null @@ -1,95 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -abstract class Instruction_branch extends Instruction { - private static final Logger logger = LoggerFactory.getLogger(Instruction_branch.class); - public int arg_i; - public Instruction target; // pointer to target instruction - - public Instruction_branch(byte c) { - super(c); - branches = true; - } - - public String toString(cp_info constant_pool[]) { - return super.toString(constant_pool) + argsep + "[label_" + Integer.toString(target.label) + "]"; - } - - public void offsetToPointer(ByteCode bc) { - target = bc.locateInst(arg_i + label); - if (target == null) { - logger.warn("can't locate target of instruction"); - logger.debug(" which should be at byte address " + (label + arg_i)); - } else { - target.labelled = true; - } - } - - // returns the array of instructions which might be the target of a - // branch with this instruction, assuming the next instruction is next - public Instruction[] branchpoints(Instruction next) { - Instruction i[] = new Instruction[2]; - i[0] = target; - i[1] = next; - return i; - } - - public String toString() { - return super.toString() + "\t" + target.label; - } -} diff --git a/src/main/java/soot/coffi/Instruction_byte.java b/src/main/java/soot/coffi/Instruction_byte.java deleted file mode 100644 index 7e69bd97762..00000000000 --- a/src/main/java/soot/coffi/Instruction_byte.java +++ /dev/null @@ -1,85 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_byte extends Instruction { - public byte arg_b; - - public Instruction_byte(byte c) { - super(c); - } - - public String toString(cp_info constant_pool[]) { - return super.toString(constant_pool) + argsep + arg_b; - } - - public int nextOffset(int curr) { - return curr + 2; - } - - public int parse(byte bc[], int index) { - arg_b = bc[index]; - return index + 1; - } - - public int compile(byte bc[], int index) { - bc[index++] = code; - bc[index++] = arg_b; - return index; - } - - public String toString() { - return super.toString() + " " + arg_b; - } -} diff --git a/src/main/java/soot/coffi/Instruction_byteindex.java b/src/main/java/soot/coffi/Instruction_byteindex.java deleted file mode 100644 index 9333c10b1a2..00000000000 --- a/src/main/java/soot/coffi/Instruction_byteindex.java +++ /dev/null @@ -1,96 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_byteindex extends Instruction { - /** - * arg_b needs to be short in order to contain all the possible values for an unsigned byte - */ - public short arg_b; - - public Instruction_byteindex(byte c) { - super(c); - } - - public String toString(cp_info constant_pool[]) { - int i = (arg_b) & 0xff; - return super.toString(constant_pool) + argsep + "[" + constant_pool[i].toString(constant_pool) + "]"; - } - - public int nextOffset(int curr) { - return curr + 2; - } - - public void markCPRefs(boolean[] refs) { - refs[(arg_b) & 0xff] = true; - } - - public void redirectCPRefs(short redirect[]) { - arg_b = (byte) (redirect[(arg_b) & 0xff]); - } - - public int parse(byte bc[], int index) { - arg_b = bc[index]; - - arg_b = (arg_b >= 0) ? arg_b : (short) (256 + arg_b); - - return index + 1; - } - - public int compile(byte bc[], int index) { - bc[index++] = code; - bc[index++] = (byte) arg_b; - return index; - } -} diff --git a/src/main/java/soot/coffi/Instruction_bytevar.java b/src/main/java/soot/coffi/Instruction_bytevar.java deleted file mode 100644 index d3ee032a609..00000000000 --- a/src/main/java/soot/coffi/Instruction_bytevar.java +++ /dev/null @@ -1,99 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_bytevar extends Instruction implements Interface_OneIntArg { - /** - * arg_b needs to be short in order to contain all the possible values for an unsigned byte - */ - public int arg_b; - public boolean isWide; - - public Instruction_bytevar(byte c) { - super(c); - } - - public String toString(cp_info constant_pool[]) { - return super.toString(constant_pool) + argsep + LOCALPREFIX + arg_b; - } - - public int nextOffset(int curr) { - return curr + 1 + ((isWide) ? 3 : 1); - } - - public int parse(byte bc[], int index) { - int indexbyte1 = (bc[index]) & 0xff; - - if (isWide) { - int indexbyte2 = (bc[index + 1]) & 0xff; - - arg_b = (indexbyte1 << 8) | indexbyte2; - - return index + 2; - } else { - arg_b = indexbyte1; - return index + 1; - } - } - - public int compile(byte bc[], int index) { - bc[index++] = code; - bc[index++] = (byte) arg_b; - return index; - } - - public int getIntArg() { - return arg_b; - } -} diff --git a/src/main/java/soot/coffi/Instruction_int.java b/src/main/java/soot/coffi/Instruction_int.java deleted file mode 100644 index 903c256f29e..00000000000 --- a/src/main/java/soot/coffi/Instruction_int.java +++ /dev/null @@ -1,81 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_int extends Instruction { - public int arg_i; - - public Instruction_int(byte c) { - super(c); - } - - public String toString(cp_info constant_pool[]) { - return super.toString(constant_pool) + argsep + arg_i; - } - - public int nextOffset(int curr) { - return curr + 3; - } - - public int parse(byte bc[], int index) { - arg_i = getShort(bc, index); - return index + 2; - } - - public int compile(byte bc[], int index) { - bc[index++] = code; - shortToBytes((short) arg_i, bc, index); - return index + 2; - } -} diff --git a/src/main/java/soot/coffi/Instruction_intbranch.java b/src/main/java/soot/coffi/Instruction_intbranch.java deleted file mode 100644 index 6a23db9a62a..00000000000 --- a/src/main/java/soot/coffi/Instruction_intbranch.java +++ /dev/null @@ -1,79 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_intbranch extends Instruction_branch { - public Instruction_intbranch(byte c) { - super(c); - } - - public int nextOffset(int curr) { - return curr + 3; - } - - public int parse(byte bc[], int index) { - arg_i = getShort(bc, index); - return index + 2; - } - - public int compile(byte bc[], int index) { - bc[index++] = code; - if (target != null) { - shortToBytes((short) (target.label - label), bc, index); - } else { - shortToBytes((short) (arg_i), bc, index); - } - return index + 2; - } -} diff --git a/src/main/java/soot/coffi/Instruction_intindex.java b/src/main/java/soot/coffi/Instruction_intindex.java deleted file mode 100644 index d8ec0551de7..00000000000 --- a/src/main/java/soot/coffi/Instruction_intindex.java +++ /dev/null @@ -1,89 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_intindex extends Instruction { - public int arg_i; - - public Instruction_intindex(byte c) { - super(c); - } - - public String toString(cp_info constant_pool[]) { - return super.toString(constant_pool) + argsep + "[" + constant_pool[arg_i].toString(constant_pool) + "]"; - } - - public int nextOffset(int curr) { - return curr + 3; - } - - public void markCPRefs(boolean[] refs) { - refs[arg_i] = true; - } - - public void redirectCPRefs(short redirect[]) { - arg_i = redirect[arg_i]; - } - - public int parse(byte bc[], int index) { - arg_i = getShort(bc, index); - return index + 2; - } - - public int compile(byte bc[], int index) { - bc[index++] = code; - shortToBytes((short) arg_i, bc, index); - return index + 2; - } -} diff --git a/src/main/java/soot/coffi/Instruction_intvar.java b/src/main/java/soot/coffi/Instruction_intvar.java deleted file mode 100644 index 24d6c65b4ea..00000000000 --- a/src/main/java/soot/coffi/Instruction_intvar.java +++ /dev/null @@ -1,85 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_intvar extends Instruction implements Interface_OneIntArg { - public int arg_i; - - public Instruction_intvar(byte c) { - super(c); - } - - public String toString(cp_info constant_pool[]) { - return super.toString(constant_pool) + argsep + LOCALPREFIX + arg_i; - } - - public int nextOffset(int curr) { - return curr + 3; - } - - public int parse(byte bc[], int index) { - arg_i = getShort(bc, index); - return index + 2; - } - - public int compile(byte bc[], int index) { - bc[index++] = code; - shortToBytes((short) arg_i, bc, index); - return index + 2; - } - - public int getIntArg() { - return arg_i; - } -} diff --git a/src/main/java/soot/coffi/Instruction_longbranch.java b/src/main/java/soot/coffi/Instruction_longbranch.java deleted file mode 100644 index 76b52cd9e3d..00000000000 --- a/src/main/java/soot/coffi/Instruction_longbranch.java +++ /dev/null @@ -1,79 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_longbranch extends Instruction_branch { - public Instruction_longbranch(byte c) { - super(c); - } - - public int nextOffset(int curr) { - return curr + 5; - } - - public int parse(byte bc[], int index) { - arg_i = getInt(bc, index); - return index + 4; - } - - public int compile(byte bc[], int index) { - bc[index++] = code; - if (target != null) { - shortToBytes((short) (target.label - label), bc, index); - } else { - shortToBytes((short) (arg_i), bc, index); - } - return index + 4; - } -} diff --git a/src/main/java/soot/coffi/Instruction_noargs.java b/src/main/java/soot/coffi/Instruction_noargs.java deleted file mode 100644 index a0fbf1e4c0a..00000000000 --- a/src/main/java/soot/coffi/Instruction_noargs.java +++ /dev/null @@ -1,69 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Instruction subclasses are used to represent parsed bytecode; each bytecode operation has a corresponding subclass of - * Instruction. - *

- * Each subclass is derived from one of - *

    - *
  • Instruction
  • - *
  • Instruction_noargs (an Instruction with no embedded arguments)
  • - *
  • Instruction_byte (an Instruction with a single byte data argument)
  • - *
  • Instruction_bytevar (a byte argument specifying a local variable)
  • - *
  • Instruction_byteindex (a byte argument specifying a constant pool index)
  • - *
  • Instruction_int (an Instruction with a single short data argument)
  • - *
  • Instruction_intvar (a short argument specifying a local variable)
  • - *
  • Instruction_intindex (a short argument specifying a constant pool index)
  • - *
  • Instruction_intbranch (a short argument specifying a code offset)
  • - *
  • Instruction_longbranch (an int argument specifying a code offset)
  • - *
- * - * @author Clark Verbrugge - * @see Instruction - * @see Instruction_noargs - * @see Instruction_byte - * @see Instruction_bytevar - * @see Instruction_byteindex - * @see Instruction_int - * @see Instruction_intvar - * @see Instruction_intindex - * @see Instruction_intbranch - * @see Instruction_longbranch - * @see Instruction_Unknown - */ -class Instruction_noargs extends Instruction { - public Instruction_noargs(byte c) { - super(c); - } - - public int parse(byte bc[], int index) { - return index; - } - - public int compile(byte bc[], int index) { - bc[index++] = code; - return index; - } -} diff --git a/src/main/java/soot/coffi/Interface_Astore.java b/src/main/java/soot/coffi/Interface_Astore.java deleted file mode 100644 index a2160e2c02b..00000000000 --- a/src/main/java/soot/coffi/Interface_Astore.java +++ /dev/null @@ -1,27 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2002 Sable Research Group - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -public interface Interface_Astore { - public int getLocalNumber(); -} diff --git a/src/main/java/soot/coffi/Interface_OneIntArg.java b/src/main/java/soot/coffi/Interface_OneIntArg.java deleted file mode 100644 index 6fedf7e36da..00000000000 --- a/src/main/java/soot/coffi/Interface_OneIntArg.java +++ /dev/null @@ -1,27 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2002 Sable Research Group - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -public interface Interface_OneIntArg { - public int getIntArg(); -} diff --git a/src/main/java/soot/coffi/LineNumberTable_attribute.java b/src/main/java/soot/coffi/LineNumberTable_attribute.java deleted file mode 100644 index 033df349540..00000000000 --- a/src/main/java/soot/coffi/LineNumberTable_attribute.java +++ /dev/null @@ -1,53 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * A debugging attribute, this associates blocks of bytecode with specific source code line numbers. - * - * @see attribute_info - * @author Clark Verbrugge - */ -public class LineNumberTable_attribute extends attribute_info { - - /** Length of the line_number_table array. */ - public int line_number_table_length; - - /** - * Line number table. - * - * @see line_number_table_entry - */ - public line_number_table_entry line_number_table[]; - - public String toString() { - String sv = "LineNumberTable : " + line_number_table_length + "\n"; - for (int i = 0; i < line_number_table_length; i++) { - sv += "LineNumber(" + line_number_table[i].start_pc + ":" + line_number_table[i].start_inst + "," - + line_number_table[i].line_number + ")"; - sv += "\n"; - } - - return sv; - } -} diff --git a/src/main/java/soot/coffi/LocalVariableTable_attribute.java b/src/main/java/soot/coffi/LocalVariableTable_attribute.java deleted file mode 100644 index 2f8519953da..00000000000 --- a/src/main/java/soot/coffi/LocalVariableTable_attribute.java +++ /dev/null @@ -1,141 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * A debugging attribute, this gives the names of local variables within blocks of bytecode. - * - * @see attribute_info - * @author Clark Verbrugge - */ -class LocalVariableTable_attribute extends attribute_info { - private static final Logger logger = LoggerFactory.getLogger(LocalVariableTable_attribute.class); - /** Length of the local variable table. */ - public int local_variable_table_length; - /** Actual table of local variables. */ - public local_variable_table_entry local_variable_table[]; - - /** - * Locates the first name found for a given local variable. - * - * @param constant_pool - * constant pool for the associated class. - * @param idx - * local variable index. - * @return name of the local variable, or null if not found. - * @see LocalVariableTable_attribute#getLocalVariableName(cp_info[], int, int) - */ - public String getLocalVariableName(cp_info constant_pool[], int idx) { - return getLocalVariableName(constant_pool, idx, -1); - } - - /** - * Locates the name of the given local variable for the specified code offset. - * - * @param constant_pool - * constant pool for the associated class. - * @param idx - * local variable index. - * @param code - * code offset for variable name; use -1 to return the first name found for that local variable. - * @return name of the local variable, or null if not found. - * @see LocalVariableTable_attribute#getLocalVariableName(cp_info[], int) - */ - public String getLocalVariableName(cp_info constant_pool[], int idx, int code) { - local_variable_table_entry e; - int i; - - // logger.debug("searching for name of local: " + idx + "at: " + code); - // now to find that variable - for (i = 0; i < local_variable_table_length; i++) { - e = local_variable_table[i]; - if (e.index == idx && (code == -1 || (code >= e.start_pc && code < e.start_pc + e.length))) { - // (code>=e.start_pc && code= e.start_pc && code < e.start_pc + e.length))) { - if (constant_pool[e.descriptor_index] instanceof CONSTANT_Utf8_info) { - String n = ((CONSTANT_Utf8_info) (constant_pool[e.descriptor_index])).convert(); - return n; - } else { - throw new RuntimeException("What? A local variable table " + "name_index isn't a UTF8 entry?"); - } - } - } - return null; - } - - public String getEntryName(cp_info constant_pool[], int entryIndex) { - try { - local_variable_table_entry e = local_variable_table[entryIndex]; - if (constant_pool[e.name_index] instanceof CONSTANT_Utf8_info) { - String n = ((CONSTANT_Utf8_info) (constant_pool[e.name_index])).convert(); - if (Util.v().isValidJimpleName(n)) { - return n; - } else { - return null; - } - } else { - throw new RuntimeException("name_index not addressing an UTF8 entry."); - } - } catch (ArrayIndexOutOfBoundsException x) { - return null; - } - } - - public String toString() { - StringBuffer buffer = new StringBuffer(); - - for (int i = 0; i < local_variable_table_length; i++) { - buffer.append(local_variable_table[i].toString() + "\n"); - } - - return buffer.toString(); - } -} diff --git a/src/main/java/soot/coffi/LocalVariableTypeTable_attribute.java b/src/main/java/soot/coffi/LocalVariableTypeTable_attribute.java deleted file mode 100644 index b4b2c153a94..00000000000 --- a/src/main/java/soot/coffi/LocalVariableTypeTable_attribute.java +++ /dev/null @@ -1,105 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * A debugging attribute, this gives the types of local variables within blocks of bytecode. - for java 1.5 - * - * @see attribute_info - * @author Jennifer Lhotak modified from LocalVariableTable_attribute - */ -class LocalVariableTypeTable_attribute extends attribute_info { - private static final Logger logger = LoggerFactory.getLogger(LocalVariableTypeTable_attribute.class); - /** Length of the local variable type table. */ - public int local_variable_type_table_length; - /** Actual table of local variable types. */ - public local_variable_type_table_entry local_variable_type_table[]; - - /** - * Locates the first type found for a given local variable. - * - * @param constant_pool - * constant pool for the associated class. - * @param idx - * local variable type index. - * @return type of the local variable, or null if not found. - * @see LocalVariableTypeTable_attribute#getLocalVariableType(cp_info[], int, int) - */ - public String getLocalVariableType(cp_info constant_pool[], int idx) { - return getLocalVariableType(constant_pool, idx, -1); - } - - /** - * Locates the type of the given local variable for the specified code offset. - * - * @param constant_pool - * constant pool for the associated class. - * @param idx - * local variable type index. - * @param code - * code offset for variable name; use -1 to return the first name found for that local variable. - * @return type of the local variable, or null if not found. - * @see LocalVariableTypeTable_attribute#getLocalVariableType(cp_info[], int) - */ - public String getLocalVariableType(cp_info constant_pool[], int idx, int code) { - local_variable_type_table_entry e; - int i; - - // logger.debug("searching for type of local: " + idx + "at: " + code); - // now to find that variable - for (i = 0; i < local_variable_type_table_length; i++) { - e = local_variable_type_table[i]; - if (e.index == idx && (code == -1 || (code >= e.start_pc && code <= e.start_pc + e.length))) { - // (code>=e.start_pc && code. - * #L% - */ - -import soot.G; -import soot.Singletons; -import soot.Type; - -public class Long2ndHalfType extends Type { - - public Long2ndHalfType(Singletons.Global g) { - } - - public static Long2ndHalfType v() { - return G.v().soot_coffi_Long2ndHalfType(); - } - - public boolean equals(Type otherType) { - return otherType instanceof Long2ndHalfType; - } - - @Override - public String toString() { - return "long2ndhalf"; - } -} diff --git a/src/main/java/soot/coffi/RuntimeInvisibleAnnotations_attribute.java b/src/main/java/soot/coffi/RuntimeInvisibleAnnotations_attribute.java deleted file mode 100644 index 566647fc004..00000000000 --- a/src/main/java/soot/coffi/RuntimeInvisibleAnnotations_attribute.java +++ /dev/null @@ -1,41 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There should be at most one RuntimeInvisibleAnnotations attribute in every method, field and class indicating the list of - * annotations. - * - * @see attribute_info - * @see method_info#attributes, @see field_info#attributes, - * @see coffi_class#attributes - * @author Jennifer Lhotak - */ -public class RuntimeInvisibleAnnotations_attribute extends attribute_info { - /** Length of annotations table array. */ - public int number_of_annotations; - /** - * Each entry represents a single runtime invisible annotation. - */ - public annotation annotations[]; -} diff --git a/src/main/java/soot/coffi/RuntimeInvisibleParameterAnnotations_attribute.java b/src/main/java/soot/coffi/RuntimeInvisibleParameterAnnotations_attribute.java deleted file mode 100644 index 938f30f3efa..00000000000 --- a/src/main/java/soot/coffi/RuntimeInvisibleParameterAnnotations_attribute.java +++ /dev/null @@ -1,40 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There should be at most one RuntimeVisibleParameterAnnotations attribute in method indicating the list of annotations for - * each method parameter - * - * @see attribute_info - * @see method_info#attributes - * @author Jennifer Lhotak - */ -public class RuntimeInvisibleParameterAnnotations_attribute extends attribute_info { - /** Length of annotations table array. */ - public int num_parameters; - /** - * Each entry represents a single runtime visible annotation. - */ - public parameter_annotation parameter_annotations[]; -} diff --git a/src/main/java/soot/coffi/RuntimeVisibleAnnotations_attribute.java b/src/main/java/soot/coffi/RuntimeVisibleAnnotations_attribute.java deleted file mode 100644 index 3d7354d647c..00000000000 --- a/src/main/java/soot/coffi/RuntimeVisibleAnnotations_attribute.java +++ /dev/null @@ -1,41 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There should be at most one RuntimeVisibleAnnotations attribute in every method, field and class indicating the list of - * annotations. - * - * @see attribute_info - * @see method_info#attributes, @see field_info#attributes, - * @see coffi_class#attributes - * @author Jennifer Lhotak - */ -public class RuntimeVisibleAnnotations_attribute extends attribute_info { - /** Length of annotations table array. */ - public int number_of_annotations; - /** - * Each entry represents a single runtime visible annotation. - */ - public annotation annotations[]; -} diff --git a/src/main/java/soot/coffi/RuntimeVisibleParameterAnnotations_attribute.java b/src/main/java/soot/coffi/RuntimeVisibleParameterAnnotations_attribute.java deleted file mode 100644 index e313b47896e..00000000000 --- a/src/main/java/soot/coffi/RuntimeVisibleParameterAnnotations_attribute.java +++ /dev/null @@ -1,40 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There should be at most one RuntimeVisibleParameterAnnotations attribute in method indicating the list of annotations for - * each method parameter - * - * @see attribute_info - * @see method_info#attributes - * @author Jennifer Lhotak - */ -public class RuntimeVisibleParameterAnnotations_attribute extends attribute_info { - /** Length of annotations table array. */ - public int num_parameters; - /** - * Each entry represents a single runtime visible annotation. - */ - public parameter_annotation parameter_annotations[]; -} diff --git a/src/main/java/soot/coffi/Signature_attribute.java b/src/main/java/soot/coffi/Signature_attribute.java deleted file mode 100644 index cf4836f99fa..00000000000 --- a/src/main/java/soot/coffi/Signature_attribute.java +++ /dev/null @@ -1,34 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Attribute that connects signature attribute. - * - * @see attribute_info - * @author Jennifer Lhotak - */ -class Signature_attribute extends attribute_info { - - public int signature_index; -} diff --git a/src/main/java/soot/coffi/SourceFile_attribute.java b/src/main/java/soot/coffi/SourceFile_attribute.java deleted file mode 100644 index 0ff6e6d0441..00000000000 --- a/src/main/java/soot/coffi/SourceFile_attribute.java +++ /dev/null @@ -1,38 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * A debugging attribute, this gives the name of the source file for this .class file. - * - * @see attribute_info - * @author Clark Verbrugge - */ -public class SourceFile_attribute extends attribute_info { - /** - * Constant pool index of a utf8 string for the name of the associated source file. - * - * @see CONSTANT_Utf8_info - */ - public int sourcefile_index; -} diff --git a/src/main/java/soot/coffi/Synthetic_attribute.java b/src/main/java/soot/coffi/Synthetic_attribute.java deleted file mode 100644 index 10b2786cf6b..00000000000 --- a/src/main/java/soot/coffi/Synthetic_attribute.java +++ /dev/null @@ -1,32 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2004 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Attribute that connects synthetic attribute. - * - * @see attribute_info - * @author Jennifer Lhotak - */ -class Synthetic_attribute extends attribute_info { -} diff --git a/src/main/java/soot/coffi/TypeArray.java b/src/main/java/soot/coffi/TypeArray.java deleted file mode 100644 index 4ecd48ec03b..00000000000 --- a/src/main/java/soot/coffi/TypeArray.java +++ /dev/null @@ -1,117 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.io.PrintStream; - -import soot.ArrayType; -import soot.RefType; -import soot.Scene; -import soot.Type; - -class TypeArray { - private Type[] types; - - private TypeArray() { - } - - /** - * Returns an empty array of types. - * - */ - - public static TypeArray v(int size) { - TypeArray newArray = new TypeArray(); - - newArray.types = new Type[size]; - - for (int i = 0; i < size; i++) { - newArray.types[i] = UnusuableType.v(); - } - - return newArray; - } - - public Type get(int index) { - return types[index]; - } - - public TypeArray set(int index, Type type) { - TypeArray newArray = new TypeArray(); - - newArray.types = types.clone(); - newArray.types[index] = type; - - return newArray; - } - - public boolean equals(Object obj) { - if (obj instanceof TypeArray) { - TypeArray other = (TypeArray) obj; - - if (types.length != other.types.length) { - return false; - } - - for (Type element : types) { - if (!element.equals(element)) { - return false; - } - } - - return true; - } else { - return false; - } - } - - public TypeArray merge(TypeArray otherArray) { - TypeArray newArray = new TypeArray(); - - if (types.length != otherArray.types.length) { - throw new RuntimeException("Merging of type arrays failed; unequal array length"); - } - - newArray.types = new Type[types.length]; - - for (int i = 0; i < types.length; i++) { - if (types[i].equals(otherArray.types[i])) { - newArray.types[i] = types[i]; - } else if ((types[i] instanceof ArrayType || types[i] instanceof RefType) - && (otherArray.types[i] instanceof ArrayType || otherArray.types[i] instanceof RefType)) { - // This type merge does not need to be accurate, because it is not really used - - newArray.types[i] = Scene.v().getObjectType(); - } else { - newArray.types[i] = UnusuableType.v(); - } - } - return newArray; - } - - public void print(PrintStream out) { - for (int i = 0; i < types.length; i++) { - out.println(i + ": " + types[i].toString()); - } - } -} diff --git a/src/main/java/soot/coffi/TypeStack.java b/src/main/java/soot/coffi/TypeStack.java deleted file mode 100644 index b06dfbfccff..00000000000 --- a/src/main/java/soot/coffi/TypeStack.java +++ /dev/null @@ -1,161 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.io.PrintStream; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import soot.ArrayType; -import soot.RefType; -import soot.Type; - -/* - * A less resource hungry implementation of the TypeStack would just have pointers to - * 'sub-stacks' instead of copying the entire array around. - */ - -class TypeStack { - private static final Logger logger = LoggerFactory.getLogger(TypeStack.class); - private Type[] types; - - private TypeStack() { - // no constructor - } - - public Object clone() { - TypeStack newTypeStack = new TypeStack(); - - newTypeStack.types = types.clone(); - - return newTypeStack; - } - - /** - * Returns an empty stack. - */ - - public static TypeStack v() { - TypeStack typeStack = new TypeStack(); - - typeStack.types = new Type[0]; - - return typeStack; - } - - public TypeStack pop() { - TypeStack newStack = new TypeStack(); - - newStack.types = new Type[types.length - 1]; - System.arraycopy(types, 0, newStack.types, 0, types.length - 1); - - return newStack; - } - - public TypeStack push(Type type) { - TypeStack newStack = new TypeStack(); - - newStack.types = new Type[types.length + 1]; - System.arraycopy(types, 0, newStack.types, 0, types.length); - - newStack.types[types.length] = type; - - return newStack; - } - - public Type get(int index) { - return types[index]; - } - - public int topIndex() { - return types.length - 1; - } - - public Type top() { - if (types.length == 0) { - throw new RuntimeException("TypeStack is empty"); - } else { - return types[types.length - 1]; - } - } - - public boolean equals(Object object) { - if (object instanceof TypeStack) { - TypeStack otherStack = (TypeStack) object; - - if (otherStack.types.length != types.length) { - return false; - } - - for (Type element : types) { - if (!element.equals(element)) { - return false; - } - } - - return true; - } else { - return false; - } - } - - public TypeStack merge(TypeStack other) { - - if (types.length != other.types.length) { - throw new RuntimeException( - "TypeStack merging failed; unequal " + "stack lengths: " + types.length + " and " + other.types.length); - } - - TypeStack newStack = new TypeStack(); - - newStack.types = new Type[other.types.length]; - - for (int i = 0; i < types.length; i++) { - if (types[i].equals(other.types[i])) { - newStack.types[i] = types[i]; - } else { - if ((!(types[i] instanceof ArrayType) && !(types[i] instanceof RefType)) - || (!(other.types[i] instanceof RefType) && !(other.types[i] instanceof ArrayType))) { - throw new RuntimeException("TypeStack merging failed; incompatible types " + types[i] + " and " + other.types[i]); - } - - // logger.debug("Merging: " + types[i] + " with " + other.types[i]); - - newStack.types[i] = RefType.v("java.lang.Object"); - } - } - - return newStack; - } - - public void print(PrintStream out) { - for (int i = types.length - 1; i >= 0; i--) { - out.println(i + ": " + types[i].toString()); - } - - if (types.length == 0) { - out.println(""); - } - } -} diff --git a/src/main/java/soot/coffi/UnusuableType.java b/src/main/java/soot/coffi/UnusuableType.java deleted file mode 100644 index 416d8aef5e1..00000000000 --- a/src/main/java/soot/coffi/UnusuableType.java +++ /dev/null @@ -1,46 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import soot.G; -import soot.Singletons; -import soot.Type; - -public class UnusuableType extends Type { - - public UnusuableType(Singletons.Global g) { - } - - public static UnusuableType v() { - return G.v().soot_coffi_UnusuableType(); - } - - public boolean equals(Type otherType) { - return otherType instanceof UnusuableType; - } - - @Override - public String toString() { - return "unusuable"; - } -} diff --git a/src/main/java/soot/coffi/Utf8_Enumeration.java b/src/main/java/soot/coffi/Utf8_Enumeration.java deleted file mode 100644 index 7ee2ad2fefe..00000000000 --- a/src/main/java/soot/coffi/Utf8_Enumeration.java +++ /dev/null @@ -1,114 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.util.Enumeration; - -/** - * An enumeration of a Utf8 allows one to run through the characters in a unicode string; used primarily for comparing - * unicode strings. Note that unlike regular enumerations, and to be efficient (ie to avoid allocating an object in each call - * to nextElement), the return value is accessed by this object's 'c' field, and nextElement merely returns this. - * - * @see CONSTANT_Utf8_info - * @see Utf8_Enumeration#c - * @see Utf8_Enumeration#nextElement - * @author Clark Verbrugge - */ -public class Utf8_Enumeration implements Enumeration { - - /** - * The latest character, as determined by nextElement. - * - * @see Utf8_Enumeration#nextElement - */ - public int c; // latest character - - private short curindex; - private short length; - private byte bytes[]; - - /** - * For creating an empty enumeration; you must use reset() after this to initialize the enumeration. - * - * @see Utf8_Enumeration#reset - */ - public Utf8_Enumeration() { - } - - /** - * For creating a normal enumeration of the given Utf8 string. - * - * @param b - * array of bytes in Utf8 format. - */ - public Utf8_Enumeration(byte b[]) { - bytes = b; - curindex = (short) 2; - length = (short) (((((bytes[0])) & 0xff) << 8) + (((bytes[1])) & 0xff) + 2); - } - - /** - * Resets this object to be an enumeration of the given Utf8 string. - * - * @param b - * array of bytes in Utf8 format. - */ - public void reset(byte b[]) { - bytes = b; - curindex = (short) 2; - length = (short) (((((bytes[0])) & 0xff) << 8) + (((bytes[1])) & 0xff) + 2); - } - - /** true if the entire string hasn't been enumerated yet. */ - public boolean hasMoreElements() { - if (curindex < length) { - return true; - } - return false; - } - - /** - * Determines the next Utf8 character, and stores it in c. - * - * @return this - * @see Utf8_Enumeration#c - */ - public Object nextElement() { - byte b; - b = bytes[curindex++]; - if ((b & ((byte) 0x80)) == 0) { // one-byte character - c = b; - } else if ((b & ((byte) 0xe0)) == 0xc0) { // two-byte character - c = ((b & ((byte) 0x1f))) << 6; - b = bytes[curindex++]; - c |= (b & ((byte) 0x3f)); - } else { // three-byte character - c = ((b & ((byte) 0x0f))) << 12; - b = bytes[curindex++]; - c |= ((b & ((byte) 0x3f))) << 6; - b = bytes[curindex++]; - c |= (b & ((byte) 0x3f)); - } - return this; - } -} diff --git a/src/main/java/soot/coffi/Util.java b/src/main/java/soot/coffi/Util.java deleted file mode 100644 index 2bd5833cc18..00000000000 --- a/src/main/java/soot/coffi/Util.java +++ /dev/null @@ -1,1069 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import soot.ArrayType; -import soot.Body; -import soot.BooleanType; -import soot.ByteType; -import soot.CharType; -import soot.DoubleType; -import soot.FloatType; -import soot.G; -import soot.IntType; -import soot.Local; -import soot.LongType; -import soot.Modifier; -import soot.RefType; -import soot.Scene; -import soot.ShortType; -import soot.Singletons; -import soot.SootClass; -import soot.SootField; -import soot.SootMethod; -import soot.SootResolver; -import soot.Type; -import soot.UnknownType; -import soot.VoidType; -import soot.jimple.Jimple; -import soot.jimple.JimpleBody; -import soot.tagkit.AnnotationAnnotationElem; -import soot.tagkit.AnnotationArrayElem; -import soot.tagkit.AnnotationClassElem; -import soot.tagkit.AnnotationConstants; -import soot.tagkit.AnnotationDefaultTag; -import soot.tagkit.AnnotationDoubleElem; -import soot.tagkit.AnnotationElem; -import soot.tagkit.AnnotationEnumElem; -import soot.tagkit.AnnotationFloatElem; -import soot.tagkit.AnnotationIntElem; -import soot.tagkit.AnnotationLongElem; -import soot.tagkit.AnnotationStringElem; -import soot.tagkit.AnnotationTag; -import soot.tagkit.ConstantValueTag; -import soot.tagkit.DeprecatedTag; -import soot.tagkit.DoubleConstantValueTag; -import soot.tagkit.EnclosingMethodTag; -import soot.tagkit.FloatConstantValueTag; -import soot.tagkit.GenericAttribute; -import soot.tagkit.Host; -import soot.tagkit.InnerClassTag; -import soot.tagkit.IntegerConstantValueTag; -import soot.tagkit.LongConstantValueTag; -import soot.tagkit.SignatureTag; -import soot.tagkit.SourceFileTag; -import soot.tagkit.StringConstantValueTag; -import soot.tagkit.SyntheticTag; -import soot.tagkit.VisibilityAnnotationTag; -import soot.tagkit.VisibilityParameterAnnotationTag; - -public class Util { - private static final Logger logger = LoggerFactory.getLogger(Util.class); - - public Util(Singletons.Global g) { - } - - public static Util v() { - return G.v().soot_coffi_Util(); - } - - private cp_info[] activeConstantPool = null; - private LocalVariableTable_attribute activeVariableTable; - /* - * maps from variable names to local variable slot indexes to soot Locals - */ - private Map> nameToIndexToLocal; - private boolean useFaithfulNaming = false; - - /** - * Set the informations relative to the current method body. This method must be called before using getLocalForIndex(...) - * and getLocalForStackOp(...) each time a different current method body is considered. - */ - public void bodySetup(LocalVariableTable_attribute la, LocalVariableTypeTable_attribute lt, cp_info[] ca) { - activeVariableTable = la; - activeConstantPool = ca; - nameToIndexToLocal = null; - } - - public void setFaithfulNaming(boolean v) { - useFaithfulNaming = v; - } - - public boolean isUsingFaithfulNaming() { - return useFaithfulNaming; - } - - public void resolveFromClassFile(SootClass aClass, InputStream is, String filePath, Collection references) { - SootClass bclass = aClass; - String className = bclass.getName(); - ClassFile coffiClass = new ClassFile(className); - - // Load up class file, and retrieve - // bclass from class manager. - { - boolean success = coffiClass.loadClassFile(is); - - if (!success) { - if (!Scene.v().allowsPhantomRefs()) { - throw new RuntimeException("Could not load classfile: " + bclass.getName()); - } else { - logger.warn("" + className + " is a phantom class!"); - bclass.setPhantomClass(); - return; - } - - } - - CONSTANT_Class_info c = (CONSTANT_Class_info) coffiClass.constant_pool[coffiClass.this_class]; - - String name = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[c.name_index])).convert(); - name = name.replace('/', '.'); - - if (!name.equals(bclass.getName())) { - throw new RuntimeException( - "Error: class " + name + " read in from a classfile in which " + bclass.getName() + " was expected."); - } - } - - // Set modifier - bclass.setModifiers(coffiClass.access_flags & (~0x0020)); - // don't want the ACC_SUPER flag, it is - // always supposed to be set - // anyways - - // Set superclass - { - if (coffiClass.super_class != 0) { - // This object is not java.lang.Object, - // so must have a super - // class - - CONSTANT_Class_info c = (CONSTANT_Class_info) coffiClass.constant_pool[coffiClass.super_class]; - - String superName = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[c.name_index])).convert(); - superName = superName.replace('/', '.'); - - references.add(RefType.v(superName)); - bclass.setSuperclass(SootResolver.v().makeClassRef(superName)); - } - } - - // Add interfaces to the bclass - { - for (int i = 0; i < coffiClass.interfaces_count; i++) { - CONSTANT_Class_info c = (CONSTANT_Class_info) coffiClass.constant_pool[coffiClass.interfaces[i]]; - - String interfaceName = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[c.name_index])).convert(); - - interfaceName = interfaceName.replace('/', '.'); - - references.add(RefType.v(interfaceName)); - SootClass interfaceClass = SootResolver.v().makeClassRef(interfaceName); - interfaceClass.setModifiers(interfaceClass.getModifiers() | Modifier.INTERFACE); - bclass.addInterface(interfaceClass); - } - } - - // Add every field to the bclass - for (int i = 0; i < coffiClass.fields_count; i++) { - - field_info fieldInfo = coffiClass.fields[i]; - - String fieldName = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[fieldInfo.name_index])).convert(); - - String fieldDescriptor = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[fieldInfo.descriptor_index])).convert(); - - int modifiers = fieldInfo.access_flags; - Type fieldType = jimpleTypeOfFieldDescriptor(fieldDescriptor); - - SootField field = Scene.v().makeSootField(fieldName, fieldType, modifiers); - bclass.addField(field); - - references.add(fieldType); - - // add initialization constant, if any - for (int j = 0; j < fieldInfo.attributes_count; j++) { - // add constant value attributes - if (fieldInfo.attributes[j] instanceof ConstantValue_attribute) { - - ConstantValue_attribute attr = (ConstantValue_attribute) fieldInfo.attributes[j]; - cp_info cval = coffiClass.constant_pool[attr.constantvalue_index]; - ConstantValueTag tag; - switch (cval.tag) { - case cp_info.CONSTANT_Integer: - tag = new IntegerConstantValueTag((int) ((CONSTANT_Integer_info) cval).bytes); - break; - case cp_info.CONSTANT_Float: - // tag = new - // FloatConstantValueTag((int)((CONSTANT_Float_info)cval).bytes); - tag = new FloatConstantValueTag(((CONSTANT_Float_info) cval).convert()); - break; - case cp_info.CONSTANT_Long: { - CONSTANT_Long_info lcval = (CONSTANT_Long_info) cval; - tag = new LongConstantValueTag((lcval.high << 32) + lcval.low); - break; - } - case cp_info.CONSTANT_Double: { - CONSTANT_Double_info dcval = (CONSTANT_Double_info) cval; - // tag = new - // DoubleConstantValueTag((dcval.high << - // 32) + - // dcval.low); - tag = new DoubleConstantValueTag(dcval.convert()); - break; - } - case cp_info.CONSTANT_String: { - CONSTANT_String_info scval = (CONSTANT_String_info) cval; - CONSTANT_Utf8_info ucval = (CONSTANT_Utf8_info) coffiClass.constant_pool[scval.string_index]; - tag = new StringConstantValueTag(ucval.convert()); - break; - } - default: - throw new RuntimeException("unexpected ConstantValue: " + cval); - } - field.addTag(tag); - } - // add synthetic tag - else if (fieldInfo.attributes[j] instanceof Synthetic_attribute) { - field.addTag(new SyntheticTag()); - } - // add deprecated tag - else if (fieldInfo.attributes[j] instanceof Deprecated_attribute) { - field.addTag(new DeprecatedTag()); - } - // add signature tag - else if (fieldInfo.attributes[j] instanceof Signature_attribute) { - int signature_index = ((Signature_attribute) fieldInfo.attributes[j]).signature_index; - String generic_sig = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[signature_index])).convert(); - field.addTag(new SignatureTag(generic_sig)); - } else if (fieldInfo.attributes[j] instanceof RuntimeVisibleAnnotations_attribute - || fieldInfo.attributes[j] instanceof RuntimeInvisibleAnnotations_attribute) { - addAnnotationVisibilityAttribute(field, fieldInfo.attributes[j], coffiClass, references); - } else if (fieldInfo.attributes[j] instanceof Generic_attribute) { - Generic_attribute attr = (Generic_attribute) fieldInfo.attributes[j]; - String name = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[attr.attribute_name])).convert(); - field.addTag(new GenericAttribute(name, attr.info)); - } - } - } - - // Add every method to the bclass - for (int i = 0; i < coffiClass.methods_count; i++) { - - method_info methodInfo = coffiClass.methods[i]; - - if ((coffiClass.constant_pool[methodInfo.name_index]) == null) { - logger.debug("method index: " + methodInfo.toName(coffiClass.constant_pool)); - throw new RuntimeException("method has no name"); - } - - String methodName = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[methodInfo.name_index])).convert(); - String methodDescriptor = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[methodInfo.descriptor_index])).convert(); - - List parameterTypes; - Type returnType; - - // Generate parameterTypes & returnType - { - Type[] types = jimpleTypesOfFieldOrMethodDescriptor(methodDescriptor); - - parameterTypes = new ArrayList(); - for (int j = 0; j < types.length - 1; j++) { - references.add(types[j]); - parameterTypes.add(types[j]); - } - - returnType = types[types.length - 1]; - references.add(returnType); - } - - int modifiers = methodInfo.access_flags; - - SootMethod method; - - method = Scene.v().makeSootMethod(methodName, parameterTypes, returnType, modifiers); - bclass.addMethod(method); - - methodInfo.jmethod = method; - - // add exceptions to method - { - for (int j = 0; j < methodInfo.attributes_count; j++) { - if (methodInfo.attributes[j] instanceof Exception_attribute) { - Exception_attribute exceptions = (Exception_attribute) methodInfo.attributes[j]; - - for (int k = 0; k < exceptions.number_of_exceptions; k++) { - CONSTANT_Class_info c = (CONSTANT_Class_info) coffiClass.constant_pool[exceptions.exception_index_table[k]]; - - String exceptionName = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[c.name_index])).convert(); - - exceptionName = exceptionName.replace('/', '.'); - - references.add(RefType.v(exceptionName)); - method.addExceptionIfAbsent(SootResolver.v().makeClassRef(exceptionName)); - } - } else if (methodInfo.attributes[j] instanceof Synthetic_attribute) { - method.addTag(new SyntheticTag()); - } else if (methodInfo.attributes[j] instanceof Deprecated_attribute) { - method.addTag(new DeprecatedTag()); - } else if (methodInfo.attributes[j] instanceof Signature_attribute) { - int signature_index = ((Signature_attribute) methodInfo.attributes[j]).signature_index; - String generic_sig = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[signature_index])).convert(); - method.addTag(new SignatureTag(generic_sig)); - } else if (methodInfo.attributes[j] instanceof RuntimeVisibleAnnotations_attribute - || methodInfo.attributes[j] instanceof RuntimeInvisibleAnnotations_attribute) { - addAnnotationVisibilityAttribute(method, methodInfo.attributes[j], coffiClass, references); - } else if (methodInfo.attributes[j] instanceof RuntimeVisibleParameterAnnotations_attribute - || methodInfo.attributes[j] instanceof RuntimeInvisibleParameterAnnotations_attribute) { - addAnnotationVisibilityParameterAttribute(method, methodInfo.attributes[j], coffiClass, references); - } else if (methodInfo.attributes[j] instanceof AnnotationDefault_attribute) { - AnnotationDefault_attribute attr = (AnnotationDefault_attribute) methodInfo.attributes[j]; - element_value[] input = new element_value[1]; - input[0] = attr.default_value; - ArrayList list = createElementTags(1, coffiClass, input); - method.addTag(new AnnotationDefaultTag(list.get(0))); - } else if (methodInfo.attributes[j] instanceof Generic_attribute) { - Generic_attribute attr = (Generic_attribute) methodInfo.attributes[j]; - String name = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[attr.attribute_name])).convert(); - method.addTag(new GenericAttribute(name, attr.info)); - } - } - } - - // Go through the constant pool, forcing - // all mentioned classes to be - // resolved. - { - for (int k = 0; k < coffiClass.constant_pool_count; k++) { - if (coffiClass.constant_pool[k] instanceof CONSTANT_Class_info) { - CONSTANT_Class_info c = (CONSTANT_Class_info) coffiClass.constant_pool[k]; - - String desc = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[c.name_index])).convert(); - String name = desc.replace('/', '.'); - - if (name.startsWith("[")) { - references.add(jimpleTypeOfFieldDescriptor(desc)); - } else { - references.add(RefType.v(name)); - } - } - if (coffiClass.constant_pool[k] instanceof CONSTANT_Fieldref_info - || coffiClass.constant_pool[k] instanceof CONSTANT_Methodref_info - || coffiClass.constant_pool[k] instanceof CONSTANT_InterfaceMethodref_info) { - Type[] types = jimpleTypesOfFieldOrMethodDescriptor(cp_info.getTypeDescr(coffiClass.constant_pool, k)); - for (Type element : types) { - references.add(element); - } - } - - } - } - } - - // Set coffi source of method - for (int i = 0; i < coffiClass.methods_count; i++) { - method_info methodInfo = coffiClass.methods[i]; - // methodInfo.jmethod.setSource(coffiClass, - // methodInfo); - methodInfo.jmethod.setSource(new CoffiMethodSource(coffiClass, methodInfo)); - } - - // Set "SourceFile" attribute tag - for (int i = 0; i < coffiClass.attributes_count; i++) { - - if (coffiClass.attributes[i] instanceof SourceFile_attribute) { - - SourceFile_attribute attr = (SourceFile_attribute) coffiClass.attributes[i]; - String sourceFile = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[attr.sourcefile_index])).convert(); - - if (sourceFile.indexOf(' ') >= 0) { - logger.debug("" + "Warning: Class " + className + " has invalid SourceFile attribute (will be ignored)."); - } else { - bclass.addTag(new SourceFileTag(sourceFile, filePath)); - } - - } - // Set "InnerClass" attribute tag - else if (coffiClass.attributes[i] instanceof InnerClasses_attribute) { - InnerClasses_attribute attr = (InnerClasses_attribute) coffiClass.attributes[i]; - for (int j = 0; j < attr.inner_classes_length; j++) { - inner_class_entry e = attr.inner_classes[j]; - String inner = null; - String outer = null; - String name = null; - if (e.inner_class_index != 0) { - int name_index = ((CONSTANT_Class_info) coffiClass.constant_pool[e.inner_class_index]).name_index; - inner = ((CONSTANT_Utf8_info) coffiClass.constant_pool[name_index]).convert(); - } - if (e.outer_class_index != 0) { - int name_index = ((CONSTANT_Class_info) coffiClass.constant_pool[e.outer_class_index]).name_index; - outer = ((CONSTANT_Utf8_info) coffiClass.constant_pool[name_index]).convert(); - } - if (e.name_index != 0) { - name = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[e.name_index])).convert(); - } - bclass.addTag(new InnerClassTag(inner, outer, name, e.access_flags)); - } - } - // set synthetic tags - else if (coffiClass.attributes[i] instanceof Synthetic_attribute) { - - bclass.addTag(new SyntheticTag()); - } - // set deprectaed tags - else if (coffiClass.attributes[i] instanceof Deprecated_attribute) { - bclass.addTag(new DeprecatedTag()); - } else if (coffiClass.attributes[i] instanceof Signature_attribute) { - int signature_index = ((Signature_attribute) coffiClass.attributes[i]).signature_index; - String generic_sig = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[signature_index])).convert(); - bclass.addTag(new SignatureTag(generic_sig)); - } else if (coffiClass.attributes[i] instanceof EnclosingMethod_attribute) { - EnclosingMethod_attribute attr = (EnclosingMethod_attribute) coffiClass.attributes[i]; - int name_index = ((CONSTANT_Class_info) coffiClass.constant_pool[attr.class_index]).name_index; - String class_name = ((CONSTANT_Utf8_info) coffiClass.constant_pool[name_index]).convert(); - CONSTANT_NameAndType_info info = (CONSTANT_NameAndType_info) coffiClass.constant_pool[attr.method_index]; - - String method_name = ""; - String method_sig = ""; - - if (info != null) { - method_name = ((CONSTANT_Utf8_info) coffiClass.constant_pool[info.name_index]).convert(); - method_sig = ((CONSTANT_Utf8_info) coffiClass.constant_pool[info.descriptor_index]).convert(); - } - bclass.addTag(new EnclosingMethodTag(class_name, method_name, method_sig)); - } else if (coffiClass.attributes[i] instanceof RuntimeVisibleAnnotations_attribute - || coffiClass.attributes[i] instanceof RuntimeInvisibleAnnotations_attribute) { - addAnnotationVisibilityAttribute(bclass, coffiClass.attributes[i], coffiClass, references); - } else if (coffiClass.attributes[i] instanceof Generic_attribute) { - Generic_attribute attr = (Generic_attribute) coffiClass.attributes[i]; - String name = ((CONSTANT_Utf8_info) (coffiClass.constant_pool[attr.attribute_name])).convert(); - bclass.addTag(new GenericAttribute(name, attr.info)); - } - - } - } - - Type jimpleReturnTypeOfMethodDescriptor(String descriptor) { - Type[] types = jimpleTypesOfFieldOrMethodDescriptor(descriptor); - - return types[types.length - 1]; - } - - private final ArrayList conversionTypes = new ArrayList(); - - /* - * private Map cache = new HashMap(); public Type[] jimpleTypesOfFieldOrMethodDescriptor( String descriptor) { Type[] ret = - * (Type[]) cache.get(descriptor); if( ret != null ) return ret; conversionTypes.clear(); - * - * while(descriptor.length() != 0) { boolean isArray = false; int numDimensions = 0; Type baseType; - * - * // Skip parenthesis if(descriptor.startsWith("(") || descriptor.startsWith(")")) { descriptor = descriptor.substring(1); - * continue; } - * - * // Handle array case while(descriptor.startsWith("[")) { isArray = true; numDimensions++; descriptor = - * descriptor.substring(1); } - * - * // Determine base type if(descriptor.startsWith("B")) { baseType = ByteType.v(); descriptor = descriptor.substring(1); } - * else if(descriptor.startsWith("C")) { baseType = CharType.v(); descriptor = descriptor.substring(1); } else - * if(descriptor.startsWith("D")) { baseType = DoubleType.v(); descriptor = descriptor.substring(1); } else - * if(descriptor.startsWith("F")) { baseType = FloatType.v(); descriptor = descriptor.substring(1); } else - * if(descriptor.startsWith("I")) { baseType = IntType.v(); descriptor = descriptor.substring(1); } else - * if(descriptor.startsWith("J")) { baseType = LongType.v(); descriptor = descriptor.substring(1); } else - * if(descriptor.startsWith("L")) { int index = descriptor.indexOf(';'); - * - * if(index == -1) throw new RuntimeException("Class reference has no ending ;" ); - * - * String className = descriptor.substring(1, index); - * - * baseType = RefType.v(className.replace('/', '.')); - * - * descriptor = descriptor.substring(index + 1); } else if(descriptor.startsWith("S")) { baseType = ShortType.v(); - * descriptor = descriptor.substring(1); } else if(descriptor.startsWith("Z")) { baseType = BooleanType.v(); descriptor = - * descriptor.substring(1); } else if(descriptor.startsWith("V")) { baseType = VoidType.v(); descriptor = - * descriptor.substring(1); } else throw new RuntimeException("Unknown field type!" ); - * - * Type t; - * - * // Determine type if(isArray) t = ArrayType.v(baseType, numDimensions); else t = baseType; - * - * conversionTypes.add(t); } - * - * ret = (Type[]) conversionTypes.toArray(new Type[0]); cache.put(descriptor, ret); return ret; } - */ - - private final Map cache = new HashMap(); - - public Type[] jimpleTypesOfFieldOrMethodDescriptor(String descriptor) { - Type[] ret = null; - synchronized (cache) { - ret = cache.get(descriptor); - } - if (ret != null) { - return ret; - } - char[] d = descriptor.toCharArray(); - int p = 0; - List conversionTypes = new ArrayList(); - - outer: while (p < d.length) { - boolean isArray = false; - int numDimensions = 0; - Type baseType = null; - - swtch: while (p < d.length) { - switch (d[p]) { - // Skip parenthesis - case '(': - case ')': - p++; - continue outer; - - case '[': - isArray = true; - numDimensions++; - p++; - continue swtch; - case 'B': - baseType = ByteType.v(); - p++; - break swtch; - case 'C': - baseType = CharType.v(); - p++; - break swtch; - case 'D': - baseType = DoubleType.v(); - p++; - break swtch; - case 'F': - baseType = FloatType.v(); - p++; - break swtch; - case 'I': - baseType = IntType.v(); - p++; - break swtch; - case 'J': - baseType = LongType.v(); - p++; - break swtch; - case 'L': - int index = p + 1; - while (index < d.length && d[index] != ';') { - if (d[index] == '/') { - d[index] = '.'; - } - index++; - } - if (index >= d.length) { - throw new RuntimeException("Class reference has no ending ;"); - } - String className = new String(d, p + 1, index - p - 1); - baseType = RefType.v(className); - p = index + 1; - break swtch; - case 'S': - baseType = ShortType.v(); - p++; - break swtch; - case 'Z': - baseType = BooleanType.v(); - p++; - break swtch; - case 'V': - baseType = VoidType.v(); - p++; - break swtch; - default: - throw new RuntimeException("Unknown field type!"); - } - } - if (baseType == null) { - continue; - } - - // Determine type - Type t; - if (isArray) { - t = ArrayType.v(baseType, numDimensions); - } else { - t = baseType; - } - - conversionTypes.add(t); - } - - ret = conversionTypes.toArray(new Type[0]); - synchronized (cache) { - cache.put(descriptor, ret); - } - return ret; - } - - public Type jimpleTypeOfFieldDescriptor(String descriptor) { - // Handle array case - int numDimensions = 0; - while (descriptor.startsWith("[")) { - numDimensions++; - descriptor = descriptor.substring(1); - } - - // Determine base type - Type baseType; - if (descriptor.equals("B")) { - baseType = ByteType.v(); - } else if (descriptor.equals("C")) { - baseType = CharType.v(); - } else if (descriptor.equals("D")) { - baseType = DoubleType.v(); - } else if (descriptor.equals("F")) { - baseType = FloatType.v(); - } else if (descriptor.equals("I")) { - baseType = IntType.v(); - } else if (descriptor.equals("J")) { - baseType = LongType.v(); - } else if (descriptor.equals("V")) { - baseType = VoidType.v(); - } else if (descriptor.startsWith("L")) { - if (!descriptor.endsWith(";")) { - throw new RuntimeException("Class reference does not end with ;"); - } - - String className = descriptor.substring(1, descriptor.length() - 1); - - baseType = RefType.v(className.replace('/', '.')); - } else if (descriptor.equals("S")) { - baseType = ShortType.v(); - } else if (descriptor.equals("Z")) { - baseType = BooleanType.v(); - } else { - throw new RuntimeException("Unknown field type: " + descriptor); - } - - // Return type - return (numDimensions > 0) ? ArrayType.v(baseType, numDimensions) : baseType; - } - - int nextEasyNameIndex; - - void resetEasyNames() { - nextEasyNameIndex = 0; - } - - String getNextEasyName() { - final String[] easyNames = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", - "s", "t", "u", "v", "w", "x", "y", "z" }; - - int justifiedIndex = nextEasyNameIndex++; - - if (justifiedIndex >= easyNames.length) { - return "local" + (justifiedIndex - easyNames.length); - } else { - return easyNames[justifiedIndex]; - } - } - - Local getLocalForStackOp(JimpleBody listBody, TypeStack typeStack, int index) { - if (typeStack.get(index).equals(Double2ndHalfType.v()) || typeStack.get(index).equals(Long2ndHalfType.v())) { - index--; - } - - return getLocalCreatingIfNecessary(listBody, "$stack" + index, UnknownType.v()); - } - - String getAbbreviationOfClassName(String className) { - StringBuffer buffer = new StringBuffer(new Character(className.charAt(0)).toString()); - int periodIndex = 0; - - for (;;) { - periodIndex = className.indexOf('.', periodIndex + 1); - - if (periodIndex == -1) { - break; - } - - buffer.append(Character.toLowerCase(className.charAt(periodIndex + 1))); - } - - return buffer.toString(); - } - - String getNormalizedClassName(String className) { - className = className.replace('/', '.'); - - if (className.endsWith(";")) { - className = className.substring(0, className.length() - 1); - } - - // Handle array case - { - int numDimensions = 0; - - while (className.startsWith("[")) { - numDimensions++; - className = className.substring(1, className.length()); - className = className + "[]"; - } - - if (numDimensions != 0) { - if (!className.startsWith("L")) { - throw new RuntimeException("For some reason an array reference does not start with L"); - } - - className = className.substring(1, className.length()); - } - } - - return className; - } - - private Local getLocalUnsafe(Body b, String name) { - for (Local local : b.getLocals()) { - if (local.getName().equals(name)) { - return local; - } - } - return null; - } - - Local getLocalCreatingIfNecessary(JimpleBody listBody, String name, Type type) { - Local l = getLocalUnsafe(listBody, name); - if (l != null) { - if (!l.getType().equals(type)) { - throw new RuntimeException("The body already declares this local name with a different type."); - } - } else { - l = Jimple.v().newLocal(name, type); - listBody.getLocals().add(l); - } - return l; - } - - /** - * Get a Local for the parameter at the given local variable index. - * - * @listBody the method body. - * @index the parameter's local variable index. - * @return the Local for the given local variable index. - */ - Local getLocalForParameter(JimpleBody listBody, int index) { - return getLocalForIndex(listBody, index, 0, 0, false); - } - - /** - * Get a Local for the local variable at the given index in the context of the given instruction. - * - * @listBody the method body. - * @index the local variable index. - * @context the instruction context. - * @return the Local for the given local variable index. - */ - Local getLocalForIndex(JimpleBody listBody, int index, Instruction context) { - return getLocalForIndex(listBody, index, context.originalIndex, context.nextOffset(context.originalIndex), - ByteCode.isLocalStore(context.code)); - } - - private Local getLocalForIndex(JimpleBody listBody, int index, int bcIndex, int nextBcIndex, boolean isLocalStore) { - String name = null; - Local local; - - if (useFaithfulNaming && activeVariableTable != null) { - /* - * [use-original-names] - * - * Use original variables names. Generally speeking, the current way of handling original variables names is sound if - * the local variable table is consistant with the source code. - * - * consistant(table) ==> sound(local for index) - * - * In the table, variables are tuples ((s,l),i,N) where (s,l) encodes the half-open bytecode index interval [s,s+l[, i - * is the local variable index and N is the original variable name. ((s,l),i,N) means "from bytecode index s included - * to bytecode index s+l excluded, the variable at index i is named N is the source code". - * - * However the content of the table is for informational and debugging purpose only, the compiler can insert whatever - * inconsistancies it may want, meaning we cannot trust the table. - * - * The most common inconsistancy we found so far is where variables with different indexes and overlapping bytecode - * ranges are given the same name in the table. Although it won't happen with user-defined variables since Java doesn't - * allow the same variable name to be declared in nested scopes. But this situation can arise for compiler-generated - * local variables if they are assigned the same name (`i$` is common in OpenJDK). Notable example are local variables - * generated to implement the Java for-each statement (for(Foo foo : bar){}). If the source code contains nested - * for-each statements, then it becomes ugly because all the generated iterators or counters (for-each on arrays) are - * assigned the same name in the table. - * - * This inconsistancy is now handled correctly by the following code. The idea is based on the observation that the - * Local allocation works well if we simply allocate a different Local object for each local variable index (it is the - * default allocation policy, when the original names are not kept). Therefore, local variables with the same name and - * same index should have the same Local object. And local variables with the same name but different index should have - * a different Local object. We maintain the map nameToIndexToLocal :: Name -> (Index -> Local Object) from variable - * names to maps from variable indexes to Local objects. So we allocate a new Local object for each pair of a variable - * name and a variable index. - * - * Unfortunately, this is still unsound if the table gives several names for the same variable of the source code. Or - * if it reports wrong bytecode ranges, or if it doesn't report the name of a variable everywhere it is used in the - * bytecode... - * - * In order to obtain sound Local allocation when taking original names into account... we should not allocate Local - * according to these names. Instead we must keep the default allocation policy (one Local object for each local - * variable index), and then annotate each statement with "most probable name(s)" for each use or def Local. - * - */ - if (bcIndex != -1) { - int lookupBcIndex = bcIndex; - /* - * For local store bytecode, the local actually takes its new value after the bytecode is executed, so we must look - * at the next bytecode index. This is the behavior observed at least with OpenJDK javac. - */ - if (isLocalStore) { - lookupBcIndex = nextBcIndex; - } - - name = activeVariableTable.getLocalVariableName(activeConstantPool, index, lookupBcIndex); - - /* - * // for debug purpose String desc = activeVariableTable. getLocalVariableDescriptor( activeConstantPool, index, - * activeOriginalIndex); if (activeVariableTypeTable != null){ String debug_type = activeVariableTypeTable. - * getLocalVariableType( activeConstantPool, index, activeOriginalIndex); } - */ - } - } - - if (name == null) { - name = "l" + index; // generate a default name for the local - } - - if (nameToIndexToLocal == null) { - nameToIndexToLocal = new HashMap>(); - } - - Map indexToLocal; - - if (!nameToIndexToLocal.containsKey(name)) { - indexToLocal = new HashMap(); - nameToIndexToLocal.put(name, indexToLocal); - } else { - indexToLocal = nameToIndexToLocal.get(name); - } - - if (indexToLocal.containsKey(index)) { - local = indexToLocal.get(index); - } else { - local = Jimple.v().newLocal(name, UnknownType.v()); - listBody.getLocals().add(local); - indexToLocal.put(index, local); - } - - return local; - } - - /* - * void setLocalType(Local local, List locals, int localIndex, Type type) { if(local.getType().equals(UnknownType .v()) || - * local.getType().equals(type)) { local.setType(type); - * - * if(local.getType().equals(DoubleType. v()) || local.getType().equals(LongType.v())) { // This means the next local - * becomes voided, since these types occupy two // words. - * - * Local secondHalf = (Local) locals.get(localIndex + 1); - * - * secondHalf.setType(VoidType.v()); } - * - * return; } - * - * if(type.equals(IntType.v())) { if(local.getType().equals(BooleanType .v()) || local.getType().equals(CharType.v()) || - * local.getType().equals(ShortType.v()) || local.getType().equals(ByteType.v())) { // Even though it's not the same, it's - * ok, because booleans, chars, shorts, and // bytes are all sort of treated like integers by the JVM. return; } - * - * } - * - * throw new RuntimeException("required and actual types do not match: " + type.toString() + " with " + - * local.getType().toString()); } - */ - - /** - * Verifies the prospective name for validity as a Jimple name. In particular, first-char is alpha | _ | $, - * subsequent-chars are alphanum | _ | $. - * - * We could use isJavaIdentifier, except that Jimple's grammar doesn't support all of those, just ASCII. - * - * I'd put this in soot.Local, but that's an interface. - * - * @author Patrick Lam - */ - boolean isValidJimpleName(String prospectiveName) { - if (prospectiveName == null) { - return false; - } - for (int i = 0; i < prospectiveName.length(); i++) { - char c = prospectiveName.charAt(i); - if ((i == 0 && c >= '0' && c <= '9') - || !((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c == '_' || c == '$'))) { - return false; - } - } - return true; - } - - private void addAnnotationVisibilityAttribute(Host host, attribute_info attribute, ClassFile coffiClass, - Collection references) { - VisibilityAnnotationTag tag; - if (attribute instanceof RuntimeVisibleAnnotations_attribute) { - tag = new VisibilityAnnotationTag(AnnotationConstants.RUNTIME_VISIBLE); - RuntimeVisibleAnnotations_attribute attr = (RuntimeVisibleAnnotations_attribute) attribute; - addAnnotations(attr.number_of_annotations, attr.annotations, coffiClass, tag, references); - } else { - tag = new VisibilityAnnotationTag(AnnotationConstants.RUNTIME_INVISIBLE); - RuntimeInvisibleAnnotations_attribute attr = (RuntimeInvisibleAnnotations_attribute) attribute; - addAnnotations(attr.number_of_annotations, attr.annotations, coffiClass, tag, references); - } - host.addTag(tag); - } - - private void addAnnotationVisibilityParameterAttribute(Host host, attribute_info attribute, ClassFile coffiClass, - Collection references) { - VisibilityParameterAnnotationTag tag; - if (attribute instanceof RuntimeVisibleParameterAnnotations_attribute) { - RuntimeVisibleParameterAnnotations_attribute attr = (RuntimeVisibleParameterAnnotations_attribute) attribute; - tag = new VisibilityParameterAnnotationTag(attr.num_parameters, AnnotationConstants.RUNTIME_VISIBLE); - for (int i = 0; i < attr.num_parameters; i++) { - parameter_annotation pAnnot = attr.parameter_annotations[i]; - VisibilityAnnotationTag vTag = new VisibilityAnnotationTag(AnnotationConstants.RUNTIME_VISIBLE); - addAnnotations(pAnnot.num_annotations, pAnnot.annotations, coffiClass, vTag, references); - tag.addVisibilityAnnotation(vTag); - } - } else { - RuntimeInvisibleParameterAnnotations_attribute attr = (RuntimeInvisibleParameterAnnotations_attribute) attribute; - tag = new VisibilityParameterAnnotationTag(attr.num_parameters, AnnotationConstants.RUNTIME_INVISIBLE); - for (int i = 0; i < attr.num_parameters; i++) { - parameter_annotation pAnnot = attr.parameter_annotations[i]; - VisibilityAnnotationTag vTag = new VisibilityAnnotationTag(AnnotationConstants.RUNTIME_INVISIBLE); - addAnnotations(pAnnot.num_annotations, pAnnot.annotations, coffiClass, vTag, references); - tag.addVisibilityAnnotation(vTag); - } - } - host.addTag(tag); - } - - private void addAnnotations(int numAnnots, annotation[] annotations, ClassFile coffiClass, VisibilityAnnotationTag tag, - Collection references) { - for (int i = 0; i < numAnnots; i++) { - annotation annot = annotations[i]; - String annotType = ((CONSTANT_Utf8_info) coffiClass.constant_pool[annot.type_index]).convert(); - String ref = annotType.substring(1, annotType.length() - 1); - ref = ref.replace('/', '.'); - references.add(RefType.v(ref)); - AnnotationTag annotTag = new AnnotationTag(annotType, - createElementTags(annot.num_element_value_pairs, coffiClass, annot.element_value_pairs)); - tag.addAnnotation(annotTag); - } - } - - private ArrayList createElementTags(int count, ClassFile coffiClass, element_value[] elems) { - ArrayList list = new ArrayList(); - for (int j = 0; j < count; j++) { - element_value ev = elems[j]; - char kind = ev.tag; - String elemName = "default"; - if (ev.name_index != 0) { - elemName = ((CONSTANT_Utf8_info) coffiClass.constant_pool[ev.name_index]).convert(); - } - if (kind == 'B' || kind == 'C' || kind == 'I' || kind == 'S' || kind == 'Z' || kind == 'D' || kind == 'F' - || kind == 'J' || kind == 's') { - constant_element_value cev = (constant_element_value) ev; - if (kind == 'B' || kind == 'C' || kind == 'I' || kind == 'S' || kind == 'Z') { - cp_info cval = coffiClass.constant_pool[cev.constant_value_index]; - int constant_val = (int) ((CONSTANT_Integer_info) cval).bytes; - AnnotationIntElem elem = new AnnotationIntElem(constant_val, kind, elemName); - list.add(elem); - } else if (kind == 'D') { - cp_info cval = coffiClass.constant_pool[cev.constant_value_index]; - double constant_val = ((CONSTANT_Double_info) cval).convert(); - AnnotationDoubleElem elem = new AnnotationDoubleElem(constant_val, kind, elemName); - list.add(elem); - - } else if (kind == 'F') { - cp_info cval = coffiClass.constant_pool[cev.constant_value_index]; - float constant_val = ((CONSTANT_Float_info) cval).convert(); - AnnotationFloatElem elem = new AnnotationFloatElem(constant_val, kind, elemName); - list.add(elem); - - } else if (kind == 'J') { - cp_info cval = coffiClass.constant_pool[cev.constant_value_index]; - CONSTANT_Long_info lcval = (CONSTANT_Long_info) cval; - long constant_val = (lcval.high << 32) + lcval.low; - AnnotationLongElem elem = new AnnotationLongElem(constant_val, kind, elemName); - list.add(elem); - - } else if (kind == 's') { - cp_info cval = coffiClass.constant_pool[cev.constant_value_index]; - String constant_val = ((CONSTANT_Utf8_info) cval).convert(); - AnnotationStringElem elem = new AnnotationStringElem(constant_val, kind, elemName); - list.add(elem); - } - } else if (kind == 'e') { - enum_constant_element_value ecev = (enum_constant_element_value) ev; - cp_info type_val = coffiClass.constant_pool[ecev.type_name_index]; - String type_name = ((CONSTANT_Utf8_info) type_val).convert(); - cp_info name_val = coffiClass.constant_pool[ecev.constant_name_index]; - String constant_name = ((CONSTANT_Utf8_info) name_val).convert(); - AnnotationEnumElem elem = new AnnotationEnumElem(type_name, constant_name, kind, elemName); - list.add(elem); - } else if (kind == 'c') { - class_element_value cev = (class_element_value) ev; - cp_info cval = coffiClass.constant_pool[cev.class_info_index]; - CONSTANT_Utf8_info sval = (CONSTANT_Utf8_info) cval; - String desc = sval.convert(); - - AnnotationClassElem elem = new AnnotationClassElem(desc, kind, elemName); - list.add(elem); - } else if (kind == '[') { - array_element_value aev = (array_element_value) ev; - int num_vals = aev.num_values; - - ArrayList elemVals = createElementTags(num_vals, coffiClass, aev.values); - AnnotationArrayElem elem = new AnnotationArrayElem(elemVals, kind, elemName); - list.add(elem); - } else if (kind == '@') { - annotation_element_value aev = (annotation_element_value) ev; - annotation annot = aev.annotation_value; - String annotType = ((CONSTANT_Utf8_info) coffiClass.constant_pool[annot.type_index]).convert(); - AnnotationTag annotTag = new AnnotationTag(annotType, - createElementTags(annot.num_element_value_pairs, coffiClass, annot.element_value_pairs)); - - AnnotationAnnotationElem elem = new AnnotationAnnotationElem(annotTag, kind, elemName); - list.add(elem); - } - } - - return list; - } -} diff --git a/src/main/java/soot/coffi/annotation.java b/src/main/java/soot/coffi/annotation.java deleted file mode 100644 index d006b92702a..00000000000 --- a/src/main/java/soot/coffi/annotation.java +++ /dev/null @@ -1,40 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There can be many annotations in each Visibility attribute - * - * @see attribute_info - * @author Jennifer Lhotak - */ -public class annotation extends attribute_info { - /** type_index - CONSTANT_Utf8_info structure constant pool entry. */ - public int type_index; - /** num_element_value_pairs */ - public int num_element_value_pairs; - /** - * Each entry represents a single runtime visible annotation. - */ - public element_value element_value_pairs[]; -} diff --git a/src/main/java/soot/coffi/annotation_element_value.java b/src/main/java/soot/coffi/annotation_element_value.java deleted file mode 100644 index c8e75953234..00000000000 --- a/src/main/java/soot/coffi/annotation_element_value.java +++ /dev/null @@ -1,33 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There can be many element_value pairs in each annotation - * - * @see attribute_info - * @author Jennifer Lhotak - */ -public class annotation_element_value extends element_value { - annotation annotation_value; -} diff --git a/src/main/java/soot/coffi/array_element_value.java b/src/main/java/soot/coffi/array_element_value.java deleted file mode 100644 index 82a42a0404c..00000000000 --- a/src/main/java/soot/coffi/array_element_value.java +++ /dev/null @@ -1,34 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There can be many element_value pairs in each annotation - * - * @see attribute_info - * @author Jennifer Lhotak - */ -public class array_element_value extends element_value { - int num_values; - element_value values[]; -} diff --git a/src/main/java/soot/coffi/attribute_info.java b/src/main/java/soot/coffi/attribute_info.java deleted file mode 100644 index 906bc8e1a3e..00000000000 --- a/src/main/java/soot/coffi/attribute_info.java +++ /dev/null @@ -1,169 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Generic superclass for all attributes. - * - * @author Clark Verbrugge - */ -class attribute_info { - /** - * String by which a SourceFile attribute is recognized. - * - * @see SourceFile_attribute - */ - public static final String SourceFile = "SourceFile"; - /** - * String by which a ConstantValue attribute is recognized. - * - * @see ConstantValue_attribute - */ - public static final String ConstantValue = "ConstantValue"; - /** - * String by which a Code attribute is recognized. - * - * @see Code_attribute - */ - public static final String Code = "Code"; - /** - * String by which an Exceptions attribute is recognized. - * - * @see Exception_attribute - */ - public static final String Exceptions = "Exceptions"; - /** - * String by which a LineNumberTable attribute is recognized. - * - * @see LineNumberTable_attribute - */ - public static final String LineNumberTable = "LineNumberTable"; - /** - * String by which a LocalVariableTable attribute is recognized. - * - * @see LocalVariableTable_attribute - */ - public static final String LocalVariableTable = "LocalVariableTable"; - /** - * String by which a InnerClasses attribute is recognized. - * - * @see InnerClasses_attribute - */ - public static final String InnerClasses = "InnerClasses"; - /** - * String by which a Synthetic attribute is recognized. - * - * @see Synthetic_attribute - */ - public static final String Synthetic = "Synthetic"; - /** - * String by which a BootstrapMethods attribute is recognized. - * - * @see BootstrapMethods_attribute - */ - public static final String BootstrapMethods = "BootstrapMethods"; - - /** - * the following tags are added for java1.5 - */ - - /** - * String by which a Synthetic attribute is recognized. - * - * @see Signature_attribute - */ - public static final String Signature = "Signature"; - - /** - * String by which a Deprecated attribute is recognized. - * - * @see Deprecated_attribute - */ - public static final String Deprecated = "Deprecated"; - - /** - * String by which a EnclosingMethod attribute is recognized. - * - * @see EnclosingMethod_attribute - */ - public static final String EnclosingMethod = "EnclosingMethod"; - - /** - * String by which a LocalVariableTypeTable attribute is recognized. - * - * @see LocalVariableTypeTable_attribute - */ - public static final String LocalVariableTypeTable = "LocalVariableTypeTable"; - - /** - * String by which a runtime visible annotation attribute is recognized. - * - * @see RuntimeVisibleAnnotations_attribute - */ - public static final String RuntimeVisibleAnnotations = "RuntimeVisibleAnnotations"; - - /** - * String by which a runtime invisible annotation attribute is recognized. - * - * @see RuntimeInvisibleAnnotations_attribute - */ - public static final String RuntimeInvisibleAnnotations = "RuntimeInvisibleAnnotations"; - - /** - * String by which a runtime visible parameter annotation attribute is recognized. - * - * @see RuntimeVisibleParameterAnnotations_attribute - */ - public static final String RuntimeVisibleParameterAnnotations = "RuntimeVisibleParameterAnnotations"; - - /** - * String by which a runtime invisible parameter annotation attribute is recognized. - * - * @see RuntimeInvisibleParameterAnnotations_attribute - */ - public static final String RuntimeInvisibleParameterAnnotations = "RuntimeInvisibleParameterAnnotations"; - - /** - * String by which an annotation default attribute is recognized. - * - * @see AnnotationDefault_attribute - */ - public static final String AnnotationDefault = "AnnotationDefault"; - - /** - * Constant pool index of the name of this attribute; should be a utf8 String matching one of the constant Strings define - * here. - * - * @see attribute_info#SourceFile - * @see attribute_info#ConstantValue - * @see attribute_info#Code - * @see attribute_info#Exceptions - * @see attribute_info#LineNumberTable - * @see attribute_info#LocalVariableTable - * @see attribute_info#InnerClasses - * @see CONSTANT_Utf8_info - */ - public int attribute_name; - /** Length of attribute in bytes. */ - public long attribute_length; -} diff --git a/src/main/java/soot/coffi/class_element_value.java b/src/main/java/soot/coffi/class_element_value.java deleted file mode 100644 index 64f4829576f..00000000000 --- a/src/main/java/soot/coffi/class_element_value.java +++ /dev/null @@ -1,33 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There can be many element_value pairs in each annotation - * - * @see attribute_info - * @author Jennifer Lhotak - */ -public class class_element_value extends element_value { - int class_info_index; -} diff --git a/src/main/java/soot/coffi/constant_element_value.java b/src/main/java/soot/coffi/constant_element_value.java deleted file mode 100644 index ef0a4f80f23..00000000000 --- a/src/main/java/soot/coffi/constant_element_value.java +++ /dev/null @@ -1,33 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There can be many element_value pairs in each annotation - * - * @see attribute_info - * @author Jennifer Lhotak - */ -public class constant_element_value extends element_value { - int constant_value_index; -} diff --git a/src/main/java/soot/coffi/cp_info.java b/src/main/java/soot/coffi/cp_info.java deleted file mode 100644 index 2c7ae4a3ae2..00000000000 --- a/src/main/java/soot/coffi/cp_info.java +++ /dev/null @@ -1,303 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.util.StringTokenizer; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import soot.Value; - -/** - * Base abstract class for constant pool entries; includes some utility methods. - * - * @see ClassFile#constant_pool - * @author Clark Verbrugge - */ -abstract class cp_info { - private static final Logger logger = LoggerFactory.getLogger(cp_info.class); - - public static final byte CONSTANT_Utf8 = 1; - public static final byte CONSTANT_Integer = 3; - public static final byte CONSTANT_Float = 4; - public static final byte CONSTANT_Long = 5; - public static final byte CONSTANT_Double = 6; - public static final byte CONSTANT_Class = 7; - public static final byte CONSTANT_String = 8; - public static final byte CONSTANT_Fieldref = 9; - public static final byte CONSTANT_Methodref = 10; - public static final byte CONSTANT_InterfaceMethodref = 11; - public static final byte CONSTANT_NameAndType = 12; - public static final byte CONSTANT_MethodHandle = 15; - public static final byte CONSTANT_MethodType = 16; // TODO - public static final byte CONSTANT_InvokeDynamic = 18; - - /* constants for method handle kinds */ - public static final byte REF_getField = 1; - public static final byte REF_getStatic = 2; - public static final byte REF_putField = 3; - public static final byte REF_putStatic = 4; - public static final byte REF_invokeVirtual = 5; - public static final byte REF_invokeStatic = 6; - public static final byte REF_invokeSpecial = 7; - public static final byte REF_newInvokeSpecial = 8; - public static final byte REF_invokeInterface = 9; - - // mapping from the above to the kinds of members they refer to - public static final byte[] REF_TO_CONSTANT = { -1, CONSTANT_Fieldref, // getField... - CONSTANT_Fieldref, // - CONSTANT_Fieldref, // - CONSTANT_Fieldref, // - CONSTANT_Methodref, // invokeVirtual... - CONSTANT_Methodref, CONSTANT_Methodref, CONSTANT_Methodref, CONSTANT_InterfaceMethodref,// invokeInterface - }; - - /** One of the CONSTANT_* constants. */ - public byte tag; - - /** - * Returns the size of this entry. - * - * @return size (in bytes) of this entry. - */ - public abstract int size(); - - /** - * Returns a String representation of this entry. - * - * @param constant_pool - * constant pool of ClassFile. - * @return String representation of this entry. - */ - public abstract String toString(cp_info constant_pool[]); - - /** - * Returns a String description of what kind of entry this is. - * - * @return String representation of this kind of entry. - */ - public abstract String typeName(); - - /** - * Compares this entry with another cp_info object (which may reside in a different constant pool). - * - * @param constant_pool - * constant pool of ClassFile for this. - * @param cp - * constant pool entry to compare against. - * @param cp_constant_pool - * constant pool of ClassFile for cp. - * @return a value <0, 0, or >0 indicating whether this is smaller, the same or larger than cp. - */ - public abstract int compareTo(cp_info constant_pool[], cp_info cp, cp_info cp_constant_pool[]); - - /** - * Utility method, converts two integers into a single long. - * - * @param high - * upper 32 bits of the long. - * @param low - * lower 32 bits of the long. - * @return a long value composed from the two ints. - */ - public static long ints2long(long high, long low) { - long h, l; - h = high; - l = low; - return ((h << 32) + l); - } - - /** - * Utility method, returns a String binary representation of the given integer. - * - * @param i - * the integer in question. - * @return a String of 0's and 1's. - * @see cp_info#printBits(long) - */ - public static String printBits(int i) { - String s = ""; - int j, k; - k = 1; - for (j = 0; j < 32; j++) { - if ((i & k) != 0) { - s = "1" + s; - } else { - s = "0" + s; - } - k = k << 1; - } - return s; - } - - /** - * Utility method, returns a String binary representation of the given long. - * - * @param i - * the long in question. - * @return a String of 0's and 1's. - * @see cp_info#printBits(int) - */ - public static String printBits(long i) { - String s = ""; - long j, k; - k = 1; - for (j = 0; j < 64; j++) { - if ((i & k) != 0) { - s = "1" + s; - } else { - s = "0" + s; - } - k = k << 1; - } - return s; - } - - /** - * Locates the name of the corresponding class, given the constant pool index of either a CONSTANT_Class, _Fieldref, - * Methodref or InterfaceMethodref. - * - * @param constant_pool - * constant pool of ClassFile. - * @param i - * index of cp_info entry in question. - * @return name of the associated class. - */ - public static String getClassname(cp_info constant_pool[], int i) { - cp_info c = constant_pool[i]; - switch (c.tag) { - case cp_info.CONSTANT_Class: - return c.toString(constant_pool); - case cp_info.CONSTANT_Fieldref: - return getClassname(constant_pool, ((CONSTANT_Fieldref_info) c).class_index); - case cp_info.CONSTANT_Methodref: - return getClassname(constant_pool, ((CONSTANT_Methodref_info) c).class_index); - case cp_info.CONSTANT_InterfaceMethodref: - return getClassname(constant_pool, ((CONSTANT_InterfaceMethodref_info) c).class_index); - } - logger.debug("Request for classname for non-class object!"); - return "Can't find classname. Sorry."; - } - - /** - * Returns the name of the given constant pool object, assuming it is of type CONSTANT_NameAndType, _FieldRef, _Methodref - * or _InterfaceMethodref. - * - * @param constant_pool - * constant pool of ClassFile. - * @param i - * index of cp_info entry in question. - * @return name of the associated object. - * @see CONSTANT_Utf8_info - */ - public static String getName(cp_info constant_pool[], int i) { - cp_info c = constant_pool[i]; - switch (c.tag) { - case cp_info.CONSTANT_Utf8: - return c.toString(constant_pool); - case cp_info.CONSTANT_NameAndType: - return getName(constant_pool, ((CONSTANT_NameAndType_info) c).name_index); - case cp_info.CONSTANT_Fieldref: - return getName(constant_pool, ((CONSTANT_Fieldref_info) c).name_and_type_index); - case cp_info.CONSTANT_Methodref: - return getName(constant_pool, ((CONSTANT_Methodref_info) c).name_and_type_index); - case cp_info.CONSTANT_InterfaceMethodref: - return getName(constant_pool, ((CONSTANT_InterfaceMethodref_info) c).name_and_type_index); - } - logger.debug("Request for name for non-named object!"); - return "Can't find name of that object. Sorry."; - } - - /** - * Counts the number of parameters of the given method. - * - * @param constant_pool - * constant pool of ClassFile. - * @param m - * a constant pool index as accepted by getTypeDescr. - * @return the number of parameters. - * @see cp_info#getTypeDescr - */ - public static int countParams(cp_info constant_pool[], int m) { - StringTokenizer st; - String s = getTypeDescr(constant_pool, m); - s = ClassFile.parseMethodDesc_params(s); - st = new StringTokenizer(s, ",", false); - return st.countTokens(); - } - - /** - * Returns the type descriptor for the given constant pool object, which must be a CONSTANT_Utf8, CONSTANT_NameAndType, - * CONSTANT_Fieldref, CONSTANT_MethodRef, or CONSTANT_InterfaceMethodRef. - * - * @param constant_pool - * constant pool of ClassFile. - * @param i - * a constant pool index for an entry of type CONSTANT_Utf8, CONSTANT_NameAndType, CONSTANT_MethodRef, or - * CONSTANT_InterfaceMethodRef. - * @return the type descriptor. - * @see CONSTANT_Utf8_info - */ - public static String getTypeDescr(cp_info constant_pool[], int i) { - cp_info c = constant_pool[i]; - if (c instanceof CONSTANT_Utf8_info) { - return c.toString(constant_pool); - } - if (c instanceof CONSTANT_NameAndType_info) { - return getTypeDescr(constant_pool, ((CONSTANT_NameAndType_info) c).descriptor_index); - } - if (c instanceof CONSTANT_Methodref_info) { - return getTypeDescr(constant_pool, ((CONSTANT_Methodref_info) c).name_and_type_index); - } - if (c instanceof CONSTANT_InterfaceMethodref_info) { - return getTypeDescr(constant_pool, ((CONSTANT_InterfaceMethodref_info) c).name_and_type_index); - } - if (c instanceof CONSTANT_Fieldref_info) { - return getTypeDescr(constant_pool, ((CONSTANT_Fieldref_info) c).name_and_type_index); - } - logger.debug("Invalid request for type descr!"); - return "Invalid type descriptor request."; - } - - /** - * Returns the name of the field type of the given constant pool object. - * - * @param constant_pool - * constant pool of ClassFile. - * @param i - * a constant pool index for an entry of type CONSTANT_Utf8, CONSTANT_NameAndType, or CONSTANT_FieldRef. - * @return the type of the field. - * @see CONSTANT_Utf8_info - * @see cp_info#getTypeDescr - */ - public static String fieldType(cp_info constant_pool[], int i) { - return ClassFile.parseDesc(getTypeDescr(constant_pool, i), ""); - } - - /** - * Creates an appropriate jimple representation of this constant. Field and method constants are assumed to point to static - * fields/methods. - */ - public abstract Value createJimpleConstantValue(cp_info[] constant_pool); -} diff --git a/src/main/java/soot/coffi/element_value.java b/src/main/java/soot/coffi/element_value.java deleted file mode 100644 index 190dd99f77c..00000000000 --- a/src/main/java/soot/coffi/element_value.java +++ /dev/null @@ -1,34 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There can be many element_value pairs in each annotation - * - * @see attribute_info - * @author Jennifer Lhotak - */ -public class element_value extends attribute_info { - int name_index; - char tag; -} diff --git a/src/main/java/soot/coffi/enum_constant_element_value.java b/src/main/java/soot/coffi/enum_constant_element_value.java deleted file mode 100644 index 7f4f42b95d4..00000000000 --- a/src/main/java/soot/coffi/enum_constant_element_value.java +++ /dev/null @@ -1,34 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There can be many element_value pairs in each annotation - * - * @see attribute_info - * @author Jennifer Lhotak - */ -public class enum_constant_element_value extends element_value { - int type_name_index; - int constant_name_index; -} diff --git a/src/main/java/soot/coffi/exception_table_entry.java b/src/main/java/soot/coffi/exception_table_entry.java deleted file mode 100644 index 1a22ffedd22..00000000000 --- a/src/main/java/soot/coffi/exception_table_entry.java +++ /dev/null @@ -1,85 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * An entry in some code's exception table; describes an exception handler and the code it protects. - * - * @see Code_attribute - * @author Clark Verbrugge - */ -class exception_table_entry { - /** - * Code offset of start of code protected by this handler (inclusive). - * - * @see exception_table_entry#start_inst - */ - public int start_pc; - /** - * Code offset of end of code protected by this handler (exclusive). - * - * @see exception_table_entry#end_inst - */ - public int end_pc; - /** - * Code offset of actual exception handler for the specified code block. - * - * @see exception_table_entry#handler_inst - * @see exception_table_entry#b - */ - public int handler_pc; - /** - * Constant pool index of a CONSTANT_Class entry describing the exception this handler handles; if 0, this handler catches - * all exceptions. - * - * @see CONSTANT_Class - */ - public int catch_type; - /** - * First Instruction object (after parsing) of code protected by this handler. - * - * @see exception_table_entry#start_pc - * @see Instruction - */ - public Instruction start_inst; - /** - * First Instruction object (after parsing) of code not protected by this handler (or null for the end of code). - * - * @see exception_table_entry#end_pc - * @see Instruction - */ - public Instruction end_inst; - /** - * Instruction object (after parsing) of start of handler code. - * - * @see exception_table_entry#handler_pc - * @see Instruction - */ - public Instruction handler_inst; - /** - * Once basic blocks are constructed, the handler can be found by referencing its basic block. - * - * @see BasicBlock - */ - public BasicBlock b; -} diff --git a/src/main/java/soot/coffi/field_info.java b/src/main/java/soot/coffi/field_info.java deleted file mode 100644 index 2280adbc788..00000000000 --- a/src/main/java/soot/coffi/field_info.java +++ /dev/null @@ -1,106 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * Represents a single field_info object. - * - * @see ClassFile - * @author Clark Verbrugge - */ -public class field_info { - /** Access flags for this field. */ - public int access_flags; - /** - * Constant pool index of the name of this field. - * - * @see ClassFile#constant_pool - * @see CONSTANT_Utf8_info - */ - public int name_index; - /** - * Constant pool index of the type descriptor of this field. - * - * @see ClassFile#constant_pool - * @see CONSTANT_Utf8_info - */ - public int descriptor_index; - /** Count of attributes this field contains. */ - public int attributes_count; - /** - * Array of attribute_info objects for this field. - * - * @see attribute_info - */ - public attribute_info attributes[]; - - /** - * Returns the name of this field. - * - * @param constant_pool - * the constant_pool for this class. - * @return the name of this field. - */ - public String toName(cp_info constant_pool[]) { - CONSTANT_Utf8_info ci; - ci = (CONSTANT_Utf8_info) (constant_pool[name_index]); - return ci.convert(); - } - - /** - * Returns the prototype of this field. - * - * @param constant_pool - * the constant_pool for this class. - * @return the prototype (access + type + name) of this field. - */ - public String prototype(cp_info constant_pool[]) { - CONSTANT_Utf8_info cm, dm; - String s; - - cm = (CONSTANT_Utf8_info) (constant_pool[name_index]); - dm = (CONSTANT_Utf8_info) (constant_pool[descriptor_index]); - s = ClassFile.access_string(access_flags, " "); - if (s.compareTo("") != 0) { - s = s + " "; - } - return s + ClassFile.parseDesc(dm.convert(), "") + " " + cm.convert(); - } - - /** - * Locates a constant value attribute if one exists. - * - * @return the constant value attribute or null. - * @see ConstantValue_attribute - */ - public ConstantValue_attribute findConstantValue_attribute() { - int i; - for (i = 0; i < attributes_count; i++) { - if ((attributes[i]) instanceof ConstantValue_attribute) { - return (ConstantValue_attribute) (attributes[i]); - } - } - return null; - } - -} diff --git a/src/main/java/soot/coffi/inner_class_entry.java b/src/main/java/soot/coffi/inner_class_entry.java deleted file mode 100644 index a15be3fdf35..00000000000 --- a/src/main/java/soot/coffi/inner_class_entry.java +++ /dev/null @@ -1,40 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2004 Archie L. Cobbs - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * An entry in the inner classes table. - * - * @see InnerClasses_attribute - * @author Archie L. Cobbs - */ -class inner_class_entry { - /** Constant pool index for the inner class name */ - public int inner_class_index; - /** Constant pool index for the outer class name */ - public int outer_class_index; - /** Short name for the inner class if any, otherwise zero */ - public int name_index; - /** Access flags for inner class */ - public int access_flags; -} diff --git a/src/main/java/soot/coffi/line_number_table_entry.java b/src/main/java/soot/coffi/line_number_table_entry.java deleted file mode 100644 index cda032d3337..00000000000 --- a/src/main/java/soot/coffi/line_number_table_entry.java +++ /dev/null @@ -1,38 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * An entry in the line number table. - * - * @see LineNumberTable_attribute - * @author Clark Verbrugge - */ -class line_number_table_entry { - /** Offset within bytecode of the start of the code for this line number. */ - public int start_pc; - /** Line number within the source code. */ - public int line_number; - /** Start instruction corresponding to start_pc */ - public Instruction start_inst; -} diff --git a/src/main/java/soot/coffi/local_variable_table_entry.java b/src/main/java/soot/coffi/local_variable_table_entry.java deleted file mode 100644 index 8bc299eadce..00000000000 --- a/src/main/java/soot/coffi/local_variable_table_entry.java +++ /dev/null @@ -1,56 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * An entry in a local variable table. - * - * @see LocalVariableTable_attribute - * @author Clark Verbrugge - */ -class local_variable_table_entry { - /** Code offset of start of code wherein this entry applies. */ - public int start_pc; - /** Length of code sequence in which this name applies. */ - public int length; - /** - * Constant pool index of string giving this local variable's name. - * - * @see CONSTANT_Utf8_info - */ - public int name_index; - /** - * Constant pool index of string giving this local variable's type descriptor. - * - * @see CONSTANT_Utf8_info - */ - public int descriptor_index; - /** The index in the local variable array of this local variable. */ - public int index; - - public String toString() { - return "start: " + start_pc + "length: " + length + "name_index: " + name_index + "descriptor_index: " + descriptor_index - + "index: " + index; - - } -} diff --git a/src/main/java/soot/coffi/local_variable_type_table_entry.java b/src/main/java/soot/coffi/local_variable_type_table_entry.java deleted file mode 100644 index e10535f3042..00000000000 --- a/src/main/java/soot/coffi/local_variable_type_table_entry.java +++ /dev/null @@ -1,56 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * An entry in a local variable type table. - * - * @see LocalVariableTypeTable_attribute - * @author Jennifer Lhotak based on local_variabl_table_entry - */ -class local_variable_type_table_entry { - /** Code offset of start of code wherein this entry applies. */ - public int start_pc; - /** Length of code sequence in which this name applies. */ - public int length; - /** - * Constant pool index of string giving this local variable's name. - * - * @see CONSTANT_Utf8_info - */ - public int name_index; - /** - * Constant pool index of string giving this local variable's signature - * - * @see CONSTANT_Utf8_info - */ - public int signature_index; - /** The index in the local variable array of this local variable. */ - public int index; - - public String toString() { - return "start: " + start_pc + "length: " + length + "name_index: " + name_index + "signature_index: " + signature_index - + "index: " + index; - - } -} diff --git a/src/main/java/soot/coffi/method_info.java b/src/main/java/soot/coffi/method_info.java deleted file mode 100644 index 3d38940ceed..00000000000 --- a/src/main/java/soot/coffi/method_info.java +++ /dev/null @@ -1,152 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 1997 Clark Verbrugge - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Represents a single method_info object. - * - * @see ClassFile - * @author Clark Verbrugge - */ -public class method_info { - private static final Logger logger = LoggerFactory.getLogger(method_info.class); - /** Access flags for this field. */ - public int access_flags; - /** - * Constant pool index of the name of this method. - * - * @see ClassFile#constant_pool - * @see CONSTANT_Utf8_info - */ - public int name_index; - /** - * Constant pool index of the type descriptor of this method. - * - * @see ClassFile#constant_pool - * @see CONSTANT_Utf8_info - */ - public int descriptor_index; - /** Count of attributes this method contains. */ - public int attributes_count; - /** - * Array of attribute_info objects for this method. - * - * @see attribute_info - */ - public attribute_info attributes[]; - - /** - * A shortcut into attributes array for Code_attribute - * - * @see Code_attribute - */ - public Code_attribute code_attr; - - /** - * List of Instructions constructed when the method is parsed. - * - * @see Instruction - */ - public Instruction instructions; - /** - * Control Flow Graph constructed when the method is parsed. - * - * @see CFG - */ - public CFG cfg; - - public soot.SootMethod jmethod; - - List instructionList; - - /** - * Returns the name of this method. - * - * @param constant_pool - * the constant_pool for this class. - * @return the name of this method. - */ - public String toName(cp_info constant_pool[]) { - CONSTANT_Utf8_info ci; - ci = (CONSTANT_Utf8_info) (constant_pool[name_index]); - return ci.convert(); - } - - /** - * Locates and returns the code attribute for this method. - * - * @return the single code attribute, or null if not found. - * @see Code_attribute - */ - Code_attribute locate_code_attribute() { - attribute_info ai; - int i; - - for (i = 0; i < attributes_count; i++) { - ai = attributes[i]; - if (ai instanceof Code_attribute) { - return (Code_attribute) ai; - } - } - return null; - } - - /** - * Returns the prototype of this field. - * - * @param constant_pool - * the constant_pool for this class. - * @return the prototype (access + return + name + parameters) of this method. - */ - public String prototype(cp_info constant_pool[]) { - String access, rt, name, params; - Code_attribute c = locate_code_attribute(); - - access = ClassFile.access_string(access_flags, " "); - rt = ClassFile.parseMethodDesc_return(cp_info.getTypeDescr(constant_pool, descriptor_index)); - name = toName(constant_pool); - params = ClassFile.parseMethodDesc_params(cp_info.getTypeDescr(constant_pool, descriptor_index)); - if (access.length() > 0) { - return access + " " + rt + " " + name + "(" + params + ")"; - } - return rt + " " + name + "(" + params + ")"; - } - - /** - * Displays this method, printing a prototype followed by list of Instructions. - * - * @param constant_pool - * the constant_pool for this class. - * @see prototype - * @see ByteCode#showCode - */ - void print(cp_info constant_pool[]) { - logger.debug("" + prototype(constant_pool)); - ByteCode.showCode(instructions, constant_pool); - } -} diff --git a/src/main/java/soot/coffi/package.html b/src/main/java/soot/coffi/package.html deleted file mode 100644 index 1b9544c7900..00000000000 --- a/src/main/java/soot/coffi/package.html +++ /dev/null @@ -1,30 +0,0 @@ - - -Coffi classes - -Contains classes from the Coffi tool, by Clark Verbrugge. -They are used by Soot to parse classfiles. (Note that Baf is currently -used only for output from Soot; conceivably, Coffi could create Baf bodies, -but it doesn't.) - - diff --git a/src/main/java/soot/coffi/parameter_annotation.java b/src/main/java/soot/coffi/parameter_annotation.java deleted file mode 100644 index 314aa91eeee..00000000000 --- a/src/main/java/soot/coffi/parameter_annotation.java +++ /dev/null @@ -1,38 +0,0 @@ -package soot.coffi; - -/*- - * #%L - * Soot - a J*va Optimization Framework - * %% - * Copyright (C) 2005 Jennifer Lhotak - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 2.1 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * . - * #L% - */ - -/** - * There can be several parameter annotations in each Parameter Visibility attribute - * - * @see attribute_info - * @author Jennifer Lhotak - */ -public class parameter_annotation extends attribute_info { - /** number of annotations */ - public int num_annotations; - /** - * Each entry represents a single annotation. - */ - public annotation annotations[]; -} diff --git a/src/main/java/soot/tagkit/StringConstantValueTag.java b/src/main/java/soot/tagkit/StringConstantValueTag.java index 41d2a462074..f75e63f6eed 100644 --- a/src/main/java/soot/tagkit/StringConstantValueTag.java +++ b/src/main/java/soot/tagkit/StringConstantValueTag.java @@ -1,5 +1,6 @@ package soot.tagkit; + /*- * #%L * Soot - a J*va Optimization Framework @@ -22,7 +23,7 @@ * #L% */ -import soot.coffi.CONSTANT_Utf8_info; +import soot.asm.AsmUtil; import soot.jimple.StringConstant; public class StringConstantValueTag extends ConstantValueTag { @@ -32,7 +33,7 @@ public class StringConstantValueTag extends ConstantValueTag { private final String value; public StringConstantValueTag(String value) { - super(CONSTANT_Utf8_info.toUtf8(value)); + super(AsmUtil.toUtf8(value)); this.value = value; } diff --git a/src/main/xml/options/soot_options.xml b/src/main/xml/options/soot_options.xml index f590cc6e744..6a70c6cbbb0 100644 --- a/src/main/xml/options/soot_options.xml +++ b/src/main/xml/options/soot_options.xml @@ -220,11 +220,6 @@
General Options - - Coffi Frontend - coffi - Use the good old Coffi front end for parsing Java bytecode (instead of using ASM). - Jasmin Backend jasmin-backend diff --git a/src/main/xml/singletons/singletons.xml b/src/main/xml/singletons/singletons.xml index 3ba0a1d30dd..38908bc8537 100644 --- a/src/main/xml/singletons/singletons.xml +++ b/src/main/xml/singletons/singletons.xml @@ -14,10 +14,8 @@ soot.tagkit.TagManager soot.jimple.toolkits.pointer.representations.Environment soot.jimple.toolkits.pointer.representations.TypeConstants - soot.coffi.Util soot.SourceLocator soot.ModulePathSourceLocator - soot.coffi.CONSTANT_Utf8_collector soot.dava.toolkits.base.finders.AbruptEdgeFinder soot.jimple.toolkits.base.Aggregator soot.jimple.toolkits.annotation.arraycheck.ArrayBoundsChecker @@ -44,7 +42,6 @@ soot.Printer soot.jimple.toolkits.scalar.DeadAssignmentEliminator soot.jimple.toolkits.pointer.DependenceTagAggregator - soot.coffi.Double2ndHalfType soot.DoubleType soot.baf.DoubleWordType soot.jimple.toolkits.pointer.DumbPointerAnalysis @@ -70,7 +67,6 @@ soot.toolkits.scalar.LocalSplitter soot.toolkits.scalar.SharedInitializationLocalSplitter soot.toolkits.scalar.FlowSensitiveConstantPropagator - soot.coffi.Long2ndHalfType soot.LongType soot.dava.toolkits.base.misc.MonitorConverter soot.jimple.toolkits.scalar.NopEliminator @@ -113,7 +109,6 @@ soot.UnknownType soot.jimple.toolkits.scalar.UnreachableCodeEliminator soot.toolkits.scalar.UnusedLocalEliminator - soot.coffi.UnusuableType soot.dava.toolkits.base.AST.UselessTryRemover soot.VoidType soot.baf.WordType From fbce4765c116f21b79a794761a02437669b3bf14 Mon Sep 17 00:00:00 2001 From: Marc Miltenberger Date: Wed, 29 Nov 2023 19:36:23 +0100 Subject: [PATCH 4/7] Remove coffi --- src/main/java/soot/G.java | 1 - src/main/java/soot/PackManager.java | 3 +-- src/main/java/soot/Timers.java | 2 -- src/main/java/soot/UnknownMethodSource.java | 1 - 4 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/soot/G.java b/src/main/java/soot/G.java index 70a22d59946..af7377aa421 100644 --- a/src/main/java/soot/G.java +++ b/src/main/java/soot/G.java @@ -90,7 +90,6 @@ public static void setGlobalObjectGetter(GlobalObjectGetter newGetter) { public class Global { } - public long coffi_BasicBlock_ids = 0; public int SETNodeLabel_uniqueId = 0; public HashMap SETBasicBlock_binding = new HashMap(); public boolean ASTAnalysis_modified; diff --git a/src/main/java/soot/PackManager.java b/src/main/java/soot/PackManager.java index c6095847396..2c7938fb70d 100644 --- a/src/main/java/soot/PackManager.java +++ b/src/main/java/soot/PackManager.java @@ -1209,8 +1209,7 @@ private void releaseBodies(SootClass cl) { } private void retrieveAllBodies() { - // The old coffi front-end is not thread-safe - int threadNum = Options.v().coffi() ? 1 : Runtime.getRuntime().availableProcessors(); + int threadNum = Runtime.getRuntime().availableProcessors(); CountingThreadPoolExecutor executor = new CountingThreadPoolExecutor(threadNum, threadNum, 30, TimeUnit.SECONDS, new LinkedBlockingQueue()); diff --git a/src/main/java/soot/Timers.java b/src/main/java/soot/Timers.java index 46915be229b..8936ca4f3ac 100644 --- a/src/main/java/soot/Timers.java +++ b/src/main/java/soot/Timers.java @@ -167,8 +167,6 @@ public void printProfilingInformation() { // logger.debug(" analysis: " + toTimeString(liveAnalysisTimer, totalTime)); // logger.debug(" post: " + toTimeString(livePostTimer, totalTime)); - logger.debug("Coading coffi structs: " + toTimeString(resolveTimer, totalTime)); - // Print out time stats. { float timeInSecs; diff --git a/src/main/java/soot/UnknownMethodSource.java b/src/main/java/soot/UnknownMethodSource.java index 7608076a6ed..d0c9db525b8 100644 --- a/src/main/java/soot/UnknownMethodSource.java +++ b/src/main/java/soot/UnknownMethodSource.java @@ -26,7 +26,6 @@ * A MethodSource for methods that don't know where to get Body's from. * * @see soot.jimple.JimpleMethodSource - * @see soot.coffi.CoffiMethodSource */ public class UnknownMethodSource implements MethodSource { UnknownMethodSource() { From 29980d3ababc5f2ddb70111c9eb94b9784e777ec Mon Sep 17 00:00:00 2001 From: Marc Miltenberger Date: Wed, 29 Nov 2023 19:40:03 +0100 Subject: [PATCH 5/7] Checkstyle --- src/main/java/soot/PackManager.java | 47 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/src/main/java/soot/PackManager.java b/src/main/java/soot/PackManager.java index 2c7938fb70d..8eeb457ac7b 100644 --- a/src/main/java/soot/PackManager.java +++ b/src/main/java/soot/PackManager.java @@ -1,29 +1,5 @@ package soot; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.TimeUnit; -import java.util.jar.JarEntry; -import java.util.jar.JarOutputStream; -import java.util.zip.GZIPOutputStream; -import java.util.zip.ZipEntry; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - /*- * #%L * Soot - a J*va Optimization Framework @@ -46,7 +22,30 @@ * #L% */ +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.TimeUnit; +import java.util.jar.JarEntry; +import java.util.jar.JarOutputStream; +import java.util.zip.GZIPOutputStream; +import java.util.zip.ZipEntry; + import heros.solver.CountingThreadPoolExecutor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import soot.baf.Baf; import soot.baf.BafASMBackend; import soot.baf.BafBody; From 3b1b617d042fc4f17de388d3ef2fb2101ed6d195 Mon Sep 17 00:00:00 2001 From: Marc Miltenberger Date: Wed, 29 Nov 2023 19:43:13 +0100 Subject: [PATCH 6/7] Checkstyle --- src/main/java/soot/PackManager.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/soot/PackManager.java b/src/main/java/soot/PackManager.java index 8eeb457ac7b..cc2f4fd7b96 100644 --- a/src/main/java/soot/PackManager.java +++ b/src/main/java/soot/PackManager.java @@ -1,5 +1,7 @@ package soot; +import heros.solver.CountingThreadPoolExecutor; + /*- * #%L * Soot - a J*va Optimization Framework @@ -43,9 +45,9 @@ import java.util.zip.GZIPOutputStream; import java.util.zip.ZipEntry; -import heros.solver.CountingThreadPoolExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import soot.baf.Baf; import soot.baf.BafASMBackend; import soot.baf.BafBody; From 98ceb5e367df0d6618e8347155daa114a0cda9b0 Mon Sep 17 00:00:00 2001 From: Marc Miltenberger Date: Wed, 29 Nov 2023 19:49:49 +0100 Subject: [PATCH 7/7] Stylecheck --- src/main/java/soot/ClassLoaderFoundFile.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/soot/ClassLoaderFoundFile.java b/src/main/java/soot/ClassLoaderFoundFile.java index ebdb462b42f..aacba70e016 100644 --- a/src/main/java/soot/ClassLoaderFoundFile.java +++ b/src/main/java/soot/ClassLoaderFoundFile.java @@ -22,7 +22,6 @@ * #L% */ - import java.io.File; import java.io.InputStream; import java.util.zip.ZipFile;
-coffi
Use the good old Coffi front end for parsing Java bytecode (instead of using ASM).
-jasmin-backend
Use the Jasmin back end for generating Java bytecode (instead of using ASM).