Main Page   Packages   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

JavaLangIntegerReflection.java

00001 package gov.nasa.arc.ase.jpf.jvm.reflection;
00002 
00003 import gov.nasa.arc.ase.jpf.jvm.*;
00004 import gov.nasa.arc.ase.jpf.jvm.bytecode.Instruction;
00005 
00006 public class JavaLangIntegerReflection extends Reflection {
00007   public Instruction executeStaticMethod(MethodInfo mi) {
00008     String name = mi.getFullName();
00009 
00010     if(name.equals("<clinit>()V")) {
00011       setIntStaticField("MIN_VALUE", Integer.MIN_VALUE);
00012       setIntStaticField("MAX_VALUE", Integer.MAX_VALUE);
00013       setObjectStaticField("TYPE", null); // temporary
00014 
00015       return exit();
00016     }
00017 
00018     if(name.equals("toString(II)Ljava/lang/String;")) {
00019       return exitReference(
00020       da.newString(
00021         Integer.toString(
00022           getIntArgument(0),
00023           getIntArgument(1)),
00024         th));
00025     }
00026 
00027     if(name.equals("toHexString(I)Ljava/lang/String;")) {
00028       return exitReference(
00029       da.newString(
00030         Integer.toHexString(
00031           getIntArgument(0)),
00032         th));
00033     }
00034 
00035     if(name.equals("toOctalString(I)Ljava/lang/String;")) {
00036       return exitReference(
00037       da.newString(
00038         Integer.toOctalString(
00039           getIntArgument(0)),
00040         th));
00041     }
00042 
00043     if(name.equals("toBinaryString(I)Ljava/lang/String;")) {
00044       return exitReference(
00045       da.newString(
00046         Integer.toBinaryString(
00047           getIntArgument(0)),
00048         th));
00049     }
00050 
00051     if(name.equals("toString(I)Ljava/lang/String;")) {
00052       return exitReference(
00053       da.newString(
00054         Integer.toString(
00055           getIntArgument(0)),
00056         th));
00057     }
00058 
00059     if(name.equals("parseInt(Ljava/lang/String;I)I")) {
00060       try {
00061     return exit(
00062         Integer.parseInt(
00063           getStringArgument(0),
00064           getIntArgument(1)));
00065       } catch(NumberFormatException e) {
00066     return th.createAndThrowException("java.lang.NumberFormatException");
00067       }
00068     }
00069 
00070     if(name.equals("parseInt(Ljava/lang/String;)I")) {
00071       try {
00072     return exit(
00073         Integer.parseInt(
00074           getStringArgument(0)));
00075       } catch(NumberFormatException e) {
00076     return th.createAndThrowException("java.lang.NumberFormatException");
00077       }
00078     }
00079 
00080     return super.executeStaticMethod(mi);
00081   }  
00082 }

Generated at Thu Feb 7 06:48:18 2002 for Bandera by doxygen1.2.10 written by Dimitri van Heesch, © 1997-2001