summaryrefslogtreecommitdiffstats
path: root/src/org/jetbrains/java/decompiler/code
diff options
context:
space:
mode:
authorRoman Shevchenko <roman.shevchenko@jetbrains.com>2014-08-28 21:34:14 +0400
committerRoman Shevchenko <roman.shevchenko@jetbrains.com>2014-08-28 21:34:19 +0400
commit076e4393f25bf1ad1ff1bd2853153e2b595dd90b (patch)
treef1a17a12ea762525b5efbc0778b0945d906c68c9 /src/org/jetbrains/java/decompiler/code
parent663631f0456fcc245dd835889f86541d75161c53 (diff)
downloadfernflower-076e4393f25bf1ad1ff1bd2853153e2b595dd90b.tar
fernflower-076e4393f25bf1ad1ff1bd2853153e2b595dd90b.tar.gz
fernflower-076e4393f25bf1ad1ff1bd2853153e2b595dd90b.tar.lz
fernflower-076e4393f25bf1ad1ff1bd2853153e2b595dd90b.tar.xz
fernflower-076e4393f25bf1ad1ff1bd2853153e2b595dd90b.zip
java-decompiler: post-import cleanup (formatting and copyright)
Diffstat (limited to 'src/org/jetbrains/java/decompiler/code')
-rw-r--r--src/org/jetbrains/java/decompiler/code/CodeConstants.java703
-rw-r--r--src/org/jetbrains/java/decompiler/code/ConstantsUtil.java969
-rw-r--r--src/org/jetbrains/java/decompiler/code/ExceptionHandler.java99
-rw-r--r--src/org/jetbrains/java/decompiler/code/ExceptionTable.java89
-rw-r--r--src/org/jetbrains/java/decompiler/code/FullInstructionSequence.java48
-rw-r--r--src/org/jetbrains/java/decompiler/code/IfInstruction.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/Instruction.java224
-rw-r--r--src/org/jetbrains/java/decompiler/code/InstructionSequence.java412
-rw-r--r--src/org/jetbrains/java/decompiler/code/JumpInstruction.java49
-rw-r--r--src/org/jetbrains/java/decompiler/code/SimpleInstructionSequence.java50
-rw-r--r--src/org/jetbrains/java/decompiler/code/SwitchInstruction.java162
-rw-r--r--src/org/jetbrains/java/decompiler/code/cfg/BasicBlock.java499
-rw-r--r--src/org/jetbrains/java/decompiler/code/cfg/ControlFlowGraph.java1722
-rw-r--r--src/org/jetbrains/java/decompiler/code/cfg/ExceptionRangeCFG.java229
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/AALOAD.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/AASTORE.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/ACONST_NULL.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/ALOAD.java85
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/ANEWARRAY.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/ARETURN.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/ARRAYLENGTH.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/ASTORE.java86
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/ATHROW.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/BALOAD.java17
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/BASTORE.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/BIPUSH.java62
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/CALOAD.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/CASTORE.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/CHECKCAST.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/D2F.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/D2I.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/D2L.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DADD.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DALOAD.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DASTORE.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DCMPG.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DCMPL.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DCONST_0.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DCONST_1.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DDIV.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DLOAD.java86
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DMUL.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DNEG.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DREM.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DRETURN.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DSTORE.java85
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DSUB.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DUP.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DUP2.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DUP2_X1.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DUP2_X2.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DUP_X1.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/DUP_X2.java17
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/F2D.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/F2I.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/F2L.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FADD.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FALOAD.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FASTORE.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FCMPG.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FCMPL.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FCONST_0.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FCONST_1.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FCONST_2.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FDIV.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FLOAD.java86
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FMUL.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FNEG.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FREM.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FRETURN.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FSTORE.java85
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/FSUB.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/GETFIELD.java37
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/GETSTATIC.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/GOTO.java60
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/GOTO_W.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/I2B.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/I2C.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/I2D.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/I2F.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/I2L.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/I2S.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IADD.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IALOAD.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IAND.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IASTORE.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IDIV.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IFEQ.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IFGE.java34
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IFGT.java34
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IFLE.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IFLT.java34
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IFNE.java34
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IFNONNULL.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IFNULL.java34
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IF_ACMPEQ.java34
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IF_ACMPNE.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPEQ.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPGE.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPGT.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPLE.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPLT.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPNE.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IINC.java55
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/ILOAD.java77
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IMUL.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/INEG.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/INSTANCEOF.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/INVOKEINTERFACE.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/INVOKESPECIAL.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/INVOKESTATIC.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/INVOKEVIRTUAL.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IOR.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IREM.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IRETURN.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/ISHL.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/ISHR.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/ISTORE.java77
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/ISUB.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IUSHR.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/IXOR.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/JSR.java60
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/JSR_W.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/L2D.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/L2F.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/L2I.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LADD.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LALOAD.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LAND.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LASTORE.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LCMP.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LCONST_0.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LCONST_1.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LDC.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LDC2_W.java34
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LDC_W.java34
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LDIV.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LLOAD.java75
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LMUL.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LNEG.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LOOKUPSWITCH.java54
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LOR.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LREM.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LRETURN.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LSHL.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LSHR.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LSTORE.java77
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LSUB.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LUSHR.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/LXOR.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/MONITORENTER.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/MONITOREXIT.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/MULTIANEWARRAY.java38
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/NEW.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/NEWARRAY.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/NOP.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/POP.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/POP2.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/PUTFIELD.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/PUTSTATIC.java36
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/RET.java51
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/RETURN.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/SALOAD.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/SASTORE.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/SIPUSH.java34
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/SWAP.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/TABLESWITCH.java55
-rw-r--r--src/org/jetbrains/java/decompiler/code/instructions/XXXUNUSEDXXX.java15
-rw-r--r--src/org/jetbrains/java/decompiler/code/interpreter/InstructionImpact.java955
-rw-r--r--src/org/jetbrains/java/decompiler/code/interpreter/Util.java517
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/ALOAD.java90
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/ANEWARRAY.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/ASTORE.java90
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/BIPUSH.java66
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/CHECKCAST.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/DLOAD.java90
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/DSTORE.java89
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/FLOAD.java90
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/FSTORE.java89
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/GETFIELD.java41
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/GETSTATIC.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/GOTO.java64
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/GOTO_W.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/IINC.java59
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/ILOAD.java81
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/INSTANCEOF.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEDYNAMIC.java39
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEINTERFACE.java44
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/INVOKESPECIAL.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/INVOKESTATIC.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEVIRTUAL.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/ISTORE.java81
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/JSR.java64
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/JSR_W.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/LDC.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/LDC2_W.java38
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/LDC_W.java38
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/LLOAD.java79
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/LOOKUPSWITCH.java58
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/LSTORE.java81
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/MULTIANEWARRAY.java42
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/NEW.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/NEWARRAY.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/PUTFIELD.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/PUTSTATIC.java40
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/RET.java55
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/SIPUSH.java38
-rw-r--r--src/org/jetbrains/java/decompiler/code/optinstructions/TABLESWITCH.java59
208 files changed, 7663 insertions, 5245 deletions
diff --git a/src/org/jetbrains/java/decompiler/code/CodeConstants.java b/src/org/jetbrains/java/decompiler/code/CodeConstants.java
index 78cbcf0..de5198b 100644
--- a/src/org/jetbrains/java/decompiler/code/CodeConstants.java
+++ b/src/org/jetbrains/java/decompiler/code/CodeConstants.java
@@ -1,371 +1,370 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code;
public interface CodeConstants {
- // ----------------------------------------------------------------------
- // BYTECODE VERSIONS
- // ----------------------------------------------------------------------
-
- public final static int BYTECODE_JAVA_LE_4 = 1;
- public final static int BYTECODE_JAVA_5 = 2;
- public final static int BYTECODE_JAVA_6 = 3;
- public final static int BYTECODE_JAVA_7 = 4;
- public final static int BYTECODE_JAVA_8 = 5;
-
- // ----------------------------------------------------------------------
- // VARIABLE TYPES
- // ----------------------------------------------------------------------
+ // ----------------------------------------------------------------------
+ // BYTECODE VERSIONS
+ // ----------------------------------------------------------------------
+
+ public final static int BYTECODE_JAVA_LE_4 = 1;
+ public final static int BYTECODE_JAVA_5 = 2;
+ public final static int BYTECODE_JAVA_6 = 3;
+ public final static int BYTECODE_JAVA_7 = 4;
+ public final static int BYTECODE_JAVA_8 = 5;
+
+ // ----------------------------------------------------------------------
+ // VARIABLE TYPES
+ // ----------------------------------------------------------------------
+
+ public final static int TYPE_BYTE = 0;
+ public final static int TYPE_CHAR = 1;
+ public final static int TYPE_DOUBLE = 2;
+ public final static int TYPE_FLOAT = 3;
+ public final static int TYPE_INT = 4;
+ public final static int TYPE_LONG = 5;
+ public final static int TYPE_SHORT = 6;
+ public final static int TYPE_BOOLEAN = 7;
+ public final static int TYPE_OBJECT = 8;
+ public final static int TYPE_ADDRESS = 9;
+ public final static int TYPE_VOID = 10;
+ public final static int TYPE_ANY = 11;
+ public final static int TYPE_GROUP2EMPTY = 12;
+ public final static int TYPE_NULL = 13;
+ public final static int TYPE_NOTINITIALIZED = 14;
+ public final static int TYPE_BYTECHAR = 15;
+ public final static int TYPE_SHORTCHAR = 16;
+ public final static int TYPE_UNKNOWN = 17;
+ public final static int TYPE_GENVAR = 18;
+
+ // ----------------------------------------------------------------------
+ // VARIABLE TYPE FAMILIES
+ // ----------------------------------------------------------------------
+
+ public final static int TYPE_FAMILY_UNKNOWN = 0;
+ public final static int TYPE_FAMILY_BOOLEAN = 1;
+ public final static int TYPE_FAMILY_INTEGER = 2;
+ public final static int TYPE_FAMILY_FLOAT = 3;
+ public final static int TYPE_FAMILY_LONG = 4;
+ public final static int TYPE_FAMILY_DOUBLE = 5;
+ public final static int TYPE_FAMILY_OBJECT = 6;
+
+ // ----------------------------------------------------------------------
+ // MODULE CONSTANTS
+ // ----------------------------------------------------------------------
+
+ public final static int STACKSIZE_SIMPLE = 1;
+ public final static int STACKSIZE_DOUBLE = 2;
+
+ public final static int VAR_LOCAL = 0;
+ public final static int VAR_STACK = 1;
+
+ public final static int VAR_WRITE = 0;
+ public final static int VAR_READ = 1;
+
+
+ // ----------------------------------------------------------------------
+ // ACCESS FLAGS
+ // ----------------------------------------------------------------------
+
+ public final static int ACC_PUBLIC = 0x0001;
+ public final static int ACC_PRIVATE = 0x0002;
+ public final static int ACC_PROTECTED = 0x0004;
+ public final static int ACC_STATIC = 0x0008;
+ public final static int ACC_FINAL = 0x0010;
+ public final static int ACC_SYNCHRONIZED = 0x0020;
+ public final static int ACC_NATIVE = 0x0100;
+ public final static int ACC_ABSTRACT = 0x0400;
+ public final static int ACC_STRICT = 0x0800;
+ public final static int ACC_VOLATILE = 0x0040;
+ public final static int ACC_BRIDGE = 0x0040;
+ public final static int ACC_TRANSIENT = 0x0080;
+ public final static int ACC_VARARGS = 0x0080;
+ public final static int ACC_SYNTHETIC = 0x1000;
+ public final static int ACC_ANNOTATION = 0x2000;
+ public final static int ACC_ENUM = 0x4000;
+
+ // ----------------------------------------------------------------------
+ // CLASS FLAGS
+ // ----------------------------------------------------------------------
+
+ public final static int ACC_SUPER = 0x0020;
+ public final static int ACC_INTERFACE = 0x0200;
+
+
+ // ----------------------------------------------------------------------
+ // DEPENDENCY CONSTANTS
+ // ----------------------------------------------------------------------
- public final static int TYPE_BYTE = 0;
- public final static int TYPE_CHAR = 1;
- public final static int TYPE_DOUBLE = 2;
- public final static int TYPE_FLOAT = 3;
- public final static int TYPE_INT = 4;
- public final static int TYPE_LONG = 5;
- public final static int TYPE_SHORT = 6;
- public final static int TYPE_BOOLEAN = 7;
- public final static int TYPE_OBJECT = 8;
- public final static int TYPE_ADDRESS = 9;
- public final static int TYPE_VOID = 10;
- public final static int TYPE_ANY = 11;
- public final static int TYPE_GROUP2EMPTY = 12;
- public final static int TYPE_NULL = 13;
- public final static int TYPE_NOTINITIALIZED = 14;
- public final static int TYPE_BYTECHAR = 15;
- public final static int TYPE_SHORTCHAR = 16;
- public final static int TYPE_UNKNOWN = 17;
- public final static int TYPE_GENVAR = 18;
+ public final static int DEP_CONSTANT = 0;
+ public final static int DEP_UNKNOWN = 1;
+ public final static int DEP_GENERAL = 2;
+ public final static int DEP_PARAMS = 4;
+ public final static int DEP_STATIC = 8;
- // ----------------------------------------------------------------------
- // VARIABLE TYPE FAMILIES
- // ----------------------------------------------------------------------
+ // ----------------------------------------------------------------------
+ // INSTRUCTION GROUPS
+ // ----------------------------------------------------------------------
- public final static int TYPE_FAMILY_UNKNOWN = 0;
- public final static int TYPE_FAMILY_BOOLEAN = 1;
- public final static int TYPE_FAMILY_INTEGER = 2;
- public final static int TYPE_FAMILY_FLOAT = 3;
- public final static int TYPE_FAMILY_LONG = 4;
- public final static int TYPE_FAMILY_DOUBLE = 5;
- public final static int TYPE_FAMILY_OBJECT = 6;
-
- // ----------------------------------------------------------------------
- // MODULE CONSTANTS
- // ----------------------------------------------------------------------
+ public final static int GROUP_GENERAL = 1;
+ public final static int GROUP_JUMP = 2;
+ public final static int GROUP_SWITCH = 3;
+ public final static int GROUP_INVOCATION = 4;
+ public final static int GROUP_FIELDACCESS = 5;
+ public final static int GROUP_RETURN = 6;
- public final static int STACKSIZE_SIMPLE = 1;
- public final static int STACKSIZE_DOUBLE = 2;
-
- public final static int VAR_LOCAL = 0;
- public final static int VAR_STACK = 1;
-
- public final static int VAR_WRITE = 0;
- public final static int VAR_READ = 1;
-
-
- // ----------------------------------------------------------------------
- // ACCESS FLAGS
- // ----------------------------------------------------------------------
-
- public final static int ACC_PUBLIC = 0x0001;
- public final static int ACC_PRIVATE = 0x0002;
- public final static int ACC_PROTECTED = 0x0004;
- public final static int ACC_STATIC = 0x0008;
- public final static int ACC_FINAL = 0x0010;
- public final static int ACC_SYNCHRONIZED = 0x0020;
- public final static int ACC_NATIVE = 0x0100;
- public final static int ACC_ABSTRACT = 0x0400;
- public final static int ACC_STRICT = 0x0800;
- public final static int ACC_VOLATILE = 0x0040;
- public final static int ACC_BRIDGE = 0x0040;
- public final static int ACC_TRANSIENT = 0x0080;
- public final static int ACC_VARARGS = 0x0080;
- public final static int ACC_SYNTHETIC = 0x1000;
- public final static int ACC_ANNOTATION = 0x2000;
- public final static int ACC_ENUM = 0x4000;
+ // ----------------------------------------------------------------------
+ // POOL CONSTANTS
+ // ----------------------------------------------------------------------
- // ----------------------------------------------------------------------
- // CLASS FLAGS
- // ----------------------------------------------------------------------
-
- public final static int ACC_SUPER = 0x0020;
- public final static int ACC_INTERFACE = 0x0200;
-
+ public final static int CONSTANT_Utf8 = 1;
+ public final static int CONSTANT_Integer = 3;
+ public final static int CONSTANT_Float = 4;
+ public final static int CONSTANT_Long = 5;
+ public final static int CONSTANT_Double = 6;
+ public final static int CONSTANT_Class = 7;
+ public final static int CONSTANT_String = 8;
+ public final static int CONSTANT_Fieldref = 9;
+ public final static int CONSTANT_Methodref = 10;
+ public final static int CONSTANT_InterfaceMethodref = 11;
+ public final static int CONSTANT_NameAndType = 12;
+ public final static int CONSTANT_MethodHandle = 15;
+ public final static int CONSTANT_MethodType = 16;
+ public final static int CONSTANT_InvokeDynamic = 18;
- // ----------------------------------------------------------------------
- // DEPENDENCY CONSTANTS
- // ----------------------------------------------------------------------
-
- public final static int DEP_CONSTANT = 0;
- public final static int DEP_UNKNOWN = 1;
- public final static int DEP_GENERAL = 2;
- public final static int DEP_PARAMS = 4;
- public final static int DEP_STATIC = 8;
+ // ----------------------------------------------------------------------
+ // MethodHandle reference_kind values
+ // ----------------------------------------------------------------------
- // ----------------------------------------------------------------------
- // INSTRUCTION GROUPS
- // ----------------------------------------------------------------------
-
- public final static int GROUP_GENERAL = 1;
- public final static int GROUP_JUMP = 2;
- public final static int GROUP_SWITCH = 3;
- public final static int GROUP_INVOCATION = 4;
- public final static int GROUP_FIELDACCESS = 5;
- public final static int GROUP_RETURN = 6;
-
- // ----------------------------------------------------------------------
- // POOL CONSTANTS
- // ----------------------------------------------------------------------
-
- public final static int CONSTANT_Utf8 = 1;
- public final static int CONSTANT_Integer = 3;
- public final static int CONSTANT_Float = 4;
- public final static int CONSTANT_Long = 5;
- public final static int CONSTANT_Double = 6;
- public final static int CONSTANT_Class = 7;
- public final static int CONSTANT_String = 8;
- public final static int CONSTANT_Fieldref = 9;
- public final static int CONSTANT_Methodref = 10;
- public final static int CONSTANT_InterfaceMethodref = 11;
- public final static int CONSTANT_NameAndType = 12;
- public final static int CONSTANT_MethodHandle = 15;
- public final static int CONSTANT_MethodType = 16;
- public final static int CONSTANT_InvokeDynamic = 18;
-
- // ----------------------------------------------------------------------
- // MethodHandle reference_kind values
- // ----------------------------------------------------------------------
+ public final static int CONSTANT_MethodHandle_REF_getField = 1;
+ public final static int CONSTANT_MethodHandle_REF_getStatic = 2;
+ public final static int CONSTANT_MethodHandle_REF_putField = 3;
+ public final static int CONSTANT_MethodHandle_REF_putStatic = 4;
+ public final static int CONSTANT_MethodHandle_REF_invokeVirtual = 5;
+ public final static int CONSTANT_MethodHandle_REF_invokeStatic = 6;
+ public final static int CONSTANT_MethodHandle_REF_invokeSpecial = 7;
+ public final static int CONSTANT_MethodHandle_REF_newInvokeSpecial = 8;
+ public final static int CONSTANT_MethodHandle_REF_invokeInterface = 9;
- public final static int CONSTANT_MethodHandle_REF_getField = 1;
- public final static int CONSTANT_MethodHandle_REF_getStatic = 2;
- public final static int CONSTANT_MethodHandle_REF_putField = 3;
- public final static int CONSTANT_MethodHandle_REF_putStatic = 4;
- public final static int CONSTANT_MethodHandle_REF_invokeVirtual = 5;
- public final static int CONSTANT_MethodHandle_REF_invokeStatic = 6;
- public final static int CONSTANT_MethodHandle_REF_invokeSpecial = 7;
- public final static int CONSTANT_MethodHandle_REF_newInvokeSpecial = 8;
- public final static int CONSTANT_MethodHandle_REF_invokeInterface = 9;
-
- // ----------------------------------------------------------------------
- // VM OPCODES
- // ----------------------------------------------------------------------
+ // ----------------------------------------------------------------------
+ // VM OPCODES
+ // ----------------------------------------------------------------------
- public final static int opc_nop = 0;
- public final static int opc_aconst_null = 1;
- public final static int opc_iconst_m1 = 2;
- public final static int opc_iconst_0 = 3;
- public final static int opc_iconst_1 = 4;
- public final static int opc_iconst_2 = 5;
- public final static int opc_iconst_3 = 6;
- public final static int opc_iconst_4 = 7;
- public final static int opc_iconst_5 = 8;
- public final static int opc_lconst_0 = 9;
- public final static int opc_lconst_1 = 10;
- public final static int opc_fconst_0 = 11;
- public final static int opc_fconst_1 = 12;
- public final static int opc_fconst_2 = 13;
- public final static int opc_dconst_0 = 14;
- public final static int opc_dconst_1 = 15;
- public final static int opc_bipush = 16;
- public final static int opc_sipush = 17;
- public final static int opc_ldc = 18;
- public final static int opc_ldc_w = 19;
- public final static int opc_ldc2_w = 20;
- public final static int opc_iload = 21;
- public final static int opc_lload = 22;
- public final static int opc_fload = 23;
- public final static int opc_dload = 24;
- public final static int opc_aload = 25;
- public final static int opc_iload_0 = 26;
- public final static int opc_iload_1 = 27;
- public final static int opc_iload_2 = 28;
- public final static int opc_iload_3 = 29;
- public final static int opc_lload_0 = 30;
- public final static int opc_lload_1 = 31;
- public final static int opc_lload_2 = 32;
- public final static int opc_lload_3 = 33;
- public final static int opc_fload_0 = 34;
- public final static int opc_fload_1 = 35;
- public final static int opc_fload_2 = 36;
- public final static int opc_fload_3 = 37;
- public final static int opc_dload_0 = 38;
- public final static int opc_dload_1 = 39;
- public final static int opc_dload_2 = 40;
- public final static int opc_dload_3 = 41;
- public final static int opc_aload_0 = 42;
- public final static int opc_aload_1 = 43;
- public final static int opc_aload_2 = 44;
- public final static int opc_aload_3 = 45;
- public final static int opc_iaload = 46;
- public final static int opc_laload = 47;
- public final static int opc_faload = 48;
- public final static int opc_daload = 49;
- public final static int opc_aaload = 50;
- public final static int opc_baload = 51;
- public final static int opc_caload = 52;
- public final static int opc_saload = 53;
- public final static int opc_istore = 54;
- public final static int opc_lstore = 55;
- public final static int opc_fstore = 56;
- public final static int opc_dstore = 57;
- public final static int opc_astore = 58;
- public final static int opc_istore_0 = 59;
- public final static int opc_istore_1 = 60;
- public final static int opc_istore_2 = 61;
- public final static int opc_istore_3 = 62;
- public final static int opc_lstore_0 = 63;
- public final static int opc_lstore_1 = 64;
- public final static int opc_lstore_2 = 65;
- public final static int opc_lstore_3 = 66;
- public final static int opc_fstore_0 = 67;
- public final static int opc_fstore_1 = 68;
- public final static int opc_fstore_2 = 69;
- public final static int opc_fstore_3 = 70;
- public final static int opc_dstore_0 = 71;
- public final static int opc_dstore_1 = 72;
- public final static int opc_dstore_2 = 73;
- public final static int opc_dstore_3 = 74;
- public final static int opc_astore_0 = 75;
- public final static int opc_astore_1 = 76;
- public final static int opc_astore_2 = 77;
- public final static int opc_astore_3 = 78;
- public final static int opc_iastore = 79;
- public final static int opc_lastore = 80;
- public final static int opc_fastore = 81;
- public final static int opc_dastore = 82;
- public final static int opc_aastore = 83;
- public final static int opc_bastore = 84;
- public final static int opc_castore = 85;
- public final static int opc_sastore = 86;
- public final static int opc_pop = 87;
- public final static int opc_pop2 = 88;
- public final static int opc_dup = 89;
- public final static int opc_dup_x1 = 90;
- public final static int opc_dup_x2 = 91;
- public final static int opc_dup2 = 92;
- public final static int opc_dup2_x1 = 93;
- public final static int opc_dup2_x2 = 94;
- public final static int opc_swap = 95;
- public final static int opc_iadd = 96;
- public final static int opc_ladd = 97;
- public final static int opc_fadd = 98;
- public final static int opc_dadd = 99;
- public final static int opc_isub = 100;
- public final static int opc_lsub = 101;
- public final static int opc_fsub = 102;
- public final static int opc_dsub = 103;
- public final static int opc_imul = 104;
- public final static int opc_lmul = 105;
- public final static int opc_fmul = 106;
- public final static int opc_dmul = 107;
- public final static int opc_idiv = 108;
- public final static int opc_ldiv = 109;
- public final static int opc_fdiv = 110;
- public final static int opc_ddiv = 111;
- public final static int opc_irem = 112;
- public final static int opc_lrem = 113;
- public final static int opc_frem = 114;
- public final static int opc_drem = 115;
- public final static int opc_ineg = 116;
- public final static int opc_lneg = 117;
- public final static int opc_fneg = 118;
- public final static int opc_dneg = 119;
- public final static int opc_ishl = 120;
- public final static int opc_lshl = 121;
- public final static int opc_ishr = 122;
- public final static int opc_lshr = 123;
- public final static int opc_iushr = 124;
- public final static int opc_lushr = 125;
- public final static int opc_iand = 126;
- public final static int opc_land = 127;
- public final static int opc_ior = 128;
- public final static int opc_lor = 129;
- public final static int opc_ixor = 130;
- public final static int opc_lxor = 131;
- public final static int opc_iinc = 132;
- public final static int opc_i2l = 133;
- public final static int opc_i2f = 134;
- public final static int opc_i2d = 135;
- public final static int opc_l2i = 136;
- public final static int opc_l2f = 137;
- public final static int opc_l2d = 138;
- public final static int opc_f2i = 139;
- public final static int opc_f2l = 140;
- public final static int opc_f2d = 141;
- public final static int opc_d2i = 142;
- public final static int opc_d2l = 143;
- public final static int opc_d2f = 144;
- public final static int opc_i2b = 145;
- public final static int opc_i2c = 146;
- public final static int opc_i2s = 147;
- public final static int opc_lcmp = 148;
- public final static int opc_fcmpl = 149;
- public final static int opc_fcmpg = 150;
- public final static int opc_dcmpl = 151;
- public final static int opc_dcmpg = 152;
- public final static int opc_ifeq = 153;
- public final static int opc_ifne = 154;
- public final static int opc_iflt = 155;
- public final static int opc_ifge = 156;
- public final static int opc_ifgt = 157;
- public final static int opc_ifle = 158;
- public final static int opc_if_icmpeq = 159;
- public final static int opc_if_icmpne = 160;
- public final static int opc_if_icmplt = 161;
- public final static int opc_if_icmpge = 162;
- public final static int opc_if_icmpgt = 163;
- public final static int opc_if_icmple = 164;
- public final static int opc_if_acmpeq = 165;
- public final static int opc_if_acmpne = 166;
- public final static int opc_goto = 167;
- public final static int opc_jsr = 168;
- public final static int opc_ret = 169;
- public final static int opc_tableswitch = 170;
- public final static int opc_lookupswitch = 171;
- public final static int opc_ireturn = 172;
- public final static int opc_lreturn = 173;
- public final static int opc_freturn = 174;
- public final static int opc_dreturn = 175;
- public final static int opc_areturn = 176;
- public final static int opc_return = 177;
- public final static int opc_getstatic = 178;
- public final static int opc_putstatic = 179;
- public final static int opc_getfield = 180;
- public final static int opc_putfield = 181;
- public final static int opc_invokevirtual = 182;
- public final static int opc_invokespecial = 183;
- public final static int opc_invokestatic = 184;
- public final static int opc_invokeinterface = 185;
- public final static int opc_invokedynamic = 186;
- public final static int opc_xxxunusedxxx = 186;
- public final static int opc_new = 187;
- public final static int opc_newarray = 188;
- public final static int opc_anewarray = 189;
- public final static int opc_arraylength = 190;
- public final static int opc_athrow = 191;
- public final static int opc_checkcast = 192;
- public final static int opc_instanceof = 193;
- public final static int opc_monitorenter = 194;
- public final static int opc_monitorexit = 195;
- public final static int opc_wide = 196;
- public final static int opc_multianewarray = 197;
- public final static int opc_ifnull = 198;
- public final static int opc_ifnonnull = 199;
- public final static int opc_goto_w = 200;
- public final static int opc_jsr_w = 201;
-
-
+ public final static int opc_nop = 0;
+ public final static int opc_aconst_null = 1;
+ public final static int opc_iconst_m1 = 2;
+ public final static int opc_iconst_0 = 3;
+ public final static int opc_iconst_1 = 4;
+ public final static int opc_iconst_2 = 5;
+ public final static int opc_iconst_3 = 6;
+ public final static int opc_iconst_4 = 7;
+ public final static int opc_iconst_5 = 8;
+ public final static int opc_lconst_0 = 9;
+ public final static int opc_lconst_1 = 10;
+ public final static int opc_fconst_0 = 11;
+ public final static int opc_fconst_1 = 12;
+ public final static int opc_fconst_2 = 13;
+ public final static int opc_dconst_0 = 14;
+ public final static int opc_dconst_1 = 15;
+ public final static int opc_bipush = 16;
+ public final static int opc_sipush = 17;
+ public final static int opc_ldc = 18;
+ public final static int opc_ldc_w = 19;
+ public final static int opc_ldc2_w = 20;
+ public final static int opc_iload = 21;
+ public final static int opc_lload = 22;
+ public final static int opc_fload = 23;
+ public final static int opc_dload = 24;
+ public final static int opc_aload = 25;
+ public final static int opc_iload_0 = 26;
+ public final static int opc_iload_1 = 27;
+ public final static int opc_iload_2 = 28;
+ public final static int opc_iload_3 = 29;
+ public final static int opc_lload_0 = 30;
+ public final static int opc_lload_1 = 31;
+ public final static int opc_lload_2 = 32;
+ public final static int opc_lload_3 = 33;
+ public final static int opc_fload_0 = 34;
+ public final static int opc_fload_1 = 35;
+ public final static int opc_fload_2 = 36;
+ public final static int opc_fload_3 = 37;
+ public final static int opc_dload_0 = 38;
+ public final static int opc_dload_1 = 39;
+ public final static int opc_dload_2 = 40;
+ public final static int opc_dload_3 = 41;
+ public final static int opc_aload_0 = 42;
+ public final static int opc_aload_1 = 43;
+ public final static int opc_aload_2 = 44;
+ public final static int opc_aload_3 = 45;
+ public final static int opc_iaload = 46;
+ public final static int opc_laload = 47;
+ public final static int opc_faload = 48;
+ public final static int opc_daload = 49;
+ public final static int opc_aaload = 50;
+ public final static int opc_baload = 51;
+ public final static int opc_caload = 52;
+ public final static int opc_saload = 53;
+ public final static int opc_istore = 54;
+ public final static int opc_lstore = 55;
+ public final static int opc_fstore = 56;
+ public final static int opc_dstore = 57;
+ public final static int opc_astore = 58;
+ public final static int opc_istore_0 = 59;
+ public final static int opc_istore_1 = 60;
+ public final static int opc_istore_2 = 61;
+ public final static int opc_istore_3 = 62;
+ public final static int opc_lstore_0 = 63;
+ public final static int opc_lstore_1 = 64;
+ public final static int opc_lstore_2 = 65;
+ public final static int opc_lstore_3 = 66;
+ public final static int opc_fstore_0 = 67;
+ public final static int opc_fstore_1 = 68;
+ public final static int opc_fstore_2 = 69;
+ public final static int opc_fstore_3 = 70;
+ public final static int opc_dstore_0 = 71;
+ public final static int opc_dstore_1 = 72;
+ public final static int opc_dstore_2 = 73;
+ public final static int opc_dstore_3 = 74;
+ public final static int opc_astore_0 = 75;
+ public final static int opc_astore_1 = 76;
+ public final static int opc_astore_2 = 77;
+ public final static int opc_astore_3 = 78;
+ public final static int opc_iastore = 79;
+ public final static int opc_lastore = 80;
+ public final static int opc_fastore = 81;
+ public final static int opc_dastore = 82;
+ public final static int opc_aastore = 83;
+ public final static int opc_bastore = 84;
+ public final static int opc_castore = 85;
+ public final static int opc_sastore = 86;
+ public final static int opc_pop = 87;
+ public final static int opc_pop2 = 88;
+ public final static int opc_dup = 89;
+ public final static int opc_dup_x1 = 90;
+ public final static int opc_dup_x2 = 91;
+ public final static int opc_dup2 = 92;
+ public final static int opc_dup2_x1 = 93;
+ public final static int opc_dup2_x2 = 94;
+ public final static int opc_swap = 95;
+ public final static int opc_iadd = 96;
+ public final static int opc_ladd = 97;
+ public final static int opc_fadd = 98;
+ public final static int opc_dadd = 99;
+ public final static int opc_isub = 100;
+ public final static int opc_lsub = 101;
+ public final static int opc_fsub = 102;
+ public final static int opc_dsub = 103;
+ public final static int opc_imul = 104;
+ public final static int opc_lmul = 105;
+ public final static int opc_fmul = 106;
+ public final static int opc_dmul = 107;
+ public final static int opc_idiv = 108;
+ public final static int opc_ldiv = 109;
+ public final static int opc_fdiv = 110;
+ public final static int opc_ddiv = 111;
+ public final static int opc_irem = 112;
+ public final static int opc_lrem = 113;
+ public final static int opc_frem = 114;
+ public final static int opc_drem = 115;
+ public final static int opc_ineg = 116;
+ public final static int opc_lneg = 117;
+ public final static int opc_fneg = 118;
+ public final static int opc_dneg = 119;
+ public final static int opc_ishl = 120;
+ public final static int opc_lshl = 121;
+ public final static int opc_ishr = 122;
+ public final static int opc_lshr = 123;
+ public final static int opc_iushr = 124;
+ public final static int opc_lushr = 125;
+ public final static int opc_iand = 126;
+ public final static int opc_land = 127;
+ public final static int opc_ior = 128;
+ public final static int opc_lor = 129;
+ public final static int opc_ixor = 130;
+ public final static int opc_lxor = 131;
+ public final static int opc_iinc = 132;
+ public final static int opc_i2l = 133;
+ public final static int opc_i2f = 134;
+ public final static int opc_i2d = 135;
+ public final static int opc_l2i = 136;
+ public final static int opc_l2f = 137;
+ public final static int opc_l2d = 138;
+ public final static int opc_f2i = 139;
+ public final static int opc_f2l = 140;
+ public final static int opc_f2d = 141;
+ public final static int opc_d2i = 142;
+ public final static int opc_d2l = 143;
+ public final static int opc_d2f = 144;
+ public final static int opc_i2b = 145;
+ public final static int opc_i2c = 146;
+ public final static int opc_i2s = 147;
+ public final static int opc_lcmp = 148;
+ public final static int opc_fcmpl = 149;
+ public final static int opc_fcmpg = 150;
+ public final static int opc_dcmpl = 151;
+ public final static int opc_dcmpg = 152;
+ public final static int opc_ifeq = 153;
+ public final static int opc_ifne = 154;
+ public final static int opc_iflt = 155;
+ public final static int opc_ifge = 156;
+ public final static int opc_ifgt = 157;
+ public final static int opc_ifle = 158;
+ public final static int opc_if_icmpeq = 159;
+ public final static int opc_if_icmpne = 160;
+ public final static int opc_if_icmplt = 161;
+ public final static int opc_if_icmpge = 162;
+ public final static int opc_if_icmpgt = 163;
+ public final static int opc_if_icmple = 164;
+ public final static int opc_if_acmpeq = 165;
+ public final static int opc_if_acmpne = 166;
+ public final static int opc_goto = 167;
+ public final static int opc_jsr = 168;
+ public final static int opc_ret = 169;
+ public final static int opc_tableswitch = 170;
+ public final static int opc_lookupswitch = 171;
+ public final static int opc_ireturn = 172;
+ public final static int opc_lreturn = 173;
+ public final static int opc_freturn = 174;
+ public final static int opc_dreturn = 175;
+ public final static int opc_areturn = 176;
+ public final static int opc_return = 177;
+ public final static int opc_getstatic = 178;
+ public final static int opc_putstatic = 179;
+ public final static int opc_getfield = 180;
+ public final static int opc_putfield = 181;
+ public final static int opc_invokevirtual = 182;
+ public final static int opc_invokespecial = 183;
+ public final static int opc_invokestatic = 184;
+ public final static int opc_invokeinterface = 185;
+ public final static int opc_invokedynamic = 186;
+ public final static int opc_xxxunusedxxx = 186;
+ public final static int opc_new = 187;
+ public final static int opc_newarray = 188;
+ public final static int opc_anewarray = 189;
+ public final static int opc_arraylength = 190;
+ public final static int opc_athrow = 191;
+ public final static int opc_checkcast = 192;
+ public final static int opc_instanceof = 193;
+ public final static int opc_monitorenter = 194;
+ public final static int opc_monitorexit = 195;
+ public final static int opc_wide = 196;
+ public final static int opc_multianewarray = 197;
+ public final static int opc_ifnull = 198;
+ public final static int opc_ifnonnull = 199;
+ public final static int opc_goto_w = 200;
+ public final static int opc_jsr_w = 201;
}
diff --git a/src/org/jetbrains/java/decompiler/code/ConstantsUtil.java b/src/org/jetbrains/java/decompiler/code/ConstantsUtil.java
index dcaea77..79eecdf 100644
--- a/src/org/jetbrains/java/decompiler/code/ConstantsUtil.java
+++ b/src/org/jetbrains/java/decompiler/code/ConstantsUtil.java
@@ -1,519 +1,482 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code;
-import org.jetbrains.java.decompiler.code.optinstructions.ALOAD;
-import org.jetbrains.java.decompiler.code.optinstructions.ANEWARRAY;
-import org.jetbrains.java.decompiler.code.optinstructions.ASTORE;
-import org.jetbrains.java.decompiler.code.optinstructions.BIPUSH;
-import org.jetbrains.java.decompiler.code.optinstructions.CHECKCAST;
-import org.jetbrains.java.decompiler.code.optinstructions.DLOAD;
-import org.jetbrains.java.decompiler.code.optinstructions.DSTORE;
-import org.jetbrains.java.decompiler.code.optinstructions.FLOAD;
-import org.jetbrains.java.decompiler.code.optinstructions.FSTORE;
-import org.jetbrains.java.decompiler.code.optinstructions.GETFIELD;
-import org.jetbrains.java.decompiler.code.optinstructions.GETSTATIC;
-import org.jetbrains.java.decompiler.code.optinstructions.GOTO;
-import org.jetbrains.java.decompiler.code.optinstructions.GOTO_W;
-import org.jetbrains.java.decompiler.code.optinstructions.IINC;
-import org.jetbrains.java.decompiler.code.optinstructions.ILOAD;
-import org.jetbrains.java.decompiler.code.optinstructions.INSTANCEOF;
-import org.jetbrains.java.decompiler.code.optinstructions.INVOKEDYNAMIC;
-import org.jetbrains.java.decompiler.code.optinstructions.INVOKEINTERFACE;
-import org.jetbrains.java.decompiler.code.optinstructions.INVOKESPECIAL;
-import org.jetbrains.java.decompiler.code.optinstructions.INVOKESTATIC;
-import org.jetbrains.java.decompiler.code.optinstructions.INVOKEVIRTUAL;
-import org.jetbrains.java.decompiler.code.optinstructions.ISTORE;
-import org.jetbrains.java.decompiler.code.optinstructions.JSR;
-import org.jetbrains.java.decompiler.code.optinstructions.JSR_W;
-import org.jetbrains.java.decompiler.code.optinstructions.LDC;
-import org.jetbrains.java.decompiler.code.optinstructions.LDC2_W;
-import org.jetbrains.java.decompiler.code.optinstructions.LDC_W;
-import org.jetbrains.java.decompiler.code.optinstructions.LLOAD;
-import org.jetbrains.java.decompiler.code.optinstructions.LOOKUPSWITCH;
-import org.jetbrains.java.decompiler.code.optinstructions.LSTORE;
-import org.jetbrains.java.decompiler.code.optinstructions.MULTIANEWARRAY;
-import org.jetbrains.java.decompiler.code.optinstructions.NEW;
-import org.jetbrains.java.decompiler.code.optinstructions.NEWARRAY;
-import org.jetbrains.java.decompiler.code.optinstructions.PUTFIELD;
-import org.jetbrains.java.decompiler.code.optinstructions.PUTSTATIC;
-import org.jetbrains.java.decompiler.code.optinstructions.RET;
-import org.jetbrains.java.decompiler.code.optinstructions.SIPUSH;
-import org.jetbrains.java.decompiler.code.optinstructions.TABLESWITCH;
+import org.jetbrains.java.decompiler.code.optinstructions.*;
public class ConstantsUtil {
-
- public static String getName(int opcode) {
- return opcodeNames[opcode];
- }
- public static Instruction getInstructionInstance(int opcode, boolean wide, int group, int bytecode_version, int[] operands) {
+ public static String getName(int opcode) {
+ return opcodeNames[opcode];
+ }
+
+ public static Instruction getInstructionInstance(int opcode, boolean wide, int group, int bytecode_version, int[] operands) {
+
+ Instruction instr = getInstructionInstance(opcode, bytecode_version);
+ instr.wide = wide;
+ instr.group = group;
+ instr.bytecode_version = bytecode_version;
+ instr.setOperands(operands);
+
+ return instr;
+ }
+
+ private static Instruction getInstructionInstance(int opcode, int bytecode_version) {
+ try {
+ Instruction instr;
+
+ if ((opcode >= CodeConstants.opc_ifeq &&
+ opcode <= CodeConstants.opc_if_acmpne) ||
+ opcode == CodeConstants.opc_ifnull ||
+ opcode == CodeConstants.opc_ifnonnull) {
+ instr = new IfInstruction();
+ }
+ else {
+
+ Class cl = opcodeClasses[opcode];
+
+ if (opcode == CodeConstants.opc_invokedynamic && bytecode_version < CodeConstants.BYTECODE_JAVA_7) {
+ cl = null; // instruction unused in Java 6 and before
+ }
- Instruction instr = getInstructionInstance(opcode, bytecode_version);
- instr.wide = wide;
- instr.group = group;
- instr.bytecode_version = bytecode_version;
- instr.setOperands(operands);
+ if (cl == null) {
+ instr = new Instruction();
+ }
+ else {
+ instr = (Instruction)cl.newInstance();
+ }
+ }
- return instr;
- }
-
- private static Instruction getInstructionInstance(int opcode, int bytecode_version) {
- try {
- Instruction instr;
-
- if((opcode >= CodeConstants.opc_ifeq &&
- opcode <= CodeConstants.opc_if_acmpne) ||
- opcode == CodeConstants.opc_ifnull ||
- opcode == CodeConstants.opc_ifnonnull) {
- instr = new IfInstruction();
- } else {
+ instr.opcode = opcode;
+ return instr;
+ }
+ catch (Exception ex) {
+ return null;
+ }
+ }
- Class cl = opcodeClasses[opcode];
-
- if(opcode == CodeConstants.opc_invokedynamic && bytecode_version < CodeConstants.BYTECODE_JAVA_7) {
- cl = null; // instruction unused in Java 6 and before
- }
-
- if(cl == null) {
- instr = new Instruction();
- } else {
- instr = (Instruction)cl.newInstance();
- }
- }
-
- instr.opcode = opcode;
- return instr;
- } catch (Exception ex) {
- return null;
- }
-
- }
-
- private static String[] opcodeNames = {
- "nop", // "nop",
- "aconst_null", // "aconst_null",
- "iconst_m1", // "iconst_m1",
- "iconst_0", // "iconst_0",
- "iconst_1", // "iconst_1",
- "iconst_2", // "iconst_2",
- "iconst_3", // "iconst_3",
- "iconst_4", // "iconst_4",
- "iconst_5", // "iconst_5",
- "lconst_0", // "lconst_0",
- "lconst_1", // "lconst_1",
- "fconst_0", // "fconst_0",
- "fconst_1", // "fconst_1",
- "fconst_2", // "fconst_2",
- "dconst_0", // "dconst_0",
- "dconst_1", // "dconst_1",
- "bipush", // "bipush",
- "sipush", // "sipush",
- "ldc", // "ldc",
- "ldc_w", // "ldc_w",
- "ldc2_w", // "ldc2_w",
- "iload", // "iload",
- "lload", // "lload",
- "fload", // "fload",
- "dload", // "dload",
- "aload", // "aload",
- "iload_0", // "iload_0",
- "iload_1", // "iload_1",
- "iload_2", // "iload_2",
- "iload_3", // "iload_3",
- "lload_0", // "lload_0",
- "lload_1", // "lload_1",
- "lload_2", // "lload_2",
- "lload_3", // "lload_3",
- "fload_0", // "fload_0",
- "fload_1", // "fload_1",
- "fload_2", // "fload_2",
- "fload_3", // "fload_3",
- "dload_0", // "dload_0",
- "dload_1", // "dload_1",
- "dload_2", // "dload_2",
- "dload_3", // "dload_3",
- "aload_0", // "aload_0",
- "aload_1", // "aload_1",
- "aload_2", // "aload_2",
- "aload_3", // "aload_3",
- "iaload", // "iaload",
- "laload", // "laload",
- "faload", // "faload",
- "daload", // "daload",
- "aaload", // "aaload",
- "baload", // "baload",
- "caload", // "caload",
- "saload", // "saload",
- "istore", // "istore",
- "lstore", // "lstore",
- "fstore", // "fstore",
- "dstore", // "dstore",
- "astore", // "astore",
- "istore_0", // "istore_0",
- "istore_1", // "istore_1",
- "istore_2", // "istore_2",
- "istore_3", // "istore_3",
- "lstore_0", // "lstore_0",
- "lstore_1", // "lstore_1",
- "lstore_2", // "lstore_2",
- "lstore_3", // "lstore_3",
- "fstore_0", // "fstore_0",
- "fstore_1", // "fstore_1",
- "fstore_2", // "fstore_2",
- "fstore_3", // "fstore_3",
- "dstore_0", // "dstore_0",
- "dstore_1", // "dstore_1",
- "dstore_2", // "dstore_2",
- "dstore_3", // "dstore_3",
- "astore_0", // "astore_0",
- "astore_1", // "astore_1",
- "astore_2", // "astore_2",
- "astore_3", // "astore_3",
- "iastore", // "iastore",
- "lastore", // "lastore",
- "fastore", // "fastore",
- "dastore", // "dastore",
- "aastore", // "aastore",
- "bastore", // "bastore",
- "castore", // "castore",
- "sastore", // "sastore",
- "pop", // "pop",
- "pop2", // "pop2",
- "dup", // "dup",
- "dup_x1", // "dup_x1",
- "dup_x2", // "dup_x2",
- "dup2", // "dup2",
- "dup2_x1", // "dup2_x1",
- "dup2_x2", // "dup2_x2",
- "swap", // "swap",
- "iadd", // "iadd",
- "ladd", // "ladd",
- "fadd", // "fadd",
- "dadd", // "dadd",
- "isub", // "isub",
- "lsub", // "lsub",
- "fsub", // "fsub",
- "dsub", // "dsub",
- "imul", // "imul",
- "lmul", // "lmul",
- "fmul", // "fmul",
- "dmul", // "dmul",
- "idiv", // "idiv",
- "ldiv", // "ldiv",
- "fdiv", // "fdiv",
- "ddiv", // "ddiv",
- "irem", // "irem",
- "lrem", // "lrem",
- "frem", // "frem",
- "drem", // "drem",
- "ineg", // "ineg",
- "lneg", // "lneg",
- "fneg", // "fneg",
- "dneg", // "dneg",
- "ishl", // "ishl",
- "lshl", // "lshl",
- "ishr", // "ishr",
- "lshr", // "lshr",
- "iushr", // "iushr",
- "lushr", // "lushr",
- "iand", // "iand",
- "land", // "land",
- "ior", // "ior",
- "lor", // "lor",
- "ixor", // "ixor",
- "lxor", // "lxor",
- "iinc", // "iinc",
- "i2l", // "i2l",
- "i2f", // "i2f",
- "i2d", // "i2d",
- "l2i", // "l2i",
- "l2f", // "l2f",
- "l2d", // "l2d",
- "f2i", // "f2i",
- "f2l", // "f2l",
- "f2d", // "f2d",
- "d2i", // "d2i",
- "d2l", // "d2l",
- "d2f", // "d2f",
- "i2b", // "i2b",
- "i2c", // "i2c",
- "i2s", // "i2s",
- "lcmp", // "lcmp",
- "fcmpl", // "fcmpl",
- "fcmpg", // "fcmpg",
- "dcmpl", // "dcmpl",
- "dcmpg", // "dcmpg",
- "ifeq", // "ifeq",
- "ifne", // "ifne",
- "iflt", // "iflt",
- "ifge", // "ifge",
- "ifgt", // "ifgt",
- "ifle", // "ifle",
- "if_icmpeq", // "if_icmpeq",
- "if_icmpne", // "if_icmpne",
- "if_icmplt", // "if_icmplt",
- "if_icmpge", // "if_icmpge",
- "if_icmpgt", // "if_icmpgt",
- "if_icmple", // "if_icmple",
- "if_acmpeq", // "if_acmpeq",
- "if_acmpne", // "if_acmpne",
- "goto", // "goto",
- "jsr", // "jsr",
- "ret", // "ret",
- "tableswitch", // "tableswitch",
- "lookupswitch", // "lookupswitch",
- "ireturn", // "ireturn",
- "lreturn", // "lreturn",
- "freturn", // "freturn",
- "dreturn", // "dreturn",
- "areturn", // "areturn",
- "return", // "return",
- "getstatic", // "getstatic",
- "putstatic", // "putstatic",
- "getfield", // "getfield",
- "putfield", // "putfield",
- "invokevirtual", // "invokevirtual",
- "invokespecial", // "invokespecial",
- "invokestatic", // "invokestatic",
- "invokeinterface", // "invokeinterface",
- //"xxxunusedxxx", // "xxxunusedxxx", Java 6 and before
- "invokedynamic", // "invokedynamic", Java 7 and later
- "new", // "new",
- "newarray", // "newarray",
- "anewarray", // "anewarray",
- "arraylength", // "arraylength",
- "athrow", // "athrow",
- "checkcast", // "checkcast",
- "instanceof", // "instanceof",
- "monitorenter", // "monitorenter",
- "monitorexit", // "monitorexit",
- "wide", // "wide",
- "multianewarray", // "multianewarray",
- "ifnull", // "ifnull",
- "ifnonnull", // "ifnonnull",
- "goto_w", // "goto_w",
- "jsr_w" // "jsr_w"
- };
+ private static String[] opcodeNames = {
+ "nop", // "nop",
+ "aconst_null", // "aconst_null",
+ "iconst_m1", // "iconst_m1",
+ "iconst_0", // "iconst_0",
+ "iconst_1", // "iconst_1",
+ "iconst_2", // "iconst_2",
+ "iconst_3", // "iconst_3",
+ "iconst_4", // "iconst_4",
+ "iconst_5", // "iconst_5",
+ "lconst_0", // "lconst_0",
+ "lconst_1", // "lconst_1",
+ "fconst_0", // "fconst_0",
+ "fconst_1", // "fconst_1",
+ "fconst_2", // "fconst_2",
+ "dconst_0", // "dconst_0",
+ "dconst_1", // "dconst_1",
+ "bipush", // "bipush",
+ "sipush", // "sipush",
+ "ldc", // "ldc",
+ "ldc_w", // "ldc_w",
+ "ldc2_w", // "ldc2_w",
+ "iload", // "iload",
+ "lload", // "lload",
+ "fload", // "fload",
+ "dload", // "dload",
+ "aload", // "aload",
+ "iload_0", // "iload_0",
+ "iload_1", // "iload_1",
+ "iload_2", // "iload_2",
+ "iload_3", // "iload_3",
+ "lload_0", // "lload_0",
+ "lload_1", // "lload_1",
+ "lload_2", // "lload_2",
+ "lload_3", // "lload_3",
+ "fload_0", // "fload_0",
+ "fload_1", // "fload_1",
+ "fload_2", // "fload_2",
+ "fload_3", // "fload_3",
+ "dload_0", // "dload_0",
+ "dload_1", // "dload_1",
+ "dload_2", // "dload_2",
+ "dload_3", // "dload_3",
+ "aload_0", // "aload_0",
+ "aload_1", // "aload_1",
+ "aload_2", // "aload_2",
+ "aload_3", // "aload_3",
+ "iaload", // "iaload",
+ "laload", // "laload",
+ "faload", // "faload",
+ "daload", // "daload",
+ "aaload", // "aaload",
+ "baload", // "baload",
+ "caload", // "caload",
+ "saload", // "saload",
+ "istore", // "istore",
+ "lstore", // "lstore",
+ "fstore", // "fstore",
+ "dstore", // "dstore",
+ "astore", // "astore",
+ "istore_0", // "istore_0",
+ "istore_1", // "istore_1",
+ "istore_2", // "istore_2",
+ "istore_3", // "istore_3",
+ "lstore_0", // "lstore_0",
+ "lstore_1", // "lstore_1",
+ "lstore_2", // "lstore_2",
+ "lstore_3", // "lstore_3",
+ "fstore_0", // "fstore_0",
+ "fstore_1", // "fstore_1",
+ "fstore_2", // "fstore_2",
+ "fstore_3", // "fstore_3",
+ "dstore_0", // "dstore_0",
+ "dstore_1", // "dstore_1",
+ "dstore_2", // "dstore_2",
+ "dstore_3", // "dstore_3",
+ "astore_0", // "astore_0",
+ "astore_1", // "astore_1",
+ "astore_2", // "astore_2",
+ "astore_3", // "astore_3",
+ "iastore", // "iastore",
+ "lastore", // "lastore",
+ "fastore", // "fastore",
+ "dastore", // "dastore",
+ "aastore", // "aastore",
+ "bastore", // "bastore",
+ "castore", // "castore",
+ "sastore", // "sastore",
+ "pop", // "pop",
+ "pop2", // "pop2",
+ "dup", // "dup",
+ "dup_x1", // "dup_x1",
+ "dup_x2", // "dup_x2",
+ "dup2", // "dup2",
+ "dup2_x1", // "dup2_x1",
+ "dup2_x2", // "dup2_x2",
+ "swap", // "swap",
+ "iadd", // "iadd",
+ "ladd", // "ladd",
+ "fadd", // "fadd",
+ "dadd", // "dadd",
+ "isub", // "isub",
+ "lsub", // "lsub",
+ "fsub", // "fsub",
+ "dsub", // "dsub",
+ "imul", // "imul",
+ "lmul", // "lmul",
+ "fmul", // "fmul",
+ "dmul", // "dmul",
+ "idiv", // "idiv",
+ "ldiv", // "ldiv",
+ "fdiv", // "fdiv",
+ "ddiv", // "ddiv",
+ "irem", // "irem",
+ "lrem", // "lrem",
+ "frem", // "frem",
+ "drem", // "drem",
+ "ineg", // "ineg",
+ "lneg", // "lneg",
+ "fneg", // "fneg",
+ "dneg", // "dneg",
+ "ishl", // "ishl",
+ "lshl", // "lshl",
+ "ishr", // "ishr",
+ "lshr", // "lshr",
+ "iushr", // "iushr",
+ "lushr", // "lushr",
+ "iand", // "iand",
+ "land", // "land",
+ "ior", // "ior",
+ "lor", // "lor",
+ "ixor", // "ixor",
+ "lxor", // "lxor",
+ "iinc", // "iinc",
+ "i2l", // "i2l",
+ "i2f", // "i2f",
+ "i2d", // "i2d",
+ "l2i", // "l2i",
+ "l2f", // "l2f",
+ "l2d", // "l2d",
+ "f2i", // "f2i",
+ "f2l", // "f2l",
+ "f2d", // "f2d",
+ "d2i", // "d2i",
+ "d2l", // "d2l",
+ "d2f", // "d2f",
+ "i2b", // "i2b",
+ "i2c", // "i2c",
+ "i2s", // "i2s",
+ "lcmp", // "lcmp",
+ "fcmpl", // "fcmpl",
+ "fcmpg", // "fcmpg",
+ "dcmpl", // "dcmpl",
+ "dcmpg", // "dcmpg",
+ "ifeq", // "ifeq",
+ "ifne", // "ifne",
+ "iflt", // "iflt",
+ "ifge", // "ifge",
+ "ifgt", // "ifgt",
+ "ifle", // "ifle",
+ "if_icmpeq", // "if_icmpeq",
+ "if_icmpne", // "if_icmpne",
+ "if_icmplt", // "if_icmplt",
+ "if_icmpge", // "if_icmpge",
+ "if_icmpgt", // "if_icmpgt",
+ "if_icmple", // "if_icmple",
+ "if_acmpeq", // "if_acmpeq",
+ "if_acmpne", // "if_acmpne",
+ "goto", // "goto",
+ "jsr", // "jsr",
+ "ret", // "ret",
+ "tableswitch", // "tableswitch",
+ "lookupswitch", // "lookupswitch",
+ "ireturn", // "ireturn",
+ "lreturn", // "lreturn",
+ "freturn", // "freturn",
+ "dreturn", // "dreturn",
+ "areturn", // "areturn",
+ "return", // "return",
+ "getstatic", // "getstatic",
+ "putstatic", // "putstatic",
+ "getfield", // "getfield",
+ "putfield", // "putfield",
+ "invokevirtual", // "invokevirtual",
+ "invokespecial", // "invokespecial",
+ "invokestatic", // "invokestatic",
+ "invokeinterface", // "invokeinterface",
+ //"xxxunusedxxx", // "xxxunusedxxx", Java 6 and before
+ "invokedynamic", // "invokedynamic", Java 7 and later
+ "new", // "new",
+ "newarray", // "newarray",
+ "anewarray", // "anewarray",
+ "arraylength", // "arraylength",
+ "athrow", // "athrow",
+ "checkcast", // "checkcast",
+ "instanceof", // "instanceof",
+ "monitorenter", // "monitorenter",
+ "monitorexit", // "monitorexit",
+ "wide", // "wide",
+ "multianewarray", // "multianewarray",
+ "ifnull", // "ifnull",
+ "ifnonnull", // "ifnonnull",
+ "goto_w", // "goto_w",
+ "jsr_w" // "jsr_w"
+ };
- private static Class[] opcodeClasses = {
- null, // "nop",
- null, // "aconst_null",
- null, // "iconst_m1",
- null, // "iconst_0",
- null, // "iconst_1",
- null, // "iconst_2",
- null, // "iconst_3",
- null, // "iconst_4",
- null, // "iconst_5",
- null, // "lconst_0",
- null, // "lconst_1",
- null, // "fconst_0",
- null, // "fconst_1",
- null, // "fconst_2",
- null, // "dconst_0",
- null, // "dconst_1",
- BIPUSH.class, // "bipush",
- SIPUSH.class, // "sipush",
- LDC.class, // "ldc",
- LDC_W.class, // "ldc_w",
- LDC2_W.class, // "ldc2_w",
- ILOAD.class, // "iload",
- LLOAD.class, // "lload",
- FLOAD.class, // "fload",
- DLOAD.class, // "dload",
- ALOAD.class, // "aload",
- null, // "iload_0",
- null, // "iload_1",
- null, // "iload_2",
- null, // "iload_3",
- null, // "lload_0",
- null, // "lload_1",
- null, // "lload_2",
- null, // "lload_3",
- null, // "fload_0",
- null, // "fload_1",
- null, // "fload_2",
- null, // "fload_3",
- null, // "dload_0",
- null, // "dload_1",
- null, // "dload_2",
- null, // "dload_3",
- null, // "aload_0",
- null, // "aload_1",
- null, // "aload_2",
- null, // "aload_3",
- null, // "iaload",
- null, // "laload",
- null, // "faload",
- null, // "daload",
- null, // "aaload",
- null, // "baload",
- null, // "caload",
- null, // "saload",
- ISTORE.class, // "istore",
- LSTORE.class, // "lstore",
- FSTORE.class, // "fstore",
- DSTORE.class, // "dstore",
- ASTORE.class, // "astore",
- null, // "istore_0",
- null, // "istore_1",
- null, // "istore_2",
- null, // "istore_3",
- null, // "lstore_0",
- null, // "lstore_1",
- null, // "lstore_2",
- null, // "lstore_3",
- null, // "fstore_0",
- null, // "fstore_1",
- null, // "fstore_2",
- null, // "fstore_3",
- null, // "dstore_0",
- null, // "dstore_1",
- null, // "dstore_2",
- null, // "dstore_3",
- null, // "astore_0",
- null, // "astore_1",
- null, // "astore_2",
- null, // "astore_3",
- null, // "iastore",
- null, // "lastore",
- null, // "fastore",
- null, // "dastore",
- null, // "aastore",
- null, // "bastore",
- null, // "castore",
- null, // "sastore",
- null, // "pop",
- null, // "pop2",
- null, // "dup",
- null, // "dup_x1",
- null, // "dup_x2",
- null, // "dup2",
- null, // "dup2_x1",
- null, // "dup2_x2",
- null, // "swap",
- null, // "iadd",
- null, // "ladd",
- null, // "fadd",
- null, // "dadd",
- null, // "isub",
- null, // "lsub",
- null, // "fsub",
- null, // "dsub",
- null, // "imul",
- null, // "lmul",
- null, // "fmul",
- null, // "dmul",
- null, // "idiv",
- null, // "ldiv",
- null, // "fdiv",
- null, // "ddiv",
- null, // "irem",
- null, // "lrem",
- null, // "frem",
- null, // "drem",
- null, // "ineg",
- null, // "lneg",
- null, // "fneg",
- null, // "dneg",
- null, // "ishl",
- null, // "lshl",
- null, // "ishr",
- null, // "lshr",
- null, // "iushr",
- null, // "lushr",
- null, // "iand",
- null, // "land",
- null, // "ior",
- null, // "lor",
- null, // "ixor",
- null, // "lxor",
- IINC.class, // "iinc",
- null, // "i2l",
- null, // "i2f",
- null, // "i2d",
- null, // "l2i",
- null, // "l2f",
- null, // "l2d",
- null, // "f2i",
- null, // "f2l",
- null, // "f2d",
- null, // "d2i",
- null, // "d2l",
- null, // "d2f",
- null, // "i2b",
- null, // "i2c",
- null, // "i2s",
- null, // "lcmp",
- null, // "fcmpl",
- null, // "fcmpg",
- null, // "dcmpl",
- null, // "dcmpg",
- null, // "ifeq",
- null, // "ifne",
- null, // "iflt",
- null, // "ifge",
- null, // "ifgt",
- null, // "ifle",
- null, // "if_icmpeq",
- null, // "if_icmpne",
- null, // "if_icmplt",
- null, // "if_icmpge",
- null, // "if_icmpgt",
- null, // "if_icmple",
- null, // "if_acmpeq",
- null, // "if_acmpne",
- GOTO.class, // "goto",
- JSR.class, // "jsr",
- RET.class, // "ret",
- TABLESWITCH.class, // "tableswitch",
- LOOKUPSWITCH.class, // "lookupswitch",
- null, // "ireturn",
- null, // "lreturn",
- null, // "freturn",
- null, // "dreturn",
- null, // "areturn",
- null, // "return",
- GETSTATIC.class, // "getstatic",
- PUTSTATIC.class, // "putstatic",
- GETFIELD.class, // "getfield",
- PUTFIELD.class, // "putfield",
- INVOKEVIRTUAL.class, // "invokevirtual",
- INVOKESPECIAL.class, // "invokespecial",
- INVOKESTATIC.class, // "invokestatic",
- INVOKEINTERFACE.class, // "invokeinterface",
- INVOKEDYNAMIC.class, // "xxxunusedxxx" Java 6 and before, "invokedynamic" Java 7 and later
- NEW.class, // "new",
- NEWARRAY.class, // "newarray",
- ANEWARRAY.class, // "anewarray",
- null, // "arraylength",
- null, // "athrow",
- CHECKCAST.class, // "checkcast",
- INSTANCEOF.class, // "instanceof",
- null, // "monitorenter",
- null, // "monitorexit",
- null, // "wide",
- MULTIANEWARRAY.class, // "multianewarray",
- null, // "ifnull",
- null, // "ifnonnull",
- GOTO_W.class, // "goto_w",
- JSR_W.class // "jsr_w"
- };
-
-
-
+ private static Class[] opcodeClasses = {
+ null, // "nop",
+ null, // "aconst_null",
+ null, // "iconst_m1",
+ null, // "iconst_0",
+ null, // "iconst_1",
+ null, // "iconst_2",
+ null, // "iconst_3",
+ null, // "iconst_4",
+ null, // "iconst_5",
+ null, // "lconst_0",
+ null, // "lconst_1",
+ null, // "fconst_0",
+ null, // "fconst_1",
+ null, // "fconst_2",
+ null, // "dconst_0",
+ null, // "dconst_1",
+ BIPUSH.class, // "bipush",
+ SIPUSH.class, // "sipush",
+ LDC.class, // "ldc",
+ LDC_W.class, // "ldc_w",
+ LDC2_W.class, // "ldc2_w",
+ ILOAD.class, // "iload",
+ LLOAD.class, // "lload",
+ FLOAD.class, // "fload",
+ DLOAD.class, // "dload",
+ ALOAD.class, // "aload",
+ null, // "iload_0",
+ null, // "iload_1",
+ null, // "iload_2",
+ null, // "iload_3",
+ null, // "lload_0",
+ null, // "lload_1",
+ null, // "lload_2",
+ null, // "lload_3",
+ null, // "fload_0",
+ null, // "fload_1",
+ null, // "fload_2",
+ null, // "fload_3",
+ null, // "dload_0",
+ null, // "dload_1",
+ null, // "dload_2",
+ null, // "dload_3",
+ null, // "aload_0",
+ null, // "aload_1",
+ null, // "aload_2",
+ null, // "aload_3",
+ null, // "iaload",
+ null, // "laload",
+ null, // "faload",
+ null, // "daload",
+ null, // "aaload",
+ null, // "baload",
+ null, // "caload",
+ null, // "saload",
+ ISTORE.class, // "istore",
+ LSTORE.class, // "lstore",
+ FSTORE.class, // "fstore",
+ DSTORE.class, // "dstore",
+ ASTORE.class, // "astore",
+ null, // "istore_0",
+ null, // "istore_1",
+ null, // "istore_2",
+ null, // "istore_3",
+ null, // "lstore_0",
+ null, // "lstore_1",
+ null, // "lstore_2",
+ null, // "lstore_3",
+ null, // "fstore_0",
+ null, // "fstore_1",
+ null, // "fstore_2",
+ null, // "fstore_3",
+ null, // "dstore_0",
+ null, // "dstore_1",
+ null, // "dstore_2",
+ null, // "dstore_3",
+ null, // "astore_0",
+ null, // "astore_1",
+ null, // "astore_2",
+ null, // "astore_3",
+ null, // "iastore",
+ null, // "lastore",
+ null, // "fastore",
+ null, // "dastore",
+ null, // "aastore",
+ null, // "bastore",
+ null, // "castore",
+ null, // "sastore",
+ null, // "pop",
+ null, // "pop2",
+ null, // "dup",
+ null, // "dup_x1",
+ null, // "dup_x2",
+ null, // "dup2",
+ null, // "dup2_x1",
+ null, // "dup2_x2",
+ null, // "swap",
+ null, // "iadd",
+ null, // "ladd",
+ null, // "fadd",
+ null, // "dadd",
+ null, // "isub",
+ null, // "lsub",
+ null, // "fsub",
+ null, // "dsub",
+ null, // "imul",
+ null, // "lmul",
+ null, // "fmul",
+ null, // "dmul",
+ null, // "idiv",
+ null, // "ldiv",
+ null, // "fdiv",
+ null, // "ddiv",
+ null, // "irem",
+ null, // "lrem",
+ null, // "frem",
+ null, // "drem",
+ null, // "ineg",
+ null, // "lneg",
+ null, // "fneg",
+ null, // "dneg",
+ null, // "ishl",
+ null, // "lshl",
+ null, // "ishr",
+ null, // "lshr",
+ null, // "iushr",
+ null, // "lushr",
+ null, // "iand",
+ null, // "land",
+ null, // "ior",
+ null, // "lor",
+ null, // "ixor",
+ null, // "lxor",
+ IINC.class, // "iinc",
+ null, // "i2l",
+ null, // "i2f",
+ null, // "i2d",
+ null, // "l2i",
+ null, // "l2f",
+ null, // "l2d",
+ null, // "f2i",
+ null, // "f2l",
+ null, // "f2d",
+ null, // "d2i",
+ null, // "d2l",
+ null, // "d2f",
+ null, // "i2b",
+ null, // "i2c",
+ null, // "i2s",
+ null, // "lcmp",
+ null, // "fcmpl",
+ null, // "fcmpg",
+ null, // "dcmpl",
+ null, // "dcmpg",
+ null, // "ifeq",
+ null, // "ifne",
+ null, // "iflt",
+ null, // "ifge",
+ null, // "ifgt",
+ null, // "ifle",
+ null, // "if_icmpeq",
+ null, // "if_icmpne",
+ null, // "if_icmplt",
+ null, // "if_icmpge",
+ null, // "if_icmpgt",
+ null, // "if_icmple",
+ null, // "if_acmpeq",
+ null, // "if_acmpne",
+ GOTO.class, // "goto",
+ JSR.class, // "jsr",
+ RET.class, // "ret",
+ TABLESWITCH.class, // "tableswitch",
+ LOOKUPSWITCH.class, // "lookupswitch",
+ null, // "ireturn",
+ null, // "lreturn",
+ null, // "freturn",
+ null, // "dreturn",
+ null, // "areturn",
+ null, // "return",
+ GETSTATIC.class, // "getstatic",
+ PUTSTATIC.class, // "putstatic",
+ GETFIELD.class, // "getfield",
+ PUTFIELD.class, // "putfield",
+ INVOKEVIRTUAL.class, // "invokevirtual",
+ INVOKESPECIAL.class, // "invokespecial",
+ INVOKESTATIC.class, // "invokestatic",
+ INVOKEINTERFACE.class, // "invokeinterface",
+ INVOKEDYNAMIC.class, // "xxxunusedxxx" Java 6 and before, "invokedynamic" Java 7 and later
+ NEW.class, // "new",
+ NEWARRAY.class, // "newarray",
+ ANEWARRAY.class, // "anewarray",
+ null, // "arraylength",
+ null, // "athrow",
+ CHECKCAST.class, // "checkcast",
+ INSTANCEOF.class, // "instanceof",
+ null, // "monitorenter",
+ null, // "monitorexit",
+ null, // "wide",
+ MULTIANEWARRAY.class, // "multianewarray",
+ null, // "ifnull",
+ null, // "ifnonnull",
+ GOTO_W.class, // "goto_w",
+ JSR_W.class // "jsr_w"
+ };
}
diff --git a/src/org/jetbrains/java/decompiler/code/ExceptionHandler.java b/src/org/jetbrains/java/decompiler/code/ExceptionHandler.java
index 87598ac..5c5b659 100644
--- a/src/org/jetbrains/java/decompiler/code/ExceptionHandler.java
+++ b/src/org/jetbrains/java/decompiler/code/ExceptionHandler.java
@@ -1,62 +1,63 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code;
+import org.jetbrains.java.decompiler.main.DecompilerContext;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.main.DecompilerContext;
-
public class ExceptionHandler {
- public int from = 0;
- public int to = 0;
- public int handler = 0;
-
- public int from_instr = 0;
- public int to_instr = 0;
- public int handler_instr = 0;
-
- public int class_index = 0;
- public String exceptionClass = null;
-
- public ExceptionHandler(){}
-
- public ExceptionHandler(int from_raw, int to_raw, int handler_raw, String exceptionClass) {
- this.from = from_raw;
- this.to = to_raw;
- this.handler = handler_raw;
- this.exceptionClass = exceptionClass;
- }
-
- public void writeToStream(DataOutputStream out) throws IOException {
- out.writeShort(from);
- out.writeShort(to);
- out.writeShort(handler);
- out.writeShort(class_index);
- }
-
- public String toString() {
-
- String new_line_separator = DecompilerContext.getNewLineSeparator();
-
- StringBuffer buf = new StringBuffer();
- buf.append("from: "+from+" to: "+to+" handler: "+handler+new_line_separator);
- buf.append("from_instr: "+from_instr+" to_instr: "+to_instr+" handler_instr: "+handler_instr+new_line_separator);
- buf.append("exceptionClass: "+exceptionClass+new_line_separator);
- return buf.toString();
- }
-
+ public int from = 0;
+ public int to = 0;
+ public int handler = 0;
+
+ public int from_instr = 0;
+ public int to_instr = 0;
+ public int handler_instr = 0;
+
+ public int class_index = 0;
+ public String exceptionClass = null;
+
+ public ExceptionHandler() {
+ }
+
+ public ExceptionHandler(int from_raw, int to_raw, int handler_raw, String exceptionClass) {
+ this.from = from_raw;
+ this.to = to_raw;
+ this.handler = handler_raw;
+ this.exceptionClass = exceptionClass;
+ }
+
+ public void writeToStream(DataOutputStream out) throws IOException {
+ out.writeShort(from);
+ out.writeShort(to);
+ out.writeShort(handler);
+ out.writeShort(class_index);
+ }
+
+ public String toString() {
+
+ String new_line_separator = DecompilerContext.getNewLineSeparator();
+
+ StringBuffer buf = new StringBuffer();
+ buf.append("from: " + from + " to: " + to + " handler: " + handler + new_line_separator);
+ buf.append("from_instr: " + from_instr + " to_instr: " + to_instr + " handler_instr: " + handler_instr + new_line_separator);
+ buf.append("exceptionClass: " + exceptionClass + new_line_separator);
+ return buf.toString();
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/ExceptionTable.java b/src/org/jetbrains/java/decompiler/code/ExceptionTable.java
index da8ec22..e828a7f 100644
--- a/src/org/jetbrains/java/decompiler/code/ExceptionTable.java
+++ b/src/org/jetbrains/java/decompiler/code/ExceptionTable.java
@@ -1,57 +1,58 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code;
-import java.util.ArrayList;
-import java.util.List;
-
import org.jetbrains.java.decompiler.code.interpreter.Util;
import org.jetbrains.java.decompiler.struct.StructContext;
+import java.util.ArrayList;
+import java.util.List;
+
public class ExceptionTable {
- private List<ExceptionHandler> handlers = new ArrayList<ExceptionHandler>();
-
- public ExceptionTable() {}
-
- public ExceptionTable(List<ExceptionHandler> handlers) {
- this.handlers = handlers;
- }
-
-
- public ExceptionHandler getHandlerByClass(StructContext context, int line, String valclass, boolean withany) {
-
- ExceptionHandler res = null; // no handler found
-
- for(ExceptionHandler handler : handlers) {
- if(handler.from<=line && handler.to>line) {
- String name = handler.exceptionClass;
-
- if((withany && name==null) || // any -> finally or synchronized handler
- (name!=null && Util.instanceOf(context, valclass, name))) {
- res = handler;
- break;
- }
- }
- }
-
- return res;
- }
-
- public List<ExceptionHandler> getHandlers() {
- return handlers;
- }
-
+ private List<ExceptionHandler> handlers = new ArrayList<ExceptionHandler>();
+
+ public ExceptionTable() {
+ }
+
+ public ExceptionTable(List<ExceptionHandler> handlers) {
+ this.handlers = handlers;
+ }
+
+
+ public ExceptionHandler getHandlerByClass(StructContext context, int line, String valclass, boolean withany) {
+
+ ExceptionHandler res = null; // no handler found
+
+ for (ExceptionHandler handler : handlers) {
+ if (handler.from <= line && handler.to > line) {
+ String name = handler.exceptionClass;
+
+ if ((withany && name == null) || // any -> finally or synchronized handler
+ (name != null && Util.instanceOf(context, valclass, name))) {
+ res = handler;
+ break;
+ }
+ }
+ }
+
+ return res;
+ }
+
+ public List<ExceptionHandler> getHandlers() {
+ return handlers;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/FullInstructionSequence.java b/src/org/jetbrains/java/decompiler/code/FullInstructionSequence.java
index f879fd0..eb8f819 100644
--- a/src/org/jetbrains/java/decompiler/code/FullInstructionSequence.java
+++ b/src/org/jetbrains/java/decompiler/code/FullInstructionSequence.java
@@ -1,17 +1,18 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code;
import org.jetbrains.java.decompiler.util.VBStyleCollection;
@@ -19,20 +20,19 @@ import org.jetbrains.java.decompiler.util.VBStyleCollection;
public class FullInstructionSequence extends InstructionSequence {
- // *****************************************************************************
- // constructors
- // *****************************************************************************
-
- public FullInstructionSequence(VBStyleCollection<Instruction, Integer> collinstr, ExceptionTable extable) {
- this.collinstr = collinstr;
- this.exceptionTable = extable;
-
- // translate raw exception handlers to instr
- for(ExceptionHandler handler : extable.getHandlers()) {
- handler.from_instr = this.getPointerByAbsOffset(handler.from);
- handler.to_instr = this.getPointerByAbsOffset(handler.to);
- handler.handler_instr = this.getPointerByAbsOffset(handler.handler);
- }
- }
+ // *****************************************************************************
+ // constructors
+ // *****************************************************************************
+
+ public FullInstructionSequence(VBStyleCollection<Instruction, Integer> collinstr, ExceptionTable extable) {
+ this.collinstr = collinstr;
+ this.exceptionTable = extable;
+ // translate raw exception handlers to instr
+ for (ExceptionHandler handler : extable.getHandlers()) {
+ handler.from_instr = this.getPointerByAbsOffset(handler.from);
+ handler.to_instr = this.getPointerByAbsOffset(handler.to);
+ handler.handler_instr = this.getPointerByAbsOffset(handler.handler);
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/IfInstruction.java b/src/org/jetbrains/java/decompiler/code/IfInstruction.java
index befae18..1d4bf6c 100644
--- a/src/org/jetbrains/java/decompiler/code/IfInstruction.java
+++ b/src/org/jetbrains/java/decompiler/code/IfInstruction.java
@@ -1,17 +1,18 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code;
import java.io.DataOutputStream;
@@ -24,13 +25,12 @@ import java.io.IOException;
public class IfInstruction extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opcode);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opcode);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/Instruction.java b/src/org/jetbrains/java/decompiler/code/Instruction.java
index faa8926..2c0be6b 100644
--- a/src/org/jetbrains/java/decompiler/code/Instruction.java
+++ b/src/org/jetbrains/java/decompiler/code/Instruction.java
@@ -1,17 +1,18 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code;
import java.io.DataOutputStream;
@@ -19,106 +20,107 @@ import java.io.IOException;
public class Instruction implements CodeConstants {
- // *****************************************************************************
- // public fields
- // *****************************************************************************
-
- public int opcode;
-
- public int group = CodeConstants.GROUP_GENERAL;
-
- public boolean wide = false;
-
- public int bytecode_version = BYTECODE_JAVA_LE_4;
-
- // *****************************************************************************
- // private fields
- // *****************************************************************************
-
- private int[] operands = null;
-
- // *****************************************************************************
- // public methods
- // *****************************************************************************
-
- public Instruction() {}
-
- public int length() {
- return 1;
- }
-
- public int operandsCount() {
- return (operands==null)?0:operands.length;
- }
-
- public int getOperand(int index) {
- return operands[index];
- }
-
- public Instruction clone() {
- return ConstantsUtil.getInstructionInstance(opcode, wide, group, bytecode_version, operands==null?null:(int[])operands.clone());
- }
-
- public String toString() {
-
- String res = wide?"@wide ":"";
- res+="@"+ConstantsUtil.getName(opcode);
-
- int len = operandsCount();
- for(int i=0;i<len;i++) {
- int op = operands[i];
- if(op<0) {
- res+=" -"+Integer.toHexString(-op);
- } else {
- res+=" "+Integer.toHexString(op);
- }
- }
-
- return res;
-
- }
-
- public boolean canFallthrough() {
- return opcode!=opc_goto && opcode!=opc_goto_w && opcode!=opc_ret &&
- !(opcode>=opc_ireturn && opcode<=opc_return) && opcode!=opc_athrow
- && opcode!=opc_jsr && opcode!=opc_tableswitch && opcode!=opc_lookupswitch;
- }
-
- public boolean equalsInstruction(Instruction instr) {
- if(opcode != instr.opcode || wide != instr.wide
- || operandsCount() != instr.operandsCount()) {
- return false;
- }
-
- if(operands != null) {
- for(int i=0;i<operands.length;i++) {
- if(operands[i] != instr.getOperand(i)) {
- return false;
- }
- }
- }
-
- return true;
- }
-
- // should be overwritten by subclasses
- public void initInstruction(InstructionSequence seq) {}
-
- // should be overwritten by subclasses
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opcode);
- }
-
- // *****************************************************************************
- // getter and setter methods
- // *****************************************************************************
-
- public int[] getOperands() {
- return operands;
- }
-
- public void setOperands(int[] operands) {
- this.operands = operands;
- }
-
+ // *****************************************************************************
+ // public fields
+ // *****************************************************************************
+
+ public int opcode;
+
+ public int group = CodeConstants.GROUP_GENERAL;
+
+ public boolean wide = false;
+
+ public int bytecode_version = BYTECODE_JAVA_LE_4;
+
+ // *****************************************************************************
+ // private fields
+ // *****************************************************************************
+
+ private int[] operands = null;
+
+ // *****************************************************************************
+ // public methods
+ // *****************************************************************************
+
+ public Instruction() {
+ }
+
+ public int length() {
+ return 1;
+ }
+
+ public int operandsCount() {
+ return (operands == null) ? 0 : operands.length;
+ }
+
+ public int getOperand(int index) {
+ return operands[index];
+ }
+
+ public Instruction clone() {
+ return ConstantsUtil.getInstructionInstance(opcode, wide, group, bytecode_version, operands == null ? null : (int[])operands.clone());
+ }
+
+ public String toString() {
+
+ String res = wide ? "@wide " : "";
+ res += "@" + ConstantsUtil.getName(opcode);
+
+ int len = operandsCount();
+ for (int i = 0; i < len; i++) {
+ int op = operands[i];
+ if (op < 0) {
+ res += " -" + Integer.toHexString(-op);
+ }
+ else {
+ res += " " + Integer.toHexString(op);
+ }
+ }
+
+ return res;
+ }
+
+ public boolean canFallthrough() {
+ return opcode != opc_goto && opcode != opc_goto_w && opcode != opc_ret &&
+ !(opcode >= opc_ireturn && opcode <= opc_return) && opcode != opc_athrow
+ && opcode != opc_jsr && opcode != opc_tableswitch && opcode != opc_lookupswitch;
+ }
+
+ public boolean equalsInstruction(Instruction instr) {
+ if (opcode != instr.opcode || wide != instr.wide
+ || operandsCount() != instr.operandsCount()) {
+ return false;
+ }
+
+ if (operands != null) {
+ for (int i = 0; i < operands.length; i++) {
+ if (operands[i] != instr.getOperand(i)) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ // should be overwritten by subclasses
+ public void initInstruction(InstructionSequence seq) {
+ }
+
+ // should be overwritten by subclasses
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opcode);
+ }
+
+ // *****************************************************************************
+ // getter and setter methods
+ // *****************************************************************************
+
+ public int[] getOperands() {
+ return operands;
+ }
+
+ public void setOperands(int[] operands) {
+ this.operands = operands;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/InstructionSequence.java b/src/org/jetbrains/java/decompiler/code/InstructionSequence.java
index 4c29820..696908c 100644
--- a/src/org/jetbrains/java/decompiler/code/InstructionSequence.java
+++ b/src/org/jetbrains/java/decompiler/code/InstructionSequence.java
@@ -1,219 +1,227 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
import org.jetbrains.java.decompiler.code.interpreter.Util;
import org.jetbrains.java.decompiler.main.DecompilerContext;
import org.jetbrains.java.decompiler.struct.StructContext;
import org.jetbrains.java.decompiler.util.InterpreterUtil;
import org.jetbrains.java.decompiler.util.VBStyleCollection;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
public abstract class InstructionSequence {
- // *****************************************************************************
- // private fields
- // *****************************************************************************
-
- protected VBStyleCollection<Instruction, Integer> collinstr = new VBStyleCollection<Instruction, Integer>();
-
- protected int pointer = 0;
-
- protected ExceptionTable exceptionTable = new ExceptionTable();
-
- // *****************************************************************************
- // public methods
- // *****************************************************************************
-
- // to nbe overwritten
- public InstructionSequence clone() {return null;}
-
- public void clear() {
- collinstr.clear();
- pointer = 0;
- exceptionTable = new ExceptionTable();
- }
-
- public void addInstruction(Instruction inst, int offset){
- collinstr.addWithKey(inst, offset);
- }
-
- public void addInstruction(int index, Instruction inst, int offset){
- collinstr.addWithKeyAndIndex(index, inst, offset);
- }
-
- public void addSequence(InstructionSequence seq){
- for(int i=0;i<seq.length();i++) {
- addInstruction(seq.getInstr(i), -1); // TODO: any sensible value possible?
- }
- }
-
- public void removeInstruction(int index) {
- collinstr.remove(index);
- }
-
- public Instruction getCurrentInstr() {
- return (Instruction)collinstr.get(pointer);
- }
-
- public Instruction getInstr(int index) {
- return (Instruction)collinstr.get(index);
- }
-
- public Instruction getLastInstr() {
- return (Instruction)collinstr.getLast();
- }
-
- public int getCurrentOffset() {
- return ((Integer)collinstr.getKey(pointer)).intValue();
- }
-
- public int getOffset(int index) {
- return ((Integer)collinstr.getKey(index)).intValue();
- }
-
- public int getPointerByAbsOffset(int offset) {
- Integer absoffset = new Integer(offset);
- if(collinstr.containsKey(absoffset)) {
- return collinstr.getIndexByKey(absoffset);
- } else {
- return -1;
- }
- }
-
- public int getPointerByRelOffset(int offset) {
- Integer absoffset = new Integer(((Integer)collinstr.getKey(pointer)).intValue()+offset);
- if(collinstr.containsKey(absoffset)) {
- return collinstr.getIndexByKey(absoffset);
- } else {
- return -1;
- }
- }
-
- public void setPointerByAbsOffset(int offset) {
- Integer absoffset = new Integer(((Integer)collinstr.getKey(pointer)).intValue()+offset);
- if(collinstr.containsKey(absoffset)) {
- pointer = collinstr.getIndexByKey(absoffset);
- }
- }
-
- public int length() {
- return collinstr.size();
- }
-
- public boolean isEmpty() {
- return collinstr.isEmpty();
- }
-
- public void addToPointer(int diff) {
- this.pointer += diff;
- }
-
- public String toString() {
- return toString(0);
- }
-
- public String toString(int indent) {
-
- String new_line_separator = DecompilerContext.getNewLineSeparator();
-
- StringBuffer buf = new StringBuffer();
-
- for(int i=0;i<collinstr.size();i++) {
- buf.append(InterpreterUtil.getIndentString(indent));
- buf.append(((Integer)collinstr.getKey(i)).intValue());
- buf.append(": ");
- buf.append(((Instruction)collinstr.get(i)).toString());
- buf.append(new_line_separator);
- }
-
- return buf.toString();
- }
-
- public void writeCodeToStream(DataOutputStream out) throws IOException {
-
- for(int i=0;i<collinstr.size();i++) {
- ((Instruction)collinstr.get(i)).writeToStream(out, ((Integer)collinstr.getKey(i)).intValue());
- }
- }
-
- public void writeExceptionsToStream(DataOutputStream out) throws IOException {
-
- List<ExceptionHandler> handlers = exceptionTable.getHandlers();
-
- out.writeShort(handlers.size());
- for(int i=0;i<handlers.size();i++) {
- ((ExceptionHandler)handlers.get(i)).writeToStream(out);
- }
- }
-
- public void sortHandlers(final StructContext context) {
-
- Collections.sort(exceptionTable.getHandlers(), new Comparator<ExceptionHandler>() {
-
- public int compare(ExceptionHandler handler0, ExceptionHandler handler1) {
-
- if(handler0.to == handler1.to) {
- if(handler0.exceptionClass == null) {
- return 1;
- } else {
- if(handler1.exceptionClass == null) {
- return -1;
- } else if(handler0.exceptionClass.equals(handler1.exceptionClass)){
- return (handler0.from > handler1.from)?-1:1; // invalid code
- } else {
- if(Util.instanceOf(context, handler0.exceptionClass, handler1.exceptionClass)) {
- return -1;
- } else {
- return 1;
- }
- }
- }
- } else {
- return (handler0.to > handler1.to)?1:-1;
- }
- }
- });
-
- }
-
-
- // *****************************************************************************
- // getter and setter methods
- // *****************************************************************************
-
- public int getPointer() {
- return pointer;
- }
-
- public void setPointer(int pointer) {
- this.pointer = pointer;
- }
-
- public ExceptionTable getExceptionTable() {
- return exceptionTable;
- }
-
- public void setExceptionTable(ExceptionTable exceptionTable) {
- this.exceptionTable = exceptionTable;
- }
-
+ // *****************************************************************************
+ // private fields
+ // *****************************************************************************
+
+ protected VBStyleCollection<Instruction, Integer> collinstr = new VBStyleCollection<Instruction, Integer>();
+
+ protected int pointer = 0;
+
+ protected ExceptionTable exceptionTable = new ExceptionTable();
+
+ // *****************************************************************************
+ // public methods
+ // *****************************************************************************
+
+ // to nbe overwritten
+ public InstructionSequence clone() {
+ return null;
+ }
+
+ public void clear() {
+ collinstr.clear();
+ pointer = 0;
+ exceptionTable = new ExceptionTable();
+ }
+
+ public void addInstruction(Instruction inst, int offset) {
+ collinstr.addWithKey(inst, offset);
+ }
+
+ public void addInstruction(int index, Instruction inst, int offset) {
+ collinstr.addWithKeyAndIndex(index, inst, offset);
+ }
+
+ public void addSequence(InstructionSequence seq) {
+ for (int i = 0; i < seq.length(); i++) {
+ addInstruction(seq.getInstr(i), -1); // TODO: any sensible value possible?
+ }
+ }
+
+ public void removeInstruction(int index) {
+ collinstr.remove(index);
+ }
+
+ public Instruction getCurrentInstr() {
+ return (Instruction)collinstr.get(pointer);
+ }
+
+ public Instruction getInstr(int index) {
+ return (Instruction)collinstr.get(index);
+ }
+
+ public Instruction getLastInstr() {
+ return (Instruction)collinstr.getLast();
+ }
+
+ public int getCurrentOffset() {
+ return ((Integer)collinstr.getKey(pointer)).intValue();
+ }
+
+ public int getOffset(int index) {
+ return ((Integer)collinstr.getKey(index)).intValue();
+ }
+
+ public int getPointerByAbsOffset(int offset) {
+ Integer absoffset = new Integer(offset);
+ if (collinstr.containsKey(absoffset)) {
+ return collinstr.getIndexByKey(absoffset);
+ }
+ else {
+ return -1;
+ }
+ }
+
+ public int getPointerByRelOffset(int offset) {
+ Integer absoffset = new Integer(((Integer)collinstr.getKey(pointer)).intValue() + offset);
+ if (collinstr.containsKey(absoffset)) {
+ return collinstr.getIndexByKey(absoffset);
+ }
+ else {
+ return -1;
+ }
+ }
+
+ public void setPointerByAbsOffset(int offset) {
+ Integer absoffset = new Integer(((Integer)collinstr.getKey(pointer)).intValue() + offset);
+ if (collinstr.containsKey(absoffset)) {
+ pointer = collinstr.getIndexByKey(absoffset);
+ }
+ }
+
+ public int length() {
+ return collinstr.size();
+ }
+
+ public boolean isEmpty() {
+ return collinstr.isEmpty();
+ }
+
+ public void addToPointer(int diff) {
+ this.pointer += diff;
+ }
+
+ public String toString() {
+ return toString(0);
+ }
+
+ public String toString(int indent) {
+
+ String new_line_separator = DecompilerContext.getNewLineSeparator();
+
+ StringBuffer buf = new StringBuffer();
+
+ for (int i = 0; i < collinstr.size(); i++) {
+ buf.append(InterpreterUtil.getIndentString(indent));
+ buf.append(((Integer)collinstr.getKey(i)).intValue());
+ buf.append(": ");
+ buf.append(((Instruction)collinstr.get(i)).toString());
+ buf.append(new_line_separator);
+ }
+
+ return buf.toString();
+ }
+
+ public void writeCodeToStream(DataOutputStream out) throws IOException {
+
+ for (int i = 0; i < collinstr.size(); i++) {
+ ((Instruction)collinstr.get(i)).writeToStream(out, ((Integer)collinstr.getKey(i)).intValue());
+ }
+ }
+
+ public void writeExceptionsToStream(DataOutputStream out) throws IOException {
+
+ List<ExceptionHandler> handlers = exceptionTable.getHandlers();
+
+ out.writeShort(handlers.size());
+ for (int i = 0; i < handlers.size(); i++) {
+ ((ExceptionHandler)handlers.get(i)).writeToStream(out);
+ }
+ }
+
+ public void sortHandlers(final StructContext context) {
+
+ Collections.sort(exceptionTable.getHandlers(), new Comparator<ExceptionHandler>() {
+
+ public int compare(ExceptionHandler handler0, ExceptionHandler handler1) {
+
+ if (handler0.to == handler1.to) {
+ if (handler0.exceptionClass == null) {
+ return 1;
+ }
+ else {
+ if (handler1.exceptionClass == null) {
+ return -1;
+ }
+ else if (handler0.exceptionClass.equals(handler1.exceptionClass)) {
+ return (handler0.from > handler1.from) ? -1 : 1; // invalid code
+ }
+ else {
+ if (Util.instanceOf(context, handler0.exceptionClass, handler1.exceptionClass)) {
+ return -1;
+ }
+ else {
+ return 1;
+ }
+ }
+ }
+ }
+ else {
+ return (handler0.to > handler1.to) ? 1 : -1;
+ }
+ }
+ });
+ }
+
+
+ // *****************************************************************************
+ // getter and setter methods
+ // *****************************************************************************
+
+ public int getPointer() {
+ return pointer;
+ }
+
+ public void setPointer(int pointer) {
+ this.pointer = pointer;
+ }
+
+ public ExceptionTable getExceptionTable() {
+ return exceptionTable;
+ }
+
+ public void setExceptionTable(ExceptionTable exceptionTable) {
+ this.exceptionTable = exceptionTable;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/JumpInstruction.java b/src/org/jetbrains/java/decompiler/code/JumpInstruction.java
index 2daeeeb..44f4ff9 100644
--- a/src/org/jetbrains/java/decompiler/code/JumpInstruction.java
+++ b/src/org/jetbrains/java/decompiler/code/JumpInstruction.java
@@ -1,17 +1,18 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code;
/*
@@ -23,19 +24,19 @@ package org.jetbrains.java.decompiler.code;
public class JumpInstruction extends Instruction {
- public int destination;
-
- public JumpInstruction() {}
-
- public void initInstruction(InstructionSequence seq) {
- destination = seq.getPointerByRelOffset(this.getOperand(0));
- }
-
- public JumpInstruction clone() {
- JumpInstruction newinstr = (JumpInstruction)super.clone();
-
- newinstr.destination = destination;
- return newinstr;
- }
-
+ public int destination;
+
+ public JumpInstruction() {
+ }
+
+ public void initInstruction(InstructionSequence seq) {
+ destination = seq.getPointerByRelOffset(this.getOperand(0));
+ }
+
+ public JumpInstruction clone() {
+ JumpInstruction newinstr = (JumpInstruction)super.clone();
+
+ newinstr.destination = destination;
+ return newinstr;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/SimpleInstructionSequence.java b/src/org/jetbrains/java/decompiler/code/SimpleInstructionSequence.java
index c082092..bcc3c4a 100644
--- a/src/org/jetbrains/java/decompiler/code/SimpleInstructionSequence.java
+++ b/src/org/jetbrains/java/decompiler/code/SimpleInstructionSequence.java
@@ -1,39 +1,39 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code;
import org.jetbrains.java.decompiler.util.VBStyleCollection;
public class SimpleInstructionSequence extends InstructionSequence {
- public SimpleInstructionSequence() {}
+ public SimpleInstructionSequence() {
+ }
+
+ public SimpleInstructionSequence(VBStyleCollection<Instruction, Integer> collinstr) {
+ this.collinstr = collinstr;
+ }
+
+ public SimpleInstructionSequence clone() {
+ SimpleInstructionSequence newseq = new SimpleInstructionSequence(collinstr.clone());
+ newseq.setPointer(this.getPointer());
- public SimpleInstructionSequence(VBStyleCollection<Instruction, Integer> collinstr) {
- this.collinstr = collinstr;
- }
-
- public SimpleInstructionSequence clone() {
- SimpleInstructionSequence newseq = new SimpleInstructionSequence(collinstr.clone());
- newseq.setPointer(this.getPointer());
-
- return newseq;
- }
+ return newseq;
+ }
- public void removeInstruction(int index) {
- collinstr.remove(index);
- }
-
-
+ public void removeInstruction(int index) {
+ collinstr.remove(index);
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/SwitchInstruction.java b/src/org/jetbrains/java/decompiler/code/SwitchInstruction.java
index 63d0f4c..6aa6a7f 100644
--- a/src/org/jetbrains/java/decompiler/code/SwitchInstruction.java
+++ b/src/org/jetbrains/java/decompiler/code/SwitchInstruction.java
@@ -1,17 +1,18 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code;
/*
@@ -20,74 +21,77 @@ package org.jetbrains.java.decompiler.code;
public class SwitchInstruction extends Instruction {
- private int[] destinations;
-
- private int[] values;
-
- private int defaultdest;
-
- public SwitchInstruction() {}
-
-
- public void initInstruction(InstructionSequence seq) {
-
- int pref = (opcode==CodeConstants.opc_tableswitch?3:2);
- int len = this.getOperands().length - pref;
- defaultdest = seq.getPointerByRelOffset(this.getOperand(0));
-
- int low = 0;
-
- if(opcode==CodeConstants.opc_lookupswitch) {
- len/=2;
- } else {
- low = this.getOperand(1);
- }
-
- destinations = new int[len];
- values = new int[len];
-
- for(int i=0,k=0;i<len;i++,k++) {
- if(opcode==CodeConstants.opc_lookupswitch){
- values[i] = this.getOperand(pref+k);
- k++;
- } else {
- values[i] = low+k;
- }
- destinations[i] = seq.getPointerByRelOffset(this.getOperand(pref+k));
- }
- }
-
- public SwitchInstruction clone() {
- SwitchInstruction newinstr = (SwitchInstruction)super.clone();
-
- newinstr.defaultdest = defaultdest;
- newinstr.destinations = destinations.clone();
- newinstr.values = values.clone();
-
- return newinstr;
- }
-
- public int[] getDestinations() {
- return destinations;
- }
-
- public void setDestinations(int[] destinations) {
- this.destinations = destinations;
- }
-
- public int getDefaultdest() {
- return defaultdest;
- }
-
- public void setDefaultdest(int defaultdest) {
- this.defaultdest = defaultdest;
- }
-
- public int[] getValues() {
- return values;
- }
-
- public void setValues(int[] values) {
- this.values = values;
- }
+ private int[] destinations;
+
+ private int[] values;
+
+ private int defaultdest;
+
+ public SwitchInstruction() {
+ }
+
+
+ public void initInstruction(InstructionSequence seq) {
+
+ int pref = (opcode == CodeConstants.opc_tableswitch ? 3 : 2);
+ int len = this.getOperands().length - pref;
+ defaultdest = seq.getPointerByRelOffset(this.getOperand(0));
+
+ int low = 0;
+
+ if (opcode == CodeConstants.opc_lookupswitch) {
+ len /= 2;
+ }
+ else {
+ low = this.getOperand(1);
+ }
+
+ destinations = new int[len];
+ values = new int[len];
+
+ for (int i = 0, k = 0; i < len; i++, k++) {
+ if (opcode == CodeConstants.opc_lookupswitch) {
+ values[i] = this.getOperand(pref + k);
+ k++;
+ }
+ else {
+ values[i] = low + k;
+ }
+ destinations[i] = seq.getPointerByRelOffset(this.getOperand(pref + k));
+ }
+ }
+
+ public SwitchInstruction clone() {
+ SwitchInstruction newinstr = (SwitchInstruction)super.clone();
+
+ newinstr.defaultdest = defaultdest;
+ newinstr.destinations = destinations.clone();
+ newinstr.values = values.clone();
+
+ return newinstr;
+ }
+
+ public int[] getDestinations() {
+ return destinations;
+ }
+
+ public void setDestinations(int[] destinations) {
+ this.destinations = destinations;
+ }
+
+ public int getDefaultdest() {
+ return defaultdest;
+ }
+
+ public void setDefaultdest(int defaultdest) {
+ this.defaultdest = defaultdest;
+ }
+
+ public int[] getValues() {
+ return values;
+ }
+
+ public void setValues(int[] values) {
+ this.values = values;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/cfg/BasicBlock.java b/src/org/jetbrains/java/decompiler/code/cfg/BasicBlock.java
index 917da08..f8bf793 100644
--- a/src/org/jetbrains/java/decompiler/code/cfg/BasicBlock.java
+++ b/src/org/jetbrains/java/decompiler/code/cfg/BasicBlock.java
@@ -1,265 +1,266 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.cfg;
-import java.util.ArrayList;
-import java.util.List;
-
import org.jetbrains.java.decompiler.code.Instruction;
import org.jetbrains.java.decompiler.code.InstructionSequence;
import org.jetbrains.java.decompiler.code.SimpleInstructionSequence;
import org.jetbrains.java.decompiler.main.DecompilerContext;
import org.jetbrains.java.decompiler.modules.decompiler.decompose.IGraphNode;
+import java.util.ArrayList;
+import java.util.List;
+
public class BasicBlock implements IGraphNode {
- // *****************************************************************************
- // public fields
- // *****************************************************************************
-
- public int id = 0;
-
- public int mark = 0;
-
- // *****************************************************************************
- // private fields
- // *****************************************************************************
-
- private InstructionSequence seq = new SimpleInstructionSequence();
-
- private List<BasicBlock> preds = new ArrayList<BasicBlock>();
-
- private List<BasicBlock> succs = new ArrayList<BasicBlock>();
-
- private List<Integer> instrOldOffsets = new ArrayList<Integer>();
-
- private List<BasicBlock> predExceptions = new ArrayList<BasicBlock>();
-
- private List<BasicBlock> succExceptions = new ArrayList<BasicBlock>();
-
-
-
- public BasicBlock() {}
-
- public BasicBlock(int id) {
- this.id = id;
- }
-
- // *****************************************************************************
- // public methods
- // *****************************************************************************
-
- public Object clone() {
-
- BasicBlock block = new BasicBlock();
- block.id = id;
- block.setSeq(seq.clone());
- block.setInstrOldOffsets(new ArrayList<Integer>(instrOldOffsets));
-
- return block;
- }
-
- public void free() {
- preds.clear();
- succs.clear();
- instrOldOffsets.clear();
- succExceptions.clear();
- seq = new SimpleInstructionSequence();
- }
-
- public Instruction getInstruction(int index) {
- return seq.getInstr(index);
- }
-
- public Instruction getLastInstruction() {
- if(seq.isEmpty()) {
- return null;
- } else {
- return seq.getLastInstr();
- }
- }
-
- public int size() {
- return seq.length();
- }
-
- public void addPredecessor(BasicBlock block) {
- preds.add(block);
- }
-
- public void removePredecessor(BasicBlock block) {
- while(preds.remove(block));
- }
-
- public void addSuccessor(BasicBlock block) {
- succs.add(block);
- block.addPredecessor(this);
- }
-
- public void removeSuccessor(BasicBlock block) {
- while(succs.remove(block));
- block.removePredecessor(this);
- }
-
- // FIXME: unify block comparisons: id or direkt equality
- public void replaceSuccessor(BasicBlock oldBlock, BasicBlock newBlock) {
- for(int i=0;i<succs.size();i++) {
- if(succs.get(i).id == oldBlock.id) {
- succs.set(i, newBlock);
- oldBlock.removePredecessor(this);
- newBlock.addPredecessor(this);
- }
- }
-
- for(int i=0;i<succExceptions.size();i++) {
- if(succExceptions.get(i).id == oldBlock.id) {
- succExceptions.set(i, newBlock);
- oldBlock.removePredecessorException(this);
- newBlock.addPredecessorException(this);
- }
- }
- }
-
- public void addPredecessorException(BasicBlock block) {
- predExceptions.add(block);
- }
-
- public void removePredecessorException(BasicBlock block) {
- while(predExceptions.remove(block));
- }
-
- public void addSuccessorException(BasicBlock block) {
- if(!succExceptions.contains(block)) {
- succExceptions.add(block);
- block.addPredecessorException(this);
- }
- }
-
- public void removeSuccessorException(BasicBlock block) {
- while(succExceptions.remove(block));
- block.removePredecessorException(this);
- }
-
- public String toString() {
- return toString(0);
- }
-
- public String toString(int indent) {
-
- String new_line_separator = DecompilerContext.getNewLineSeparator();
-
- return id+":" + new_line_separator +seq.toString(indent);
- }
-
- public String toStringOldIndices() {
-
- String new_line_separator = DecompilerContext.getNewLineSeparator();
-
- StringBuffer buf = new StringBuffer();
-
- for(int i=0;i<seq.length();i++) {
- if(i<instrOldOffsets.size()) {
- buf.append(instrOldOffsets.get(i));
- } else {
- buf.append("-1");
- }
- buf.append(": ");
- buf.append(seq.getInstr(i).toString());
- buf.append(new_line_separator);
- }
-
- return buf.toString();
- }
-
- public boolean isSuccessor(BasicBlock block) {
- for(BasicBlock succ : succs) {
- if(succ.id == block.id) {
- return true;
- }
- }
- return false;
- }
-
- public boolean isPredecessor(BasicBlock block) {
- for(int i=0;i<preds.size();i++) {
- if(preds.get(i).id == block.id) {
- return true;
- }
- }
- return false;
- }
-
- // *****************************************************************************
- // getter and setter methods
- // *****************************************************************************
-
- public List<Integer> getInstrOldOffsets() {
- return instrOldOffsets;
- }
-
- public void setInstrOldOffsets(List<Integer> instrInds) {
- this.instrOldOffsets = instrInds;
- }
-
- public List<? extends IGraphNode> getPredecessors() {
- List<BasicBlock> lst = new ArrayList<BasicBlock>(preds);
- lst.addAll(predExceptions);
- return lst;
- }
-
- public List<BasicBlock> getPreds() {
- return preds;
- }
-
- public void setPreds(List<BasicBlock> preds) {
- this.preds = preds;
- }
-
- public InstructionSequence getSeq() {
- return seq;
- }
-
- public void setSeq(InstructionSequence seq) {
- this.seq = seq;
- }
-
- public List<BasicBlock> getSuccs() {
- return succs;
- }
-
- public void setSuccs(List<BasicBlock> succs) {
- this.succs = succs;
- }
-
-
- public List<BasicBlock> getSuccExceptions() {
- return succExceptions;
- }
-
-
- public void setSuccExceptions(List<BasicBlock> succExceptions) {
- this.succExceptions = succExceptions;
- }
-
- public List<BasicBlock> getPredExceptions() {
- return predExceptions;
- }
-
- public void setPredExceptions(List<BasicBlock> predExceptions) {
- this.predExceptions = predExceptions;
- }
-
-
+ // *****************************************************************************
+ // public fields
+ // *****************************************************************************
+
+ public int id = 0;
+
+ public int mark = 0;
+
+ // *****************************************************************************
+ // private fields
+ // *****************************************************************************
+
+ private InstructionSequence seq = new SimpleInstructionSequence();
+
+ private List<BasicBlock> preds = new ArrayList<BasicBlock>();
+
+ private List<BasicBlock> succs = new ArrayList<BasicBlock>();
+
+ private List<Integer> instrOldOffsets = new ArrayList<Integer>();
+
+ private List<BasicBlock> predExceptions = new ArrayList<BasicBlock>();
+
+ private List<BasicBlock> succExceptions = new ArrayList<BasicBlock>();
+
+
+ public BasicBlock() {
+ }
+
+ public BasicBlock(int id) {
+ this.id = id;
+ }
+
+ // *****************************************************************************
+ // public methods
+ // *****************************************************************************
+
+ public Object clone() {
+
+ BasicBlock block = new BasicBlock();
+ block.id = id;
+ block.setSeq(seq.clone());
+ block.setInstrOldOffsets(new ArrayList<Integer>(instrOldOffsets));
+
+ return block;
+ }
+
+ public void free() {
+ preds.clear();
+ succs.clear();
+ instrOldOffsets.clear();
+ succExceptions.clear();
+ seq = new SimpleInstructionSequence();
+ }
+
+ public Instruction getInstruction(int index) {
+ return seq.getInstr(index);
+ }
+
+ public Instruction getLastInstruction() {
+ if (seq.isEmpty()) {
+ return null;
+ }
+ else {
+ return seq.getLastInstr();
+ }
+ }
+
+ public int size() {
+ return seq.length();
+ }
+
+ public void addPredecessor(BasicBlock block) {
+ preds.add(block);
+ }
+
+ public void removePredecessor(BasicBlock block) {
+ while (preds.remove(block)) ;
+ }
+
+ public void addSuccessor(BasicBlock block) {
+ succs.add(block);
+ block.addPredecessor(this);
+ }
+
+ public void removeSuccessor(BasicBlock block) {
+ while (succs.remove(block)) ;
+ block.removePredecessor(this);
+ }
+
+ // FIXME: unify block comparisons: id or direkt equality
+ public void replaceSuccessor(BasicBlock oldBlock, BasicBlock newBlock) {
+ for (int i = 0; i < succs.size(); i++) {
+ if (succs.get(i).id == oldBlock.id) {
+ succs.set(i, newBlock);
+ oldBlock.removePredecessor(this);
+ newBlock.addPredecessor(this);
+ }
+ }
+
+ for (int i = 0; i < succExceptions.size(); i++) {
+ if (succExceptions.get(i).id == oldBlock.id) {
+ succExceptions.set(i, newBlock);
+ oldBlock.removePredecessorException(this);
+ newBlock.addPredecessorException(this);
+ }
+ }
+ }
+
+ public void addPredecessorException(BasicBlock block) {
+ predExceptions.add(block);
+ }
+
+ public void removePredecessorException(BasicBlock block) {
+ while (predExceptions.remove(block)) ;
+ }
+
+ public void addSuccessorException(BasicBlock block) {
+ if (!succExceptions.contains(block)) {
+ succExceptions.add(block);
+ block.addPredecessorException(this);
+ }
+ }
+
+ public void removeSuccessorException(BasicBlock block) {
+ while (succExceptions.remove(block)) ;
+ block.removePredecessorException(this);
+ }
+
+ public String toString() {
+ return toString(0);
+ }
+
+ public String toString(int indent) {
+
+ String new_line_separator = DecompilerContext.getNewLineSeparator();
+
+ return id + ":" + new_line_separator + seq.toString(indent);
+ }
+
+ public String toStringOldIndices() {
+
+ String new_line_separator = DecompilerContext.getNewLineSeparator();
+
+ StringBuffer buf = new StringBuffer();
+
+ for (int i = 0; i < seq.length(); i++) {
+ if (i < instrOldOffsets.size()) {
+ buf.append(instrOldOffsets.get(i));
+ }
+ else {
+ buf.append("-1");
+ }
+ buf.append(": ");
+ buf.append(seq.getInstr(i).toString());
+ buf.append(new_line_separator);
+ }
+
+ return buf.toString();
+ }
+
+ public boolean isSuccessor(BasicBlock block) {
+ for (BasicBlock succ : succs) {
+ if (succ.id == block.id) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean isPredecessor(BasicBlock block) {
+ for (int i = 0; i < preds.size(); i++) {
+ if (preds.get(i).id == block.id) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ // *****************************************************************************
+ // getter and setter methods
+ // *****************************************************************************
+
+ public List<Integer> getInstrOldOffsets() {
+ return instrOldOffsets;
+ }
+
+ public void setInstrOldOffsets(List<Integer> instrInds) {
+ this.instrOldOffsets = instrInds;
+ }
+
+ public List<? extends IGraphNode> getPredecessors() {
+ List<BasicBlock> lst = new ArrayList<BasicBlock>(preds);
+ lst.addAll(predExceptions);
+ return lst;
+ }
+
+ public List<BasicBlock> getPreds() {
+ return preds;
+ }
+
+ public void setPreds(List<BasicBlock> preds) {
+ this.preds = preds;
+ }
+
+ public InstructionSequence getSeq() {
+ return seq;
+ }
+
+ public void setSeq(InstructionSequence seq) {
+ this.seq = seq;
+ }
+
+ public List<BasicBlock> getSuccs() {
+ return succs;
+ }
+
+ public void setSuccs(List<BasicBlock> succs) {
+ this.succs = succs;
+ }
+
+
+ public List<BasicBlock> getSuccExceptions() {
+ return succExceptions;
+ }
+
+
+ public void setSuccExceptions(List<BasicBlock> succExceptions) {
+ this.succExceptions = succExceptions;
+ }
+
+ public List<BasicBlock> getPredExceptions() {
+ return predExceptions;
+ }
+
+ public void setPredExceptions(List<BasicBlock> predExceptions) {
+ this.predExceptions = predExceptions;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/cfg/ControlFlowGraph.java b/src/org/jetbrains/java/decompiler/code/cfg/ControlFlowGraph.java
index 824e8af..6b0624f 100644
--- a/src/org/jetbrains/java/decompiler/code/cfg/ControlFlowGraph.java
+++ b/src/org/jetbrains/java/decompiler/code/cfg/ControlFlowGraph.java
@@ -1,37 +1,21 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.cfg;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import org.jetbrains.java.decompiler.code.CodeConstants;
-import org.jetbrains.java.decompiler.code.ExceptionHandler;
-import org.jetbrains.java.decompiler.code.Instruction;
-import org.jetbrains.java.decompiler.code.InstructionSequence;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-import org.jetbrains.java.decompiler.code.SimpleInstructionSequence;
-import org.jetbrains.java.decompiler.code.SwitchInstruction;
+import org.jetbrains.java.decompiler.code.*;
import org.jetbrains.java.decompiler.code.interpreter.InstructionImpact;
import org.jetbrains.java.decompiler.main.DecompilerContext;
import org.jetbrains.java.decompiler.modules.code.DeadCodeHelper;
@@ -42,846 +26,852 @@ import org.jetbrains.java.decompiler.struct.gen.VarType;
import org.jetbrains.java.decompiler.util.ListStack;
import org.jetbrains.java.decompiler.util.VBStyleCollection;
+import java.util.*;
+import java.util.Map.Entry;
+
public class ControlFlowGraph implements CodeConstants {
- public int last_id = 0;
-
- // *****************************************************************************
- // private fields
- // *****************************************************************************
-
- private VBStyleCollection<BasicBlock, Integer> blocks;
-
- private BasicBlock first;
-
- private BasicBlock last;
-
- private List<ExceptionRangeCFG> exceptions;
-
- private HashMap<BasicBlock, BasicBlock> subroutines;
-
- private HashSet<BasicBlock> finallyExits = new HashSet<BasicBlock>();
-
- // *****************************************************************************
- // constructors
- // *****************************************************************************
-
- public ControlFlowGraph(InstructionSequence seq) {
- buildBlocks(seq);
- }
-
-
- // *****************************************************************************
- // public methods
- // *****************************************************************************
-
- public void free() {
-
- for(BasicBlock block: blocks) {
- block.free();
- }
-
- blocks.clear();
- first = null;
- last = null;
- exceptions.clear();
- finallyExits.clear();
- }
-
- public void removeMarkers() {
- for(BasicBlock block: blocks) {
- block.mark = 0;
- }
- }
-
- public String toString() {
-
- String new_line_separator = DecompilerContext.getNewLineSeparator();
-
- StringBuffer buf = new StringBuffer();
-
- for(BasicBlock block: blocks) {
- buf.append("----- Block "+block.id+" -----" + new_line_separator);
- buf.append(block.toString());
- buf.append("----- Edges -----" + new_line_separator);
-
- List<BasicBlock> suc = block.getSuccs();
- for(int j=0;j<suc.size();j++) {
- buf.append(">>>>>>>>(regular) Block "+((BasicBlock)suc.get(j)).id+new_line_separator);
- }
- suc = block.getSuccExceptions();
- for(int j=0;j<suc.size();j++) {
- BasicBlock handler = (BasicBlock)suc.get(j);
- ExceptionRangeCFG range = getExceptionRange(handler, block);
-
- if(range == null) {
- buf.append(">>>>>>>>(exception) Block "+handler.id+"\t"+"ERROR: range not found!"+new_line_separator);
- } else {
- List<String> exceptionTypes = range.getExceptionTypes();
- if(exceptionTypes == null) {
- buf.append(">>>>>>>>(exception) Block "+handler.id+"\t"+"NULL"+new_line_separator);
- } else {
- for(String exceptionType : exceptionTypes) {
- buf.append(">>>>>>>>(exception) Block "+handler.id+"\t"+exceptionType+new_line_separator);
- }
- }
- }
- }
- buf.append("----- ----- -----" + new_line_separator);
-
- }
-
- return buf.toString();
-
- }
-
- public void inlineJsr(StructMethod mt) {
- processJsr();
- removeJsr(mt);
-
- removeMarkers();
-
- DeadCodeHelper.removeEmptyBlocks(this);
- }
-
- public void removeBlock(BasicBlock block) {
-
- while(block.getSuccs().size()>0) {
- block.removeSuccessor((BasicBlock)block.getSuccs().get(0));
- }
-
- while(block.getSuccExceptions().size()>0) {
- block.removeSuccessorException((BasicBlock)block.getSuccExceptions().get(0));
- }
-
- while(block.getPreds().size()>0) {
- ((BasicBlock)block.getPreds().get(0)).removeSuccessor(block);
- }
-
- while(block.getPredExceptions().size()>0) {
- ((BasicBlock)block.getPredExceptions().get(0)).removeSuccessorException(block);
- }
-
- last.removePredecessor(block);
-
- blocks.removeWithKey(block.id);
-
- for(int i=exceptions.size()-1;i>=0;i--) {
- ExceptionRangeCFG range = (ExceptionRangeCFG)exceptions.get(i);
- if(range.getHandler() == block) {
- exceptions.remove(i);
- } else {
- List<BasicBlock> lstRange = range.getProtectedRange();
- lstRange.remove(block);
-
- if(lstRange.isEmpty()) {
- exceptions.remove(i);
- }
- }
- }
-
- Iterator<Entry<BasicBlock, BasicBlock>> it = subroutines.entrySet().iterator();
- while(it.hasNext()) {
- Entry<BasicBlock, BasicBlock> ent = it.next();
- if(ent.getKey() == block || ent.getValue() == block) {
- it.remove();
- }
- }
-
- }
-
- public ExceptionRangeCFG getExceptionRange(BasicBlock handler, BasicBlock block) {
-
- //List<ExceptionRangeCFG> ranges = new ArrayList<ExceptionRangeCFG>();
-
- for(int i=exceptions.size()-1;i>=0;i--) {
- ExceptionRangeCFG range = exceptions.get(i);
- if(range.getHandler() == handler && range.getProtectedRange().contains(block)) {
- return range;
- //ranges.add(range);
- }
- }
-
- return null;
- //return ranges.isEmpty() ? null : ranges;
- }
-
-// public String getExceptionsUniqueString(BasicBlock handler, BasicBlock block) {
-//
-// List<ExceptionRangeCFG> ranges = getExceptionRange(handler, block);
-//
-// if(ranges == null) {
-// return null;
-// } else {
-// Set<String> setExceptionStrings = new HashSet<String>();
-// for(ExceptionRangeCFG range : ranges) {
-// setExceptionStrings.add(range.getExceptionType());
-// }
-//
-// String ret = "";
-// for(String exception : setExceptionStrings) {
-// ret += exception;
-// }
-//
-// return ret;
-// }
-// }
-
-
- // *****************************************************************************
- // private methods
- // *****************************************************************************
-
- private void buildBlocks(InstructionSequence instrseq) {
-
- short[] states = findStartInstructions(instrseq);
-
- HashMap<Integer, BasicBlock> mapInstrBlocks = new HashMap<Integer, BasicBlock>();
- VBStyleCollection<BasicBlock, Integer> colBlocks = createBasicBlocks(states, instrseq, mapInstrBlocks);
-
- blocks = colBlocks;
-
- connectBlocks(colBlocks, mapInstrBlocks);
-
- setExceptionEdges(instrseq, mapInstrBlocks);
-
- setSubroutineEdges();
-
- setFirstAndLastBlocks();
- }
-
- private short[] findStartInstructions(InstructionSequence seq) {
-
- int len = seq.length();
- short[] inststates = new short[len];
-
- HashSet<Integer> excSet = new HashSet<Integer>();
-
- for(ExceptionHandler handler : seq.getExceptionTable().getHandlers()) {
- excSet.add(handler.from_instr);
- excSet.add(handler.to_instr);
- excSet.add(handler.handler_instr);
- }
-
-
- for(int i=0;i<len;i++) {
-
- // exception blocks
- if(excSet.contains(new Integer(i))) {
- inststates[i] = 1;
- }
-
- Instruction instr = seq.getInstr(i);
- switch(instr.group){
- case GROUP_JUMP:
- inststates[((JumpInstruction)instr).destination] = 1;
- case GROUP_RETURN:
- if(i+1 < len) {
- inststates[i+1] = 1;
- }
- break;
- case GROUP_SWITCH:
- SwitchInstruction swinstr = (SwitchInstruction)instr;
- int[] dests = swinstr.getDestinations();
- for(int j=dests.length-1;j>=0;j--) {
- inststates[dests[j]] = 1;
- }
- inststates[swinstr.getDefaultdest()] = 1;
- if(i+1 < len) {
- inststates[i+1] = 1;
- }
- }
- }
-
- // first instruction
- inststates[0] = 1;
-
- return inststates;
- }
-
-
- private VBStyleCollection<BasicBlock, Integer> createBasicBlocks(short[] startblock, InstructionSequence instrseq,
- HashMap<Integer, BasicBlock> mapInstrBlocks) {
-
- VBStyleCollection<BasicBlock, Integer> col = new VBStyleCollection<BasicBlock, Integer>();
-
- InstructionSequence currseq = null;
- ArrayList<Integer> lstOffs = null;
-
- int len = startblock.length;
- short counter = 0;
- int blockoffset = 0;
-
- BasicBlock currentBlock = null;
- for(int i=0;i<len;i++) {
-
- if (startblock[i] == 1) {
- currentBlock = new BasicBlock();
- currentBlock.id = ++counter;
-
- currseq = new SimpleInstructionSequence();
- lstOffs = new ArrayList<Integer>();
-
- currentBlock.setSeq(currseq);
- currentBlock.setInstrOldOffsets(lstOffs);
- col.addWithKey(currentBlock, currentBlock.id);
-
- blockoffset = instrseq.getOffset(i);
- }
-
- startblock[i] = counter;
- mapInstrBlocks.put(i, currentBlock);
-
- currseq.addInstruction(instrseq.getInstr(i), instrseq.getOffset(i)-blockoffset);
- lstOffs.add(instrseq.getOffset(i));
- }
-
- last_id = counter;
-
- return col;
- }
-
-
- private void connectBlocks(List<BasicBlock> lstbb, HashMap<Integer, BasicBlock> mapInstrBlocks) {
-
- for(int i=0;i<lstbb.size();i++) {
-
- BasicBlock block = lstbb.get(i);
- Instruction instr = block.getLastInstruction();
-
- boolean fallthrough = instr.canFallthrough();
- BasicBlock bTemp;
-
- switch(instr.group) {
- case GROUP_JUMP:
- int dest = ((JumpInstruction)instr).destination;
- bTemp = mapInstrBlocks.get(dest);
- block.addSuccessor(bTemp);
-
- break;
- case GROUP_SWITCH:
- SwitchInstruction sinstr = (SwitchInstruction)instr;
- int[] dests = sinstr.getDestinations();
-
- bTemp = mapInstrBlocks.get(((SwitchInstruction)instr).getDefaultdest());
- block.addSuccessor(bTemp);
- for(int j=0;j<dests.length;j++) {
- bTemp = mapInstrBlocks.get(dests[j]);
- block.addSuccessor(bTemp);
- }
- }
-
- if(fallthrough && i<lstbb.size()-1) {
- BasicBlock defaultBlock = lstbb.get(i+1);
- block.addSuccessor(defaultBlock);
- }
- }
-
- }
-
- private void setExceptionEdges(InstructionSequence instrseq, HashMap<Integer, BasicBlock> instrBlocks) {
-
- exceptions = new ArrayList<ExceptionRangeCFG>();
-
- Map<String, ExceptionRangeCFG> mapRanges = new HashMap<String, ExceptionRangeCFG>();
-
- for(ExceptionHandler handler : instrseq.getExceptionTable().getHandlers()) {
-
- BasicBlock from = instrBlocks.get(handler.from_instr);
- BasicBlock to = instrBlocks.get(handler.to_instr);
- BasicBlock handle = instrBlocks.get(handler.handler_instr);
-
- String key = from.id + ":" + to.id + ":" + handle.id;
-
- if(mapRanges.containsKey(key)) {
- ExceptionRangeCFG range = mapRanges.get(key);
- range.addExceptionType(handler.exceptionClass);
- } else {
-
- List<BasicBlock> protectedRange = new ArrayList<BasicBlock>();
- for(int j=from.id;j<to.id;j++) {
- BasicBlock block = blocks.getWithKey(j);
- protectedRange.add(block);
- block.addSuccessorException(handle);
- }
-
- ExceptionRangeCFG range = new ExceptionRangeCFG(protectedRange, handle, handler.exceptionClass == null ? null : Arrays.asList(new String[]{handler.exceptionClass}));
- mapRanges.put(key, range);
-
- exceptions.add(range);
- }
- }
- }
-
- private void setSubroutineEdges() {
-
- final HashMap<BasicBlock, BasicBlock> subroutines = new HashMap<BasicBlock, BasicBlock>();
-
- for(BasicBlock block : blocks) {
-
- if(block.getSeq().getLastInstr().opcode == CodeConstants.opc_jsr) {
-
- LinkedList<BasicBlock> stack = new LinkedList<BasicBlock>();
- LinkedList<LinkedList<BasicBlock>> stackJsrStacks = new LinkedList<LinkedList<BasicBlock>>();
-
- HashSet<BasicBlock> setVisited = new HashSet<BasicBlock>();
-
- stack.add(block);
- stackJsrStacks.add(new LinkedList<BasicBlock>());
-
- while(!stack.isEmpty()) {
-
- BasicBlock node = stack.removeFirst();
- LinkedList<BasicBlock> jsrstack = stackJsrStacks.removeFirst();
-
- setVisited.add(node);
-
- switch(node.getSeq().getLastInstr().opcode) {
- case CodeConstants.opc_jsr:
- jsrstack.add(node);
- break;
- case CodeConstants.opc_ret:
- BasicBlock enter = jsrstack.getLast();
- BasicBlock exit = blocks.getWithKey(enter.id + 1); // FIXME: find successor in a better way
-
- if(exit!=null) {
- if(!node.isSuccessor(exit)) {
- node.addSuccessor(exit);
- }
- jsrstack.removeLast();
- subroutines.put(enter, exit);
- } else {
- throw new RuntimeException("ERROR: last instruction jsr");
- }
- }
-
- if(!jsrstack.isEmpty()) {
- for(BasicBlock succ : node.getSuccs()) {
- if(!setVisited.contains(succ)) {
- stack.add(succ);
- stackJsrStacks.add(new LinkedList<BasicBlock>(jsrstack));
- }
- }
- }
- }
- }
- }
-
- this.subroutines = subroutines;
- }
-
- private void processJsr() {
-
- while(processJsrRanges()!=0);
- }
-
- private int processJsrRanges() {
-
- List<Object[]> lstJsrAll = new ArrayList<Object[]>();
-
- // get all jsr ranges
- for(Entry<BasicBlock, BasicBlock> ent : subroutines.entrySet()){
- BasicBlock jsr = ent.getKey();
- BasicBlock ret = ent.getValue();
-
- lstJsrAll.add(new Object[]{jsr, getJsrRange(jsr, ret), ret});
- }
-
- // sort ranges
- // FIXME: better sort order
- List<Object[]> lstJsr = new ArrayList<Object[]>();
- for(Object[] arr : lstJsrAll) {
- int i=0;
- for(;i<lstJsr.size();i++) {
- Object[] arrJsr = lstJsr.get(i);
-
- if(((HashSet<BasicBlock>)arrJsr[1]).contains(arr[0])) {
- break;
- }
- }
-
- lstJsr.add(i, arr);
- }
-
- // find the first intersection
- for(int i=0;i<lstJsr.size();i++) {
- Object[] arr = (Object[])lstJsr.get(i);
- HashSet<BasicBlock> set = (HashSet<BasicBlock>)arr[1];
-
- for(int j=i+1;j<lstJsr.size();j++) {
- Object[] arr1 = (Object[])lstJsr.get(j);
- HashSet<BasicBlock> set1 = (HashSet<BasicBlock>)arr1[1];
-
- if(!set.contains(arr1[0]) && !set1.contains(arr[0])) { // rang 0 doesn't contain entry 1 and vice versa
- HashSet<BasicBlock> setc = new HashSet<BasicBlock>(set);
- setc.retainAll(set1);
-
- if(!setc.isEmpty()) {
- splitJsrRange((BasicBlock)arr[0], (BasicBlock)arr[2], setc);
- return 1;
- }
- }
- }
- }
-
- return 0;
- }
-
- private HashSet<BasicBlock> getJsrRange(BasicBlock jsr, BasicBlock ret) {
-
- HashSet<BasicBlock> blocks = new HashSet<BasicBlock>();
-
- LinkedList<BasicBlock> lstNodes = new LinkedList<BasicBlock>();
- lstNodes.add(jsr);
-
- BasicBlock dom = jsr.getSuccs().get(0);
-
- while(!lstNodes.isEmpty()) {
-
- BasicBlock node = lstNodes.remove(0);
-
- for(int j=0;j<2;j++) {
- List<BasicBlock> lst;
- if(j==0) {
- if(node.getLastInstruction().opcode == CodeConstants.opc_ret) {
- if(node.getSuccs().contains(ret)) {
- continue;
- }
- }
- lst = node.getSuccs();
- } else {
- if(node == jsr) {
- continue;
- }
- lst = node.getSuccExceptions();
- }
-
- CHILD:
- for(int i=lst.size()-1;i>=0;i--) {
-
- BasicBlock child = lst.get(i);
- if(!blocks.contains(child)) {
-
- if(node != jsr) {
- for(int k=0;k<child.getPreds().size();k++) {
- if(!DeadCodeHelper.isDominator(this, child.getPreds().get(k), dom)) {
- continue CHILD;
- }
- }
-
- for(int k=0;k<child.getPredExceptions().size();k++) {
- if(!DeadCodeHelper.isDominator(this, child.getPredExceptions().get(k), dom)) {
- continue CHILD;
- }
- }
- }
-
- // last block is a dummy one
- if(child!=last) {
- blocks.add(child);
- }
-
- lstNodes.add(child);
- }
- }
- }
- }
-
- return blocks;
- }
-
- private void splitJsrRange(BasicBlock jsr, BasicBlock ret, HashSet<BasicBlock> common_blocks) {
-
- LinkedList<BasicBlock> lstNodes = new LinkedList<BasicBlock>();
- HashMap<Integer, BasicBlock> mapNewNodes = new HashMap<Integer, BasicBlock>();
-
- lstNodes.add(jsr);
- mapNewNodes.put(jsr.id, jsr);
-
- while(!lstNodes.isEmpty()) {
-
- BasicBlock node = lstNodes.remove(0);
-
- for(int j=0;j<2;j++) {
- List<BasicBlock> lst;
- if(j==0) {
- if(node.getLastInstruction().opcode == CodeConstants.opc_ret) {
- if(node.getSuccs().contains(ret)) {
- continue;
- }
- }
- lst = node.getSuccs();
- } else {
- if(node == jsr) {
- continue;
- }
- lst = node.getSuccExceptions();
- }
-
-
- for(int i=lst.size()-1;i>=0;i--) {
-
- BasicBlock child = (BasicBlock)lst.get(i);
- Integer childid = child.id;
-
- if(mapNewNodes.containsKey(childid)) {
- node.replaceSuccessor(child, (BasicBlock)mapNewNodes.get(childid));
- } else if(common_blocks.contains(child)) {
-
- // make a copy of the current block
- BasicBlock copy = (BasicBlock)child.clone();
- copy.id = ++last_id;
- // copy all successors
- if(copy.getLastInstruction().opcode == CodeConstants.opc_ret &&
- child.getSuccs().contains(ret)) {
- copy.addSuccessor(ret);
- child.removeSuccessor(ret);
- } else {
- for(int k=0;k<child.getSuccs().size();k++) {
- copy.addSuccessor((BasicBlock)child.getSuccs().get(k));
- }
- }
- for(int k=0;k<child.getSuccExceptions().size();k++) {
- copy.addSuccessorException((BasicBlock)child.getSuccExceptions().get(k));
- }
-
- lstNodes.add(copy);
- mapNewNodes.put(childid, copy);
-
- if(last.getPreds().contains(child)) {
- last.addPredecessor(copy);
- }
-
- node.replaceSuccessor(child, copy);
- blocks.addWithKey(copy, copy.id);
- } else {
- // stop at the first fixed node
- //lstNodes.add(child);
- mapNewNodes.put(childid, child);
- }
- }
-
- }
- }
-
- // note: subroutines won't be copied!
- splitJsrExceptionRanges(common_blocks, mapNewNodes);
- }
-
- private void splitJsrExceptionRanges(HashSet<BasicBlock> common_blocks, HashMap<Integer, BasicBlock> mapNewNodes) {
-
- for(int i=exceptions.size()-1;i>=0;i--) {
-
- ExceptionRangeCFG range = (ExceptionRangeCFG)exceptions.get(i);
- List<BasicBlock> lstRange = range.getProtectedRange();
-
- HashSet<BasicBlock> setBoth = new HashSet<BasicBlock>(common_blocks);
- setBoth.retainAll(lstRange);
-
- if(setBoth.size()>0) {
- List<BasicBlock> lstNewRange;
-
- if(setBoth.size()==lstRange.size()) {
- lstNewRange = new ArrayList<BasicBlock>();
- ExceptionRangeCFG newRange = new ExceptionRangeCFG(lstNewRange,
- (BasicBlock)mapNewNodes.get(range.getHandler().id),range.getExceptionTypes());
- exceptions.add(newRange);
- } else {
- lstNewRange = lstRange;
- }
-
- for(BasicBlock block : setBoth) {
- lstNewRange.add(mapNewNodes.get(block.id));
- }
- }
- }
-
- }
-
- private void removeJsr(StructMethod mt) {
- removeJsrInstructions(mt.getClassStruct().getPool(), first, DataPoint.getInitialDataPoint(mt));
- }
-
- private void removeJsrInstructions(ConstantPool pool, BasicBlock block, DataPoint data) {
-
- ListStack<VarType> stack = data.getStack();
-
- InstructionSequence seq = block.getSeq();
- for(int i=0;i<seq.length();i++) {
- Instruction instr = seq.getInstr(i);
-
- VarType var = null;
- if(instr.opcode == CodeConstants.opc_astore || instr.opcode == CodeConstants.opc_pop) {
- var = stack.getByOffset(-1);
- }
-
- InstructionImpact.stepTypes(data, instr, pool);
-
- switch(instr.opcode) {
- case CodeConstants.opc_jsr:
- case CodeConstants.opc_ret:
- seq.removeInstruction(i);
- i--;
- break;
- case CodeConstants.opc_astore:
- case CodeConstants.opc_pop:
- if(var.type == CodeConstants.TYPE_ADDRESS) {
- seq.removeInstruction(i);
- i--;
- }
- }
-
- }
-
- block.mark = 1;
-
- for(int i=0;i<block.getSuccs().size();i++) {
- BasicBlock suc = (BasicBlock)block.getSuccs().get(i);
- if(suc.mark != 1) {
- removeJsrInstructions(pool, suc, data.copy());
- }
- }
-
- for(int i=0;i<block.getSuccExceptions().size();i++) {
- BasicBlock suc = (BasicBlock)block.getSuccExceptions().get(i);
- if(suc.mark != 1) {
-
- DataPoint point = new DataPoint();
- point.setLocalVariables(new ArrayList<VarType>(data.getLocalVariables()));
- point.getStack().push(new VarType(CodeConstants.TYPE_OBJECT, 0, null));
-
- removeJsrInstructions(pool, suc, point);
- }
- }
-
- }
-
- private void setFirstAndLastBlocks() {
-
- first = blocks.get(0);
-
- last = new BasicBlock();
- last.id = ++last_id;
- last.setSeq(new SimpleInstructionSequence());
-
- for(BasicBlock block: blocks) {
- if(block.getSuccs().isEmpty()) {
- last.addPredecessor(block);
- }
- }
- }
-
- public List<BasicBlock> getReversePostOrder() {
-
- LinkedList<BasicBlock> res = new LinkedList<BasicBlock>();
- addToReversePostOrderListIterative(first, res);
-
- return res;
- }
-
- private void addToReversePostOrderListIterative(BasicBlock root, List<BasicBlock> lst) {
-
- LinkedList<BasicBlock> stackNode = new LinkedList<BasicBlock>();
- LinkedList<Integer> stackIndex = new LinkedList<Integer>();
-
- HashSet<BasicBlock> setVisited = new HashSet<BasicBlock>();
-
- stackNode.add(root);
- stackIndex.add(0);
-
- while(!stackNode.isEmpty()) {
-
- BasicBlock node = stackNode.getLast();
- int index = stackIndex.removeLast();
-
- setVisited.add(node);
-
- List<BasicBlock> lstSuccs = new ArrayList<BasicBlock>(node.getSuccs());
- lstSuccs.addAll(node.getSuccExceptions());
-
- for(;index<lstSuccs.size();index++) {
- BasicBlock succ = lstSuccs.get(index);
-
- if(!setVisited.contains(succ)) {
- stackIndex.add(index+1);
-
- stackNode.add(succ);
- stackIndex.add(0);
-
- break;
- }
- }
-
- if(index == lstSuccs.size()) {
- lst.add(0, node);
-
- stackNode.removeLast();
- }
- }
-
- }
-
-
- // *****************************************************************************
- // getter and setter methods
- // *****************************************************************************
-
- public VBStyleCollection<BasicBlock, Integer> getBlocks() {
- return blocks;
- }
-
- public void setBlocks(VBStyleCollection<BasicBlock, Integer> blocks) {
- this.blocks = blocks;
- }
-
- public BasicBlock getFirst() {
- return first;
- }
-
- public void setFirst(BasicBlock first) {
- this.first = first;
- }
-
- public List<BasicBlock> getEndBlocks() {
- return last.getPreds();
- }
-
- public List<ExceptionRangeCFG> getExceptions() {
- return exceptions;
- }
-
- public void setExceptions(List<ExceptionRangeCFG> exceptions) {
- this.exceptions = exceptions;
- }
-
-
- public BasicBlock getLast() {
- return last;
- }
-
-
- public void setLast(BasicBlock last) {
- this.last = last;
- }
-
-
- public HashMap<BasicBlock, BasicBlock> getSubroutines() {
- return subroutines;
- }
-
-
- public void setSubroutines(HashMap<BasicBlock, BasicBlock> subroutines) {
- this.subroutines = subroutines;
- }
-
-
- public HashSet<BasicBlock> getFinallyExits() {
- return finallyExits;
- }
-
-
- public void setFinallyExits(HashSet<BasicBlock> finallyExits) {
- this.finallyExits = finallyExits;
- }
+ public int last_id = 0;
+
+ // *****************************************************************************
+ // private fields
+ // *****************************************************************************
+
+ private VBStyleCollection<BasicBlock, Integer> blocks;
+
+ private BasicBlock first;
+
+ private BasicBlock last;
+
+ private List<ExceptionRangeCFG> exceptions;
+
+ private HashMap<BasicBlock, BasicBlock> subroutines;
+
+ private HashSet<BasicBlock> finallyExits = new HashSet<BasicBlock>();
+
+ // *****************************************************************************
+ // constructors
+ // *****************************************************************************
+
+ public ControlFlowGraph(InstructionSequence seq) {
+ buildBlocks(seq);
+ }
+
+
+ // *****************************************************************************
+ // public methods
+ // *****************************************************************************
+
+ public void free() {
+
+ for (BasicBlock block : blocks) {
+ block.free();
+ }
+
+ blocks.clear();
+ first = null;
+ last = null;
+ exceptions.clear();
+ finallyExits.clear();
+ }
+
+ public void removeMarkers() {
+ for (BasicBlock block : blocks) {
+ block.mark = 0;
+ }
+ }
+
+ public String toString() {
+
+ String new_line_separator = DecompilerContext.getNewLineSeparator();
+
+ StringBuffer buf = new StringBuffer();
+
+ for (BasicBlock block : blocks) {
+ buf.append("----- Block " + block.id + " -----" + new_line_separator);
+ buf.append(block.toString());
+ buf.append("----- Edges -----" + new_line_separator);
+
+ List<BasicBlock> suc = block.getSuccs();
+ for (int j = 0; j < suc.size(); j++) {
+ buf.append(">>>>>>>>(regular) Block " + ((BasicBlock)suc.get(j)).id + new_line_separator);
+ }
+ suc = block.getSuccExceptions();
+ for (int j = 0; j < suc.size(); j++) {
+ BasicBlock handler = (BasicBlock)suc.get(j);
+ ExceptionRangeCFG range = getExceptionRange(handler, block);
+
+ if (range == null) {
+ buf.append(">>>>>>>>(exception) Block " + handler.id + "\t" + "ERROR: range not found!" + new_line_separator);
+ }
+ else {
+ List<String> exceptionTypes = range.getExceptionTypes();
+ if (exceptionTypes == null) {
+ buf.append(">>>>>>>>(exception) Block " + handler.id + "\t" + "NULL" + new_line_separator);
+ }
+ else {
+ for (String exceptionType : exceptionTypes) {
+ buf.append(">>>>>>>>(exception) Block " + handler.id + "\t" + exceptionType + new_line_separator);
+ }
+ }
+ }
+ }
+ buf.append("----- ----- -----" + new_line_separator);
+ }
+
+ return buf.toString();
+ }
+
+ public void inlineJsr(StructMethod mt) {
+ processJsr();
+ removeJsr(mt);
+
+ removeMarkers();
+
+ DeadCodeHelper.removeEmptyBlocks(this);
+ }
+
+ public void removeBlock(BasicBlock block) {
+
+ while (block.getSuccs().size() > 0) {
+ block.removeSuccessor((BasicBlock)block.getSuccs().get(0));
+ }
+
+ while (block.getSuccExceptions().size() > 0) {
+ block.removeSuccessorException((BasicBlock)block.getSuccExceptions().get(0));
+ }
+
+ while (block.getPreds().size() > 0) {
+ ((BasicBlock)block.getPreds().get(0)).removeSuccessor(block);
+ }
+
+ while (block.getPredExceptions().size() > 0) {
+ ((BasicBlock)block.getPredExceptions().get(0)).removeSuccessorException(block);
+ }
+
+ last.removePredecessor(block);
+
+ blocks.removeWithKey(block.id);
+
+ for (int i = exceptions.size() - 1; i >= 0; i--) {
+ ExceptionRangeCFG range = (ExceptionRangeCFG)exceptions.get(i);
+ if (range.getHandler() == block) {
+ exceptions.remove(i);
+ }
+ else {
+ List<BasicBlock> lstRange = range.getProtectedRange();
+ lstRange.remove(block);
+
+ if (lstRange.isEmpty()) {
+ exceptions.remove(i);
+ }
+ }
+ }
+
+ Iterator<Entry<BasicBlock, BasicBlock>> it = subroutines.entrySet().iterator();
+ while (it.hasNext()) {
+ Entry<BasicBlock, BasicBlock> ent = it.next();
+ if (ent.getKey() == block || ent.getValue() == block) {
+ it.remove();
+ }
+ }
+ }
+
+ public ExceptionRangeCFG getExceptionRange(BasicBlock handler, BasicBlock block) {
+
+ //List<ExceptionRangeCFG> ranges = new ArrayList<ExceptionRangeCFG>();
+
+ for (int i = exceptions.size() - 1; i >= 0; i--) {
+ ExceptionRangeCFG range = exceptions.get(i);
+ if (range.getHandler() == handler && range.getProtectedRange().contains(block)) {
+ return range;
+ //ranges.add(range);
+ }
+ }
+
+ return null;
+ //return ranges.isEmpty() ? null : ranges;
+ }
+
+ // public String getExceptionsUniqueString(BasicBlock handler, BasicBlock block) {
+ //
+ // List<ExceptionRangeCFG> ranges = getExceptionRange(handler, block);
+ //
+ // if(ranges == null) {
+ // return null;
+ // } else {
+ // Set<String> setExceptionStrings = new HashSet<String>();
+ // for(ExceptionRangeCFG range : ranges) {
+ // setExceptionStrings.add(range.getExceptionType());
+ // }
+ //
+ // String ret = "";
+ // for(String exception : setExceptionStrings) {
+ // ret += exception;
+ // }
+ //
+ // return ret;
+ // }
+ // }
+
+
+ // *****************************************************************************
+ // private methods
+ // *****************************************************************************
+
+ private void buildBlocks(InstructionSequence instrseq) {
+
+ short[] states = findStartInstructions(instrseq);
+
+ HashMap<Integer, BasicBlock> mapInstrBlocks = new HashMap<Integer, BasicBlock>();
+ VBStyleCollection<BasicBlock, Integer> colBlocks = createBasicBlocks(states, instrseq, mapInstrBlocks);
+
+ blocks = colBlocks;
+
+ connectBlocks(colBlocks, mapInstrBlocks);
+
+ setExceptionEdges(instrseq, mapInstrBlocks);
+
+ setSubroutineEdges();
+
+ setFirstAndLastBlocks();
+ }
+
+ private short[] findStartInstructions(InstructionSequence seq) {
+
+ int len = seq.length();
+ short[] inststates = new short[len];
+
+ HashSet<Integer> excSet = new HashSet<Integer>();
+
+ for (ExceptionHandler handler : seq.getExceptionTable().getHandlers()) {
+ excSet.add(handler.from_instr);
+ excSet.add(handler.to_instr);
+ excSet.add(handler.handler_instr);
+ }
+
+
+ for (int i = 0; i < len; i++) {
+
+ // exception blocks
+ if (excSet.contains(new Integer(i))) {
+ inststates[i] = 1;
+ }
+
+ Instruction instr = seq.getInstr(i);
+ switch (instr.group) {
+ case GROUP_JUMP:
+ inststates[((JumpInstruction)instr).destination] = 1;
+ case GROUP_RETURN:
+ if (i + 1 < len) {
+ inststates[i + 1] = 1;
+ }
+ break;
+ case GROUP_SWITCH:
+ SwitchInstruction swinstr = (SwitchInstruction)instr;
+ int[] dests = swinstr.getDestinations();
+ for (int j = dests.length - 1; j >= 0; j--) {
+ inststates[dests[j]] = 1;
+ }
+ inststates[swinstr.getDefaultdest()] = 1;
+ if (i + 1 < len) {
+ inststates[i + 1] = 1;
+ }
+ }
+ }
+
+ // first instruction
+ inststates[0] = 1;
+
+ return inststates;
+ }
+
+
+ private VBStyleCollection<BasicBlock, Integer> createBasicBlocks(short[] startblock, InstructionSequence instrseq,
+ HashMap<Integer, BasicBlock> mapInstrBlocks) {
+
+ VBStyleCollection<BasicBlock, Integer> col = new VBStyleCollection<BasicBlock, Integer>();
+
+ InstructionSequence currseq = null;
+ ArrayList<Integer> lstOffs = null;
+
+ int len = startblock.length;
+ short counter = 0;
+ int blockoffset = 0;
+
+ BasicBlock currentBlock = null;
+ for (int i = 0; i < len; i++) {
+
+ if (startblock[i] == 1) {
+ currentBlock = new BasicBlock();
+ currentBlock.id = ++counter;
+
+ currseq = new SimpleInstructionSequence();
+ lstOffs = new ArrayList<Integer>();
+
+ currentBlock.setSeq(currseq);
+ currentBlock.setInstrOldOffsets(lstOffs);
+ col.addWithKey(currentBlock, currentBlock.id);
+
+ blockoffset = instrseq.getOffset(i);
+ }
+
+ startblock[i] = counter;
+ mapInstrBlocks.put(i, currentBlock);
+
+ currseq.addInstruction(instrseq.getInstr(i), instrseq.getOffset(i) - blockoffset);
+ lstOffs.add(instrseq.getOffset(i));
+ }
+
+ last_id = counter;
+
+ return col;
+ }
+
+
+ private void connectBlocks(List<BasicBlock> lstbb, HashMap<Integer, BasicBlock> mapInstrBlocks) {
+
+ for (int i = 0; i < lstbb.size(); i++) {
+
+ BasicBlock block = lstbb.get(i);
+ Instruction instr = block.getLastInstruction();
+
+ boolean fallthrough = instr.canFallthrough();
+ BasicBlock bTemp;
+
+ switch (instr.group) {
+ case GROUP_JUMP:
+ int dest = ((JumpInstruction)instr).destination;
+ bTemp = mapInstrBlocks.get(dest);
+ block.addSuccessor(bTemp);
+
+ break;
+ case GROUP_SWITCH:
+ SwitchInstruction sinstr = (SwitchInstruction)instr;
+ int[] dests = sinstr.getDestinations();
+
+ bTemp = mapInstrBlocks.get(((SwitchInstruction)instr).getDefaultdest());
+ block.addSuccessor(bTemp);
+ for (int j = 0; j < dests.length; j++) {
+ bTemp = mapInstrBlocks.get(dests[j]);
+ block.addSuccessor(bTemp);
+ }
+ }
+
+ if (fallthrough && i < lstbb.size() - 1) {
+ BasicBlock defaultBlock = lstbb.get(i + 1);
+ block.addSuccessor(defaultBlock);
+ }
+ }
+ }
+
+ private void setExceptionEdges(InstructionSequence instrseq, HashMap<Integer, BasicBlock> instrBlocks) {
+
+ exceptions = new ArrayList<ExceptionRangeCFG>();
+
+ Map<String, ExceptionRangeCFG> mapRanges = new HashMap<String, ExceptionRangeCFG>();
+
+ for (ExceptionHandler handler : instrseq.getExceptionTable().getHandlers()) {
+
+ BasicBlock from = instrBlocks.get(handler.from_instr);
+ BasicBlock to = instrBlocks.get(handler.to_instr);
+ BasicBlock handle = instrBlocks.get(handler.handler_instr);
+
+ String key = from.id + ":" + to.id + ":" + handle.id;
+
+ if (mapRanges.containsKey(key)) {
+ ExceptionRangeCFG range = mapRanges.get(key);
+ range.addExceptionType(handler.exceptionClass);
+ }
+ else {
+
+ List<BasicBlock> protectedRange = new ArrayList<BasicBlock>();
+ for (int j = from.id; j < to.id; j++) {
+ BasicBlock block = blocks.getWithKey(j);
+ protectedRange.add(block);
+ block.addSuccessorException(handle);
+ }
+
+ ExceptionRangeCFG range = new ExceptionRangeCFG(protectedRange, handle, handler.exceptionClass == null
+ ? null
+ : Arrays.asList(new String[]{handler.exceptionClass}));
+ mapRanges.put(key, range);
+
+ exceptions.add(range);
+ }
+ }
+ }
+
+ private void setSubroutineEdges() {
+
+ final HashMap<BasicBlock, BasicBlock> subroutines = new HashMap<BasicBlock, BasicBlock>();
+
+ for (BasicBlock block : blocks) {
+
+ if (block.getSeq().getLastInstr().opcode == CodeConstants.opc_jsr) {
+
+ LinkedList<BasicBlock> stack = new LinkedList<BasicBlock>();
+ LinkedList<LinkedList<BasicBlock>> stackJsrStacks = new LinkedList<LinkedList<BasicBlock>>();
+
+ HashSet<BasicBlock> setVisited = new HashSet<BasicBlock>();
+
+ stack.add(block);
+ stackJsrStacks.add(new LinkedList<BasicBlock>());
+
+ while (!stack.isEmpty()) {
+
+ BasicBlock node = stack.removeFirst();
+ LinkedList<BasicBlock> jsrstack = stackJsrStacks.removeFirst();
+
+ setVisited.add(node);
+
+ switch (node.getSeq().getLastInstr().opcode) {
+ case CodeConstants.opc_jsr:
+ jsrstack.add(node);
+ break;
+ case CodeConstants.opc_ret:
+ BasicBlock enter = jsrstack.getLast();
+ BasicBlock exit = blocks.getWithKey(enter.id + 1); // FIXME: find successor in a better way
+
+ if (exit != null) {
+ if (!node.isSuccessor(exit)) {
+ node.addSuccessor(exit);
+ }
+ jsrstack.removeLast();
+ subroutines.put(enter, exit);
+ }
+ else {
+ throw new RuntimeException("ERROR: last instruction jsr");
+ }
+ }
+
+ if (!jsrstack.isEmpty()) {
+ for (BasicBlock succ : node.getSuccs()) {
+ if (!setVisited.contains(succ)) {
+ stack.add(succ);
+ stackJsrStacks.add(new LinkedList<BasicBlock>(jsrstack));
+ }
+ }
+ }
+ }
+ }
+ }
+
+ this.subroutines = subroutines;
+ }
+
+ private void processJsr() {
+
+ while (processJsrRanges() != 0) ;
+ }
+
+ private int processJsrRanges() {
+
+ List<Object[]> lstJsrAll = new ArrayList<Object[]>();
+
+ // get all jsr ranges
+ for (Entry<BasicBlock, BasicBlock> ent : subroutines.entrySet()) {
+ BasicBlock jsr = ent.getKey();
+ BasicBlock ret = ent.getValue();
+
+ lstJsrAll.add(new Object[]{jsr, getJsrRange(jsr, ret), ret});
+ }
+
+ // sort ranges
+ // FIXME: better sort order
+ List<Object[]> lstJsr = new ArrayList<Object[]>();
+ for (Object[] arr : lstJsrAll) {
+ int i = 0;
+ for (; i < lstJsr.size(); i++) {
+ Object[] arrJsr = lstJsr.get(i);
+
+ if (((HashSet<BasicBlock>)arrJsr[1]).contains(arr[0])) {
+ break;
+ }
+ }
+
+ lstJsr.add(i, arr);
+ }
+
+ // find the first intersection
+ for (int i = 0; i < lstJsr.size(); i++) {
+ Object[] arr = (Object[])lstJsr.get(i);
+ HashSet<BasicBlock> set = (HashSet<BasicBlock>)arr[1];
+
+ for (int j = i + 1; j < lstJsr.size(); j++) {
+ Object[] arr1 = (Object[])lstJsr.get(j);
+ HashSet<BasicBlock> set1 = (HashSet<BasicBlock>)arr1[1];
+
+ if (!set.contains(arr1[0]) && !set1.contains(arr[0])) { // rang 0 doesn't contain entry 1 and vice versa
+ HashSet<BasicBlock> setc = new HashSet<BasicBlock>(set);
+ setc.retainAll(set1);
+
+ if (!setc.isEmpty()) {
+ splitJsrRange((BasicBlock)arr[0], (BasicBlock)arr[2], setc);
+ return 1;
+ }
+ }
+ }
+ }
+
+ return 0;
+ }
+
+ private HashSet<BasicBlock> getJsrRange(BasicBlock jsr, BasicBlock ret) {
+
+ HashSet<BasicBlock> blocks = new HashSet<BasicBlock>();
+
+ LinkedList<BasicBlock> lstNodes = new LinkedList<BasicBlock>();
+ lstNodes.add(jsr);
+
+ BasicBlock dom = jsr.getSuccs().get(0);
+
+ while (!lstNodes.isEmpty()) {
+
+ BasicBlock node = lstNodes.remove(0);
+
+ for (int j = 0; j < 2; j++) {
+ List<BasicBlock> lst;
+ if (j == 0) {
+ if (node.getLastInstruction().opcode == CodeConstants.opc_ret) {
+ if (node.getSuccs().contains(ret)) {
+ continue;
+ }
+ }
+ lst = node.getSuccs();
+ }
+ else {
+ if (node == jsr) {
+ continue;
+ }
+ lst = node.getSuccExceptions();
+ }
+
+ CHILD:
+ for (int i = lst.size() - 1; i >= 0; i--) {
+
+ BasicBlock child = lst.get(i);
+ if (!blocks.contains(child)) {
+
+ if (node != jsr) {
+ for (int k = 0; k < child.getPreds().size(); k++) {
+ if (!DeadCodeHelper.isDominator(this, child.getPreds().get(k), dom)) {
+ continue CHILD;
+ }
+ }
+
+ for (int k = 0; k < child.getPredExceptions().size(); k++) {
+ if (!DeadCodeHelper.isDominator(this, child.getPredExceptions().get(k), dom)) {
+ continue CHILD;
+ }
+ }
+ }
+
+ // last block is a dummy one
+ if (child != last) {
+ blocks.add(child);
+ }
+
+ lstNodes.add(child);
+ }
+ }
+ }
+ }
+
+ return blocks;
+ }
+
+ private void splitJsrRange(BasicBlock jsr, BasicBlock ret, HashSet<BasicBlock> common_blocks) {
+
+ LinkedList<BasicBlock> lstNodes = new LinkedList<BasicBlock>();
+ HashMap<Integer, BasicBlock> mapNewNodes = new HashMap<Integer, BasicBlock>();
+
+ lstNodes.add(jsr);
+ mapNewNodes.put(jsr.id, jsr);
+
+ while (!lstNodes.isEmpty()) {
+
+ BasicBlock node = lstNodes.remove(0);
+
+ for (int j = 0; j < 2; j++) {
+ List<BasicBlock> lst;
+ if (j == 0) {
+ if (node.getLastInstruction().opcode == CodeConstants.opc_ret) {
+ if (node.getSuccs().contains(ret)) {
+ continue;
+ }
+ }
+ lst = node.getSuccs();
+ }
+ else {
+ if (node == jsr) {
+ continue;
+ }
+ lst = node.getSuccExceptions();
+ }
+
+
+ for (int i = lst.size() - 1; i >= 0; i--) {
+
+ BasicBlock child = (BasicBlock)lst.get(i);
+ Integer childid = child.id;
+
+ if (mapNewNodes.containsKey(childid)) {
+ node.replaceSuccessor(child, (BasicBlock)mapNewNodes.get(childid));
+ }
+ else if (common_blocks.contains(child)) {
+
+ // make a copy of the current block
+ BasicBlock copy = (BasicBlock)child.clone();
+ copy.id = ++last_id;
+ // copy all successors
+ if (copy.getLastInstruction().opcode == CodeConstants.opc_ret &&
+ child.getSuccs().contains(ret)) {
+ copy.addSuccessor(ret);
+ child.removeSuccessor(ret);
+ }
+ else {
+ for (int k = 0; k < child.getSuccs().size(); k++) {
+ copy.addSuccessor((BasicBlock)child.getSuccs().get(k));
+ }
+ }
+ for (int k = 0; k < child.getSuccExceptions().size(); k++) {
+ copy.addSuccessorException((BasicBlock)child.getSuccExceptions().get(k));
+ }
+
+ lstNodes.add(copy);
+ mapNewNodes.put(childid, copy);
+
+ if (last.getPreds().contains(child)) {
+ last.addPredecessor(copy);
+ }
+
+ node.replaceSuccessor(child, copy);
+ blocks.addWithKey(copy, copy.id);
+ }
+ else {
+ // stop at the first fixed node
+ //lstNodes.add(child);
+ mapNewNodes.put(childid, child);
+ }
+ }
+ }
+ }
+
+ // note: subroutines won't be copied!
+ splitJsrExceptionRanges(common_blocks, mapNewNodes);
+ }
+
+ private void splitJsrExceptionRanges(HashSet<BasicBlock> common_blocks, HashMap<Integer, BasicBlock> mapNewNodes) {
+
+ for (int i = exceptions.size() - 1; i >= 0; i--) {
+
+ ExceptionRangeCFG range = (ExceptionRangeCFG)exceptions.get(i);
+ List<BasicBlock> lstRange = range.getProtectedRange();
+
+ HashSet<BasicBlock> setBoth = new HashSet<BasicBlock>(common_blocks);
+ setBoth.retainAll(lstRange);
+
+ if (setBoth.size() > 0) {
+ List<BasicBlock> lstNewRange;
+
+ if (setBoth.size() == lstRange.size()) {
+ lstNewRange = new ArrayList<BasicBlock>();
+ ExceptionRangeCFG newRange = new ExceptionRangeCFG(lstNewRange,
+ (BasicBlock)mapNewNodes.get(range.getHandler().id), range.getExceptionTypes());
+ exceptions.add(newRange);
+ }
+ else {
+ lstNewRange = lstRange;
+ }
+
+ for (BasicBlock block : setBoth) {
+ lstNewRange.add(mapNewNodes.get(block.id));
+ }
+ }
+ }
+ }
+
+ private void removeJsr(StructMethod mt) {
+ removeJsrInstructions(mt.getClassStruct().getPool(), first, DataPoint.getInitialDataPoint(mt));
+ }
+
+ private void removeJsrInstructions(ConstantPool pool, BasicBlock block, DataPoint data) {
+
+ ListStack<VarType> stack = data.getStack();
+
+ InstructionSequence seq = block.getSeq();
+ for (int i = 0; i < seq.length(); i++) {
+ Instruction instr = seq.getInstr(i);
+
+ VarType var = null;
+ if (instr.opcode == CodeConstants.opc_astore || instr.opcode == CodeConstants.opc_pop) {
+ var = stack.getByOffset(-1);
+ }
+
+ InstructionImpact.stepTypes(data, instr, pool);
+
+ switch (instr.opcode) {
+ case CodeConstants.opc_jsr:
+ case CodeConstants.opc_ret:
+ seq.removeInstruction(i);
+ i--;
+ break;
+ case CodeConstants.opc_astore:
+ case CodeConstants.opc_pop:
+ if (var.type == CodeConstants.TYPE_ADDRESS) {
+ seq.removeInstruction(i);
+ i--;
+ }
+ }
+ }
+
+ block.mark = 1;
+
+ for (int i = 0; i < block.getSuccs().size(); i++) {
+ BasicBlock suc = (BasicBlock)block.getSuccs().get(i);
+ if (suc.mark != 1) {
+ removeJsrInstructions(pool, suc, data.copy());
+ }
+ }
+
+ for (int i = 0; i < block.getSuccExceptions().size(); i++) {
+ BasicBlock suc = (BasicBlock)block.getSuccExceptions().get(i);
+ if (suc.mark != 1) {
+
+ DataPoint point = new DataPoint();
+ point.setLocalVariables(new ArrayList<VarType>(data.getLocalVariables()));
+ point.getStack().push(new VarType(CodeConstants.TYPE_OBJECT, 0, null));
+
+ removeJsrInstructions(pool, suc, point);
+ }
+ }
+ }
+
+ private void setFirstAndLastBlocks() {
+
+ first = blocks.get(0);
+
+ last = new BasicBlock();
+ last.id = ++last_id;
+ last.setSeq(new SimpleInstructionSequence());
+
+ for (BasicBlock block : blocks) {
+ if (block.getSuccs().isEmpty()) {
+ last.addPredecessor(block);
+ }
+ }
+ }
+
+ public List<BasicBlock> getReversePostOrder() {
+
+ LinkedList<BasicBlock> res = new LinkedList<BasicBlock>();
+ addToReversePostOrderListIterative(first, res);
+
+ return res;
+ }
+
+ private void addToReversePostOrderListIterative(BasicBlock root, List<BasicBlock> lst) {
+
+ LinkedList<BasicBlock> stackNode = new LinkedList<BasicBlock>();
+ LinkedList<Integer> stackIndex = new LinkedList<Integer>();
+
+ HashSet<BasicBlock> setVisited = new HashSet<BasicBlock>();
+
+ stackNode.add(root);
+ stackIndex.add(0);
+
+ while (!stackNode.isEmpty()) {
+
+ BasicBlock node = stackNode.getLast();
+ int index = stackIndex.removeLast();
+
+ setVisited.add(node);
+
+ List<BasicBlock> lstSuccs = new ArrayList<BasicBlock>(node.getSuccs());
+ lstSuccs.addAll(node.getSuccExceptions());
+
+ for (; index < lstSuccs.size(); index++) {
+ BasicBlock succ = lstSuccs.get(index);
+
+ if (!setVisited.contains(succ)) {
+ stackIndex.add(index + 1);
+
+ stackNode.add(succ);
+ stackIndex.add(0);
+
+ break;
+ }
+ }
+
+ if (index == lstSuccs.size()) {
+ lst.add(0, node);
+
+ stackNode.removeLast();
+ }
+ }
+ }
+
+
+ // *****************************************************************************
+ // getter and setter methods
+ // *****************************************************************************
+
+ public VBStyleCollection<BasicBlock, Integer> getBlocks() {
+ return blocks;
+ }
+
+ public void setBlocks(VBStyleCollection<BasicBlock, Integer> blocks) {
+ this.blocks = blocks;
+ }
+
+ public BasicBlock getFirst() {
+ return first;
+ }
+
+ public void setFirst(BasicBlock first) {
+ this.first = first;
+ }
+
+ public List<BasicBlock> getEndBlocks() {
+ return last.getPreds();
+ }
+
+ public List<ExceptionRangeCFG> getExceptions() {
+ return exceptions;
+ }
+
+ public void setExceptions(List<ExceptionRangeCFG> exceptions) {
+ this.exceptions = exceptions;
+ }
+
+
+ public BasicBlock getLast() {
+ return last;
+ }
+
+
+ public void setLast(BasicBlock last) {
+ this.last = last;
+ }
+
+
+ public HashMap<BasicBlock, BasicBlock> getSubroutines() {
+ return subroutines;
+ }
+
+
+ public void setSubroutines(HashMap<BasicBlock, BasicBlock> subroutines) {
+ this.subroutines = subroutines;
+ }
+
+
+ public HashSet<BasicBlock> getFinallyExits() {
+ return finallyExits;
+ }
+
+ public void setFinallyExits(HashSet<BasicBlock> finallyExits) {
+ this.finallyExits = finallyExits;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/cfg/ExceptionRangeCFG.java b/src/org/jetbrains/java/decompiler/code/cfg/ExceptionRangeCFG.java
index 53f4a77..7d83ef6 100644
--- a/src/org/jetbrains/java/decompiler/code/cfg/ExceptionRangeCFG.java
+++ b/src/org/jetbrains/java/decompiler/code/cfg/ExceptionRangeCFG.java
@@ -1,128 +1,129 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.cfg;
+import org.jetbrains.java.decompiler.main.DecompilerContext;
+
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import org.jetbrains.java.decompiler.main.DecompilerContext;
-
public class ExceptionRangeCFG {
-
- private List<BasicBlock> protectedRange = new ArrayList<BasicBlock>(); // FIXME: replace with set
-
- private BasicBlock handler;
-
- private List<String> exceptionTypes;
-
- public ExceptionRangeCFG(List<BasicBlock> protectedRange, BasicBlock handler, List<String> exceptionType) {
- this.protectedRange = protectedRange;
- this.handler = handler;
-
- if(exceptionType != null) {
- this.exceptionTypes = new ArrayList<String>(exceptionType);
- }
- }
-
- public boolean isCircular() {
- return protectedRange.contains(handler);
- }
-
- public String toString() {
-
- String new_line_separator = DecompilerContext.getNewLineSeparator();
-
- StringBuffer buf = new StringBuffer();
-
- buf.append("exceptionType:");
- for(String exception_type : exceptionTypes) {
- buf.append(" "+exception_type);
- }
- buf.append(new_line_separator);
-
- buf.append("handler: "+handler.id+new_line_separator);
- buf.append("range: ");
- for(int i=0;i<protectedRange.size();i++) {
- buf.append(protectedRange.get(i).id+" ");
- }
- buf.append(new_line_separator);
-
- return buf.toString();
- }
-
- public BasicBlock getHandler() {
- return handler;
- }
-
- public void setHandler(BasicBlock handler) {
- this.handler = handler;
- }
-
- public List<BasicBlock> getProtectedRange() {
- return protectedRange;
- }
-
- public void setProtectedRange(List<BasicBlock> protectedRange) {
- this.protectedRange = protectedRange;
- }
-
- public List<String> getExceptionTypes() {
- return this.exceptionTypes;
- }
-
- public void addExceptionType(String exceptionType) {
-
- if(this.exceptionTypes == null) {
- return;
- }
-
- if(exceptionType == null) {
- this.exceptionTypes = null;
- } else {
- this.exceptionTypes.add(exceptionType);
- }
- }
-
- public String getUniqueExceptionsString() {
-
- if(exceptionTypes == null) {
- return null;
- }
-
- Set<String> setExceptionStrings = new HashSet<String>();
-
- for(String exceptionType : exceptionTypes) { // normalize order
- setExceptionStrings.add(exceptionType);
- }
-
- String ret = "";
- for(String exception : setExceptionStrings) {
- if(!ret.isEmpty()) {
- ret += ":";
- }
- ret += exception;
- }
-
- return ret;
- }
-
-
-// public void setExceptionType(String exceptionType) {
-// this.exceptionType = exceptionType;
-// }
-
+
+ private List<BasicBlock> protectedRange = new ArrayList<BasicBlock>(); // FIXME: replace with set
+
+ private BasicBlock handler;
+
+ private List<String> exceptionTypes;
+
+ public ExceptionRangeCFG(List<BasicBlock> protectedRange, BasicBlock handler, List<String> exceptionType) {
+ this.protectedRange = protectedRange;
+ this.handler = handler;
+
+ if (exceptionType != null) {
+ this.exceptionTypes = new ArrayList<String>(exceptionType);
+ }
+ }
+
+ public boolean isCircular() {
+ return protectedRange.contains(handler);
+ }
+
+ public String toString() {
+
+ String new_line_separator = DecompilerContext.getNewLineSeparator();
+
+ StringBuffer buf = new StringBuffer();
+
+ buf.append("exceptionType:");
+ for (String exception_type : exceptionTypes) {
+ buf.append(" " + exception_type);
+ }
+ buf.append(new_line_separator);
+
+ buf.append("handler: " + handler.id + new_line_separator);
+ buf.append("range: ");
+ for (int i = 0; i < protectedRange.size(); i++) {
+ buf.append(protectedRange.get(i).id + " ");
+ }
+ buf.append(new_line_separator);
+
+ return buf.toString();
+ }
+
+ public BasicBlock getHandler() {
+ return handler;
+ }
+
+ public void setHandler(BasicBlock handler) {
+ this.handler = handler;
+ }
+
+ public List<BasicBlock> getProtectedRange() {
+ return protectedRange;
+ }
+
+ public void setProtectedRange(List<BasicBlock> protectedRange) {
+ this.protectedRange = protectedRange;
+ }
+
+ public List<String> getExceptionTypes() {
+ return this.exceptionTypes;
+ }
+
+ public void addExceptionType(String exceptionType) {
+
+ if (this.exceptionTypes == null) {
+ return;
+ }
+
+ if (exceptionType == null) {
+ this.exceptionTypes = null;
+ }
+ else {
+ this.exceptionTypes.add(exceptionType);
+ }
+ }
+
+ public String getUniqueExceptionsString() {
+
+ if (exceptionTypes == null) {
+ return null;
+ }
+
+ Set<String> setExceptionStrings = new HashSet<String>();
+
+ for (String exceptionType : exceptionTypes) { // normalize order
+ setExceptionStrings.add(exceptionType);
+ }
+
+ String ret = "";
+ for (String exception : setExceptionStrings) {
+ if (!ret.isEmpty()) {
+ ret += ":";
+ }
+ ret += exception;
+ }
+
+ return ret;
+ }
+
+
+ // public void setExceptionType(String exceptionType) {
+ // this.exceptionType = exceptionType;
+ // }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/AALOAD.java b/src/org/jetbrains/java/decompiler/code/instructions/AALOAD.java
index 6e92fe6..a460184 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/AALOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/AALOAD.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/AASTORE.java b/src/org/jetbrains/java/decompiler/code/instructions/AASTORE.java
index 09f5c4b..9e0805d 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/AASTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/AASTORE.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/ACONST_NULL.java b/src/org/jetbrains/java/decompiler/code/instructions/ACONST_NULL.java
index 5733d40..2f78e54 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/ACONST_NULL.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/ACONST_NULL.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/ALOAD.java b/src/org/jetbrains/java/decompiler/code/instructions/ALOAD.java
index a9c9e05..604585c 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/ALOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/ALOAD.java
@@ -1,43 +1,60 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class ALOAD extends Instruction {
-
- private static int[] opcodes = new int[] {opc_aload_0,opc_aload_1,opc_aload_2,opc_aload_3};
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_aload);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- return 4;
- } else {
- return 2;
- }
- } else {
- return 1;
- }
- }
+ private static int[] opcodes = new int[]{opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_aload);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
-
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ return 4;
+ }
+ else {
+ return 2;
+ }
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/ANEWARRAY.java b/src/org/jetbrains/java/decompiler/code/instructions/ANEWARRAY.java
index aa9a6c9..09afe91 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/ANEWARRAY.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/ANEWARRAY.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class ANEWARRAY extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_anewarray);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_anewarray);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/ARETURN.java b/src/org/jetbrains/java/decompiler/code/instructions/ARETURN.java
index 915a50f..bf4bfae 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/ARETURN.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/ARETURN.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/ARRAYLENGTH.java b/src/org/jetbrains/java/decompiler/code/instructions/ARRAYLENGTH.java
index a54aa41..6ddee94 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/ARRAYLENGTH.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/ARRAYLENGTH.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/ASTORE.java b/src/org/jetbrains/java/decompiler/code/instructions/ASTORE.java
index 701f082..67ef5dd 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/ASTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/ASTORE.java
@@ -1,42 +1,60 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class ASTORE extends Instruction {
- private static int[] opcodes = new int[] {opc_astore_0,opc_astore_1,opc_astore_2,opc_astore_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_astore);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- return 4;
- } else {
- return 2;
- }
- } else {
- return 1;
- }
- }
-
+ private static int[] opcodes = new int[]{opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_astore);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ return 4;
+ }
+ else {
+ return 2;
+ }
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/ATHROW.java b/src/org/jetbrains/java/decompiler/code/instructions/ATHROW.java
index 1ca07c5..66d22a0 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/ATHROW.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/ATHROW.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/BALOAD.java b/src/org/jetbrains/java/decompiler/code/instructions/BALOAD.java
index c9d9e79..4a2e5d9 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/BALOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/BALOAD.java
@@ -1,7 +1,22 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
public class BALOAD extends Instruction {
-
+
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/BASTORE.java b/src/org/jetbrains/java/decompiler/code/instructions/BASTORE.java
index 478a887..70e8f0d 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/BASTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/BASTORE.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/BIPUSH.java b/src/org/jetbrains/java/decompiler/code/instructions/BIPUSH.java
index 90874c5..836ee10 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/BIPUSH.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/BIPUSH.java
@@ -1,30 +1,48 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class BIPUSH extends Instruction {
- private static int[] opcodes = new int[] {opc_iconst_m1,opc_iconst_0,opc_iconst_1,opc_iconst_2,opc_iconst_3,opc_iconst_4,opc_iconst_5};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int value = getOperand(0);
- if(value<-1 || value > 5) {
- out.writeByte(opc_bipush);
- out.writeByte(value);
- } else {
- out.writeByte(opcodes[value+1]);
- }
- }
-
- public int length() {
- int value = getOperand(0);
- if(value<-1 || value > 5) {
- return 2;
- } else {
- return 1;
- }
- }
+ private static int[] opcodes =
+ new int[]{opc_iconst_m1, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int value = getOperand(0);
+ if (value < -1 || value > 5) {
+ out.writeByte(opc_bipush);
+ out.writeByte(value);
+ }
+ else {
+ out.writeByte(opcodes[value + 1]);
+ }
+ }
+
+ public int length() {
+ int value = getOperand(0);
+ if (value < -1 || value > 5) {
+ return 2;
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/CALOAD.java b/src/org/jetbrains/java/decompiler/code/instructions/CALOAD.java
index cf3fb87..9646179 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/CALOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/CALOAD.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/CASTORE.java b/src/org/jetbrains/java/decompiler/code/instructions/CASTORE.java
index 2ed21e5..6222e2f 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/CASTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/CASTORE.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/CHECKCAST.java b/src/org/jetbrains/java/decompiler/code/instructions/CHECKCAST.java
index a3bb57e..bfff1cf 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/CHECKCAST.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/CHECKCAST.java
@@ -1,20 +1,34 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class CHECKCAST extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_checkcast);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_checkcast);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/D2F.java b/src/org/jetbrains/java/decompiler/code/instructions/D2F.java
index fd42a2e..e40a093 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/D2F.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/D2F.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/D2I.java b/src/org/jetbrains/java/decompiler/code/instructions/D2I.java
index 4fc7801..97e1675 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/D2I.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/D2I.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/D2L.java b/src/org/jetbrains/java/decompiler/code/instructions/D2L.java
index cc90f1c..0d6a304 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/D2L.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/D2L.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DADD.java b/src/org/jetbrains/java/decompiler/code/instructions/DADD.java
index ac84423..e65a669 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DADD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DADD.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DALOAD.java b/src/org/jetbrains/java/decompiler/code/instructions/DALOAD.java
index 00a0d17..a356c5b 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DALOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DALOAD.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DASTORE.java b/src/org/jetbrains/java/decompiler/code/instructions/DASTORE.java
index e33959f..f1c6cda 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DASTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DASTORE.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DCMPG.java b/src/org/jetbrains/java/decompiler/code/instructions/DCMPG.java
index 2b853ac..8c1ffc0 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DCMPG.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DCMPG.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DCMPL.java b/src/org/jetbrains/java/decompiler/code/instructions/DCMPL.java
index 7fdba33..2b146a5 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DCMPL.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DCMPL.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DCONST_0.java b/src/org/jetbrains/java/decompiler/code/instructions/DCONST_0.java
index d0023f2..78c5dde 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DCONST_0.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DCONST_0.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DCONST_1.java b/src/org/jetbrains/java/decompiler/code/instructions/DCONST_1.java
index bcd7c67..8127cfb 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DCONST_1.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DCONST_1.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DDIV.java b/src/org/jetbrains/java/decompiler/code/instructions/DDIV.java
index 40d86a8..d15e7af 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DDIV.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DDIV.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DLOAD.java b/src/org/jetbrains/java/decompiler/code/instructions/DLOAD.java
index ee098d6..1d7fea4 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DLOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DLOAD.java
@@ -1,42 +1,60 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class DLOAD extends Instruction {
- private static int[] opcodes = new int[] {opc_dload_0,opc_dload_1,opc_dload_2,opc_dload_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_dload);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- return 4;
- } else {
- return 2;
- }
- } else {
- return 1;
- }
- }
-
+ private static int[] opcodes = new int[]{opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_dload);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ return 4;
+ }
+ else {
+ return 2;
+ }
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DMUL.java b/src/org/jetbrains/java/decompiler/code/instructions/DMUL.java
index 65bedca..3fdc17a 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DMUL.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DMUL.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DNEG.java b/src/org/jetbrains/java/decompiler/code/instructions/DNEG.java
index 15bd9f3..83f82c5 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DNEG.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DNEG.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DREM.java b/src/org/jetbrains/java/decompiler/code/instructions/DREM.java
index ab57911..55453fc 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DREM.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DREM.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DRETURN.java b/src/org/jetbrains/java/decompiler/code/instructions/DRETURN.java
index 0a6e376..b758dcb 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DRETURN.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DRETURN.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DSTORE.java b/src/org/jetbrains/java/decompiler/code/instructions/DSTORE.java
index fe1feb8..e1e37e5 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DSTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DSTORE.java
@@ -1,41 +1,60 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class DSTORE extends Instruction {
- private static int[] opcodes = new int[] {opc_dstore_0,opc_dstore_1,opc_dstore_2,opc_dstore_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_dstore);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- return 4;
- } else {
- return 2;
- }
- } else {
- return 1;
- }
- }
+ private static int[] opcodes = new int[]{opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_dstore);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ return 4;
+ }
+ else {
+ return 2;
+ }
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DSUB.java b/src/org/jetbrains/java/decompiler/code/instructions/DSUB.java
index d683a63..33026ca 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DSUB.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DSUB.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DUP.java b/src/org/jetbrains/java/decompiler/code/instructions/DUP.java
index 50119da..07a7c4f 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DUP.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DUP.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DUP2.java b/src/org/jetbrains/java/decompiler/code/instructions/DUP2.java
index 3929ee0..6451cf2 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DUP2.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DUP2.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DUP2_X1.java b/src/org/jetbrains/java/decompiler/code/instructions/DUP2_X1.java
index ad59230..deddd1b 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DUP2_X1.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DUP2_X1.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DUP2_X2.java b/src/org/jetbrains/java/decompiler/code/instructions/DUP2_X2.java
index d27ca93..deafca6 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DUP2_X2.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DUP2_X2.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DUP_X1.java b/src/org/jetbrains/java/decompiler/code/instructions/DUP_X1.java
index 9b6b271..a1268e9 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DUP_X1.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DUP_X1.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/DUP_X2.java b/src/org/jetbrains/java/decompiler/code/instructions/DUP_X2.java
index 8c4b03e..bf5f71d 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/DUP_X2.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/DUP_X2.java
@@ -1,7 +1,22 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
public class DUP_X2 extends Instruction {
-
+
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/F2D.java b/src/org/jetbrains/java/decompiler/code/instructions/F2D.java
index debb8de..dd5b4a6 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/F2D.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/F2D.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/F2I.java b/src/org/jetbrains/java/decompiler/code/instructions/F2I.java
index bbda5c8..0811e2b 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/F2I.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/F2I.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/F2L.java b/src/org/jetbrains/java/decompiler/code/instructions/F2L.java
index a58a398..a470414 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/F2L.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/F2L.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FADD.java b/src/org/jetbrains/java/decompiler/code/instructions/FADD.java
index ab7a357..bdd9b89 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FADD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FADD.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FALOAD.java b/src/org/jetbrains/java/decompiler/code/instructions/FALOAD.java
index cc56e21..e9befaf 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FALOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FALOAD.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FASTORE.java b/src/org/jetbrains/java/decompiler/code/instructions/FASTORE.java
index d18a2ef..6e280fc 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FASTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FASTORE.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FCMPG.java b/src/org/jetbrains/java/decompiler/code/instructions/FCMPG.java
index a86b2a9..4c3c9c5 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FCMPG.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FCMPG.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FCMPL.java b/src/org/jetbrains/java/decompiler/code/instructions/FCMPL.java
index 450546c..42dcb4b 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FCMPL.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FCMPL.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FCONST_0.java b/src/org/jetbrains/java/decompiler/code/instructions/FCONST_0.java
index 77f4e84..957fe29 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FCONST_0.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FCONST_0.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FCONST_1.java b/src/org/jetbrains/java/decompiler/code/instructions/FCONST_1.java
index e90fd44..ab014c4 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FCONST_1.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FCONST_1.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FCONST_2.java b/src/org/jetbrains/java/decompiler/code/instructions/FCONST_2.java
index 7736565..fa6be0f 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FCONST_2.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FCONST_2.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FDIV.java b/src/org/jetbrains/java/decompiler/code/instructions/FDIV.java
index 0524b01..eb6dce4 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FDIV.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FDIV.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FLOAD.java b/src/org/jetbrains/java/decompiler/code/instructions/FLOAD.java
index 03ba1d2..6640d5d 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FLOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FLOAD.java
@@ -1,42 +1,60 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class FLOAD extends Instruction {
- private static int[] opcodes = new int[] {opc_fload_0,opc_fload_1,opc_fload_2,opc_fload_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_fload);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- return 4;
- } else {
- return 2;
- }
- } else {
- return 1;
- }
- }
-
+ private static int[] opcodes = new int[]{opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_fload);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ return 4;
+ }
+ else {
+ return 2;
+ }
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FMUL.java b/src/org/jetbrains/java/decompiler/code/instructions/FMUL.java
index 598145b..5a5cee3 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FMUL.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FMUL.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FNEG.java b/src/org/jetbrains/java/decompiler/code/instructions/FNEG.java
index b1d96ea..ab68c82 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FNEG.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FNEG.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FREM.java b/src/org/jetbrains/java/decompiler/code/instructions/FREM.java
index b8dc0fe..91900a8 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FREM.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FREM.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FRETURN.java b/src/org/jetbrains/java/decompiler/code/instructions/FRETURN.java
index 3781401..a310022 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FRETURN.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FRETURN.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FSTORE.java b/src/org/jetbrains/java/decompiler/code/instructions/FSTORE.java
index 203588b..15b5d42 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FSTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FSTORE.java
@@ -1,41 +1,60 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class FSTORE extends Instruction {
- private static int[] opcodes = new int[] {opc_fstore_0,opc_fstore_1,opc_fstore_2,opc_fstore_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_fstore);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- return 4;
- } else {
- return 2;
- }
- } else {
- return 1;
- }
- }
+ private static int[] opcodes = new int[]{opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_fstore);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ return 4;
+ }
+ else {
+ return 2;
+ }
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/FSUB.java b/src/org/jetbrains/java/decompiler/code/instructions/FSUB.java
index 841ee0d..09a07b8 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/FSUB.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/FSUB.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/GETFIELD.java b/src/org/jetbrains/java/decompiler/code/instructions/GETFIELD.java
index 8500f46..93b46ae 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/GETFIELD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/GETFIELD.java
@@ -1,18 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class GETFIELD extends Instruction {
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_getfield);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_getfield);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/GETSTATIC.java b/src/org/jetbrains/java/decompiler/code/instructions/GETSTATIC.java
index 761624f..86f1b75 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/GETSTATIC.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/GETSTATIC.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class GETSTATIC extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_getstatic);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_getstatic);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/GOTO.java b/src/org/jetbrains/java/decompiler/code/instructions/GOTO.java
index 91f5081..515275f 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/GOTO.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/GOTO.java
@@ -1,30 +1,46 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class GOTO extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int operand = getOperand(0);
- if(operand < -32768 || operand > 32767) {
- out.writeByte(opc_goto_w);
- out.writeInt(operand);
- } else {
- out.writeByte(opc_goto);
- out.writeShort(operand);
- }
- }
-
- public int length() {
- int operand = getOperand(0);
- if(operand < -32768 || operand > 32767) {
- return 5;
- } else {
- return 3;
- }
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int operand = getOperand(0);
+ if (operand < -32768 || operand > 32767) {
+ out.writeByte(opc_goto_w);
+ out.writeInt(operand);
+ }
+ else {
+ out.writeByte(opc_goto);
+ out.writeShort(operand);
+ }
+ }
+
+ public int length() {
+ int operand = getOperand(0);
+ if (operand < -32768 || operand > 32767) {
+ return 5;
+ }
+ else {
+ return 3;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/GOTO_W.java b/src/org/jetbrains/java/decompiler/code/instructions/GOTO_W.java
index 830b766..ec427f8 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/GOTO_W.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/GOTO_W.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class GOTO_W extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_goto_w);
- out.writeInt(getOperand(0));
- }
-
- public int length() {
- return 5;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_goto_w);
+ out.writeInt(getOperand(0));
+ }
+
+ public int length() {
+ return 5;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/I2B.java b/src/org/jetbrains/java/decompiler/code/instructions/I2B.java
index f5a3fbd..b6fc681 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/I2B.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/I2B.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/I2C.java b/src/org/jetbrains/java/decompiler/code/instructions/I2C.java
index a180a64..a1dca6b 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/I2C.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/I2C.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/I2D.java b/src/org/jetbrains/java/decompiler/code/instructions/I2D.java
index b0bad9a..6478d78 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/I2D.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/I2D.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/I2F.java b/src/org/jetbrains/java/decompiler/code/instructions/I2F.java
index ca1a0fb..1247eff 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/I2F.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/I2F.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/I2L.java b/src/org/jetbrains/java/decompiler/code/instructions/I2L.java
index 24bca4e..6e27d5a 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/I2L.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/I2L.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/I2S.java b/src/org/jetbrains/java/decompiler/code/instructions/I2S.java
index 370ae2f..e66b75b 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/I2S.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/I2S.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IADD.java b/src/org/jetbrains/java/decompiler/code/instructions/IADD.java
index f427c40..5922136 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IADD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IADD.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IALOAD.java b/src/org/jetbrains/java/decompiler/code/instructions/IALOAD.java
index d70fae6..645d6df 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IALOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IALOAD.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IAND.java b/src/org/jetbrains/java/decompiler/code/instructions/IAND.java
index 00ae7a6..207ed34 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IAND.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IAND.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IASTORE.java b/src/org/jetbrains/java/decompiler/code/instructions/IASTORE.java
index 78a1d28..56d3d24 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IASTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IASTORE.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IDIV.java b/src/org/jetbrains/java/decompiler/code/instructions/IDIV.java
index bec8cc9..60b4690 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IDIV.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IDIV.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IFEQ.java b/src/org/jetbrains/java/decompiler/code/instructions/IFEQ.java
index 47711d8..28cfd81 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IFEQ.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IFEQ.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IFEQ extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_ifeq);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_ifeq);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IFGE.java b/src/org/jetbrains/java/decompiler/code/instructions/IFGE.java
index 9cfaba4..d805789 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IFGE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IFGE.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IFGE extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_ifge);
- out.writeShort(getOperand(0));
- }
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_ifge);
+ out.writeShort(getOperand(0));
+ }
- public int length() {
- return 3;
- }
-
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IFGT.java b/src/org/jetbrains/java/decompiler/code/instructions/IFGT.java
index 99b171e..13f650a 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IFGT.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IFGT.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IFGT extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_ifgt);
- out.writeShort(getOperand(0));
- }
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_ifgt);
+ out.writeShort(getOperand(0));
+ }
- public int length() {
- return 3;
- }
-
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IFLE.java b/src/org/jetbrains/java/decompiler/code/instructions/IFLE.java
index b21b2cf..e03d915 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IFLE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IFLE.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IFLE extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_ifle);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_ifle);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IFLT.java b/src/org/jetbrains/java/decompiler/code/instructions/IFLT.java
index 66ba02b..0299a91 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IFLT.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IFLT.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IFLT extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_iflt);
- out.writeShort(getOperand(0));
- }
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_iflt);
+ out.writeShort(getOperand(0));
+ }
- public int length() {
- return 3;
- }
-
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IFNE.java b/src/org/jetbrains/java/decompiler/code/instructions/IFNE.java
index 983fea2..3402362 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IFNE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IFNE.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IFNE extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_ifne);
- out.writeShort(getOperand(0));
- }
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_ifne);
+ out.writeShort(getOperand(0));
+ }
- public int length() {
- return 3;
- }
-
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IFNONNULL.java b/src/org/jetbrains/java/decompiler/code/instructions/IFNONNULL.java
index 2555a80..64a12d0 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IFNONNULL.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IFNONNULL.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IFNONNULL extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_ifnonnull);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_ifnonnull);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IFNULL.java b/src/org/jetbrains/java/decompiler/code/instructions/IFNULL.java
index b695787..71265b6 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IFNULL.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IFNULL.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IFNULL extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_ifnull);
- out.writeShort(getOperand(0));
- }
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_ifnull);
+ out.writeShort(getOperand(0));
+ }
- public int length() {
- return 3;
- }
-
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IF_ACMPEQ.java b/src/org/jetbrains/java/decompiler/code/instructions/IF_ACMPEQ.java
index 30e530b..5b23cbf 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IF_ACMPEQ.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IF_ACMPEQ.java
@@ -1,20 +1,34 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IF_ACMPEQ extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_if_acmpeq);
- out.writeShort(getOperand(0));
- }
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_if_acmpeq);
+ out.writeShort(getOperand(0));
+ }
- public int length() {
- return 3;
- }
-
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IF_ACMPNE.java b/src/org/jetbrains/java/decompiler/code/instructions/IF_ACMPNE.java
index ccb513f..e41ea9f 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IF_ACMPNE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IF_ACMPNE.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IF_ACMPNE extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_if_acmpne);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_if_acmpne);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPEQ.java b/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPEQ.java
index 1343aca..dad633d 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPEQ.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPEQ.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IF_ICMPEQ extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_if_icmpeq);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_if_icmpeq);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPGE.java b/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPGE.java
index beeabec..54f6295 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPGE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPGE.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IF_ICMPGE extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_if_icmpge);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_if_icmpge);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPGT.java b/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPGT.java
index e41d261..e2e1972 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPGT.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPGT.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IF_ICMPGT extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_if_icmpgt);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_if_icmpgt);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPLE.java b/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPLE.java
index c9288da..4f8c76c 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPLE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPLE.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IF_ICMPLE extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_if_icmple);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_if_icmple);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPLT.java b/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPLT.java
index 107519e..d6a9a48 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPLT.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPLT.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IF_ICMPLT extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_if_icmplt);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_if_icmplt);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPNE.java b/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPNE.java
index 703c10c..6484344 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPNE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IF_ICMPNE.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class IF_ICMPNE extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_if_icmpne);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_if_icmpne);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IINC.java b/src/org/jetbrains/java/decompiler/code/instructions/IINC.java
index 763a192..fc2506c 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IINC.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IINC.java
@@ -1,28 +1,43 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class IINC extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_iinc);
- if(wide) {
- out.writeShort(getOperand(0));
- out.writeShort(getOperand(1));
- } else {
- out.writeByte(getOperand(0));
- out.writeByte(getOperand(1));
- }
- }
-
- public int length() {
- return wide?6:3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_iinc);
+ if (wide) {
+ out.writeShort(getOperand(0));
+ out.writeShort(getOperand(1));
+ }
+ else {
+ out.writeByte(getOperand(0));
+ out.writeByte(getOperand(1));
+ }
+ }
+
+ public int length() {
+ return wide ? 6 : 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/ILOAD.java b/src/org/jetbrains/java/decompiler/code/instructions/ILOAD.java
index 4b9bd59..3be609d 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/ILOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/ILOAD.java
@@ -1,38 +1,55 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class ILOAD extends Instruction {
- private static int[] opcodes = new int[] {opc_iload_0,opc_iload_1,opc_iload_2,opc_iload_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_iload);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- return wide?4:2;
- } else {
- return 1;
- }
- }
-
+ private static int[] opcodes = new int[]{opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_iload);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ return wide ? 4 : 2;
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IMUL.java b/src/org/jetbrains/java/decompiler/code/instructions/IMUL.java
index 64dd4cc..8cec91b 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IMUL.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IMUL.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/INEG.java b/src/org/jetbrains/java/decompiler/code/instructions/INEG.java
index cf341e7..903a22d 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/INEG.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/INEG.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/INSTANCEOF.java b/src/org/jetbrains/java/decompiler/code/instructions/INSTANCEOF.java
index a4214ec..e5acd87 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/INSTANCEOF.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/INSTANCEOF.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class INSTANCEOF extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_instanceof);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_instanceof);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/INVOKEINTERFACE.java b/src/org/jetbrains/java/decompiler/code/instructions/INVOKEINTERFACE.java
index bd1ce37..ecf15b1 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/INVOKEINTERFACE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/INVOKEINTERFACE.java
@@ -1,21 +1,35 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class INVOKEINTERFACE extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_invokeinterface);
- out.writeShort(getOperand(0));
- out.writeByte(getOperand(1));
- out.writeByte(0);
- }
-
- public int length() {
- return 5;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_invokeinterface);
+ out.writeShort(getOperand(0));
+ out.writeByte(getOperand(1));
+ out.writeByte(0);
+ }
+
+ public int length() {
+ return 5;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/INVOKESPECIAL.java b/src/org/jetbrains/java/decompiler/code/instructions/INVOKESPECIAL.java
index d14a8ee..0f3ad00 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/INVOKESPECIAL.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/INVOKESPECIAL.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class INVOKESPECIAL extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_invokespecial);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_invokespecial);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/INVOKESTATIC.java b/src/org/jetbrains/java/decompiler/code/instructions/INVOKESTATIC.java
index 8ef9f26..1d21cd2 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/INVOKESTATIC.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/INVOKESTATIC.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class INVOKESTATIC extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_invokestatic);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_invokestatic);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/INVOKEVIRTUAL.java b/src/org/jetbrains/java/decompiler/code/instructions/INVOKEVIRTUAL.java
index 687c6e4..2ce543d 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/INVOKEVIRTUAL.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/INVOKEVIRTUAL.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class INVOKEVIRTUAL extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_invokevirtual);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_invokevirtual);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IOR.java b/src/org/jetbrains/java/decompiler/code/instructions/IOR.java
index b3e6bae..b8bc4b1 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IOR.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IOR.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IREM.java b/src/org/jetbrains/java/decompiler/code/instructions/IREM.java
index db1fbb8..4d299b7 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IREM.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IREM.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IRETURN.java b/src/org/jetbrains/java/decompiler/code/instructions/IRETURN.java
index 2a2e48c..7f95241 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IRETURN.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IRETURN.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/ISHL.java b/src/org/jetbrains/java/decompiler/code/instructions/ISHL.java
index 5e0b1e0..f440380 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/ISHL.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/ISHL.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/ISHR.java b/src/org/jetbrains/java/decompiler/code/instructions/ISHR.java
index 9a8c182..6fa2b71 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/ISHR.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/ISHR.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/ISTORE.java b/src/org/jetbrains/java/decompiler/code/instructions/ISTORE.java
index 7bc1647..5d6024a 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/ISTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/ISTORE.java
@@ -1,38 +1,55 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class ISTORE extends Instruction {
- private static int[] opcodes = new int[] {opc_istore_0,opc_istore_1,opc_istore_2,opc_istore_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_istore);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- return wide?4:2;
- } else {
- return 1;
- }
- }
-
+ private static int[] opcodes = new int[]{opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_istore);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ return wide ? 4 : 2;
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/ISUB.java b/src/org/jetbrains/java/decompiler/code/instructions/ISUB.java
index 3007c8a..7e3caf0 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/ISUB.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/ISUB.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IUSHR.java b/src/org/jetbrains/java/decompiler/code/instructions/IUSHR.java
index 3171c1a..b548209 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IUSHR.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IUSHR.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/IXOR.java b/src/org/jetbrains/java/decompiler/code/instructions/IXOR.java
index f6568d2..261146b 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/IXOR.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/IXOR.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/JSR.java b/src/org/jetbrains/java/decompiler/code/instructions/JSR.java
index bb23f66..1c80177 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/JSR.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/JSR.java
@@ -1,30 +1,46 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class JSR extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int operand = getOperand(0);
- if(operand < -32768 || operand > 32767) {
- out.writeByte(opc_jsr_w);
- out.writeInt(operand);
- } else {
- out.writeByte(opc_jsr);
- out.writeShort(operand);
- }
- }
-
- public int length() {
- int operand = getOperand(0);
- if(operand < -32768 || operand > 32767) {
- return 5;
- } else {
- return 3;
- }
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int operand = getOperand(0);
+ if (operand < -32768 || operand > 32767) {
+ out.writeByte(opc_jsr_w);
+ out.writeInt(operand);
+ }
+ else {
+ out.writeByte(opc_jsr);
+ out.writeShort(operand);
+ }
+ }
+
+ public int length() {
+ int operand = getOperand(0);
+ if (operand < -32768 || operand > 32767) {
+ return 5;
+ }
+ else {
+ return 3;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/JSR_W.java b/src/org/jetbrains/java/decompiler/code/instructions/JSR_W.java
index 47af3e6..67cf91d 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/JSR_W.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/JSR_W.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class JSR_W extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_jsr_w);
- out.writeInt(getOperand(0));
- }
-
- public int length() {
- return 5;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_jsr_w);
+ out.writeInt(getOperand(0));
+ }
+
+ public int length() {
+ return 5;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/L2D.java b/src/org/jetbrains/java/decompiler/code/instructions/L2D.java
index 59178d2..5569d3f 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/L2D.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/L2D.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/L2F.java b/src/org/jetbrains/java/decompiler/code/instructions/L2F.java
index 37932b6..fcab0ba 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/L2F.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/L2F.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/L2I.java b/src/org/jetbrains/java/decompiler/code/instructions/L2I.java
index c197282..558e5f5 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/L2I.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/L2I.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LADD.java b/src/org/jetbrains/java/decompiler/code/instructions/LADD.java
index 8c5625c..358a788 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LADD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LADD.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LALOAD.java b/src/org/jetbrains/java/decompiler/code/instructions/LALOAD.java
index 3590f94..9e6b0b0 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LALOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LALOAD.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LAND.java b/src/org/jetbrains/java/decompiler/code/instructions/LAND.java
index 46a396c..37da9bd 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LAND.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LAND.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LASTORE.java b/src/org/jetbrains/java/decompiler/code/instructions/LASTORE.java
index 107af51..e89aeff 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LASTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LASTORE.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LCMP.java b/src/org/jetbrains/java/decompiler/code/instructions/LCMP.java
index 8a9dac5..399d231 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LCMP.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LCMP.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LCONST_0.java b/src/org/jetbrains/java/decompiler/code/instructions/LCONST_0.java
index 5617fbe..04bc841 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LCONST_0.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LCONST_0.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LCONST_1.java b/src/org/jetbrains/java/decompiler/code/instructions/LCONST_1.java
index 8244407..b58fadf 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LCONST_1.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LCONST_1.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LDC.java b/src/org/jetbrains/java/decompiler/code/instructions/LDC.java
index 088e5a5..aa1e9ac 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LDC.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LDC.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class LDC extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_ldc);
- out.writeByte(getOperand(0));
- }
-
- public int length() {
- return 2;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_ldc);
+ out.writeByte(getOperand(0));
+ }
+
+ public int length() {
+ return 2;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LDC2_W.java b/src/org/jetbrains/java/decompiler/code/instructions/LDC2_W.java
index 9b67a7e..67ba631 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LDC2_W.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LDC2_W.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class LDC2_W extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_ldc2_w);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_ldc2_w);
+ out.writeShort(getOperand(0));
+ }
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LDC_W.java b/src/org/jetbrains/java/decompiler/code/instructions/LDC_W.java
index 290462e..1e5030a 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LDC_W.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LDC_W.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class LDC_W extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_ldc_w);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_ldc_w);
+ out.writeShort(getOperand(0));
+ }
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LDIV.java b/src/org/jetbrains/java/decompiler/code/instructions/LDIV.java
index 36b09ca..b90015b 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LDIV.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LDIV.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LLOAD.java b/src/org/jetbrains/java/decompiler/code/instructions/LLOAD.java
index 0cf9695..44afa3b 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LLOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LLOAD.java
@@ -1,38 +1,55 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class LLOAD extends Instruction {
- private static int[] opcodes = new int[] {opc_lload_0,opc_lload_1,opc_lload_2,opc_lload_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_lload);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
+ private static int[] opcodes = new int[]{opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_lload);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- return wide?4:2;
- } else {
- return 1;
- }
- }
-
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ return wide ? 4 : 2;
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LMUL.java b/src/org/jetbrains/java/decompiler/code/instructions/LMUL.java
index 075c50b..475030d 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LMUL.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LMUL.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LNEG.java b/src/org/jetbrains/java/decompiler/code/instructions/LNEG.java
index b2c9f10..5cacf17 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LNEG.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LNEG.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LOOKUPSWITCH.java b/src/org/jetbrains/java/decompiler/code/instructions/LOOKUPSWITCH.java
index dbe5f03..04ec7ba 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LOOKUPSWITCH.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LOOKUPSWITCH.java
@@ -1,28 +1,42 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.SwitchInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.SwitchInstruction;
-
public class LOOKUPSWITCH extends SwitchInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
-
- out.writeByte(opc_lookupswitch);
-
- int padding = 3 - (offset%4);
- for(int i=0;i<padding;i++){
- out.writeByte(0);
- }
-
- for(int i=0;i<operandsCount();i++) {
- out.writeInt(getOperand(i));
- }
- }
-
- public int length() {
- return 1+operandsCount()*4;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+
+ out.writeByte(opc_lookupswitch);
+
+ int padding = 3 - (offset % 4);
+ for (int i = 0; i < padding; i++) {
+ out.writeByte(0);
+ }
+
+ for (int i = 0; i < operandsCount(); i++) {
+ out.writeInt(getOperand(i));
+ }
+ }
+
+ public int length() {
+ return 1 + operandsCount() * 4;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LOR.java b/src/org/jetbrains/java/decompiler/code/instructions/LOR.java
index 55921d4..0c65e5c 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LOR.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LOR.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LREM.java b/src/org/jetbrains/java/decompiler/code/instructions/LREM.java
index cd5073b..b75ebc5 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LREM.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LREM.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LRETURN.java b/src/org/jetbrains/java/decompiler/code/instructions/LRETURN.java
index e7dea00..b2f03de 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LRETURN.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LRETURN.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LSHL.java b/src/org/jetbrains/java/decompiler/code/instructions/LSHL.java
index 206f91a..ae5e9f2 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LSHL.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LSHL.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LSHR.java b/src/org/jetbrains/java/decompiler/code/instructions/LSHR.java
index b4276ad..7402178 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LSHR.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LSHR.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LSTORE.java b/src/org/jetbrains/java/decompiler/code/instructions/LSTORE.java
index 1f5dfea..230c3e4 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LSTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LSTORE.java
@@ -1,38 +1,55 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class LSTORE extends Instruction {
- private static int[] opcodes = new int[] {opc_lstore_0,opc_lstore_1,opc_lstore_2,opc_lstore_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_lstore);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- return wide?4:2;
- } else {
- return 1;
- }
- }
-
+ private static int[] opcodes = new int[]{opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_lstore);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ return wide ? 4 : 2;
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LSUB.java b/src/org/jetbrains/java/decompiler/code/instructions/LSUB.java
index 14b019f..cce794a 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LSUB.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LSUB.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LUSHR.java b/src/org/jetbrains/java/decompiler/code/instructions/LUSHR.java
index 63d5ca4..ecdc444 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LUSHR.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LUSHR.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/LXOR.java b/src/org/jetbrains/java/decompiler/code/instructions/LXOR.java
index 9812a1a..d9f2644 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/LXOR.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/LXOR.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/MONITORENTER.java b/src/org/jetbrains/java/decompiler/code/instructions/MONITORENTER.java
index d2ed979..c92bbf0 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/MONITORENTER.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/MONITORENTER.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/MONITOREXIT.java b/src/org/jetbrains/java/decompiler/code/instructions/MONITOREXIT.java
index f1324be..1a645b9 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/MONITOREXIT.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/MONITOREXIT.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/MULTIANEWARRAY.java b/src/org/jetbrains/java/decompiler/code/instructions/MULTIANEWARRAY.java
index 313b708..9a1b16a 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/MULTIANEWARRAY.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/MULTIANEWARRAY.java
@@ -1,20 +1,34 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class MULTIANEWARRAY extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_multianewarray);
- out.writeShort(getOperand(0));
- out.writeByte(getOperand(1));
- }
-
- public int length() {
- return 4;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_multianewarray);
+ out.writeShort(getOperand(0));
+ out.writeByte(getOperand(1));
+ }
+
+ public int length() {
+ return 4;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/NEW.java b/src/org/jetbrains/java/decompiler/code/instructions/NEW.java
index 8c5ab34..7ffbdd3 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/NEW.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/NEW.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class NEW extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_new);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_new);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/NEWARRAY.java b/src/org/jetbrains/java/decompiler/code/instructions/NEWARRAY.java
index eb25456..ec4ada8 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/NEWARRAY.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/NEWARRAY.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class NEWARRAY extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_newarray);
- out.writeByte(getOperand(0));
- }
-
- public int length() {
- return 2;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_newarray);
+ out.writeByte(getOperand(0));
+ }
+
+ public int length() {
+ return 2;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/NOP.java b/src/org/jetbrains/java/decompiler/code/instructions/NOP.java
index ef11da8..4c47938 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/NOP.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/NOP.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/POP.java b/src/org/jetbrains/java/decompiler/code/instructions/POP.java
index 8848163..99fa873 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/POP.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/POP.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/POP2.java b/src/org/jetbrains/java/decompiler/code/instructions/POP2.java
index f07d5d5..1ff12f3 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/POP2.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/POP2.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/PUTFIELD.java b/src/org/jetbrains/java/decompiler/code/instructions/PUTFIELD.java
index b37efb0..1ab8773 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/PUTFIELD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/PUTFIELD.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class PUTFIELD extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_putfield);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_putfield);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/PUTSTATIC.java b/src/org/jetbrains/java/decompiler/code/instructions/PUTSTATIC.java
index 260e57c..92e2271 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/PUTSTATIC.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/PUTSTATIC.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class PUTSTATIC extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_putstatic);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_putstatic);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/RET.java b/src/org/jetbrains/java/decompiler/code/instructions/RET.java
index 490ad8c..c317be0 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/RET.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/RET.java
@@ -1,26 +1,41 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class RET extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_ret);
- if(wide) {
- out.writeShort(getOperand(0));
- } else {
- out.writeByte(getOperand(0));
- }
- }
-
- public int length() {
- return wide?4:2;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_ret);
+ if (wide) {
+ out.writeShort(getOperand(0));
+ }
+ else {
+ out.writeByte(getOperand(0));
+ }
+ }
+
+ public int length() {
+ return wide ? 4 : 2;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/RETURN.java b/src/org/jetbrains/java/decompiler/code/instructions/RETURN.java
index cbdcbfc..83bf8c7 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/RETURN.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/RETURN.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/SALOAD.java b/src/org/jetbrains/java/decompiler/code/instructions/SALOAD.java
index c9da26e..deb82e3 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/SALOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/SALOAD.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/SASTORE.java b/src/org/jetbrains/java/decompiler/code/instructions/SASTORE.java
index 4a90aac..e1ff283 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/SASTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/SASTORE.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/SIPUSH.java b/src/org/jetbrains/java/decompiler/code/instructions/SIPUSH.java
index a5f7025..7c5c55e 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/SIPUSH.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/SIPUSH.java
@@ -1,19 +1,33 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class SIPUSH extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_sipush);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_sipush);
+ out.writeShort(getOperand(0));
+ }
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/SWAP.java b/src/org/jetbrains/java/decompiler/code/instructions/SWAP.java
index 9fd99b3..64d67f4 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/SWAP.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/SWAP.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/TABLESWITCH.java b/src/org/jetbrains/java/decompiler/code/instructions/TABLESWITCH.java
index 4a4be0a..ac5e6bd 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/TABLESWITCH.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/TABLESWITCH.java
@@ -1,29 +1,42 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
+import org.jetbrains.java.decompiler.code.SwitchInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.SwitchInstruction;
-
public class TABLESWITCH extends SwitchInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
-
- out.writeByte(opc_tableswitch);
-
- int padding = 3 - (offset%4);
- for(int i=0;i<padding;i++){
- out.writeByte(0);
- }
-
- for(int i=0;i<operandsCount();i++) {
- out.writeInt(getOperand(i));
- }
-
- }
-
- public int length() {
- return 1+operandsCount()*4;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+
+ out.writeByte(opc_tableswitch);
+
+ int padding = 3 - (offset % 4);
+ for (int i = 0; i < padding; i++) {
+ out.writeByte(0);
+ }
+
+ for (int i = 0; i < operandsCount(); i++) {
+ out.writeInt(getOperand(i));
+ }
+ }
+
+ public int length() {
+ return 1 + operandsCount() * 4;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/instructions/XXXUNUSEDXXX.java b/src/org/jetbrains/java/decompiler/code/instructions/XXXUNUSEDXXX.java
index 2907258..739aea9 100644
--- a/src/org/jetbrains/java/decompiler/code/instructions/XXXUNUSEDXXX.java
+++ b/src/org/jetbrains/java/decompiler/code/instructions/XXXUNUSEDXXX.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.instructions;
import org.jetbrains.java.decompiler.code.Instruction;
diff --git a/src/org/jetbrains/java/decompiler/code/interpreter/InstructionImpact.java b/src/org/jetbrains/java/decompiler/code/interpreter/InstructionImpact.java
index b155f05..a3da8a6 100644
--- a/src/org/jetbrains/java/decompiler/code/interpreter/InstructionImpact.java
+++ b/src/org/jetbrains/java/decompiler/code/interpreter/InstructionImpact.java
@@ -1,17 +1,18 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.interpreter;
import org.jetbrains.java.decompiler.code.CodeConstants;
@@ -25,444 +26,502 @@ import org.jetbrains.java.decompiler.struct.gen.VarType;
import org.jetbrains.java.decompiler.util.ListStack;
public class InstructionImpact {
-
- // {read, write}
- private static final int[][][] stack_impact = {
-
- {null,null}, // public final static int opc_nop = 0;
- null, // public final static int opc_aconst_null = 1;
- null, // public final static int opc_iconst_m1 = 2;
- null, // public final static int opc_iconst_0 = 3;
- null, // public final static int opc_iconst_1 = 4;
- null, // public final static int opc_iconst_2 = 5;
- null, // public final static int opc_iconst_3 = 6;
- null, // public final static int opc_iconst_4 = 7;
- null, // public final static int opc_iconst_5 = 8;
- {null,{CodeConstants.TYPE_LONG}}, // public final static int opc_lconst_0 = 9;
- {null,{CodeConstants.TYPE_LONG}}, // public final static int opc_lconst_1 = 10;
- {null,{CodeConstants.TYPE_FLOAT}}, // public final static int opc_fconst_0 = 11;
- {null,{CodeConstants.TYPE_FLOAT}}, // public final static int opc_fconst_1 = 12;
- {null,{CodeConstants.TYPE_FLOAT}}, // public final static int opc_fconst_2 = 13;
- {null,{CodeConstants.TYPE_DOUBLE}}, // public final static int opc_dconst_0 = 14;
- {null,{CodeConstants.TYPE_DOUBLE}}, // public final static int opc_dconst_1 = 15;
- {null,{CodeConstants.TYPE_INT}}, // public final static int opc_bipush = 16;
- {null,{CodeConstants.TYPE_INT}}, // public final static int opc_sipush = 17;
- null, // public final static int opc_ldc = 18;
- null, // public final static int opc_ldc_w = 19;
- null, // public final static int opc_ldc2_w = 20;
- {null,{CodeConstants.TYPE_INT}}, // public final static int opc_iload = 21;
- {null,{CodeConstants.TYPE_LONG}}, // public final static int opc_lload = 22;
- {null,{CodeConstants.TYPE_FLOAT}}, // public final static int opc_fload = 23;
- {null,{CodeConstants.TYPE_DOUBLE}}, // public final static int opc_dload = 24;
- null, // public final static int opc_aload = 25;
- null, // public final static int opc_iload_0 = 26;
- null, // public final static int opc_iload_1 = 27;
- null, // public final static int opc_iload_2 = 28;
- null, // public final static int opc_iload_3 = 29;
- null, // public final static int opc_lload_0 = 30;
- null, // public final static int opc_lload_1 = 31;
- null, // public final static int opc_lload_2 = 32;
- null, // public final static int opc_lload_3 = 33;
- null, // public final static int opc_fload_0 = 34;
- null, // public final static int opc_fload_1 = 35;
- null, // public final static int opc_fload_2 = 36;
- null, // public final static int opc_fload_3 = 37;
- null, // public final static int opc_dload_0 = 38;
- null, // public final static int opc_dload_1 = 39;
- null, // public final static int opc_dload_2 = 40;
- null, // public final static int opc_dload_3 = 41;
- null, // public final static int opc_aload_0 = 42;
- null, // public final static int opc_aload_1 = 43;
- null, // public final static int opc_aload_2 = 44;
- null, // public final static int opc_aload_3 = 45;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_iaload = 46;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_LONG}}, // public final static int opc_laload = 47;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_FLOAT}}, // public final static int opc_faload = 48;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_DOUBLE}}, // public final static int opc_daload = 49;
- null, // public final static int opc_aaload = 50;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_baload = 51;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_caload = 52;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_saload = 53;
- {{CodeConstants.TYPE_INT},null}, // public final static int opc_istore = 54;
- {{CodeConstants.TYPE_LONG},null}, // public final static int opc_lstore = 55;
- {{CodeConstants.TYPE_FLOAT},null}, // public final static int opc_fstore = 56;
- {{CodeConstants.TYPE_DOUBLE},null}, // public final static int opc_dstore = 57;
- null, // public final static int opc_astore = 58;
- null, // public final static int opc_istore_0 = 59;
- null, // public final static int opc_istore_1 = 60;
- null, // public final static int opc_istore_2 = 61;
- null, // public final static int opc_istore_3 = 62;
- null, // public final static int opc_lstore_0 = 63;
- null, // public final static int opc_lstore_1 = 64;
- null, // public final static int opc_lstore_2 = 65;
- null, // public final static int opc_lstore_3 = 66;
- null, // public final static int opc_fstore_0 = 67;
- null, // public final static int opc_fstore_1 = 68;
- null, // public final static int opc_fstore_2 = 69;
- null, // public final static int opc_fstore_3 = 70;
- null, // public final static int opc_dstore_0 = 71;
- null, // public final static int opc_dstore_1 = 72;
- null, // public final static int opc_dstore_2 = 73;
- null, // public final static int opc_dstore_3 = 74;
- null, // public final static int opc_astore_0 = 75;
- null, // public final static int opc_astore_1 = 76;
- null, // public final static int opc_astore_2 = 77;
- null, // public final static int opc_astore_3 = 78;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT,CodeConstants.TYPE_INT},null}, // public final static int opc_iastore = 79;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT,CodeConstants.TYPE_LONG},null}, // public final static int opc_lastore = 80;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT,CodeConstants.TYPE_FLOAT},null}, // public final static int opc_fastore = 81;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT,CodeConstants.TYPE_DOUBLE},null}, // public final static int opc_dastore = 82;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT,CodeConstants.TYPE_OBJECT},null}, // public final static int opc_aastore = 83;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT,CodeConstants.TYPE_INT},null}, // public final static int opc_bastore = 84;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT,CodeConstants.TYPE_INT},null}, // public final static int opc_castore = 85;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT,CodeConstants.TYPE_INT},null}, // public final static int opc_sastore = 86;
- {{CodeConstants.TYPE_ANY},null}, // public final static int opc_pop = 87;
- {{CodeConstants.TYPE_ANY, CodeConstants.TYPE_ANY},null}, // public final static int opc_pop2 = 88;
- null, // public final static int opc_dup = 89;
- null, // public final static int opc_dup_x1 = 90;
- null, // public final static int opc_dup_x2 = 91;
- null, // public final static int opc_dup2 = 92;
- null, // public final static int opc_dup2_x1 = 93;
- null, // public final static int opc_dup2_x2 = 94;
- null, // public final static int opc_swap = 95;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_iadd = 96;
- {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG},{CodeConstants.TYPE_LONG}}, // public final static int opc_ladd = 97;
- {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT},{CodeConstants.TYPE_FLOAT}}, // public final static int opc_fadd = 98;
- {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE},{CodeConstants.TYPE_DOUBLE}}, // public final static int opc_dadd = 99;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_isub = 100;
- {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG},{CodeConstants.TYPE_LONG}}, // public final static int opc_lsub = 101;
- {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT},{CodeConstants.TYPE_FLOAT}}, // public final static int opc_fsub = 102;
- {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE},{CodeConstants.TYPE_DOUBLE}}, // public final static int opc_dsub = 103;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_imul = 104;
- {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG},{CodeConstants.TYPE_LONG}}, // public final static int opc_lmul = 105;
- {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT},{CodeConstants.TYPE_FLOAT}}, // public final static int opc_fmul = 106;
- {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE},{CodeConstants.TYPE_DOUBLE}}, // public final static int opc_dmul = 107;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_idiv = 108;
- {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG},{CodeConstants.TYPE_LONG}}, // public final static int opc_ldiv = 109;
- {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT},{CodeConstants.TYPE_FLOAT}}, // public final static int opc_fdiv = 110;
- {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE},{CodeConstants.TYPE_DOUBLE}}, // public final static int opc_ddiv = 111;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_irem = 112;
- {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG},{CodeConstants.TYPE_LONG}}, // public final static int opc_lrem = 113;
- {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT},{CodeConstants.TYPE_FLOAT}}, // public final static int opc_frem = 114;
- {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE},{CodeConstants.TYPE_DOUBLE}}, // public final static int opc_drem = 115;
- {{CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_ineg = 116;
- {{CodeConstants.TYPE_LONG},{CodeConstants.TYPE_LONG}}, // public final static int opc_lneg = 117;
- {{CodeConstants.TYPE_FLOAT},{CodeConstants.TYPE_FLOAT}}, // public final static int opc_fneg = 118;
- {{CodeConstants.TYPE_DOUBLE},{CodeConstants.TYPE_DOUBLE}}, // public final static int opc_dneg = 119;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_ishl = 120;
- {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_INT},{CodeConstants.TYPE_LONG}}, // public final static int opc_lshl = 121;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_ishr = 122;
- {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_INT},{CodeConstants.TYPE_LONG}}, // public final static int opc_lshr = 123;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_iushr = 124;
- {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_INT},{CodeConstants.TYPE_LONG}}, // public final static int opc_lushr = 125;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_iand = 126;
- {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG},{CodeConstants.TYPE_LONG}}, // public final static int opc_land = 127;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_ior = 128;
- {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG},{CodeConstants.TYPE_LONG}}, // public final static int opc_lor = 129;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_ixor = 130;
- {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG},{CodeConstants.TYPE_LONG}}, // public final static int opc_lxor = 131;
- {null,null}, // public final static int opc_iinc = 132;
- {{CodeConstants.TYPE_INT},{CodeConstants.TYPE_LONG}}, // public final static int opc_i2l = 133;
- {{CodeConstants.TYPE_INT},{CodeConstants.TYPE_FLOAT}}, // public final static int opc_i2f = 134;
- {{CodeConstants.TYPE_INT},{CodeConstants.TYPE_DOUBLE}}, // public final static int opc_i2d = 135;
- {{CodeConstants.TYPE_LONG},{CodeConstants.TYPE_INT}}, // public final static int opc_l2i = 136;
- {{CodeConstants.TYPE_LONG},{CodeConstants.TYPE_FLOAT}}, // public final static int opc_l2f = 137;
- {{CodeConstants.TYPE_LONG},{CodeConstants.TYPE_DOUBLE}}, // public final static int opc_l2d = 138;
- {{CodeConstants.TYPE_FLOAT},{CodeConstants.TYPE_INT}}, // public final static int opc_f2i = 139;
- {{CodeConstants.TYPE_FLOAT},{CodeConstants.TYPE_LONG}}, // public final static int opc_f2l = 140;
- {{CodeConstants.TYPE_FLOAT},{CodeConstants.TYPE_DOUBLE}}, // public final static int opc_f2d = 141;
- {{CodeConstants.TYPE_DOUBLE},{CodeConstants.TYPE_INT}}, // public final static int opc_d2i = 142;
- {{CodeConstants.TYPE_DOUBLE},{CodeConstants.TYPE_LONG}}, // public final static int opc_d2l = 143;
- {{CodeConstants.TYPE_DOUBLE},{CodeConstants.TYPE_FLOAT}}, // public final static int opc_d2f = 144;
- {{CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_i2b = 145;
- {{CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_i2c = 146;
- {{CodeConstants.TYPE_INT},{CodeConstants.TYPE_INT}}, // public final static int opc_i2s = 147;
- {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG},{CodeConstants.TYPE_INT}}, // public final static int opc_lcmp = 148;
- {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT},{CodeConstants.TYPE_INT}}, // public final static int opc_fcmpl = 149;
- {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT},{CodeConstants.TYPE_INT}}, // public final static int opc_fcmpg = 150;
- {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE},{CodeConstants.TYPE_INT}}, // public final static int opc_dcmpl = 151;
- {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE},{CodeConstants.TYPE_INT}}, // public final static int opc_dcmpg = 152;
- {{CodeConstants.TYPE_INT},null}, // public final static int opc_ifeq = 153;
- {{CodeConstants.TYPE_INT},null}, // public final static int opc_ifne = 154;
- {{CodeConstants.TYPE_INT},null}, // public final static int opc_iflt = 155;
- {{CodeConstants.TYPE_INT},null}, // public final static int opc_ifge = 156;
- {{CodeConstants.TYPE_INT},null}, // public final static int opc_ifgt = 157;
- {{CodeConstants.TYPE_INT},null}, // public final static int opc_ifle = 158;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},null}, // public final static int opc_if_icmpeq = 159;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},null}, // public final static int opc_if_icmpne = 160;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},null}, // public final static int opc_if_icmplt = 161;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},null}, // public final static int opc_if_icmpge = 162;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},null}, // public final static int opc_if_icmpgt = 163;
- {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT},null}, // public final static int opc_if_icmple = 164;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_OBJECT},null}, // public final static int opc_if_acmpeq = 165;
- {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_OBJECT},null}, // public final static int opc_if_acmpne = 166;
- {null,null}, // public final static int opc_goto = 167;
- {null,{CodeConstants.TYPE_ADDRESS}}, // public final static int opc_jsr = 168;
- {null,null}, // public final static int opc_ret = 169;
- {{CodeConstants.TYPE_INT},null}, // public final static int opc_tableswitch = 170;
- {{CodeConstants.TYPE_INT},null}, // public final static int opc_lookupswitch = 171;
- {{CodeConstants.TYPE_INT},null}, // public final static int opc_ireturn = 172;
- {{CodeConstants.TYPE_LONG},null}, // public final static int opc_lreturn = 173;
- {{CodeConstants.TYPE_FLOAT},null}, // public final static int opc_freturn = 174;
- {{CodeConstants.TYPE_DOUBLE},null}, // public final static int opc_dreturn = 175;
- {{CodeConstants.TYPE_OBJECT},null}, // public final static int opc_areturn = 176;
- {null,null}, // public final static int opc_return = 177;
- null, // public final static int opc_getstatic = 178;
- null, // public final static int opc_putstatic = 179;
- null, // public final static int opc_getfield = 180;
- null, // public final static int opc_putfield = 181;
- null, // public final static int opc_invokevirtual = 182;
- null, // public final static int opc_invokespecial = 183;
- null, // public final static int opc_invokestatic = 184;
- null, // public final static int opc_invokeinterface = 185;
- null, // public final static int opc_xxxunusedxxx = 186;
- null, // public final static int opc_new = 187;
- null, // public final static int opc_newarray = 188;
- null, // public final static int opc_anewarray = 189;
- {{CodeConstants.TYPE_OBJECT},{CodeConstants.TYPE_INT}}, // public final static int opc_arraylength = 190;
- null, // public final static int opc_athrow = 191;
- null, // public final static int opc_checkcast = 192;
- null, // public final static int opc_instanceof = 193;
- {{CodeConstants.TYPE_OBJECT},null}, // public final static int opc_monitorenter = 194;
- {{CodeConstants.TYPE_OBJECT},null}, // public final static int opc_monitorexit = 195;
- null, // public final static int opc_wide = 196;
- null, // public final static int opc_multianewarray = 197;
- {{CodeConstants.TYPE_OBJECT},null}, // public final static int opc_ifnull = 198;
- {{CodeConstants.TYPE_OBJECT},null}, // public final static int opc_ifnonnull = 199;
- {null,null}, // public final static int opc_goto_w = 200;
- {null,{CodeConstants.TYPE_ADDRESS}}, // public final static int opc_jsr_w = 201;
- };
- private static final int[] arr_type = new int[] {
- CodeConstants.TYPE_BOOLEAN,
- CodeConstants.TYPE_CHAR,
- CodeConstants.TYPE_FLOAT,
- CodeConstants.TYPE_DOUBLE,
- CodeConstants.TYPE_BYTE,
- CodeConstants.TYPE_SHORT,
- CodeConstants.TYPE_INT,
- CodeConstants.TYPE_LONG
- };
-
-
- // Sonderbehandlung
-// null, // public final static int opc_aconst_null = 1;
-// null, // public final static int opc_ldc = 18;
-// null, // public final static int opc_ldc_w = 19;
-// null, // public final static int opc_ldc2_w = 20;
-// null, // public final static int opc_aload = 25;
-// null, // public final static int opc_aaload = 50;
-// null, // public final static int opc_astore = 58;
-// null, // public final static int opc_dup = 89;
-// null, // public final static int opc_dup_x1 = 90;
-// null, // public final static int opc_dup_x2 = 91;
-// null, // public final static int opc_dup2 = 92;
-// null, // public final static int opc_dup2_x1 = 93;
-// null, // public final static int opc_dup2_x2 = 94;
-// null, // public final static int opc_swap = 95;
-// null, // public final static int opc_getstatic = 178;
-// null, // public final static int opc_putstatic = 179;
-// null, // public final static int opc_getfield = 180;
-// null, // public final static int opc_putfield = 181;
-// null, // public final static int opc_invokevirtual = 182;
-// null, // public final static int opc_invokespecial = 183;
-// null, // public final static int opc_invokestatic = 184;
-// null, // public final static int opc_invokeinterface = 185;
-// null, // public final static int opc_new = 187;
-// null, // public final static int opc_newarray = 188;
-// null, // public final static int opc_anewarray = 189;
-// null, // public final static int opc_athrow = 191;
-// null, // public final static int opc_checkcast = 192;
-// null, // public final static int opc_instanceof = 193;
-// null, // public final static int opc_multianewarray = 197;
-
-
- public static void stepTypes(DataPoint data, Instruction instr, ConstantPool pool) {
-
- ListStack<VarType> stack = data.getStack();
- int[][] arr = stack_impact[instr.opcode];
-
- if(arr != null) {
- // simple types only
-
- int[] read = arr[0];
- int[] write = arr[1];
-
- if(read!=null) {
- int depth = 0;
- for(int i=0;i<read.length;i++) {
- int type = read[i];
- depth++;
- if(type == CodeConstants.TYPE_LONG ||
- type == CodeConstants.TYPE_DOUBLE) {
- depth++;
- }
- }
-
- stack.removeMultiple(depth);
- }
-
- if(write!=null) {
- for(int i=0;i<write.length;i++) {
- int type = write[i];
- stack.push(new VarType(type));
- if(type == CodeConstants.TYPE_LONG ||
- type == CodeConstants.TYPE_DOUBLE) {
- stack.push(new VarType(CodeConstants.TYPE_GROUP2EMPTY));
- }
- }
- }
-
- } else {
- // Sonderbehandlung
- processSpecialInstructions(data, instr, pool);
- }
-
- }
-
- private static void processSpecialInstructions(DataPoint data, Instruction instr, ConstantPool pool) {
-
- VarType var1;
- PrimitiveConstant cn;
- LinkConstant ck;
-
- ListStack<VarType> stack = data.getStack();
-
- switch(instr.opcode) {
- case CodeConstants.opc_aconst_null:
- stack.push(new VarType(CodeConstants.TYPE_NULL,0,null));
- break;
- case CodeConstants.opc_ldc:
- case CodeConstants.opc_ldc_w:
- case CodeConstants.opc_ldc2_w:
- cn = pool.getPrimitiveConstant(instr.getOperand(0));
- switch(cn.type) {
- case CodeConstants.CONSTANT_Integer:
- stack.push(new VarType(CodeConstants.TYPE_INT));
- break;
- case CodeConstants.CONSTANT_Float:
- stack.push(new VarType(CodeConstants.TYPE_FLOAT));
- break;
- case CodeConstants.CONSTANT_Long:
- stack.push(new VarType(CodeConstants.TYPE_LONG));
- stack.push(new VarType(CodeConstants.TYPE_GROUP2EMPTY));
- break;
- case CodeConstants.CONSTANT_Double:
- stack.push(new VarType(CodeConstants.TYPE_DOUBLE));
- stack.push(new VarType(CodeConstants.TYPE_GROUP2EMPTY));
- break;
- case CodeConstants.CONSTANT_String:
- stack.push(new VarType(CodeConstants.TYPE_OBJECT, 0, "java/lang/String"));
- break;
- case CodeConstants.CONSTANT_Class:
- stack.push(new VarType(CodeConstants.TYPE_OBJECT, 0, "java/lang/Class"));
- break;
- }
- break;
- case CodeConstants.opc_aload:
- var1 = data.getVariable(instr.getOperand(0));
- if(var1!=null) {
- stack.push(var1);
- } else {
- stack.push(new VarType(CodeConstants.TYPE_OBJECT,0,null));
- }
- break;
- case CodeConstants.opc_aaload:
- var1 = stack.pop(2);
- stack.push(new VarType(var1.type, var1.arraydim-1, var1.value));
- break;
- case CodeConstants.opc_astore:
- data.setVariable(instr.getOperand(0), (VarType)stack.pop());
- break;
- case CodeConstants.opc_dup:
- case CodeConstants.opc_dup_x1:
- case CodeConstants.opc_dup_x2:
- int depth1 = 88 - instr.opcode;
- stack.insertByOffset(depth1, stack.getByOffset(-1).copy());
- break;
- case CodeConstants.opc_dup2:
- case CodeConstants.opc_dup2_x1:
- case CodeConstants.opc_dup2_x2:
- int depth2 = 90 - instr.opcode;
- stack.insertByOffset(depth2, stack.getByOffset(-2).copy());
- stack.insertByOffset(depth2, stack.getByOffset(-1).copy());
- break;
- case CodeConstants.opc_swap:
- var1 = stack.pop();
- stack.insertByOffset(-1, var1);
- break;
- case CodeConstants.opc_getfield:
- stack.pop();
- case CodeConstants.opc_getstatic:
- ck = pool.getLinkConstant(instr.getOperand(0));
- var1 = new VarType(ck.descriptor);
- stack.push(var1);
- if(var1.stack_size==2) {
- stack.push(new VarType(CodeConstants.TYPE_GROUP2EMPTY));
- }
- break;
- case CodeConstants.opc_putfield:
- stack.pop();
- case CodeConstants.opc_putstatic:
- ck = pool.getLinkConstant(instr.getOperand(0));
- var1 = new VarType(ck.descriptor);
- stack.pop(var1.stack_size);
- break;
- case CodeConstants.opc_invokevirtual:
- case CodeConstants.opc_invokespecial:
- case CodeConstants.opc_invokeinterface:
- stack.pop();
- case CodeConstants.opc_invokestatic:
- case CodeConstants.opc_invokedynamic:
- if(instr.opcode != CodeConstants.opc_invokedynamic || instr.bytecode_version >= CodeConstants.BYTECODE_JAVA_7) {
- ck = pool.getLinkConstant(instr.getOperand(0));
- MethodDescriptor md = MethodDescriptor.parseDescriptor(ck.descriptor);
- for(int i=0;i<md.params.length;i++) {
- stack.pop(md.params[i].stack_size);
- }
- if(md.ret.type != CodeConstants.TYPE_VOID) {
- stack.push(md.ret);
- if(md.ret.stack_size==2) {
- stack.push(new VarType(CodeConstants.TYPE_GROUP2EMPTY));
- }
- }
- }
- break;
- case CodeConstants.opc_new:
- cn = pool.getPrimitiveConstant(instr.getOperand(0));
- stack.push(new VarType(CodeConstants.TYPE_OBJECT, 0, cn.getString()));
- break;
- case CodeConstants.opc_newarray:
- stack.pop();
- var1 = new VarType(arr_type[instr.getOperand(0)-4]);
- var1.arraydim = 1;
- stack.push(var1);
- break;
- case CodeConstants.opc_athrow:
- var1 = stack.pop();
- stack.clear();
- stack.push(var1);
- break;
- case CodeConstants.opc_checkcast:
- case CodeConstants.opc_instanceof:
- stack.pop();
- cn = pool.getPrimitiveConstant(instr.getOperand(0));
- stack.push(new VarType(CodeConstants.TYPE_OBJECT, 0, cn.getString()));
- break;
- case CodeConstants.opc_anewarray:
- case CodeConstants.opc_multianewarray:
- int dimensions = (instr.opcode==CodeConstants.opc_anewarray)?1:instr.getOperand(1);
- stack.pop(dimensions);
- cn = pool.getPrimitiveConstant(instr.getOperand(0));
- if(cn.isArray) {
- var1 = new VarType(CodeConstants.TYPE_OBJECT, 0, cn.getString());
- var1.arraydim+=dimensions;
- stack.push(var1);
- } else {
- stack.push(new VarType(CodeConstants.TYPE_OBJECT, dimensions, cn.getString()));
- }
- }
-
- }
-
+ // {read, write}
+ private static final int[][][] stack_impact = {
+
+ {null, null}, // public final static int opc_nop = 0;
+ null, // public final static int opc_aconst_null = 1;
+ null, // public final static int opc_iconst_m1 = 2;
+ null, // public final static int opc_iconst_0 = 3;
+ null, // public final static int opc_iconst_1 = 4;
+ null, // public final static int opc_iconst_2 = 5;
+ null, // public final static int opc_iconst_3 = 6;
+ null, // public final static int opc_iconst_4 = 7;
+ null, // public final static int opc_iconst_5 = 8;
+ {null, {CodeConstants.TYPE_LONG}}, // public final static int opc_lconst_0 = 9;
+ {null, {CodeConstants.TYPE_LONG}}, // public final static int opc_lconst_1 = 10;
+ {null, {CodeConstants.TYPE_FLOAT}}, // public final static int opc_fconst_0 = 11;
+ {null, {CodeConstants.TYPE_FLOAT}}, // public final static int opc_fconst_1 = 12;
+ {null, {CodeConstants.TYPE_FLOAT}}, // public final static int opc_fconst_2 = 13;
+ {null, {CodeConstants.TYPE_DOUBLE}}, // public final static int opc_dconst_0 = 14;
+ {null, {CodeConstants.TYPE_DOUBLE}}, // public final static int opc_dconst_1 = 15;
+ {null, {CodeConstants.TYPE_INT}}, // public final static int opc_bipush = 16;
+ {null, {CodeConstants.TYPE_INT}}, // public final static int opc_sipush = 17;
+ null, // public final static int opc_ldc = 18;
+ null, // public final static int opc_ldc_w = 19;
+ null, // public final static int opc_ldc2_w = 20;
+ {null, {CodeConstants.TYPE_INT}}, // public final static int opc_iload = 21;
+ {null, {CodeConstants.TYPE_LONG}}, // public final static int opc_lload = 22;
+ {null, {CodeConstants.TYPE_FLOAT}}, // public final static int opc_fload = 23;
+ {null, {CodeConstants.TYPE_DOUBLE}}, // public final static int opc_dload = 24;
+ null, // public final static int opc_aload = 25;
+ null, // public final static int opc_iload_0 = 26;
+ null, // public final static int opc_iload_1 = 27;
+ null, // public final static int opc_iload_2 = 28;
+ null, // public final static int opc_iload_3 = 29;
+ null, // public final static int opc_lload_0 = 30;
+ null, // public final static int opc_lload_1 = 31;
+ null, // public final static int opc_lload_2 = 32;
+ null, // public final static int opc_lload_3 = 33;
+ null, // public final static int opc_fload_0 = 34;
+ null, // public final static int opc_fload_1 = 35;
+ null, // public final static int opc_fload_2 = 36;
+ null, // public final static int opc_fload_3 = 37;
+ null, // public final static int opc_dload_0 = 38;
+ null, // public final static int opc_dload_1 = 39;
+ null, // public final static int opc_dload_2 = 40;
+ null, // public final static int opc_dload_3 = 41;
+ null, // public final static int opc_aload_0 = 42;
+ null, // public final static int opc_aload_1 = 43;
+ null, // public final static int opc_aload_2 = 44;
+ null, // public final static int opc_aload_3 = 45;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_iaload = 46;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_LONG}},
+ // public final static int opc_laload = 47;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_FLOAT}},
+ // public final static int opc_faload = 48;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_DOUBLE}},
+ // public final static int opc_daload = 49;
+ null, // public final static int opc_aaload = 50;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_baload = 51;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_caload = 52;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_saload = 53;
+ {{CodeConstants.TYPE_INT}, null}, // public final static int opc_istore = 54;
+ {{CodeConstants.TYPE_LONG}, null}, // public final static int opc_lstore = 55;
+ {{CodeConstants.TYPE_FLOAT}, null}, // public final static int opc_fstore = 56;
+ {{CodeConstants.TYPE_DOUBLE}, null}, // public final static int opc_dstore = 57;
+ null, // public final static int opc_astore = 58;
+ null, // public final static int opc_istore_0 = 59;
+ null, // public final static int opc_istore_1 = 60;
+ null, // public final static int opc_istore_2 = 61;
+ null, // public final static int opc_istore_3 = 62;
+ null, // public final static int opc_lstore_0 = 63;
+ null, // public final static int opc_lstore_1 = 64;
+ null, // public final static int opc_lstore_2 = 65;
+ null, // public final static int opc_lstore_3 = 66;
+ null, // public final static int opc_fstore_0 = 67;
+ null, // public final static int opc_fstore_1 = 68;
+ null, // public final static int opc_fstore_2 = 69;
+ null, // public final static int opc_fstore_3 = 70;
+ null, // public final static int opc_dstore_0 = 71;
+ null, // public final static int opc_dstore_1 = 72;
+ null, // public final static int opc_dstore_2 = 73;
+ null, // public final static int opc_dstore_3 = 74;
+ null, // public final static int opc_astore_0 = 75;
+ null, // public final static int opc_astore_1 = 76;
+ null, // public final static int opc_astore_2 = 77;
+ null, // public final static int opc_astore_3 = 78;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, null},
+ // public final static int opc_iastore = 79;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT, CodeConstants.TYPE_LONG}, null},
+ // public final static int opc_lastore = 80;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT, CodeConstants.TYPE_FLOAT}, null},
+ // public final static int opc_fastore = 81;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT, CodeConstants.TYPE_DOUBLE}, null},
+ // public final static int opc_dastore = 82;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT, CodeConstants.TYPE_OBJECT}, null},
+ // public final static int opc_aastore = 83;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, null},
+ // public final static int opc_bastore = 84;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, null},
+ // public final static int opc_castore = 85;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, null},
+ // public final static int opc_sastore = 86;
+ {{CodeConstants.TYPE_ANY}, null}, // public final static int opc_pop = 87;
+ {{CodeConstants.TYPE_ANY, CodeConstants.TYPE_ANY}, null}, // public final static int opc_pop2 = 88;
+ null, // public final static int opc_dup = 89;
+ null, // public final static int opc_dup_x1 = 90;
+ null, // public final static int opc_dup_x2 = 91;
+ null, // public final static int opc_dup2 = 92;
+ null, // public final static int opc_dup2_x1 = 93;
+ null, // public final static int opc_dup2_x2 = 94;
+ null, // public final static int opc_swap = 95;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_iadd = 96;
+ {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG}, {CodeConstants.TYPE_LONG}},
+ // public final static int opc_ladd = 97;
+ {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT}, {CodeConstants.TYPE_FLOAT}},
+ // public final static int opc_fadd = 98;
+ {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE}, {CodeConstants.TYPE_DOUBLE}},
+ // public final static int opc_dadd = 99;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_isub = 100;
+ {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG}, {CodeConstants.TYPE_LONG}},
+ // public final static int opc_lsub = 101;
+ {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT}, {CodeConstants.TYPE_FLOAT}},
+ // public final static int opc_fsub = 102;
+ {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE}, {CodeConstants.TYPE_DOUBLE}},
+ // public final static int opc_dsub = 103;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_imul = 104;
+ {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG}, {CodeConstants.TYPE_LONG}},
+ // public final static int opc_lmul = 105;
+ {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT}, {CodeConstants.TYPE_FLOAT}},
+ // public final static int opc_fmul = 106;
+ {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE}, {CodeConstants.TYPE_DOUBLE}},
+ // public final static int opc_dmul = 107;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_idiv = 108;
+ {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG}, {CodeConstants.TYPE_LONG}},
+ // public final static int opc_ldiv = 109;
+ {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT}, {CodeConstants.TYPE_FLOAT}},
+ // public final static int opc_fdiv = 110;
+ {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE}, {CodeConstants.TYPE_DOUBLE}},
+ // public final static int opc_ddiv = 111;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_irem = 112;
+ {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG}, {CodeConstants.TYPE_LONG}},
+ // public final static int opc_lrem = 113;
+ {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT}, {CodeConstants.TYPE_FLOAT}},
+ // public final static int opc_frem = 114;
+ {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE}, {CodeConstants.TYPE_DOUBLE}},
+ // public final static int opc_drem = 115;
+ {{CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}}, // public final static int opc_ineg = 116;
+ {{CodeConstants.TYPE_LONG}, {CodeConstants.TYPE_LONG}}, // public final static int opc_lneg = 117;
+ {{CodeConstants.TYPE_FLOAT}, {CodeConstants.TYPE_FLOAT}}, // public final static int opc_fneg = 118;
+ {{CodeConstants.TYPE_DOUBLE}, {CodeConstants.TYPE_DOUBLE}}, // public final static int opc_dneg = 119;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_ishl = 120;
+ {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_LONG}},
+ // public final static int opc_lshl = 121;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_ishr = 122;
+ {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_LONG}},
+ // public final static int opc_lshr = 123;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_iushr = 124;
+ {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_LONG}},
+ // public final static int opc_lushr = 125;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_iand = 126;
+ {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG}, {CodeConstants.TYPE_LONG}},
+ // public final static int opc_land = 127;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_ior = 128;
+ {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG}, {CodeConstants.TYPE_LONG}},
+ // public final static int opc_lor = 129;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_ixor = 130;
+ {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG}, {CodeConstants.TYPE_LONG}},
+ // public final static int opc_lxor = 131;
+ {null, null}, // public final static int opc_iinc = 132;
+ {{CodeConstants.TYPE_INT}, {CodeConstants.TYPE_LONG}}, // public final static int opc_i2l = 133;
+ {{CodeConstants.TYPE_INT}, {CodeConstants.TYPE_FLOAT}}, // public final static int opc_i2f = 134;
+ {{CodeConstants.TYPE_INT}, {CodeConstants.TYPE_DOUBLE}}, // public final static int opc_i2d = 135;
+ {{CodeConstants.TYPE_LONG}, {CodeConstants.TYPE_INT}}, // public final static int opc_l2i = 136;
+ {{CodeConstants.TYPE_LONG}, {CodeConstants.TYPE_FLOAT}}, // public final static int opc_l2f = 137;
+ {{CodeConstants.TYPE_LONG}, {CodeConstants.TYPE_DOUBLE}}, // public final static int opc_l2d = 138;
+ {{CodeConstants.TYPE_FLOAT}, {CodeConstants.TYPE_INT}}, // public final static int opc_f2i = 139;
+ {{CodeConstants.TYPE_FLOAT}, {CodeConstants.TYPE_LONG}}, // public final static int opc_f2l = 140;
+ {{CodeConstants.TYPE_FLOAT}, {CodeConstants.TYPE_DOUBLE}}, // public final static int opc_f2d = 141;
+ {{CodeConstants.TYPE_DOUBLE}, {CodeConstants.TYPE_INT}}, // public final static int opc_d2i = 142;
+ {{CodeConstants.TYPE_DOUBLE}, {CodeConstants.TYPE_LONG}}, // public final static int opc_d2l = 143;
+ {{CodeConstants.TYPE_DOUBLE}, {CodeConstants.TYPE_FLOAT}}, // public final static int opc_d2f = 144;
+ {{CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}}, // public final static int opc_i2b = 145;
+ {{CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}}, // public final static int opc_i2c = 146;
+ {{CodeConstants.TYPE_INT}, {CodeConstants.TYPE_INT}}, // public final static int opc_i2s = 147;
+ {{CodeConstants.TYPE_LONG, CodeConstants.TYPE_LONG}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_lcmp = 148;
+ {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_fcmpl = 149;
+ {{CodeConstants.TYPE_FLOAT, CodeConstants.TYPE_FLOAT}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_fcmpg = 150;
+ {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_dcmpl = 151;
+ {{CodeConstants.TYPE_DOUBLE, CodeConstants.TYPE_DOUBLE}, {CodeConstants.TYPE_INT}},
+ // public final static int opc_dcmpg = 152;
+ {{CodeConstants.TYPE_INT}, null}, // public final static int opc_ifeq = 153;
+ {{CodeConstants.TYPE_INT}, null}, // public final static int opc_ifne = 154;
+ {{CodeConstants.TYPE_INT}, null}, // public final static int opc_iflt = 155;
+ {{CodeConstants.TYPE_INT}, null}, // public final static int opc_ifge = 156;
+ {{CodeConstants.TYPE_INT}, null}, // public final static int opc_ifgt = 157;
+ {{CodeConstants.TYPE_INT}, null}, // public final static int opc_ifle = 158;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, null}, // public final static int opc_if_icmpeq = 159;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, null}, // public final static int opc_if_icmpne = 160;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, null}, // public final static int opc_if_icmplt = 161;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, null}, // public final static int opc_if_icmpge = 162;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, null}, // public final static int opc_if_icmpgt = 163;
+ {{CodeConstants.TYPE_INT, CodeConstants.TYPE_INT}, null}, // public final static int opc_if_icmple = 164;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_OBJECT}, null},
+ // public final static int opc_if_acmpeq = 165;
+ {{CodeConstants.TYPE_OBJECT, CodeConstants.TYPE_OBJECT}, null},
+ // public final static int opc_if_acmpne = 166;
+ {null, null}, // public final static int opc_goto = 167;
+ {null, {CodeConstants.TYPE_ADDRESS}}, // public final static int opc_jsr = 168;
+ {null, null}, // public final static int opc_ret = 169;
+ {{CodeConstants.TYPE_INT}, null}, // public final static int opc_tableswitch = 170;
+ {{CodeConstants.TYPE_INT}, null}, // public final static int opc_lookupswitch = 171;
+ {{CodeConstants.TYPE_INT}, null}, // public final static int opc_ireturn = 172;
+ {{CodeConstants.TYPE_LONG}, null}, // public final static int opc_lreturn = 173;
+ {{CodeConstants.TYPE_FLOAT}, null}, // public final static int opc_freturn = 174;
+ {{CodeConstants.TYPE_DOUBLE}, null}, // public final static int opc_dreturn = 175;
+ {{CodeConstants.TYPE_OBJECT}, null}, // public final static int opc_areturn = 176;
+ {null, null}, // public final static int opc_return = 177;
+ null, // public final static int opc_getstatic = 178;
+ null, // public final static int opc_putstatic = 179;
+ null, // public final static int opc_getfield = 180;
+ null, // public final static int opc_putfield = 181;
+ null, // public final static int opc_invokevirtual = 182;
+ null, // public final static int opc_invokespecial = 183;
+ null, // public final static int opc_invokestatic = 184;
+ null, // public final static int opc_invokeinterface = 185;
+ null, // public final static int opc_xxxunusedxxx = 186;
+ null, // public final static int opc_new = 187;
+ null, // public final static int opc_newarray = 188;
+ null, // public final static int opc_anewarray = 189;
+ {{CodeConstants.TYPE_OBJECT}, {CodeConstants.TYPE_INT}}, // public final static int opc_arraylength = 190;
+ null,
+ // public final static int opc_athrow = 191;
+ null,
+ // public final static int opc_checkcast = 192;
+ null,
+ // public final static int opc_instanceof = 193;
+ {{CodeConstants.TYPE_OBJECT}, null}, // public final static int opc_monitorenter = 194;
+ {{CodeConstants.TYPE_OBJECT}, null}, // public final static int opc_monitorexit = 195;
+ null,
+ // public final static int opc_wide = 196;
+ null,
+ // public final static int opc_multianewarray = 197;
+ {{CodeConstants.TYPE_OBJECT}, null}, // public final static int opc_ifnull = 198;
+ {{CodeConstants.TYPE_OBJECT}, null}, // public final static int opc_ifnonnull = 199;
+ {null, null}, // public final static int opc_goto_w = 200;
+ {null, {CodeConstants.TYPE_ADDRESS}}, // public final static int opc_jsr_w = 201;
+ };
+
+ private static final int[] arr_type = new int[]{
+ CodeConstants.TYPE_BOOLEAN,
+ CodeConstants.TYPE_CHAR,
+ CodeConstants.TYPE_FLOAT,
+ CodeConstants.TYPE_DOUBLE,
+ CodeConstants.TYPE_BYTE,
+ CodeConstants.TYPE_SHORT,
+ CodeConstants.TYPE_INT,
+ CodeConstants.TYPE_LONG
+ };
+
+
+ // Sonderbehandlung
+ // null, // public final static int opc_aconst_null = 1;
+ // null, // public final static int opc_ldc = 18;
+ // null, // public final static int opc_ldc_w = 19;
+ // null, // public final static int opc_ldc2_w = 20;
+ // null, // public final static int opc_aload = 25;
+ // null, // public final static int opc_aaload = 50;
+ // null, // public final static int opc_astore = 58;
+ // null, // public final static int opc_dup = 89;
+ // null, // public final static int opc_dup_x1 = 90;
+ // null, // public final static int opc_dup_x2 = 91;
+ // null, // public final static int opc_dup2 = 92;
+ // null, // public final static int opc_dup2_x1 = 93;
+ // null, // public final static int opc_dup2_x2 = 94;
+ // null, // public final static int opc_swap = 95;
+ // null, // public final static int opc_getstatic = 178;
+ // null, // public final static int opc_putstatic = 179;
+ // null, // public final static int opc_getfield = 180;
+ // null, // public final static int opc_putfield = 181;
+ // null, // public final static int opc_invokevirtual = 182;
+ // null, // public final static int opc_invokespecial = 183;
+ // null, // public final static int opc_invokestatic = 184;
+ // null, // public final static int opc_invokeinterface = 185;
+ // null, // public final static int opc_new = 187;
+ // null, // public final static int opc_newarray = 188;
+ // null, // public final static int opc_anewarray = 189;
+ // null, // public final static int opc_athrow = 191;
+ // null, // public final static int opc_checkcast = 192;
+ // null, // public final static int opc_instanceof = 193;
+ // null, // public final static int opc_multianewarray = 197;
+
+
+ public static void stepTypes(DataPoint data, Instruction instr, ConstantPool pool) {
+
+ ListStack<VarType> stack = data.getStack();
+ int[][] arr = stack_impact[instr.opcode];
+
+ if (arr != null) {
+ // simple types only
+
+ int[] read = arr[0];
+ int[] write = arr[1];
+
+ if (read != null) {
+ int depth = 0;
+ for (int i = 0; i < read.length; i++) {
+ int type = read[i];
+ depth++;
+ if (type == CodeConstants.TYPE_LONG ||
+ type == CodeConstants.TYPE_DOUBLE) {
+ depth++;
+ }
+ }
+
+ stack.removeMultiple(depth);
+ }
+
+ if (write != null) {
+ for (int i = 0; i < write.length; i++) {
+ int type = write[i];
+ stack.push(new VarType(type));
+ if (type == CodeConstants.TYPE_LONG ||
+ type == CodeConstants.TYPE_DOUBLE) {
+ stack.push(new VarType(CodeConstants.TYPE_GROUP2EMPTY));
+ }
+ }
+ }
+ }
+ else {
+ // Sonderbehandlung
+ processSpecialInstructions(data, instr, pool);
+ }
+ }
+
+ private static void processSpecialInstructions(DataPoint data, Instruction instr, ConstantPool pool) {
+
+ VarType var1;
+ PrimitiveConstant cn;
+ LinkConstant ck;
+
+ ListStack<VarType> stack = data.getStack();
+
+ switch (instr.opcode) {
+ case CodeConstants.opc_aconst_null:
+ stack.push(new VarType(CodeConstants.TYPE_NULL, 0, null));
+ break;
+ case CodeConstants.opc_ldc:
+ case CodeConstants.opc_ldc_w:
+ case CodeConstants.opc_ldc2_w:
+ cn = pool.getPrimitiveConstant(instr.getOperand(0));
+ switch (cn.type) {
+ case CodeConstants.CONSTANT_Integer:
+ stack.push(new VarType(CodeConstants.TYPE_INT));
+ break;
+ case CodeConstants.CONSTANT_Float:
+ stack.push(new VarType(CodeConstants.TYPE_FLOAT));
+ break;
+ case CodeConstants.CONSTANT_Long:
+ stack.push(new VarType(CodeConstants.TYPE_LONG));
+ stack.push(new VarType(CodeConstants.TYPE_GROUP2EMPTY));
+ break;
+ case CodeConstants.CONSTANT_Double:
+ stack.push(new VarType(CodeConstants.TYPE_DOUBLE));
+ stack.push(new VarType(CodeConstants.TYPE_GROUP2EMPTY));
+ break;
+ case CodeConstants.CONSTANT_String:
+ stack.push(new VarType(CodeConstants.TYPE_OBJECT, 0, "java/lang/String"));
+ break;
+ case CodeConstants.CONSTANT_Class:
+ stack.push(new VarType(CodeConstants.TYPE_OBJECT, 0, "java/lang/Class"));
+ break;
+ }
+ break;
+ case CodeConstants.opc_aload:
+ var1 = data.getVariable(instr.getOperand(0));
+ if (var1 != null) {
+ stack.push(var1);
+ }
+ else {
+ stack.push(new VarType(CodeConstants.TYPE_OBJECT, 0, null));
+ }
+ break;
+ case CodeConstants.opc_aaload:
+ var1 = stack.pop(2);
+ stack.push(new VarType(var1.type, var1.arraydim - 1, var1.value));
+ break;
+ case CodeConstants.opc_astore:
+ data.setVariable(instr.getOperand(0), (VarType)stack.pop());
+ break;
+ case CodeConstants.opc_dup:
+ case CodeConstants.opc_dup_x1:
+ case CodeConstants.opc_dup_x2:
+ int depth1 = 88 - instr.opcode;
+ stack.insertByOffset(depth1, stack.getByOffset(-1).copy());
+ break;
+ case CodeConstants.opc_dup2:
+ case CodeConstants.opc_dup2_x1:
+ case CodeConstants.opc_dup2_x2:
+ int depth2 = 90 - instr.opcode;
+ stack.insertByOffset(depth2, stack.getByOffset(-2).copy());
+ stack.insertByOffset(depth2, stack.getByOffset(-1).copy());
+ break;
+ case CodeConstants.opc_swap:
+ var1 = stack.pop();
+ stack.insertByOffset(-1, var1);
+ break;
+ case CodeConstants.opc_getfield:
+ stack.pop();
+ case CodeConstants.opc_getstatic:
+ ck = pool.getLinkConstant(instr.getOperand(0));
+ var1 = new VarType(ck.descriptor);
+ stack.push(var1);
+ if (var1.stack_size == 2) {
+ stack.push(new VarType(CodeConstants.TYPE_GROUP2EMPTY));
+ }
+ break;
+ case CodeConstants.opc_putfield:
+ stack.pop();
+ case CodeConstants.opc_putstatic:
+ ck = pool.getLinkConstant(instr.getOperand(0));
+ var1 = new VarType(ck.descriptor);
+ stack.pop(var1.stack_size);
+ break;
+ case CodeConstants.opc_invokevirtual:
+ case CodeConstants.opc_invokespecial:
+ case CodeConstants.opc_invokeinterface:
+ stack.pop();
+ case CodeConstants.opc_invokestatic:
+ case CodeConstants.opc_invokedynamic:
+ if (instr.opcode != CodeConstants.opc_invokedynamic || instr.bytecode_version >= CodeConstants.BYTECODE_JAVA_7) {
+ ck = pool.getLinkConstant(instr.getOperand(0));
+ MethodDescriptor md = MethodDescriptor.parseDescriptor(ck.descriptor);
+ for (int i = 0; i < md.params.length; i++) {
+ stack.pop(md.params[i].stack_size);
+ }
+ if (md.ret.type != CodeConstants.TYPE_VOID) {
+ stack.push(md.ret);
+ if (md.ret.stack_size == 2) {
+ stack.push(new VarType(CodeConstants.TYPE_GROUP2EMPTY));
+ }
+ }
+ }
+ break;
+ case CodeConstants.opc_new:
+ cn = pool.getPrimitiveConstant(instr.getOperand(0));
+ stack.push(new VarType(CodeConstants.TYPE_OBJECT, 0, cn.getString()));
+ break;
+ case CodeConstants.opc_newarray:
+ stack.pop();
+ var1 = new VarType(arr_type[instr.getOperand(0) - 4]);
+ var1.arraydim = 1;
+ stack.push(var1);
+ break;
+ case CodeConstants.opc_athrow:
+ var1 = stack.pop();
+ stack.clear();
+ stack.push(var1);
+ break;
+ case CodeConstants.opc_checkcast:
+ case CodeConstants.opc_instanceof:
+ stack.pop();
+ cn = pool.getPrimitiveConstant(instr.getOperand(0));
+ stack.push(new VarType(CodeConstants.TYPE_OBJECT, 0, cn.getString()));
+ break;
+ case CodeConstants.opc_anewarray:
+ case CodeConstants.opc_multianewarray:
+ int dimensions = (instr.opcode == CodeConstants.opc_anewarray) ? 1 : instr.getOperand(1);
+ stack.pop(dimensions);
+ cn = pool.getPrimitiveConstant(instr.getOperand(0));
+ if (cn.isArray) {
+ var1 = new VarType(CodeConstants.TYPE_OBJECT, 0, cn.getString());
+ var1.arraydim += dimensions;
+ stack.push(var1);
+ }
+ else {
+ stack.push(new VarType(CodeConstants.TYPE_OBJECT, dimensions, cn.getString()));
+ }
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/interpreter/Util.java b/src/org/jetbrains/java/decompiler/code/interpreter/Util.java
index 30aaf2c..bf1e5eb 100644
--- a/src/org/jetbrains/java/decompiler/code/interpreter/Util.java
+++ b/src/org/jetbrains/java/decompiler/code/interpreter/Util.java
@@ -1,17 +1,18 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.interpreter;
import org.jetbrains.java.decompiler.code.Instruction;
@@ -21,245 +22,265 @@ import org.jetbrains.java.decompiler.struct.StructContext;
// FIXME: move to StructContext
public class Util {
-
- private static final String[][] runtime_exceptions = {
-
- null, // public final static int opc_nop = 0;
- null, // public final static int opc_aconst_null = 1;
- null, // public final static int opc_iconst_m1 = 2;
- null, // public final static int opc_iconst_0 = 3;
- null, // public final static int opc_iconst_1 = 4;
- null, // public final static int opc_iconst_2 = 5;
- null, // public final static int opc_iconst_3 = 6;
- null, // public final static int opc_iconst_4 = 7;
- null, // public final static int opc_iconst_5 = 8;
- null, // public final static int opc_lconst_0 = 9;
- null, // public final static int opc_lconst_1 = 10;
- null, // public final static int opc_fconst_0 = 11;
- null, // public final static int opc_fconst_1 = 12;
- null, // public final static int opc_fconst_2 = 13;
- null, // public final static int opc_dconst_0 = 14;
- null, // public final static int opc_dconst_1 = 15;
- null, // public final static int opc_bipush = 16;
- null, // public final static int opc_sipush = 17;
- null, // public final static int opc_ldc = 18;
- null, // public final static int opc_ldc_w = 19;
- null, // public final static int opc_ldc2_w = 20;
- null, // public final static int opc_iload = 21;
- null, // public final static int opc_lload = 22;
- null, // public final static int opc_fload = 23;
- null, // public final static int opc_dload = 24;
- null, // public final static int opc_aload = 25;
- null, // public final static int opc_iload_0 = 26;
- null, // public final static int opc_iload_1 = 27;
- null, // public final static int opc_iload_2 = 28;
- null, // public final static int opc_iload_3 = 29;
- null, // public final static int opc_lload_0 = 30;
- null, // public final static int opc_lload_1 = 31;
- null, // public final static int opc_lload_2 = 32;
- null, // public final static int opc_lload_3 = 33;
- null, // public final static int opc_fload_0 = 34;
- null, // public final static int opc_fload_1 = 35;
- null, // public final static int opc_fload_2 = 36;
- null, // public final static int opc_fload_3 = 37;
- null, // public final static int opc_dload_0 = 38;
- null, // public final static int opc_dload_1 = 39;
- null, // public final static int opc_dload_2 = 40;
- null, // public final static int opc_dload_3 = 41;
- null, // public final static int opc_aload_0 = 42;
- null, // public final static int opc_aload_1 = 43;
- null, // public final static int opc_aload_2 = 44;
- null, // public final static int opc_aload_3 = 45;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_iaload = 46;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_laload = 47;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_faload = 48;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_daload = 49;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_aaload = 50;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_baload = 51;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_caload = 52;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_saload = 53;
- null, // public final static int opc_istore = 54;
- null, // public final static int opc_lstore = 55;
- null, // public final static int opc_fstore = 56;
- null, // public final static int opc_dstore = 57;
- null, // public final static int opc_astore = 58;
- null, // public final static int opc_istore_0 = 59;
- null, // public final static int opc_istore_1 = 60;
- null, // public final static int opc_istore_2 = 61;
- null, // public final static int opc_istore_3 = 62;
- null, // public final static int opc_lstore_0 = 63;
- null, // public final static int opc_lstore_1 = 64;
- null, // public final static int opc_lstore_2 = 65;
- null, // public final static int opc_lstore_3 = 66;
- null, // public final static int opc_fstore_0 = 67;
- null, // public final static int opc_fstore_1 = 68;
- null, // public final static int opc_fstore_2 = 69;
- null, // public final static int opc_fstore_3 = 70;
- null, // public final static int opc_dstore_0 = 71;
- null, // public final static int opc_dstore_1 = 72;
- null, // public final static int opc_dstore_2 = 73;
- null, // public final static int opc_dstore_3 = 74;
- null, // public final static int opc_astore_0 = 75;
- null, // public final static int opc_astore_1 = 76;
- null, // public final static int opc_astore_2 = 77;
- null, // public final static int opc_astore_3 = 78;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_iastore = 79;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_lastore = 80;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_fastore = 81;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_dastore = 82;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException", "java/lang/ArrayStoreException"}, // public final static int opc_aastore = 83;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_bastore = 84;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_castore = 85;
- {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"}, // public final static int opc_sastore = 86;
- null, // public final static int opc_pop = 87;
- null, // public final static int opc_pop2 = 88;
- null, // public final static int opc_dup = 89;
- null, // public final static int opc_dup_x1 = 90;
- null, // public final static int opc_dup_x2 = 91;
- null, // public final static int opc_dup2 = 92;
- null, // public final static int opc_dup2_x1 = 93;
- null, // public final static int opc_dup2_x2 = 94;
- null, // public final static int opc_swap = 95;
- null, // public final static int opc_iadd = 96;
- null, // public final static int opc_ladd = 97;
- null, // public final static int opc_fadd = 98;
- null, // public final static int opc_dadd = 99;
- null, // public final static int opc_isub = 100;
- null, // public final static int opc_lsub = 101;
- null, // public final static int opc_fsub = 102;
- null, // public final static int opc_dsub = 103;
- null, // public final static int opc_imul = 104;
- null, // public final static int opc_lmul = 105;
- null, // public final static int opc_fmul = 106;
- null, // public final static int opc_dmul = 107;
- {"java/lang/ArithmeticException"}, // public final static int opc_idiv = 108;
- {"java/lang/ArithmeticException"}, // public final static int opc_ldiv = 109;
- null, // public final static int opc_fdiv = 110;
- null, // public final static int opc_ddiv = 111;
- {"java/lang/ArithmeticException"}, // public final static int opc_irem = 112;
- {"java/lang/ArithmeticException"}, // public final static int opc_lrem = 113;
- null, // public final static int opc_frem = 114;
- null, // public final static int opc_drem = 115;
- null, // public final static int opc_ineg = 116;
- null, // public final static int opc_lneg = 117;
- null, // public final static int opc_fneg = 118;
- null, // public final static int opc_dneg = 119;
- null, // public final static int opc_ishl = 120;
- null, // public final static int opc_lshl = 121;
- null, // public final static int opc_ishr = 122;
- null, // public final static int opc_lshr = 123;
- null, // public final static int opc_iushr = 124;
- null, // public final static int opc_lushr = 125;
- null, // public final static int opc_iand = 126;
- null, // public final static int opc_land = 127;
- null, // public final static int opc_ior = 128;
- null, // public final static int opc_lor = 129;
- null, // public final static int opc_ixor = 130;
- null, // public final static int opc_lxor = 131;
- null, // public final static int opc_iinc = 132;
- null, // public final static int opc_i2l = 133;
- null, // public final static int opc_i2f = 134;
- null, // public final static int opc_i2d = 135;
- null, // public final static int opc_l2i = 136;
- null, // public final static int opc_l2f = 137;
- null, // public final static int opc_l2d = 138;
- null, // public final static int opc_f2i = 139;
- null, // public final static int opc_f2l = 140;
- null, // public final static int opc_f2d = 141;
- null, // public final static int opc_d2i = 142;
- null, // public final static int opc_d2l = 143;
- null, // public final static int opc_d2f = 144;
- null, // public final static int opc_i2b = 145;
- null, // public final static int opc_i2c = 146;
- null, // public final static int opc_i2s = 147;
- null, // public final static int opc_lcmp = 148;
- null, // public final static int opc_fcmpl = 149;
- null, // public final static int opc_fcmpg = 150;
- null, // public final static int opc_dcmpl = 151;
- null, // public final static int opc_dcmpg = 152;
- null, // public final static int opc_ifeq = 153;
- null, // public final static int opc_ifne = 154;
- null, // public final static int opc_iflt = 155;
- null, // public final static int opc_ifge = 156;
- null, // public final static int opc_ifgt = 157;
- null, // public final static int opc_ifle = 158;
- null, // public final static int opc_if_icmpeq = 159;
- null, // public final static int opc_if_icmpne = 160;
- null, // public final static int opc_if_icmplt = 161;
- null, // public final static int opc_if_icmpge = 162;
- null, // public final static int opc_if_icmpgt = 163;
- null, // public final static int opc_if_icmple = 164;
- null, // public final static int opc_if_acmpeq = 165;
- null, // public final static int opc_if_acmpne = 166;
- null, // public final static int opc_goto = 167;
- null, // public final static int opc_jsr = 168;
- null, // public final static int opc_ret = 169;
- null, // public final static int opc_tableswitch = 170;
- null, // public final static int opc_lookupswitch = 171;
- {"java/lang/IllegalMonitorStateException"}, // public final static int opc_ireturn = 172;
- {"java/lang/IllegalMonitorStateException"}, // public final static int opc_lreturn = 173;
- {"java/lang/IllegalMonitorStateException"}, // public final static int opc_freturn = 174;
- {"java/lang/IllegalMonitorStateException"}, // public final static int opc_dreturn = 175;
- {"java/lang/IllegalMonitorStateException"}, // public final static int opc_areturn = 176;
- {"java/lang/IllegalMonitorStateException"}, // public final static int opc_return = 177;
- null, // public final static int opc_getstatic = 178;
- null, // public final static int opc_putstatic = 179;
- {"java/lang/NullPointerException"}, // public final static int opc_getfield = 180;
- {"java/lang/NullPointerException"}, // public final static int opc_putfield = 181;
- {"java/lang/NullPointerException", "java/lang/AbstractMethodError", "java/lang/UnsatisfiedLinkError"}, // public final static int opc_invokevirtual = 182;
- {"java/lang/NullPointerException", "java/lang/UnsatisfiedLinkError"}, // public final static int opc_invokespecial = 183;
- {"java/lang/UnsatisfiedLinkError"}, // public final static int opc_invokestatic = 184;
- {"java/lang/NullPointerException", "java/lang/IncompatibleClassChangeError", "java/lang/IllegalAccessError", "java/lang/java/lang/AbstractMethodError", "java/lang/UnsatisfiedLinkError"}, // public final static int opc_invokeinterface = 185;
- null, // public final static int opc_xxxunusedxxx = 186;
- null, // public final static int opc_new = 187;
- {"java/lang/NegativeArraySizeException"}, // public final static int opc_newarray = 188;
- {"java/lang/NegativeArraySizeException"}, // public final static int opc_anewarray = 189;
- {"java/lang/NullPointerException"}, // public final static int opc_arraylength = 190;
- {"java/lang/NullPointerException", "java/lang/IllegalMonitorStateException"}, // public final static int opc_athrow = 191;
- {"java/lang/ClassCastException"}, // public final static int opc_checkcast = 192;
- null, // public final static int opc_instanceof = 193;
- {"java/lang/NullPointerException"}, // public final static int opc_monitorenter = 194;
- {"java/lang/NullPointerException", "java/lang/IllegalMonitorStateException"}, // public final static int opc_monitorexit = 195;
- null, // public final static int opc_wide = 196;
- {"java/lang/NegativeArraySizeException"}, // public final static int opc_multianewarray = 197;
- null, // public final static int opc_ifnull = 198;
- null, // public final static int opc_ifnonnull = 199;
- null, // public final static int opc_goto_w = 200;
- null, // public final static int opc_jsr_w = 201;
- };
-
-
- public static boolean instanceOf(StructContext context, String valclass, String refclass) {
-
- if(valclass.equals(refclass)) {
- return true;
- }
-
- StructClass cl = context.getClass(valclass);
- if(cl==null) {
- return false;
- }
-
- if(cl.superClass!=null && instanceOf(context, cl.superClass.getString(), refclass)) {
- return true;
- }
-
- int[] interfaces = cl.getInterfaces();
- for(int i=0;i<interfaces.length;i++) {
- String intfc = cl.getPool().getPrimitiveConstant(interfaces[i]).getString();
-
- if(instanceOf(context, intfc, refclass)) {
- return true;
- }
- }
-
- return false;
- }
-
- public static String[] getRuntimeExceptions(Instruction instr) {
- return runtime_exceptions[instr.opcode];
- }
-
+ private static final String[][] runtime_exceptions = {
+
+ null, // public final static int opc_nop = 0;
+ null, // public final static int opc_aconst_null = 1;
+ null, // public final static int opc_iconst_m1 = 2;
+ null, // public final static int opc_iconst_0 = 3;
+ null, // public final static int opc_iconst_1 = 4;
+ null, // public final static int opc_iconst_2 = 5;
+ null, // public final static int opc_iconst_3 = 6;
+ null, // public final static int opc_iconst_4 = 7;
+ null, // public final static int opc_iconst_5 = 8;
+ null, // public final static int opc_lconst_0 = 9;
+ null, // public final static int opc_lconst_1 = 10;
+ null, // public final static int opc_fconst_0 = 11;
+ null, // public final static int opc_fconst_1 = 12;
+ null, // public final static int opc_fconst_2 = 13;
+ null, // public final static int opc_dconst_0 = 14;
+ null, // public final static int opc_dconst_1 = 15;
+ null, // public final static int opc_bipush = 16;
+ null, // public final static int opc_sipush = 17;
+ null, // public final static int opc_ldc = 18;
+ null, // public final static int opc_ldc_w = 19;
+ null, // public final static int opc_ldc2_w = 20;
+ null, // public final static int opc_iload = 21;
+ null, // public final static int opc_lload = 22;
+ null, // public final static int opc_fload = 23;
+ null, // public final static int opc_dload = 24;
+ null, // public final static int opc_aload = 25;
+ null, // public final static int opc_iload_0 = 26;
+ null, // public final static int opc_iload_1 = 27;
+ null, // public final static int opc_iload_2 = 28;
+ null, // public final static int opc_iload_3 = 29;
+ null, // public final static int opc_lload_0 = 30;
+ null, // public final static int opc_lload_1 = 31;
+ null, // public final static int opc_lload_2 = 32;
+ null, // public final static int opc_lload_3 = 33;
+ null, // public final static int opc_fload_0 = 34;
+ null, // public final static int opc_fload_1 = 35;
+ null, // public final static int opc_fload_2 = 36;
+ null, // public final static int opc_fload_3 = 37;
+ null, // public final static int opc_dload_0 = 38;
+ null, // public final static int opc_dload_1 = 39;
+ null, // public final static int opc_dload_2 = 40;
+ null, // public final static int opc_dload_3 = 41;
+ null, // public final static int opc_aload_0 = 42;
+ null, // public final static int opc_aload_1 = 43;
+ null, // public final static int opc_aload_2 = 44;
+ null, // public final static int opc_aload_3 = 45;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_iaload = 46;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_laload = 47;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_faload = 48;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_daload = 49;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_aaload = 50;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_baload = 51;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_caload = 52;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_saload = 53;
+ null, // public final static int opc_istore = 54;
+ null, // public final static int opc_lstore = 55;
+ null, // public final static int opc_fstore = 56;
+ null, // public final static int opc_dstore = 57;
+ null, // public final static int opc_astore = 58;
+ null, // public final static int opc_istore_0 = 59;
+ null, // public final static int opc_istore_1 = 60;
+ null, // public final static int opc_istore_2 = 61;
+ null, // public final static int opc_istore_3 = 62;
+ null, // public final static int opc_lstore_0 = 63;
+ null, // public final static int opc_lstore_1 = 64;
+ null, // public final static int opc_lstore_2 = 65;
+ null, // public final static int opc_lstore_3 = 66;
+ null, // public final static int opc_fstore_0 = 67;
+ null, // public final static int opc_fstore_1 = 68;
+ null, // public final static int opc_fstore_2 = 69;
+ null, // public final static int opc_fstore_3 = 70;
+ null, // public final static int opc_dstore_0 = 71;
+ null, // public final static int opc_dstore_1 = 72;
+ null, // public final static int opc_dstore_2 = 73;
+ null, // public final static int opc_dstore_3 = 74;
+ null, // public final static int opc_astore_0 = 75;
+ null, // public final static int opc_astore_1 = 76;
+ null, // public final static int opc_astore_2 = 77;
+ null, // public final static int opc_astore_3 = 78;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_iastore = 79;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_lastore = 80;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_fastore = 81;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_dastore = 82;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException", "java/lang/ArrayStoreException"},
+ // public final static int opc_aastore = 83;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_bastore = 84;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_castore = 85;
+ {"java/lang/NullPointerException", "java/lang/ArrayIndexOutOfBoundsException"},
+ // public final static int opc_sastore = 86;
+ null, // public final static int opc_pop = 87;
+ null, // public final static int opc_pop2 = 88;
+ null, // public final static int opc_dup = 89;
+ null, // public final static int opc_dup_x1 = 90;
+ null, // public final static int opc_dup_x2 = 91;
+ null, // public final static int opc_dup2 = 92;
+ null, // public final static int opc_dup2_x1 = 93;
+ null, // public final static int opc_dup2_x2 = 94;
+ null, // public final static int opc_swap = 95;
+ null, // public final static int opc_iadd = 96;
+ null, // public final static int opc_ladd = 97;
+ null, // public final static int opc_fadd = 98;
+ null, // public final static int opc_dadd = 99;
+ null, // public final static int opc_isub = 100;
+ null, // public final static int opc_lsub = 101;
+ null, // public final static int opc_fsub = 102;
+ null, // public final static int opc_dsub = 103;
+ null, // public final static int opc_imul = 104;
+ null, // public final static int opc_lmul = 105;
+ null, // public final static int opc_fmul = 106;
+ null, // public final static int opc_dmul = 107;
+ {"java/lang/ArithmeticException"}, // public final static int opc_idiv = 108;
+ {"java/lang/ArithmeticException"}, // public final static int opc_ldiv = 109;
+ null, // public final static int opc_fdiv = 110;
+ null, // public final static int opc_ddiv = 111;
+ {"java/lang/ArithmeticException"}, // public final static int opc_irem = 112;
+ {"java/lang/ArithmeticException"}, // public final static int opc_lrem = 113;
+ null, // public final static int opc_frem = 114;
+ null, // public final static int opc_drem = 115;
+ null, // public final static int opc_ineg = 116;
+ null, // public final static int opc_lneg = 117;
+ null, // public final static int opc_fneg = 118;
+ null, // public final static int opc_dneg = 119;
+ null, // public final static int opc_ishl = 120;
+ null, // public final static int opc_lshl = 121;
+ null, // public final static int opc_ishr = 122;
+ null, // public final static int opc_lshr = 123;
+ null, // public final static int opc_iushr = 124;
+ null, // public final static int opc_lushr = 125;
+ null, // public final static int opc_iand = 126;
+ null, // public final static int opc_land = 127;
+ null, // public final static int opc_ior = 128;
+ null, // public final static int opc_lor = 129;
+ null, // public final static int opc_ixor = 130;
+ null, // public final static int opc_lxor = 131;
+ null, // public final static int opc_iinc = 132;
+ null, // public final static int opc_i2l = 133;
+ null, // public final static int opc_i2f = 134;
+ null, // public final static int opc_i2d = 135;
+ null, // public final static int opc_l2i = 136;
+ null, // public final static int opc_l2f = 137;
+ null, // public final static int opc_l2d = 138;
+ null, // public final static int opc_f2i = 139;
+ null, // public final static int opc_f2l = 140;
+ null, // public final static int opc_f2d = 141;
+ null, // public final static int opc_d2i = 142;
+ null, // public final static int opc_d2l = 143;
+ null, // public final static int opc_d2f = 144;
+ null, // public final static int opc_i2b = 145;
+ null, // public final static int opc_i2c = 146;
+ null, // public final static int opc_i2s = 147;
+ null, // public final static int opc_lcmp = 148;
+ null, // public final static int opc_fcmpl = 149;
+ null, // public final static int opc_fcmpg = 150;
+ null, // public final static int opc_dcmpl = 151;
+ null, // public final static int opc_dcmpg = 152;
+ null, // public final static int opc_ifeq = 153;
+ null, // public final static int opc_ifne = 154;
+ null, // public final static int opc_iflt = 155;
+ null, // public final static int opc_ifge = 156;
+ null, // public final static int opc_ifgt = 157;
+ null, // public final static int opc_ifle = 158;
+ null, // public final static int opc_if_icmpeq = 159;
+ null, // public final static int opc_if_icmpne = 160;
+ null, // public final static int opc_if_icmplt = 161;
+ null, // public final static int opc_if_icmpge = 162;
+ null, // public final static int opc_if_icmpgt = 163;
+ null, // public final static int opc_if_icmple = 164;
+ null, // public final static int opc_if_acmpeq = 165;
+ null, // public final static int opc_if_acmpne = 166;
+ null, // public final static int opc_goto = 167;
+ null, // public final static int opc_jsr = 168;
+ null, // public final static int opc_ret = 169;
+ null, // public final static int opc_tableswitch = 170;
+ null, // public final static int opc_lookupswitch = 171;
+ {"java/lang/IllegalMonitorStateException"}, // public final static int opc_ireturn = 172;
+ {"java/lang/IllegalMonitorStateException"}, // public final static int opc_lreturn = 173;
+ {"java/lang/IllegalMonitorStateException"}, // public final static int opc_freturn = 174;
+ {"java/lang/IllegalMonitorStateException"}, // public final static int opc_dreturn = 175;
+ {"java/lang/IllegalMonitorStateException"}, // public final static int opc_areturn = 176;
+ {"java/lang/IllegalMonitorStateException"}, // public final static int opc_return = 177;
+ null, // public final static int opc_getstatic = 178;
+ null, // public final static int opc_putstatic = 179;
+ {"java/lang/NullPointerException"}, // public final static int opc_getfield = 180;
+ {"java/lang/NullPointerException"}, // public final static int opc_putfield = 181;
+ {"java/lang/NullPointerException", "java/lang/AbstractMethodError", "java/lang/UnsatisfiedLinkError"},
+ // public final static int opc_invokevirtual = 182;
+ {"java/lang/NullPointerException", "java/lang/UnsatisfiedLinkError"},
+ // public final static int opc_invokespecial = 183;
+ {"java/lang/UnsatisfiedLinkError"}, // public final static int opc_invokestatic = 184;
+ {"java/lang/NullPointerException", "java/lang/IncompatibleClassChangeError", "java/lang/IllegalAccessError",
+ "java/lang/java/lang/AbstractMethodError", "java/lang/UnsatisfiedLinkError"},
+ // public final static int opc_invokeinterface = 185;
+ null, // public final static int opc_xxxunusedxxx = 186;
+ null, // public final static int opc_new = 187;
+ {"java/lang/NegativeArraySizeException"}, // public final static int opc_newarray = 188;
+ {"java/lang/NegativeArraySizeException"}, // public final static int opc_anewarray = 189;
+ {"java/lang/NullPointerException"}, // public final static int opc_arraylength = 190;
+ {"java/lang/NullPointerException", "java/lang/IllegalMonitorStateException"},
+ // public final static int opc_athrow = 191;
+ {"java/lang/ClassCastException"}, // public final static int opc_checkcast = 192;
+ null, // public final static int opc_instanceof = 193;
+ {"java/lang/NullPointerException"}, // public final static int opc_monitorenter = 194;
+ {"java/lang/NullPointerException", "java/lang/IllegalMonitorStateException"},
+ // public final static int opc_monitorexit = 195;
+ null, // public final static int opc_wide = 196;
+ {"java/lang/NegativeArraySizeException"}, // public final static int opc_multianewarray = 197;
+ null, // public final static int opc_ifnull = 198;
+ null, // public final static int opc_ifnonnull = 199;
+ null, // public final static int opc_goto_w = 200;
+ null, // public final static int opc_jsr_w = 201;
+ };
+
+
+ public static boolean instanceOf(StructContext context, String valclass, String refclass) {
+
+ if (valclass.equals(refclass)) {
+ return true;
+ }
+
+ StructClass cl = context.getClass(valclass);
+ if (cl == null) {
+ return false;
+ }
+
+ if (cl.superClass != null && instanceOf(context, cl.superClass.getString(), refclass)) {
+ return true;
+ }
+
+ int[] interfaces = cl.getInterfaces();
+ for (int i = 0; i < interfaces.length; i++) {
+ String intfc = cl.getPool().getPrimitiveConstant(interfaces[i]).getString();
+
+ if (instanceOf(context, intfc, refclass)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public static String[] getRuntimeExceptions(Instruction instr) {
+ return runtime_exceptions[instr.opcode];
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/ALOAD.java b/src/org/jetbrains/java/decompiler/code/optinstructions/ALOAD.java
index b2727cf..788795e 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/ALOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/ALOAD.java
@@ -1,56 +1,60 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class ALOAD extends Instruction {
-
- private static int[] opcodes = new int[] {opc_aload_0,opc_aload_1,opc_aload_2,opc_aload_3};
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_aload);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- return 4;
- } else {
- return 2;
- }
- } else {
- return 1;
- }
- }
-
+ private static int[] opcodes = new int[]{opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_aload);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ return 4;
+ }
+ else {
+ return 2;
+ }
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/ANEWARRAY.java b/src/org/jetbrains/java/decompiler/code/optinstructions/ANEWARRAY.java
index 1e0d4ff..d514ffe 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/ANEWARRAY.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/ANEWARRAY.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class ANEWARRAY extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_anewarray);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_anewarray);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/ASTORE.java b/src/org/jetbrains/java/decompiler/code/optinstructions/ASTORE.java
index 475df11..40336f4 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/ASTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/ASTORE.java
@@ -1,56 +1,60 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class ASTORE extends Instruction {
- private static int[] opcodes = new int[] {opc_astore_0,opc_astore_1,opc_astore_2,opc_astore_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_astore);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- return 4;
- } else {
- return 2;
- }
- } else {
- return 1;
- }
- }
-
+ private static int[] opcodes = new int[]{opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_astore);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ return 4;
+ }
+ else {
+ return 2;
+ }
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/BIPUSH.java b/src/org/jetbrains/java/decompiler/code/optinstructions/BIPUSH.java
index 2fb2db5..4686051 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/BIPUSH.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/BIPUSH.java
@@ -1,44 +1,48 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class BIPUSH extends Instruction {
- private static int[] opcodes = new int[] {opc_iconst_m1,opc_iconst_0,opc_iconst_1,opc_iconst_2,opc_iconst_3,opc_iconst_4,opc_iconst_5};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int value = getOperand(0);
- if(value<-1 || value > 5) {
- out.writeByte(opc_bipush);
- out.writeByte(value);
- } else {
- out.writeByte(opcodes[value+1]);
- }
- }
-
- public int length() {
- int value = getOperand(0);
- if(value<-1 || value > 5) {
- return 2;
- } else {
- return 1;
- }
- }
+ private static int[] opcodes =
+ new int[]{opc_iconst_m1, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int value = getOperand(0);
+ if (value < -1 || value > 5) {
+ out.writeByte(opc_bipush);
+ out.writeByte(value);
+ }
+ else {
+ out.writeByte(opcodes[value + 1]);
+ }
+ }
+
+ public int length() {
+ int value = getOperand(0);
+ if (value < -1 || value > 5) {
+ return 2;
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/CHECKCAST.java b/src/org/jetbrains/java/decompiler/code/optinstructions/CHECKCAST.java
index 73417de..9a42f65 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/CHECKCAST.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/CHECKCAST.java
@@ -1,34 +1,34 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class CHECKCAST extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_checkcast);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_checkcast);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/DLOAD.java b/src/org/jetbrains/java/decompiler/code/optinstructions/DLOAD.java
index 96d5449..7630185 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/DLOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/DLOAD.java
@@ -1,56 +1,60 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class DLOAD extends Instruction {
- private static int[] opcodes = new int[] {opc_dload_0,opc_dload_1,opc_dload_2,opc_dload_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_dload);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- return 4;
- } else {
- return 2;
- }
- } else {
- return 1;
- }
- }
-
+ private static int[] opcodes = new int[]{opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_dload);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ return 4;
+ }
+ else {
+ return 2;
+ }
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/DSTORE.java b/src/org/jetbrains/java/decompiler/code/optinstructions/DSTORE.java
index 61a8776..2bdb749 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/DSTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/DSTORE.java
@@ -1,55 +1,60 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class DSTORE extends Instruction {
- private static int[] opcodes = new int[] {opc_dstore_0,opc_dstore_1,opc_dstore_2,opc_dstore_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_dstore);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- return 4;
- } else {
- return 2;
- }
- } else {
- return 1;
- }
- }
+ private static int[] opcodes = new int[]{opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_dstore);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ return 4;
+ }
+ else {
+ return 2;
+ }
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/FLOAD.java b/src/org/jetbrains/java/decompiler/code/optinstructions/FLOAD.java
index 5c8fe26..8a89dff 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/FLOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/FLOAD.java
@@ -1,56 +1,60 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class FLOAD extends Instruction {
- private static int[] opcodes = new int[] {opc_fload_0,opc_fload_1,opc_fload_2,opc_fload_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_fload);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- return 4;
- } else {
- return 2;
- }
- } else {
- return 1;
- }
- }
-
+ private static int[] opcodes = new int[]{opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_fload);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ return 4;
+ }
+ else {
+ return 2;
+ }
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/FSTORE.java b/src/org/jetbrains/java/decompiler/code/optinstructions/FSTORE.java
index 3685254..9061913 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/FSTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/FSTORE.java
@@ -1,55 +1,60 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class FSTORE extends Instruction {
- private static int[] opcodes = new int[] {opc_fstore_0,opc_fstore_1,opc_fstore_2,opc_fstore_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_fstore);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- return 4;
- } else {
- return 2;
- }
- } else {
- return 1;
- }
- }
+ private static int[] opcodes = new int[]{opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_fstore);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ return 4;
+ }
+ else {
+ return 2;
+ }
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/GETFIELD.java b/src/org/jetbrains/java/decompiler/code/optinstructions/GETFIELD.java
index b9a8ab5..6b95aaf 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/GETFIELD.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/GETFIELD.java
@@ -1,32 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class GETFIELD extends Instruction {
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_getfield);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_getfield);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/GETSTATIC.java b/src/org/jetbrains/java/decompiler/code/optinstructions/GETSTATIC.java
index 1890bc0..c1401a6 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/GETSTATIC.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/GETSTATIC.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class GETSTATIC extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_getstatic);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_getstatic);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/GOTO.java b/src/org/jetbrains/java/decompiler/code/optinstructions/GOTO.java
index 3a81194..97374c0 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/GOTO.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/GOTO.java
@@ -1,44 +1,46 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class GOTO extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int operand = getOperand(0);
- if(operand < -32768 || operand > 32767) {
- out.writeByte(opc_goto_w);
- out.writeInt(operand);
- } else {
- out.writeByte(opc_goto);
- out.writeShort(operand);
- }
- }
-
- public int length() {
- int operand = getOperand(0);
- if(operand < -32768 || operand > 32767) {
- return 5;
- } else {
- return 3;
- }
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int operand = getOperand(0);
+ if (operand < -32768 || operand > 32767) {
+ out.writeByte(opc_goto_w);
+ out.writeInt(operand);
+ }
+ else {
+ out.writeByte(opc_goto);
+ out.writeShort(operand);
+ }
+ }
+
+ public int length() {
+ int operand = getOperand(0);
+ if (operand < -32768 || operand > 32767) {
+ return 5;
+ }
+ else {
+ return 3;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/GOTO_W.java b/src/org/jetbrains/java/decompiler/code/optinstructions/GOTO_W.java
index 6e1f6e7..56ba9e8 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/GOTO_W.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/GOTO_W.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class GOTO_W extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_goto_w);
- out.writeInt(getOperand(0));
- }
-
- public int length() {
- return 5;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_goto_w);
+ out.writeInt(getOperand(0));
+ }
+
+ public int length() {
+ return 5;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/IINC.java b/src/org/jetbrains/java/decompiler/code/optinstructions/IINC.java
index e945969..05b446c 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/IINC.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/IINC.java
@@ -1,42 +1,43 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class IINC extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_iinc);
- if(wide) {
- out.writeShort(getOperand(0));
- out.writeShort(getOperand(1));
- } else {
- out.writeByte(getOperand(0));
- out.writeByte(getOperand(1));
- }
- }
-
- public int length() {
- return wide?6:3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_iinc);
+ if (wide) {
+ out.writeShort(getOperand(0));
+ out.writeShort(getOperand(1));
+ }
+ else {
+ out.writeByte(getOperand(0));
+ out.writeByte(getOperand(1));
+ }
+ }
+
+ public int length() {
+ return wide ? 6 : 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/ILOAD.java b/src/org/jetbrains/java/decompiler/code/optinstructions/ILOAD.java
index 40bfa4d..24b95ff 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/ILOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/ILOAD.java
@@ -1,52 +1,55 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class ILOAD extends Instruction {
- private static int[] opcodes = new int[] {opc_iload_0,opc_iload_1,opc_iload_2,opc_iload_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_iload);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- return wide?4:2;
- } else {
- return 1;
- }
- }
-
+ private static int[] opcodes = new int[]{opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_iload);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ return wide ? 4 : 2;
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/INSTANCEOF.java b/src/org/jetbrains/java/decompiler/code/optinstructions/INSTANCEOF.java
index f02dfc6..f93d5b8 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/INSTANCEOF.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/INSTANCEOF.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class INSTANCEOF extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_instanceof);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_instanceof);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEDYNAMIC.java b/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEDYNAMIC.java
index ee8c785..917c5bd 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEDYNAMIC.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEDYNAMIC.java
@@ -1,20 +1,35 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class INVOKEDYNAMIC extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_invokedynamic);
- out.writeShort(getOperand(0));
- out.writeByte(0);
- out.writeByte(0);
- }
-
- public int length() {
- return 5;
- }
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_invokedynamic);
+ out.writeShort(getOperand(0));
+ out.writeByte(0);
+ out.writeByte(0);
+ }
+
+ public int length() {
+ return 5;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEINTERFACE.java b/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEINTERFACE.java
index e4f06f2..51259ff 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEINTERFACE.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEINTERFACE.java
@@ -1,35 +1,35 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class INVOKEINTERFACE extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_invokeinterface);
- out.writeShort(getOperand(0));
- out.writeByte(getOperand(1));
- out.writeByte(0);
- }
-
- public int length() {
- return 5;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_invokeinterface);
+ out.writeShort(getOperand(0));
+ out.writeByte(getOperand(1));
+ out.writeByte(0);
+ }
+
+ public int length() {
+ return 5;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKESPECIAL.java b/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKESPECIAL.java
index 6b9b559..2436803 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKESPECIAL.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKESPECIAL.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class INVOKESPECIAL extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_invokespecial);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_invokespecial);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKESTATIC.java b/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKESTATIC.java
index 0f1ad16..f036a1d 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKESTATIC.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKESTATIC.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class INVOKESTATIC extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_invokestatic);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_invokestatic);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEVIRTUAL.java b/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEVIRTUAL.java
index f4537f3..ca3bcd3 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEVIRTUAL.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/INVOKEVIRTUAL.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class INVOKEVIRTUAL extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_invokevirtual);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_invokevirtual);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/ISTORE.java b/src/org/jetbrains/java/decompiler/code/optinstructions/ISTORE.java
index 0ced128..5907538 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/ISTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/ISTORE.java
@@ -1,52 +1,55 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class ISTORE extends Instruction {
- private static int[] opcodes = new int[] {opc_istore_0,opc_istore_1,opc_istore_2,opc_istore_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_istore);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- return wide?4:2;
- } else {
- return 1;
- }
- }
-
+ private static int[] opcodes = new int[]{opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_istore);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ return wide ? 4 : 2;
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/JSR.java b/src/org/jetbrains/java/decompiler/code/optinstructions/JSR.java
index ef6c2ad..bb000a7 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/JSR.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/JSR.java
@@ -1,44 +1,46 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class JSR extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int operand = getOperand(0);
- if(operand < -32768 || operand > 32767) {
- out.writeByte(opc_jsr_w);
- out.writeInt(operand);
- } else {
- out.writeByte(opc_jsr);
- out.writeShort(operand);
- }
- }
-
- public int length() {
- int operand = getOperand(0);
- if(operand < -32768 || operand > 32767) {
- return 5;
- } else {
- return 3;
- }
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int operand = getOperand(0);
+ if (operand < -32768 || operand > 32767) {
+ out.writeByte(opc_jsr_w);
+ out.writeInt(operand);
+ }
+ else {
+ out.writeByte(opc_jsr);
+ out.writeShort(operand);
+ }
+ }
+
+ public int length() {
+ int operand = getOperand(0);
+ if (operand < -32768 || operand > 32767) {
+ return 5;
+ }
+ else {
+ return 3;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/JSR_W.java b/src/org/jetbrains/java/decompiler/code/optinstructions/JSR_W.java
index bc7ae59..fb04ed9 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/JSR_W.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/JSR_W.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.JumpInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.JumpInstruction;
-
public class JSR_W extends JumpInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_jsr_w);
- out.writeInt(getOperand(0));
- }
-
- public int length() {
- return 5;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_jsr_w);
+ out.writeInt(getOperand(0));
+ }
+
+ public int length() {
+ return 5;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/LDC.java b/src/org/jetbrains/java/decompiler/code/optinstructions/LDC.java
index 4b1a715..ae7b3c6 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/LDC.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/LDC.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class LDC extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_ldc);
- out.writeByte(getOperand(0));
- }
-
- public int length() {
- return 2;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_ldc);
+ out.writeByte(getOperand(0));
+ }
+
+ public int length() {
+ return 2;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/LDC2_W.java b/src/org/jetbrains/java/decompiler/code/optinstructions/LDC2_W.java
index 4b7ea0b..6ba1964 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/LDC2_W.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/LDC2_W.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class LDC2_W extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_ldc2_w);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_ldc2_w);
+ out.writeShort(getOperand(0));
+ }
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/LDC_W.java b/src/org/jetbrains/java/decompiler/code/optinstructions/LDC_W.java
index 6a4e3a6..71e5fe0 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/LDC_W.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/LDC_W.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class LDC_W extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_ldc_w);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_ldc_w);
+ out.writeShort(getOperand(0));
+ }
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/LLOAD.java b/src/org/jetbrains/java/decompiler/code/optinstructions/LLOAD.java
index 52f2b5c..6e50659 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/LLOAD.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/LLOAD.java
@@ -1,52 +1,55 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class LLOAD extends Instruction {
- private static int[] opcodes = new int[] {opc_lload_0,opc_lload_1,opc_lload_2,opc_lload_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_lload);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
+ private static int[] opcodes = new int[]{opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_lload);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- return wide?4:2;
- } else {
- return 1;
- }
- }
-
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ return wide ? 4 : 2;
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/LOOKUPSWITCH.java b/src/org/jetbrains/java/decompiler/code/optinstructions/LOOKUPSWITCH.java
index 1654622..4183168 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/LOOKUPSWITCH.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/LOOKUPSWITCH.java
@@ -1,42 +1,42 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.SwitchInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.SwitchInstruction;
-
public class LOOKUPSWITCH extends SwitchInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
-
- out.writeByte(opc_lookupswitch);
-
- int padding = 3 - (offset%4);
- for(int i=0;i<padding;i++){
- out.writeByte(0);
- }
-
- for(int i=0;i<operandsCount();i++) {
- out.writeInt(getOperand(i));
- }
- }
-
- public int length() {
- return 1+operandsCount()*4;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+
+ out.writeByte(opc_lookupswitch);
+
+ int padding = 3 - (offset % 4);
+ for (int i = 0; i < padding; i++) {
+ out.writeByte(0);
+ }
+
+ for (int i = 0; i < operandsCount(); i++) {
+ out.writeInt(getOperand(i));
+ }
+ }
+
+ public int length() {
+ return 1 + operandsCount() * 4;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/LSTORE.java b/src/org/jetbrains/java/decompiler/code/optinstructions/LSTORE.java
index 410d19a..9095f04 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/LSTORE.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/LSTORE.java
@@ -1,52 +1,55 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class LSTORE extends Instruction {
- private static int[] opcodes = new int[] {opc_lstore_0,opc_lstore_1,opc_lstore_2,opc_lstore_3};
-
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- int index = getOperand(0);
- if(index>3) {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_lstore);
- if(wide) {
- out.writeShort(index);
- } else {
- out.writeByte(index);
- }
- } else {
- out.writeByte(opcodes[index]);
- }
- }
-
- public int length() {
- int index = getOperand(0);
- if(index>3) {
- return wide?4:2;
- } else {
- return 1;
- }
- }
-
+ private static int[] opcodes = new int[]{opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3};
+
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ int index = getOperand(0);
+ if (index > 3) {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_lstore);
+ if (wide) {
+ out.writeShort(index);
+ }
+ else {
+ out.writeByte(index);
+ }
+ }
+ else {
+ out.writeByte(opcodes[index]);
+ }
+ }
+
+ public int length() {
+ int index = getOperand(0);
+ if (index > 3) {
+ return wide ? 4 : 2;
+ }
+ else {
+ return 1;
+ }
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/MULTIANEWARRAY.java b/src/org/jetbrains/java/decompiler/code/optinstructions/MULTIANEWARRAY.java
index c7eb0b9..b6835e8 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/MULTIANEWARRAY.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/MULTIANEWARRAY.java
@@ -1,34 +1,34 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class MULTIANEWARRAY extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_multianewarray);
- out.writeShort(getOperand(0));
- out.writeByte(getOperand(1));
- }
-
- public int length() {
- return 4;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_multianewarray);
+ out.writeShort(getOperand(0));
+ out.writeByte(getOperand(1));
+ }
+
+ public int length() {
+ return 4;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/NEW.java b/src/org/jetbrains/java/decompiler/code/optinstructions/NEW.java
index eafe17c..2e8854f 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/NEW.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/NEW.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class NEW extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_new);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_new);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/NEWARRAY.java b/src/org/jetbrains/java/decompiler/code/optinstructions/NEWARRAY.java
index 8764a6f..f2f8e4d 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/NEWARRAY.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/NEWARRAY.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class NEWARRAY extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_newarray);
- out.writeByte(getOperand(0));
- }
-
- public int length() {
- return 2;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_newarray);
+ out.writeByte(getOperand(0));
+ }
+
+ public int length() {
+ return 2;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/PUTFIELD.java b/src/org/jetbrains/java/decompiler/code/optinstructions/PUTFIELD.java
index 096da07..c1e3e92 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/PUTFIELD.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/PUTFIELD.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class PUTFIELD extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_putfield);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_putfield);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/PUTSTATIC.java b/src/org/jetbrains/java/decompiler/code/optinstructions/PUTSTATIC.java
index e543c88..0fe0240 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/PUTSTATIC.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/PUTSTATIC.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class PUTSTATIC extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_putstatic);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_putstatic);
+ out.writeShort(getOperand(0));
+ }
+
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/RET.java b/src/org/jetbrains/java/decompiler/code/optinstructions/RET.java
index d52d2a2..93f62ff 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/RET.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/RET.java
@@ -1,40 +1,41 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class RET extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- if(wide) {
- out.writeByte(opc_wide);
- }
- out.writeByte(opc_ret);
- if(wide) {
- out.writeShort(getOperand(0));
- } else {
- out.writeByte(getOperand(0));
- }
- }
-
- public int length() {
- return wide?4:2;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ if (wide) {
+ out.writeByte(opc_wide);
+ }
+ out.writeByte(opc_ret);
+ if (wide) {
+ out.writeShort(getOperand(0));
+ }
+ else {
+ out.writeByte(getOperand(0));
+ }
+ }
+
+ public int length() {
+ return wide ? 4 : 2;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/SIPUSH.java b/src/org/jetbrains/java/decompiler/code/optinstructions/SIPUSH.java
index 5bac32f..08b10a5 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/SIPUSH.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/SIPUSH.java
@@ -1,33 +1,33 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.Instruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.Instruction;
-
public class SIPUSH extends Instruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
- out.writeByte(opc_sipush);
- out.writeShort(getOperand(0));
- }
-
- public int length() {
- return 3;
- }
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+ out.writeByte(opc_sipush);
+ out.writeShort(getOperand(0));
+ }
+ public int length() {
+ return 3;
+ }
}
diff --git a/src/org/jetbrains/java/decompiler/code/optinstructions/TABLESWITCH.java b/src/org/jetbrains/java/decompiler/code/optinstructions/TABLESWITCH.java
index ca2eae5..0b41ecf 100644
--- a/src/org/jetbrains/java/decompiler/code/optinstructions/TABLESWITCH.java
+++ b/src/org/jetbrains/java/decompiler/code/optinstructions/TABLESWITCH.java
@@ -1,43 +1,42 @@
/*
- * Fernflower - The Analytical Java Decompiler
- * http://www.reversed-java.com
+ * Copyright 2000-2014 JetBrains s.r.o.
*
- * (C) 2008 - 2010, Stiver
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * This software is NEITHER public domain NOR free software
- * as per GNU License. See license.txt for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * This software is distributed WITHOUT ANY WARRANTY; without
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
package org.jetbrains.java.decompiler.code.optinstructions;
+import org.jetbrains.java.decompiler.code.SwitchInstruction;
+
import java.io.DataOutputStream;
import java.io.IOException;
-import org.jetbrains.java.decompiler.code.SwitchInstruction;
-
public class TABLESWITCH extends SwitchInstruction {
- public void writeToStream(DataOutputStream out, int offset) throws IOException {
-
- out.writeByte(opc_tableswitch);
-
- int padding = 3 - (offset%4);
- for(int i=0;i<padding;i++){
- out.writeByte(0);
- }
-
- for(int i=0;i<operandsCount();i++) {
- out.writeInt(getOperand(i));
- }
-
- }
-
- public int length() {
- return 1+operandsCount()*4;
- }
-
+ public void writeToStream(DataOutputStream out, int offset) throws IOException {
+
+ out.writeByte(opc_tableswitch);
+
+ int padding = 3 - (offset % 4);
+ for (int i = 0; i < padding; i++) {
+ out.writeByte(0);
+ }
+
+ for (int i = 0; i < operandsCount(); i++) {
+ out.writeInt(getOperand(i));
+ }
+ }
+
+ public int length() {
+ return 1 + operandsCount() * 4;
+ }
}