00001 package de.fub.bytecode.generic;
00002
00003 import java.io.*;
00004
00005
00006
00007
00008
00009
00010
00011 public class JSR extends BranchInstruction implements VariableLengthInstruction {
00012
00013
00014
00015
00016 JSR() {}
00017 public JSR(InstructionHandle target) {
00018 super(JSR, target);
00019 }
00020
00021
00022
00023
00024 public void dump(DataOutputStream out) throws IOException {
00025 index = getTargetOffset();
00026 if(tag == JSR)
00027 super.dump(out);
00028 else {
00029 index = getTargetOffset();
00030 out.writeByte(tag);
00031 out.writeInt(index);
00032 }
00033 }
00034 protected int updatePosition(int offset, int max_offset) {
00035 int i = getTargetOffset();
00036
00037 position += offset;
00038
00039 if(Math.abs(i) >= (32767 - max_offset)) {
00040 tag = JSR_W;
00041 length = 5;
00042 return 2;
00043 }
00044
00045 return 0;
00046 }
00047 }