[kaffe] CVS kaffe (robilad): Updated gnu.bytecode snapshot to latest version

Kaffe CVS cvs-commits at kaffe.org
Tue Sep 20 16:12:11 PDT 2005


PatchSet 6923 
Date: 2005/09/20 23:07:23
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
Updated gnu.bytecode snapshot to latest version

Members: 
	ChangeLog:1.4445->1.4446 
	libraries/javalib/gnu/bytecode/ClassFileInput.java:1.1->1.2 
	libraries/javalib/gnu/bytecode/ClassType.java:1.1->1.2 
	libraries/javalib/gnu/bytecode/CodeAttr.java:1.1->1.2 
	libraries/javalib/gnu/bytecode/Method.java:1.1->1.2 
	libraries/javalib/gnu/bytecode/ObjectType.java:1.1->1.2 
	libraries/javalib/gnu/bytecode/Type.java:1.1->1.2 
	libraries/javalib/gnu/bytecode/Variable.java:1.1->1.2 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4445 kaffe/ChangeLog:1.4446
--- kaffe/ChangeLog:1.4445	Tue Sep 20 21:44:38 2005
+++ kaffe/ChangeLog	Tue Sep 20 23:07:23 2005
@@ -1,5 +1,16 @@
 2005-09-20  Dalibor Topic  <robilad at kaffe.org>
 
+	* libraries/javalib/gnu/bytecode/ClassFileInput.java,
+	libraries/javalib/gnu/bytecode/ClassType.java,
+	libraries/javalib/gnu/bytecode/CodeAttr.java,
+	libraries/javalib/gnu/bytecode/Method.java,
+	libraries/javalib/gnu/bytecode/ObjectType.java,
+	libraries/javalib/gnu/bytecode/Type.java,
+	libraries/javalib/gnu/bytecode/Variable.java:
+	Updated to latest version from Kawa.
+
+2005-09-20  Dalibor Topic  <robilad at kaffe.org>
+
 	* configure.ac: Check for libgif if libungif is not found.
 	It's a different name for the library, apparently.
 
Index: kaffe/libraries/javalib/gnu/bytecode/ClassFileInput.java
diff -u kaffe/libraries/javalib/gnu/bytecode/ClassFileInput.java:1.1 kaffe/libraries/javalib/gnu/bytecode/ClassFileInput.java:1.2
--- kaffe/libraries/javalib/gnu/bytecode/ClassFileInput.java:1.1	Thu Mar  3 18:55:56 2005
+++ kaffe/libraries/javalib/gnu/bytecode/ClassFileInput.java	Tue Sep 20 23:07:27 2005
@@ -209,9 +209,9 @@
 	Method method = attr.getMethod();
 	if (attr.parameter_scope == null)
 	  attr.parameter_scope = method.pushScope();
-	if (attr.parameter_scope.end == null)
-	  attr.parameter_scope.end = new Label(code.PC);
 	Scope scope = attr.parameter_scope;
+	if (scope.end == null)
+	  scope.end = new Label(code.PC);
 	ConstantPool constants = method.getConstants();
         int count = readUnsignedShort();
 	int prev_start = scope.start.position;
Index: kaffe/libraries/javalib/gnu/bytecode/ClassType.java
diff -u kaffe/libraries/javalib/gnu/bytecode/ClassType.java:1.1 kaffe/libraries/javalib/gnu/bytecode/ClassType.java:1.2
--- kaffe/libraries/javalib/gnu/bytecode/ClassType.java:1.1	Thu Mar  3 18:55:56 2005
+++ kaffe/libraries/javalib/gnu/bytecode/ClassType.java	Tue Sep 20 23:07:27 2005
@@ -179,7 +179,7 @@
    * @return the interfaces this class is declared to implement
    * (not those inherited from its superclass/superinterfaces).
    */
-  public ClassType[] getInterfaces()
+  public synchronized ClassType[] getInterfaces()
   {
     if (interfaces == null
 	&& (flags & EXISTING_CLASS) != 0 && getReflectClass() != null)
@@ -416,6 +416,20 @@
     Method meth = addMethod(name, flags);
     meth.setSignature(signature);
     return meth;
+  }
+
+  /** Add a method to this ClassType.
+    * If an existing method matches, return that.  Otherwise, create
+    * a new one. */
+  public Method getMethod (java.lang.reflect.Method method)
+  {
+    String name = method.getName();
+    Class[] parameterClasses = method.getParameterTypes();
+    Type[] parameterTypes = new Type[parameterClasses.length];
+    for (int i = parameterClasses.length;  --i >= 0; )
+      parameterTypes[i] = Type.make(parameterClasses[i]);
+    return addMethod(name, method.getModifiers(),
+                     parameterTypes, Type.make(method.getReturnType()));
   }
 
   public final synchronized Method getDeclaredMethods()
Index: kaffe/libraries/javalib/gnu/bytecode/CodeAttr.java
diff -u kaffe/libraries/javalib/gnu/bytecode/CodeAttr.java:1.1 kaffe/libraries/javalib/gnu/bytecode/CodeAttr.java:1.2
--- kaffe/libraries/javalib/gnu/bytecode/CodeAttr.java:1.1	Thu Mar  3 18:55:56 2005
+++ kaffe/libraries/javalib/gnu/bytecode/CodeAttr.java	Tue Sep 20 23:07:27 2005
@@ -501,7 +501,7 @@
     Scope scope = new Scope ();
     if (locals == null)
       locals = new LocalVarsAttr(getMethod());
-    locals.enterScope(scope);
+    enterScope(scope);
     if (locals.parameter_scope == null) 
       locals.parameter_scope = scope;
     return scope;
