Package gov.nasa.jpf.jvm

Examples of gov.nasa.jpf.jvm.ClassInfo


  public static int getNonNativeMods(int mod) {
    return mod & ~Modifier.NATIVE;
  }
 
  public static void main(String[] args) {
    ClassInfo model = new ModelClassProvider().loadClassInfo("java.lang.System");
    ClassInfo peer  = new NativePeerProvider().loadNativePeerClass(model);
   
    MethodInfo modelMethod = model.getMethod("currentTimeMillis", "()J", false);
    System.out.println(modelMethod);
   
    MethodInfo peerMethod = peer.getMethod(
        "currentTimeMillis____J", "(Lgov/nasa/jpf/jvm/MJIEnv;I)J", false);
    System.out.println(peerMethod);
   
    MangledMethodInfoComparator comp1 = new MangledMethodInfoComparator(true);
    System.out.println(comp1.compare(modelMethod, peerMethod));
   
    MangledMethodInfoComparator comp2 = new MangledMethodInfoComparator(false);
    System.out.println(comp2.compare(peerMethod, modelMethod));
  
    MethodInfo[] methods = peer.getDeclaredMethodInfos();
    Arrays.sort(methods, new MethodInfoComparator());
    System.out.println(Arrays.binarySearch(methods, modelMethod, comp2));
  }
View Full Code Here


   * @param className the class to look for
   * @return a {@link ClassInfo} object representing the requested class if
   *         the class is found in the requested version, null otherwise.
   */
  public ClassInfo loadClassInfo(MaybeVersion javaVersion, String className){
    ClassInfo cached = null;
    if(javaVersion.isNothing()) {
      cached = extLibscache.get(className);
      if(cached != null)
        return cached;
      cached = loadClassFromJarFiles(extLibsJars, className);
View Full Code Here

   * @return a {@link Map} between java versions and
   *         {@link ClassInfo} objects.
   */
  public Map<MaybeVersion, ClassInfo> loadClassInfo(String className){
    Map<MaybeVersion, ClassInfo> map = new HashMap<MaybeVersion, ClassInfo>();
    ClassInfo ext = loadClassInfo(nothing(), className);
    if(ext != null) {
      map.put(nothing(), ext);
    }
    ClassInfo ver5 = loadClassInfo(just(5), className);
    if(ver5 != null)
      map.put(just(5), ver5);
    ClassInfo ver6 = loadClassInfo(just(6), className);
    if(ver6 != null)
      map.put(just(6), ver6);
    ClassInfo ver7 = loadClassInfo(just(7), className);
    if(ver7 != null)
      map.put(just(7), ver7);
    return map;
  }
View Full Code Here

  public boolean check(ClassInfo cls) {
    boolean noInconsistencies = true;
    Map<MaybeVersion, ClassInfo> versions = provider.loadClassInfo(cls.getName());
    FieldInfo[] modelFields = cls.getDeclaredInstanceFields();
    for(MaybeVersion ver : versions.keySet()) {
      ClassInfo std = versions.get(ver);
      FieldInfo[] stdFields = std.getDeclaredInstanceFields();
      Arrays.sort(stdFields, comparator);
      for (FieldInfo f : modelFields) {
        if(MemberLevel.getMemberLevel(f).compareTo(this.level) >= 0) {
          if (Arrays.binarySearch(stdFields, f, comparator) < 0) {
            signal(new Inconsistency(
View Full Code Here

  }
 
  @Override
  public boolean check(ClassInfo cls) {
    boolean noInconsistencies = true;
    ClassInfo peer = provider.loadNativePeerClass(cls);
    MethodInfo[] peerMethods = getSortedPeerMethods(peer);
   
    // in the comparison during binary search, the key is in the
    // second position, hence the constructor has false as parameter
    MangledMethodInfoComparator comp =
View Full Code Here

    return noInconsistencies;
  }
 
  public static void main(String[] args) {
    ProviderFactory.init(JPF.createConfig(args));
    ClassInfo cls = new ModelClassProvider().loadClassInfo("java.lang.System");
    MissingNativePeerChecker mnpc = new MissingNativePeerChecker();
    SimpleCmdLineReporter reporter = new SimpleCmdLineReporter(JPF.createConfig(args));
    mnpc.registerReporter(reporter);
    System.out.println(mnpc.check(cls));
  }
View Full Code Here

  boolean checkMethods(ClassInfo cls, Map<MaybeVersion, ClassInfo> standardVersions) {
    boolean noInconsistencies = true;
    MethodInfoComparator cmp = new MethodInfoComparator();
    MethodInfo[] modelMethods = cls.getDeclaredMethodInfos();
    for (MaybeVersion ver : standardVersions.keySet()) {
      ClassInfo std = standardVersions.get(ver);
      MethodInfo[] stdMethods = std.getDeclaredMethodInfos();
      Arrays.sort(stdMethods, cmp);
      for (MethodInfo m : modelMethods) {
        if (MemberLevel.getMemberLevel(m).compareTo(this.level) >= 0) {
          int idx = Arrays.binarySearch(stdMethods, m, cmp);
          if (idx >= 0) {
View Full Code Here

      Map<MaybeVersion, ClassInfo> standardVersions) {
    boolean noInconsistencies = true;
    FieldInfoComparator cmp = new FieldInfoComparator();
    FieldInfo[] modelInstanceFields = cls.getDeclaredInstanceFields();
    for (MaybeVersion ver : standardVersions.keySet()) {
      ClassInfo std = standardVersions.get(ver);
      FieldInfo[] stdInstanceFields = std.getDeclaredInstanceFields();
      Arrays.sort(stdInstanceFields, cmp);
      for (FieldInfo f : modelInstanceFields) {
        if (MemberLevel.getMemberLevel(f).compareTo(this.level) >= 0) {
          int idx = Arrays.binarySearch(stdInstanceFields, f, cmp);
          if (idx >= 0) {
View Full Code Here

      Map<MaybeVersion, ClassInfo> standardVersions) {
    boolean noInconsistencies = true;
    FieldInfoComparator cmp = new FieldInfoComparator();
    FieldInfo[] modelStaticFields = cls.getDeclaredStaticFields();
    for (MaybeVersion ver : standardVersions.keySet()) {
      ClassInfo std = standardVersions.get(ver);
      FieldInfo[] stdStaticFields = std.getDeclaredStaticFields();
      Arrays.sort(stdStaticFields, cmp);
      for (FieldInfo f : modelStaticFields) {
        if (MemberLevel.getMemberLevel(f).compareTo(this.level) >= 0) {
          int idx = Arrays.binarySearch(stdStaticFields, f, cmp);
          if (idx >= 0) {
View Full Code Here

 
  @Override
  public boolean check(ClassInfo cls) {
    boolean noInconsistencies = true;
   
    ClassInfo peer = provider.loadNativePeerClass(cls);
    if (peer == null) // the class has no native peer
      return noInconsistencies; // nothing to do
   
    MethodInfo[] peerMethods = getPeerMethods(peer);
    MethodInfo[] modelMethods = cls.getDeclaredMethodInfos();
View Full Code Here

TOP

Related Classes of gov.nasa.jpf.jvm.ClassInfo

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.