|
Message
From: cvs at opencores.org<cvs@o...>
Date: Tue Jul 24 14:55:28 CEST 2007
Subject: [cvs-checkins] MODIFIED: jop ...
Date: 00/07/07 24:14:55 Added: jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime FieldTimeAnalysisInsn.java ITimeAnalysisInstruction.java IincTimeAnalysisInsn.java InsnTimeAnalysisInsn.java IntTimeAnalysisInsn.java JOPTimeAnalysisInsn.java JumpTimeAnalysisInsn.java LdcTimeAnalysisInsn.java LookupSwitchTimeAnalysisInsn.java MethodTimeAnalysisInsn.java MultiANewArrayTimeAnalysisInsn.java TableSwitchTimeAnalysisInsn.java TypeTimeAnalysisInsn.java VarTimeAnalysisInsn.java Log: Revision Changes Path 1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/FieldTimeAnalysisInsn.java http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/FieldTimeAnalysisInsn.java?rev=1.1&content-type=text/x-cvsweb-markup Index: FieldTimeAnalysisInsn.java =================================================================== /** * */ package wcet.components.graphbuilder.instruction.exectime; import wcet.framework.instruction.cache.FieldAnalysisInsn; import com.jopdesign.wcet.WCETInstruction; /** * @author Elena Axamitova * @version 0.1 15.03.2007 */ //OK public class FieldTimeAnalysisInsn extends FieldAnalysisInsn implements ITimeAnalysisInstruction { public FieldTimeAnalysisInsn(int opc){ super(opc); } /* (non-Javadoc) * @see wcet.components.graphbuilder.instuctions.exectime.ITimeAnalysisInstruction#getCycles() */ public int getCycles() { return WCETInstruction.getCycles(this.opcode, false, 0); /*switch(this.opcode){ case OpCodes.PUTSTATIC: // WCETInstruction.getCycles(); return 13+ITimeAnalysisInstruction.rws+ITimeAnalysisInstruction.wws; case OpCodes.GETSTATIC: return 12+2*ITimeAnalysisInstruction.rws; case OpCodes.PUTFIELD: return 20+ITimeAnalysisInstruction.rws+ITimeAnalysisInstruction.wws; case OpCodes.GETFIELD: return 17+2*ITimeAnalysisInstruction.rws; default: return ITimeAnalysisInstruction.CYCLES_UNKNOWN; }*/ } } 1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/ITimeAnalysisInstruction.java http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/ITimeAnalysisInstruction.java?rev=1.1&content-type=text/x-cvsweb-markup Index: ITimeAnalysisInstruction.java =================================================================== /** * */ package wcet.components.graphbuilder.instruction.exectime; import wcet.framework.interfaces.instruction.cache.ICacheAnalysisInstruction; /** * @author Elena Axamitova * @version 0.1 22.02.2007 */ public interface ITimeAnalysisInstruction extends ICacheAnalysisInstruction{ public final int CYCLES_UNKNOWN = -1; public final int CYCLES_OF_LAST_METHOD = 0; public static final int rws = 1; public static final int wws = 1; public static final int cws = 0; public int getCycles(); }
1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/IincTimeAnalysisInsn.java
http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/IincTimeAnalysisInsn.java?rev=1.1&content-type=text/x-cvsweb-markup
Index: IincTimeAnalysisInsn.java
===================================================================
/**
*
*/
package wcet.components.graphbuilder.instruction.exectime;
import com.jopdesign.wcet.WCETInstruction;
import wcet.framework.instruction.cache.IincAnalysisInsn;
/**
* @author Elena Axamitova
* @version 0.1 15.03.2007
*/
//OK
public class IincTimeAnalysisInsn extends IincAnalysisInsn
implements ITimeAnalysisInstruction {
public IincTimeAnalysisInsn(int opc){
super(opc);
}
/* (non-Javadoc)
* @see wcet.components.graphbuilder.instuctions.exectime.ITimeAnalysisInstruction#getCycles()
*/
public int getCycles() {
return WCETInstruction.getCycles(this.opcode, false, 0);
//return 8;
}
}
1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/InsnTimeAnalysisInsn.java
http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/InsnTimeAnalysisInsn.java?rev=1.1&content-type=text/x-cvsweb-markup
Index: InsnTimeAnalysisInsn.java
===================================================================
/**
*
*/
package wcet.components.graphbuilder.instruction.exectime;
import com.jopdesign.wcet.WCETInstruction;
import wcet.framework.instruction.cache.InsnAnalysisInstruction;
import wcet.framework.interfaces.instruction.OpCodes;
/**
* @author Elena Axamitova
* @version 0.1 15.03.2007
*/
/*
* NOP, ACONST_NULL, ICONST_M1, ICONST_0, ICONST_1, ICONST_2, ICONST_3,
* ICONST_4, ICONST_5, LCONST_0, LCONST_1, FCONST_0, FCONST_1, FCONST_2,
* DCONST_0, DCONST_1, IALOAD, LALOAD, FALOAD, DALOAD, AALOAD, BALOAD, CALOAD,
* SALOAD, IASTORE, LASTORE, FASTORE, DASTORE, AASTORE, BASTORE, CASTORE,
* SASTORE, POP, POP2, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, SWAP, IADD,
* LADD, FADD, DADD, ISUB, LSUB, FSUB, DSUB, IMUL, LMUL, FMUL, DMUL, IDIV, LDIV,
* FDIV, DDIV, IREM, LREM, FREM, DREM, INEG, LNEG, FNEG, DNEG, ISHL, LSHL, ISHR,
* LSHR, IUSHR, LUSHR, IAND, LAND, IOR, LOR, IXOR, LXOR, I2L, I2F, I2D, L2I,
* L2F, L2D, F2I, F2L, F2D, D2I, D2L, D2F, I2B, I2C, I2S, LCMP, FCMPL, FCMPG,
* DCMPL, DCMPG, IRETURN, LRETURN, FRETURN, DRETURN, ARETURN, RETURN,
* ARRAYLENGTH, ATHROW, MONITORENTER, or MONITOREXIT
*/
public class InsnTimeAnalysisInsn extends InsnAnalysisInstruction implements
ITimeAnalysisInstruction {
public InsnTimeAnalysisInsn(int opc) {
super(opc);
}
/*
* (non-Javadoc)
*
* @see wcet.components.graphbuilder.instuctions.exectime.ITimeAnalysisInstruction#getCycles()
*/
public int getCycles() {
int retVal = WCETInstruction.getCycles(this.opcode, false, 0);
int b = WCETInstruction.calculateB(false, 0);
switch (this.opcode) {
/*case OpCodes.NOP:
return 1;
case OpCodes.ACONST_NULL:
return 1;
case OpCodes.ICONST_M1:
return 1;
case OpCodes.ICONST_0:
return 1;
case OpCodes.ICONST_1:
return 1;
case OpCodes.ICONST_2:
return 1;
case OpCodes.ICONST_3:
return 1;
case OpCodes.ICONST_4:
return 1;
case OpCodes.ICONST_5:
return 1;
case OpCodes.LCONST_0:
return 2;
case OpCodes.LCONST_1:
return 2;
case OpCodes.FCONST_0:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.FCONST_1:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.FCONST_2:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.DCONST_0:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.DCONST_1:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.IALOAD:
return 32+3*ITimeAnalysisInstruction.rws;
case OpCodes.LALOAD:
return 43+4*ITimeAnalysisInstruction.rws;
case OpCodes.FALOAD:
return 32+3*ITimeAnalysisInstruction.rws;
case OpCodes.DALOAD:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.AALOAD:
return 32+3*ITimeAnalysisInstruction.rws;
case OpCodes.BALOAD:
return 32+3*ITimeAnalysisInstruction.rws;
case OpCodes.CALOAD:
return 32+3*ITimeAnalysisInstruction.rws;
case OpCodes.SALOAD:
return 32+3*ITimeAnalysisInstruction.rws;
case OpCodes.IASTORE:
return 35+2*ITimeAnalysisInstruction.rws+ITimeAnalysisInstruction.wws;
case OpCodes.LASTORE:
retVal= 48+2*ITimeAnalysisInstruction.rws+ITimeAnalysisInstruction.wws;
if(ITimeAnalysisInstruction.wws>3)
retVal +=ITimeAnalysisInstruction.wws-3;
return retVal;
case OpCodes.FASTORE:
return 35+2*ITimeAnalysisInstruction.rws+ITimeAnalysisInstruction.wws;
case OpCodes.DASTORE:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.AASTORE:
return 35+2*ITimeAnalysisInstruction.rws+ITimeAnalysisInstruction.wws;
case OpCodes.BASTORE:
return 35+2*ITimeAnalysisInstruction.rws+ITimeAnalysisInstruction.wws;
case OpCodes.CASTORE:
return 35+2*ITimeAnalysisInstruction.rws+ITimeAnalysisInstruction.wws;
case OpCodes.SASTORE:
return 35+2*ITimeAnalysisInstruction.rws+ITimeAnalysisInstruction.wws;
case OpCodes.POP:
return 1;
case OpCodes.POP2:
return 2;
case OpCodes.DUP:
return 1;
case OpCodes.DUP_X1:
return 5;
case OpCodes.DUP_X2:
return 7;
case OpCodes.DUP2:
return 6;
case OpCodes.DUP2_X1:
return 8;
case OpCodes.DUP2_X2:
return 10;
case OpCodes.SWAP:
return 4;
case OpCodes.IADD:
return 1;
case OpCodes.LADD:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.FADD:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.DADD:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.ISUB:
return 1;
case OpCodes.LSUB:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.FSUB:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.DSUB:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.IMUL:
return 35;
case OpCodes.LMUL:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.FMUL:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.DMUL:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.IDIV:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.LDIV:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.FDIV:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.DDIV:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.IREM:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.LREM:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.FREM:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.DREM:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.INEG:
return 4;
case OpCodes.LNEG:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.FNEG:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.DNEG:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.ISHL:
return 1;
case OpCodes.LSHL:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.ISHR:
return 1;
case OpCodes.LSHR:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.IUSHR:
return 1;
case OpCodes.LUSHR:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.IAND:
return 1;
case OpCodes.LAND:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.IOR:
return 1;
case OpCodes.LOR:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.IXOR:
return 1;
case OpCodes.LXOR:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.I2L:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.I2F:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.I2D:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.L2I:
return 3;
case OpCodes.L2F:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.L2D:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.F2I:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.F2L:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.F2D:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.D2I:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.D2L:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.D2F:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.I2B:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.I2C:
return 2;
case OpCodes.I2S:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.LCMP:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.FCMPL:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.DCMPL:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.DCMPG:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;*/
case OpCodes.IRETURN:
/*retVal =23;
if(ITimeAnalysisInstruction.rws>3){
retVal += ITimeAnalysisInstruction.rws-3;
}
return retVal;*/
case OpCodes.LRETURN:
/*retVal =25;
if(ITimeAnalysisInstruction.rws>3){
retVal += ITimeAnalysisInstruction.rws-3;
}
return retVal;*/
case OpCodes.FRETURN:
/*retVal =23;
if(ITimeAnalysisInstruction.rws>3){
retVal += ITimeAnalysisInstruction.rws-3;
}
return retVal;*/
case OpCodes.DRETURN:
/*retVal =25;
if(ITimeAnalysisInstruction.rws>3){
retVal += ITimeAnalysisInstruction.rws-3;
}
return retVal;*/
case OpCodes.ARETURN:
/*retVal =23;
if(ITimeAnalysisInstruction.rws>3){
retVal += ITimeAnalysisInstruction.rws-3;
}
return retVal;*/
case OpCodes.RETURN:
/*retVal =21;
if(ITimeAnalysisInstruction.rws>3){
retVal += ITimeAnalysisInstruction.rws-3;
}*/
if(b>this.getHiddenCycles())
retVal -= b - this.getHiddenCycles();
break;
/*case OpCodes.ARRAYLENGTH:
return 6+ITimeAnalysisInstruction.rws;
case OpCodes.ATHROW:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.MONITORENTER:
return 11;
case OpCodes.MONITOREXIT:
return 16;//TODO ??? 10/16
default:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;*/
}
return retVal;
}
public int getHiddenCycles(){
switch(this.opcode){
case OpCodes.IRETURN:
return 10;
case OpCodes.LRETURN:
return 11;
case OpCodes.FRETURN:
return 10;
case OpCodes.DRETURN:
return 11;
case OpCodes.ARETURN:
return 10;
case OpCodes.RETURN:
return 9;
default:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
}
}
}
1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/IntTimeAnalysisInsn.java
http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/IntTimeAnalysisInsn.java?rev=1.1&content-type=text/x-cvsweb-markup
Index: IntTimeAnalysisInsn.java
===================================================================
/**
*
*/
package wcet.components.graphbuilder.instruction.exectime;
import wcet.framework.instruction.cache.IntAnalysisInsn;
import com.jopdesign.wcet.WCETInstruction;
/**
* @author Elena Axamitova
* @version 0.1 15.03.2007
*/
public class IntTimeAnalysisInsn extends IntAnalysisInsn implements
ITimeAnalysisInstruction {
private int operand;
public IntTimeAnalysisInsn(int opc, int op) {
super(opc);
this.operand = op;
}
/*
* (non-Javadoc)
*
* @see wcet.components.graphbuilder.instuctions.exectime.ITimeAnalysisInstruction#getCycles()
*/
public int getCycles() {
return WCETInstruction.getCycles(this.opcode, false, 0);
/*switch (this.opcode) {
case OpCodes.BIPUSH:
return 2;
case OpCodes.SIPUSH:
return 3;
case OpCodes.NEWARRAY:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
default:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
}*/
}
public int getOperand() {
return this.operand;
}
}
1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/JOPTimeAnalysisInsn.java
http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/JOPTimeAnalysisInsn.java?rev=1.1&content-type=text/x-cvsweb-markup
Index: JOPTimeAnalysisInsn.java
===================================================================
/**
*
*/
package wcet.components.graphbuilder.instruction.exectime;
import com.jopdesign.wcet.WCETInstruction;
import wcet.framework.instruction.cache.JOPAnalysisInsn;
//import wcet.framework.interfaces.instruction.OpCodes;
/**
* @author Elena Axamitova
* @version 0.1 19.04.2007
*/
public class JOPTimeAnalysisInsn extends JOPAnalysisInsn
implements ITimeAnalysisInstruction {
public JOPTimeAnalysisInsn(int opc){
super(opc);
}
/* (non-Javadoc)
* @see wcet.components.graphbuilder.instuctions.exectime.ITimeAnalysisInstruction#getCycles()
*/
public int getCycles() {
// TODO where do I get the 'n'from
return WCETInstruction.getCycles(this.opcode, false, 0);
/*switch(this.opcode){
case OpCodes.JOPSYS_RD:
return 4+ITimeAnalysisInstruction.rws;
case OpCodes.JOPSYS_WR:
return 5+ITimeAnalysisInstruction.rws;
case OpCodes.JOPSYS_RDMEM:
return 4+ITimeAnalysisInstruction.rws;
case OpCodes.JOPSYS_WRMEM:
return 5+ITimeAnalysisInstruction.rws;
case OpCodes.JOPSYS_RDINT:
return 3;
case OpCodes.JOPSYS_WRINT:
return 3;
case OpCodes.JOPSYS_GETSP:
return 3;
case OpCodes.JOPSYS_SETSP:
return 4;
case OpCodes.JOPSYS_GETVP:
return 1;
case OpCodes.JOPSYS_SETVP:
return 2;
case OpCodes.JOPSYS_INT2EXT:
return 14+ITimeAnalysisInstruction.rws+ n * (23+ITimeAnalysisInstruction.wws);//TODO where do I get the 'n'from
case OpCodes.JOPSYS_EXT2INT:
return 14+ITimeAnalysisInstruction.rws+ n * (23+ITimeAnalysisInstruction.wws);//TODO where do I get the 'n'from
case OpCodes.JOPSYS_NOP:
return 1;
//TODO get cycles
case OpCodes.JOPSYS_INVOKE:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.JOPSYS_COND_MOVE:
return 5;
case OpCodes.GETSTATIC_REF:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.PUTSTATIC_REF:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.GETFIELD_REF:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.PUTFIELD_REF:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.GETSTATIC_LONG:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.PUTSTATIC_LONG:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.GETFIELD_LONG:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.PUTFIELD_LONG:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
case OpCodes.SYS_INT:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.SYS_EXC:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.SYS_NOIMP:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.SYS_INIT:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
default:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
}*/
}
}
1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/JumpTimeAnalysisInsn.java
http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/JumpTimeAnalysisInsn.java?rev=1.1&content-type=text/x-cvsweb-markup
Index: JumpTimeAnalysisInsn.java
===================================================================
/**
*
*/
package wcet.components.graphbuilder.instruction.exectime;
import com.jopdesign.wcet.WCETInstruction;
import wcet.framework.instruction.cache.JumpAnalysisInsn;
/**
* @author Elena Axamitova
* @version 0.1 15.03.2007
*/
//OK
public class JumpTimeAnalysisInsn extends JumpAnalysisInsn
implements ITimeAnalysisInstruction {
public JumpTimeAnalysisInsn(int opc){
super(opc);
}
/* (non-Javadoc)
* @see wcet.components.graphbuilder.instuctions.exectime.ITimeAnalysisInstruction#getCycles()
*/
public int getCycles() {
return WCETInstruction.getCycles(this.opcode, false, 0);
// return 4;
}
}
1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/LdcTimeAnalysisInsn.java
http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/LdcTimeAnalysisInsn.java?rev=1.1&content-type=text/x-cvsweb-markup
Index: LdcTimeAnalysisInsn.java
===================================================================
/**
*
*/
package wcet.components.graphbuilder.instruction.exectime;
import com.jopdesign.wcet.WCETInstruction;
import wcet.framework.instruction.cache.LdcAnalysisInsn;
//import wcet.framework.interfaces.instruction.OpCodes;
/**
* @author Elena Axamitova
* @version 0.1 15.03.2007
*/
//OK
public class LdcTimeAnalysisInsn extends LdcAnalysisInsn implements
ITimeAnalysisInstruction {
public LdcTimeAnalysisInsn(int opc) {
super(opc);
}
/*
* (non-Javadoc)
*
* @see wcet.components.graphbuilder.instuctions.exectime.ITimeAnalysisInstruction#getCycles()
*/
public int getCycles() {
return WCETInstruction.getCycles(this.opcode, false, 0);
/*switch (this.opcode) {
case OpCodes.LDC:
return 7 + ITimeAnalysisInstruction.rws;
case OpCodes.LDC_W:
return 8 + ITimeAnalysisInstruction.rws;
case OpCodes.LDC2_W:
//return 17 + 2 * ITimeAnalysisInstruction.rws;
int retValue = 17;
if (ITimeAnalysisInstruction.rws>2){
retValue += ITimeAnalysisInstruction.rws-2;
}
if (ITimeAnalysisInstruction.rws>1){
retValue += ITimeAnalysisInstruction.rws-1;
}
return retValue;
default:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
}*/
}
}
1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/LookupSwitchTimeAnalysisInsn.java
http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/LookupSwitchTimeAnalysisInsn.java?rev=1.1&content-type=text/x-cvsweb-markup
Index: LookupSwitchTimeAnalysisInsn.java
===================================================================
/**
*
*/
package wcet.components.graphbuilder.instruction.exectime;
import com.jopdesign.wcet.WCETInstruction;
import wcet.framework.instruction.cache.LookupSwitchAnalysisInsn;
/**
* @author Elena Axamitova
* @version 0.1 15.03.2007
*/
public class LookupSwitchTimeAnalysisInsn extends LookupSwitchAnalysisInsn
implements ITimeAnalysisInstruction {
public LookupSwitchTimeAnalysisInsn(int opc, int size){
super(opc, size);
}
/* (non-Javadoc)
* @see wcet.components.graphbuilder.instuctions.exectime.ITimeAnalysisInstruction#getCycles()
*/
public int getCycles() {
return WCETInstruction.getCycles(this.opcode, false, 0);
//return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
}
}
1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/MethodTimeAnalysisInsn.java
http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/MethodTimeAnalysisInsn.java?rev=1.1&content-type=text/x-cvsweb-markup
Index: MethodTimeAnalysisInsn.java
===================================================================
/**
*
*/
package wcet.components.graphbuilder.instruction.exectime;
import com.jopdesign.wcet.WCETInstruction;
import wcet.framework.instruction.cache.MethodAnalysisInsn;
import wcet.framework.interfaces.instruction.OpCodes;
/**
* @author Elena Axamitova
* @version 0.1 15.03.2007
*/
// OK
public class MethodTimeAnalysisInsn extends MethodAnalysisInsn implements
ITimeAnalysisInstruction {
public MethodTimeAnalysisInsn(int opc) {
super(opc);
}
/*
* (non-Javadoc)
*
* @see wcet.components.graphbuilder.instuctions.exectime.ITimeAnalysisInstruction#getCycles()
*/
public int getCycles() {
// the cycles needed to test if the method is in the cache and
// the load of the method in the case of a cache miss will be suplied by
// the invoke block following this instruction in the cfg;
//int retValue = 0;
int retValue = WCETInstruction.getCycles(this.opcode, false, 0);
int b = WCETInstruction.calculateB(false, 0);
switch (this.opcode) {
case OpCodes.INVOKEVIRTUAL:
// retValue = 100 + 2 * ITimeAnalysisInstruction.rws;
// break;
case OpCodes.INVOKESPECIAL:
case OpCodes.INVOKESTATIC:
//retValue = 74 + ITimeAnalysisInstruction.rws;
//break;
case OpCodes.INVOKEINTERFACE:
//retValue = 114 + 4 * ITimeAnalysisInstruction.rws;
//break;
if(b>this.getHiddenCycles())
retValue -= b - this.getHiddenCycles();
break;
default:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
}
/*if (ITimeAnalysisInstruction.rws > 3) {
retValue += ITimeAnalysisInstruction.rws - 3;
}
if (ITimeAnalysisInstruction.rws > 2) {
retValue += ITimeAnalysisInstruction.rws - 2;
}*/
return retValue;
}
public int getHiddenCycles() {
switch (this.opcode) {
case OpCodes.INVOKEVIRTUAL:
case OpCodes.INVOKESPECIAL:
case OpCodes.INVOKESTATIC:
case OpCodes.INVOKEINTERFACE:
return 37;
default:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
}
}
}
1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/MultiANewArrayTimeAnalysisInsn.java
http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/MultiANewArrayTimeAnalysisInsn.java?rev=1.1&content-type=text/x-cvsweb-markup
Index: MultiANewArrayTimeAnalysisInsn.java
===================================================================
/**
*
*/
package wcet.components.graphbuilder.instruction.exectime;
import com.jopdesign.wcet.WCETInstruction;
import wcet.framework.instruction.cache.MultiANewArrayAnalysisInsn;
/**
* @author Elena Axamitova
* @version 0.1 15.03.2007
*/
//OK
public class MultiANewArrayTimeAnalysisInsn extends MultiANewArrayAnalysisInsn
implements ITimeAnalysisInstruction {
public MultiANewArrayTimeAnalysisInsn(int opc){
super(opc);
}
/* (non-Javadoc)
* @see wcet.components.graphbuilder.instuctions.exectime.ITimeAnalysisInstruction#getCycles()
*/
public int getCycles() {
return WCETInstruction.getCycles(this.opcode, false, 0);
//return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
}
}
1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/TableSwitchTimeAnalysisInsn.java
http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/TableSwitchTimeAnalysisInsn.java?rev=1.1&content-type=text/x-cvsweb-markup
Index: TableSwitchTimeAnalysisInsn.java
===================================================================
/**
*
*/
package wcet.components.graphbuilder.instruction.exectime;
import com.jopdesign.wcet.WCETInstruction;
import wcet.framework.instruction.cache.TableSwitchAnalysisInsn;
/**
* @author Elena Axamitova
* @version 0.1 15.03.2007
*/
//OK
public class TableSwitchTimeAnalysisInsn extends TableSwitchAnalysisInsn
implements ITimeAnalysisInstruction {
public TableSwitchTimeAnalysisInsn(int opc, int size){
super(opc, size);
}
/* (non-Javadoc)
* @see wcet.components.graphbuilder.instuctions.exectime.ITimeAnalysisInstruction#getCycles()
*/
public int getCycles() {
return WCETInstruction.getCycles(this.opcode, false, 0);
//return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
}
}
1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/TypeTimeAnalysisInsn.java
http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/TypeTimeAnalysisInsn.java?rev=1.1&content-type=text/x-cvsweb-markup
Index: TypeTimeAnalysisInsn.java
===================================================================
/**
*
*/
package wcet.components.graphbuilder.instruction.exectime;
import com.jopdesign.wcet.WCETInstruction;
import wcet.framework.instruction.cache.TypeAnalysisInsn;
//import wcet.framework.interfaces.instruction.OpCodes;
/**
* @author Elena Axamitova
* @version 0.1 15.03.2007
*/
//OK
public class TypeTimeAnalysisInsn extends TypeAnalysisInsn implements
ITimeAnalysisInstruction {
public TypeTimeAnalysisInsn(int opc) {
super(opc);
}
/*
* (non-Javadoc)
*
* @see wcet.components.graphbuilder.instuctions.exectime.ITimeAnalysisInstruction#getCycles()
*/
public int getCycles() {
return WCETInstruction.getCycles(this.opcode, false, 0);
/*switch (this.opcode) {
case OpCodes.NEW:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.ANEWARRAY:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.CHECKCAST:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
case OpCodes.INSTANCEOF:
return ITimeAnalysisInstruction.CYCLES_OF_LAST_METHOD;
default:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
}*/
}
}
1.1 jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/VarTimeAnalysisInsn.java
http://www.opencores.org/cvsweb.shtml/jop/java/tools/src/wcet/components/graphbuilder/instruction/exectime/VarTimeAnalysisInsn.java?rev=1.1&content-type=text/x-cvsweb-markup
Index: VarTimeAnalysisInsn.java
===================================================================
/**
*
*/
package wcet.components.graphbuilder.instruction.exectime;
import com.jopdesign.wcet.WCETInstruction;
import wcet.framework.instruction.cache.VarAnalysisInsn;
//import wcet.framework.interfaces.instruction.OpCodes;
/**
* @author Elena Axamitova
* @version 0.1 15.03.2007
*/
// OK
public class VarTimeAnalysisInsn extends VarAnalysisInsn implements
ITimeAnalysisInstruction {
public VarTimeAnalysisInsn(int opc) {
super(opc);
}
/*
* (non-Javadoc)
*
* @see wcet.components.graphbuilder.instuctions.exectime.ITimeAnalysisInstruction#getCycles()
*/
public int getCycles() {
return WCETInstruction.getCycles(this.opcode, false, 0);
/*switch (this.opcode) {
case OpCodes.ILOAD:
return 2;
case OpCodes.LLOAD:
return 11;
case OpCodes.FLOAD:
return 2;
case OpCodes.DLOAD:
return 11;
case OpCodes.ALOAD:
return 2;
case OpCodes.ISTORE:
return 2;
case OpCodes.LSTORE:
return 11;
case OpCodes.FSTORE:
return 2;
case OpCodes.DSTORE:
return 11;
case OpCodes.ASTORE:
return 2;
case OpCodes.RET:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
default:
return ITimeAnalysisInstruction.CYCLES_UNKNOWN;
}*/
}
}
|
 |