@@ -1947,18 +1947,14 @@
 
   public void emitTryStart(boolean has_finally, Type result_type)
   {
-    TryState try_state = new TryState(this);
     if (result_type != null && result_type.isVoid())
       result_type = null;
+    Variable[] savedStack = null;
     if (result_type != null || SP > 0)
-      {
-	pushScope();
-	if (result_type != null)
-	  try_state.saved_result = addLocal(result_type);
-      }
+      pushScope();
     if (SP > 0)
       {
-	Variable[] savedStack = new Variable[SP];
+	savedStack = new Variable[SP];
 	int i = 0;
 	while (SP > 0)
 	  {
@@ -1966,8 +1962,11 @@
 	    emitStore(var);
 	    savedStack[i++] = var;
 	  }
-	try_state.savedStack = savedStack;
       }
+    TryState try_state = new TryState(this);
+    try_state.savedStack = savedStack;
+    if (result_type != null)
+      try_state.saved_result = addLocal(result_type);
     if (has_finally)
       try_state.finally_subr = new Label();
   }
Index: kaffe/libraries/javalib/gnu/bytecode/Method.java
diff -u kaffe/libraries/javalib/gnu/bytecode/Method.java:1.1 kaffe/libraries/javalib/gnu/bytecode/Method.java:1.2
--- kaffe/libraries/javalib/gnu/bytecode/Method.java:1.1	Thu Mar  3 18:55:57 2005
+++ kaffe/libraries/javalib/gnu/bytecode/Method.java	Tue Sep 20 23:07:27 2005
@@ -107,7 +107,6 @@
   /**
    * Allocate slots for a local variable (or parameter).
    * @param local the variable we need to allocate
-   * @result the index of the (first) slot.
    * @deprecated
    */
   public void allocate_local (Variable local)
Index: kaffe/libraries/javalib/gnu/bytecode/ObjectType.java
diff -u kaffe/libraries/javalib/gnu/bytecode/ObjectType.java:1.1 kaffe/libraries/javalib/gnu/bytecode/ObjectType.java:1.2
--- kaffe/libraries/javalib/gnu/bytecode/ObjectType.java:1.1	Thu Mar  3 18:55:57 2005
+++ kaffe/libraries/javalib/gnu/bytecode/ObjectType.java	Tue Sep 20 23:07:27 2005
@@ -71,7 +71,14 @@
     catch (java.lang.ClassNotFoundException ex)
       {
         if ((flags & EXISTING_CLASS) != 0)
-          throw new RuntimeException("no such class: "+getName());
+          {
+	    RuntimeException rex
+              = new RuntimeException("no such class: "+getName());
+            /* #ifdef use:java.lang.Throwable.getCause */
+            rex.initCause(ex);
+            /* #endif */
+            throw rex;
+          }
       }
     return reflectClass;
   }
Index: kaffe/libraries/javalib/gnu/bytecode/Type.java
diff -u kaffe/libraries/javalib/gnu/bytecode/Type.java:1.1 kaffe/libraries/javalib/gnu/bytecode/Type.java:1.2
--- kaffe/libraries/javalib/gnu/bytecode/Type.java:1.1	Thu Mar  3 18:55:57 2005
+++ kaffe/libraries/javalib/gnu/bytecode/Type.java	Tue Sep 20 23:07:27 2005
@@ -19,7 +19,7 @@
   /** The type used to implement types not natively understood by the JVM.
 
    * Usually, the identity function.  However, a language might handle
-   * union types or template types or type expression scalculated at
+   * union types or template types or type expressions calculated at
    * run time.  In that case return the type used at the JVM level,
    * and known at compile time.
    */
Index: kaffe/libraries/javalib/gnu/bytecode/Variable.java
diff -u kaffe/libraries/javalib/gnu/bytecode/Variable.java:1.1 kaffe/libraries/javalib/gnu/bytecode/Variable.java:1.2
--- kaffe/libraries/javalib/gnu/bytecode/Variable.java:1.1	Thu Mar  3 18:55:57 2005
+++ kaffe/libraries/javalib/gnu/bytecode/Variable.java	Tue Sep 20 23:07:27 2005
@@ -32,14 +32,11 @@
   }
 
   private int flags = SIMPLE_FLAG;
-  /* The SIMPLE_FLAG records the isSimple (q.v.) state. */
+  /** The SIMPLE_FLAG records the isSimple (q.v.) state. */
   private static final int SIMPLE_FLAG = 0x1;
-  /* The PARAMETER_FLAG bit is true for parameters. */
+  /** The PARAMETER_FLAG bit is true for parameters. */
   private static final int PARAMETER_FLAG = 0x2;
-  /* The ARTIFICIAL_FLAG bits marks internals variables.
-     PARAMETER_FLAG|ARTIFICIAL_FLAG means an incoming parameter. */
-  private static final int ARTIFICIAL_FLAG = 0x4;
-  private static final int LIVE_FLAG = 0x8;
+  private static final int LIVE_FLAG = 0x4;
 
   static final int UNASSIGNED = -1;
   /** The local variable slot number used by this variable.
@@ -83,16 +80,6 @@
     setFlag(parameter, PARAMETER_FLAG);
   }
 
-  public final boolean isArtificial ()
-  {
-    return (flags & ARTIFICIAL_FLAG) != 0;
-  }
-  
-  public final void setArtificial (boolean artificial)
-  {
-    setFlag(artificial, ARTIFICIAL_FLAG);
-  }
-
   /** Assign a local variable to a given local variable slot.
    * @param varIndex the index of the local variables.
    * @return true iff we succeeded (i.e. the slot was unused) */
@@ -122,7 +109,6 @@
 
   /**
    * Allocate slots for a local variable (or parameter).
-   * @return the index of the (first) slot.
    */
   public void allocateLocal (CodeAttr code)
   {



More information about the kaffe mailing list