Package kilim.tools
Class Asm
java.lang.Object
kilim.tools.Asm
This is a replacement for the jasmin bytecode assembler and uses the same
syntax. The main reason for writing it is that jasmin (v 2.1 at the time of
writing) didn't correcly support annotations. That is, the annotations
inserted by jasmin don't show up in java.lang.reflect.Method, even though the
annotations are in the class file. It was easier to write this tool than to
release a separate fix for jasmin.
Usage: java kilim.tools.Asm [options] invalid input: '<'.j file(s)> Options: -dIf stack frames are requested (default), the version of the class file is V1_6, otherwise it is V1_5.: output directory (default: '.') -f : force (default: false) write output even if output file is newer than source -q : quiet (default: verbose) -nf : no stack frames (default: compute stack frames)
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) static Patternprivate Line(package private) static final Pattern(package private) static Patternprivate Stringprivate static Stringprivate static Pattern(package private) static Patternprivate static booleanprivate org.objectweb.asm.ClassWriterprivate static Stringprivate boolean(package private) booleanprivate static final intprivate static Pattern(package private) static final Patternprivate String(package private) static booleanprivate static final intprivate static Patternprivate static final int(package private) static final Patternprivate static final intprivate static final intprivate static Patternprivate Matcherprivate Patternprivate static final intprivate Line(package private) static Patternprivate static final intprivate intprivate intprivate static final int(package private) static final Patternprivate Stringprivate static Stringprivate static Patternprivate static Stringprivate static final intprivate org.objectweb.asm.MethodVisitorprivate static String(package private) static String[](package private) static String(package private) static boolean(package private) static final Patternprivate LineNumberReaderprivate boolean(package private) static Patternprivate static Patternprivate static final intprivate static Patternprivate static final intprivate static final intprivate static final byte[](package private) static Pattern -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate booleancheck()private voidprivate voidprivate static StringgetDirName(String className) (package private) org.objectweb.asm.Labelprivate LinegetLine()(package private) Stringgroup(int i) (package private) int(package private) booleanstatic void(package private) booleanprivate static voidprivate voidprivate Stringparse()private voidprivate voidprivate void(package private) doubleprivate void(package private) floatparseFloat(String s) private void(package private) intprivate String[]private void(package private) longprivate voidprivate voidprivate voidprivate String[]private intprivate Stringprivate ObjectparseValue(String s, boolean isDoubleWord) private voidprivate LinereadLine()(package private) static String[]private voidwrite()
-
Field Details
-
quiet
static boolean quiet -
force
static boolean force -
outputDir
-
wsPattern
-
commentPattern
-
eofOK
private boolean eofOK -
cv
private org.objectweb.asm.ClassWriter cv -
mv
private org.objectweb.asm.MethodVisitor mv -
maxLocals
private int maxLocals -
maxStack
private int maxStack -
declaredLabels
-
labels
-
className
-
methodName
-
fileName
-
line
-
bufferedLine
-
lastMatch
-
lastPattern
-
reader
-
skip
private boolean skip -
modifiers
-
classNamePatternStr
-
modifierPatternStr
-
classPattern
-
superPattern
-
implementsPattern
-
namePatternStr
-
descPatternStr
-
fieldPattern
-
methodNamePatternStr
-
methodPattern
-
throwsPattern
-
labelPattern
-
localsPattern
-
stackPattern
-
catchPattern
-
annotationPattern
-
opcodeStrs
-
computeFrames
private static boolean computeFrames -
opcodeMap
-
visitTypes
private static final byte[] visitTypes -
INSN
private static final int INSN- See Also:
-
VAR
private static final int VAR- See Also:
-
LDC
private static final int LDC- See Also:
-
JUMP
private static final int JUMP- See Also:
-
TABLESWITCH
private static final int TABLESWITCH- See Also:
-
LOOKUPSWITCH
private static final int LOOKUPSWITCH- See Also:
-
FIELD
private static final int FIELD- See Also:
-
METHOD
private static final int METHOD- See Also:
-
TYPE
private static final int TYPE- See Also:
-
MULTIANEWARRAY
private static final int MULTIANEWARRAY- See Also:
-
INT
private static final int INT- See Also:
-
IINC
private static final int IINC- See Also:
-
insnPattern
-
quotedPattern
-
casePattern
-
methodInvokePattern
-
fieldSpecPattern
-
eofSeen
boolean eofSeen
-
-
Constructor Details
-
Asm
- Throws:
IOException
-
-
Method Details
-
main
- Throws:
IOException
-
parse
- Throws:
IOException
-
parseClass
private void parseClass() -
parseModifiers
-
parseSuper
-
parseInterfaces
-
parseClassBody
private void parseClassBody() -
parseField
private void parseField() -
parseMethod
private void parseMethod() -
parseMethodExceptions
-
parseMethodBody
private void parseMethodBody() -
parseLabel
private void parseLabel() -
checkLabelDeclarations
private void checkLabelDeclarations() -
parseMethodDirective
private void parseMethodDirective() -
parseAnnotation
private void parseAnnotation() -
parseInstructions
private void parseInstructions() -
opcheck
-
parseValue
-
parseInt
-
parseLong
-
parseFloat
-
parseDouble
-
getLabel
-
err
-
readLine
-
putBackLine
private void putBackLine() -
getLine
-
match
-
lineMatch
-
group
-
groupCount
int groupCount() -
split
-
outputName
-
check
private boolean check() -
write
- Throws:
IOException
-
mkdir
- Throws:
IOException
-
getDirName
-
parseArgs
-