[PATCH] jit: skip conversion of unreachable basic blocks

2009-10-11 Thread Tomek Grabiec
Basic blocks which are unreachable in CFG and are not
exception handlers will not be converted.

This is a workaround for a problem encountered in bytecode generated
by clojure. Clojure generates unreachable basic blocks which leave
empty mimic stack and jump to a basic block which expects a value on
mimic stack. This breaks mimic stack resolution because we have
different stack depths on different paths (bb1-bb3 and bb2-bb3):

...

--- bb1 (unreachable)
[main][ 354 ]  0xa7  goto   359

--- bb2
[main][ 357 ]  0x57  pop
[main][ 358 ]  0x01  aconst_null

--- bb3
[main][ 359 ]  0xb0  areturn

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
---
 jit/bytecode-to-ir.c |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/jit/bytecode-to-ir.c b/jit/bytecode-to-ir.c
index a93a2ca..5f66587 100644
--- a/jit/bytecode-to-ir.c
+++ b/jit/bytecode-to-ir.c
@@ -434,6 +434,9 @@ int convert_to_ir(struct compilation_unit *cu)
 * really converted all basic blocks.
 */
for_each_basic_block(bb, cu-bb_list) {
+   if (!bb-is_eh)
+   continue;
+
err = convert_bb_to_ir(bb);
if (err)
break;
-- 
1.6.0.4


--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[penberg/jato] 57ac9b: jit: skip conversion of unreachable basic blocks

2009-10-11 Thread noreply
Branch: refs/heads/master
Home:   http://github.com/penberg/jato

Commit: 57ac9bead86fda7612245ead4faf3726395aa089

http://github.com/penberg/jato/commit/57ac9bead86fda7612245ead4faf3726395aa089
Author: Tomek Grabiec tgrab...@gmail.com
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M jit/bytecode-to-ir.c

Log Message:
---
jit: skip conversion of unreachable basic blocks

Basic blocks which are unreachable in CFG and are not
exception handlers will not be converted.

This is a workaround for a problem encountered in bytecode generated
by clojure. Clojure generates unreachable basic blocks which leave
empty mimic stack and jump to a basic block which expects a value on
mimic stack. This breaks mimic stack resolution because we have
different stack depths on different paths (bb1-bb3 and bb2-bb3):

  -- bb1 (unreachable)
  [main][ 354 ]  0xa7  goto   359

  -- bb2
  [main][ 357 ]  0x57  pop
  [main][ 358 ]  0x01  aconst_null

  -- bb3
  [main][ 359 ]  0xb0  areturn

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi



--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[penberg/jato] 54893c: Implement AtomicLong.VMSupportsCS8()

2009-10-11 Thread noreply
Branch: refs/heads/master
Home:   http://github.com/penberg/jato

Commit: 54893cea2f29b67241fbad13f02f1236ee0fcbd6

http://github.com/penberg/jato/commit/54893cea2f29b67241fbad13f02f1236ee0fcbd6
Author: Pekka Enberg penb...@cs.helsinki.fi
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M vm/jato.c

Log Message:
---
Implement AtomicLong.VMSupportsCS8()

This is needed by Clojure. Lets return false from the method for now.

Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi



--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[penberg/jato] 2e5dd6: x86: Separate 32 and 64-bit atomic.h

2009-10-11 Thread noreply
Branch: refs/heads/master
Home:   http://github.com/penberg/jato

Commit: 2e5dd6daedc211c399741f76ffa0d660c2a463e4

http://github.com/penberg/jato/commit/2e5dd6daedc211c399741f76ffa0d660c2a463e4
Author: Pekka Enberg penb...@cs.helsinki.fi
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M arch/x86/include/arch/atomic.h
  A arch/x86/include/arch/atomic_32.h
  A arch/x86/include/arch/atomic_64.h

Log Message:
---
x86: Separate 32 and 64-bit atomic.h

As a preparational step for introducing atomic_cmpxchg_64() on 32-bit,
separate 32-bit and 64-bit atomic.h header files.

Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi


Commit: 9a794542b8fd0dcbec5b5d68946ef51ed95321d5

http://github.com/penberg/jato/commit/9a794542b8fd0dcbec5b5d68946ef51ed95321d5
Author: Pekka Enberg penb...@cs.helsinki.fi
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M arch/x86/Makefile_32
  A arch/x86/atomic_32.c
  M arch/x86/include/arch/atomic_32.h
  M include/vm/unsafe.h
  M regression/sun/misc/UnsafeTest.java
  M vm/jato.c
  M vm/unsafe.c

Log Message:
---
Implement Unsafe.compareAndSwapLong()

Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi



--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[PATCH 4/4] vm: fix call_static_method() and call_virtual_method()

2009-10-11 Thread Tomek Grabiec
Those functions should return values wrapped in approptiate objects,
not the value itself. This caused a SIGSEGV when running clojure
because an integer value was accessed like an object reference.

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
---
 vm/reflection.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/vm/reflection.c b/vm/reflection.c
index 027bfb4..6d03a57 100644
--- a/vm/reflection.c
+++ b/vm/reflection.c
@@ -721,7 +721,7 @@ call_virtual_method(struct vm_method *vmm, struct vm_object 
*o,
return NULL;
 
vm_call_method_this_a(vmm, o, args, result);
-   return result.l;
+   return wrap(result, vmm-return_type.vm_type);
 }
 
 static struct vm_object *
@@ -734,7 +734,7 @@ call_static_method(struct vm_method *vmm, struct vm_object 
*args_array)
return NULL;
 
vm_call_method_a(vmm, args, result);
-   return result.l;
+   return wrap(result, vmm-return_type.vm_type);
 }
 
 jint native_method_get_modifiers_internal(struct vm_object *this)
-- 
1.6.0.4


--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[PATCH 1/4] vm: change call result return method for vm_call_method_*() so that it can handle any type

2009-10-11 Thread Tomek Grabiec
Before that, all vm_call_method_*() functions returned unsigned long
which was not a good idea because there was no way to handle jlong or
jdouble this way on x86.

This patch changes the API, so that vm_call_method_*() functions are
given a pointer to a union jvalue to which the result should be
saved. This way we can use vm_call_method_*() functions in a machine
and type independed way.

While at it, implement JNI funciton families:
 CallStatic*Method()
 CallStatic*MethodV()
 Call*Method()

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
---
 arch/x86/call.c|  222 +++-
 include/vm/call.h  |   85 +
 vm/call.c  |   40 
 vm/jni-interface.c |  265 +---
 vm/reflection.c|   21 +++--
 5 files changed, 385 insertions(+), 248 deletions(-)

diff --git a/arch/x86/call.c b/arch/x86/call.c
index 08b7ac9..717d53d 100644
--- a/arch/x86/call.c
+++ b/arch/x86/call.c
@@ -37,14 +37,13 @@
 #ifdef CONFIG_X86_32
 
 /**
- * This calls a function with call arguments copied from @args
- * array. The array contains @args_count elements of machine word
- * size. The @target must be a variable holding a function
- * pointer. Call result will be stored in @result.
+ * Calls @method which address is obtained from a memory
+ * pointed by @target. Function returns call result which
+ * is supposed to be saved to %eax.
  */
-unsigned long native_call(struct vm_method *method,
- const void *target,
- unsigned long *args)
+static unsigned long native_call_gp(struct vm_method *method,
+   const void *target,
+   unsigned long *args)
 {
unsigned long result;
 
@@ -66,15 +65,9 @@ unsigned long native_call(struct vm_method *method,
return result;
 }
 
-/**
- * This calls a VM native function with call arguments copied from
- * @args array. The array contains @args_count elements of machine
- * word size. The @target must be a pointer to a VM function. Call
- * result will be stored in @result.
- */
-unsigned long vm_native_call(struct vm_method *method,
-const void *target,
-unsigned long *args)
+static unsigned long vm_native_call_gp(struct vm_method *method,
+  const void *target,
+  unsigned long *args)
 {
unsigned long result;
 
@@ -108,11 +101,104 @@ unsigned long vm_native_call(struct vm_method *method,
return result;
 }
 
+/**
+ * This calls a function with call arguments copied from @args
+ * array. The array contains @args_count elements of machine word
+ * size. The @target must be a variable holding a function
+ * pointer. Call result will be stored in @result.
+ */
+void native_call(struct vm_method *method,
+const void *target,
+unsigned long *args,
+union jvalue *result)
+{
+   switch (method-return_type.vm_type) {
+   case J_VOID:
+   native_call_gp(method, target, args);
+   break;
+   case J_REFERENCE:
+   result-l = (jobject) native_call_gp(method, target, args);
+   break;
+   case J_INT:
+   result-i = (jint) native_call_gp(method, target, args);
+   break;
+   case J_CHAR:
+   result-c = (jchar) native_call_gp(method, target, args);
+   break;
+   case J_BYTE:
+   result-b = (jbyte) native_call_gp(method, target, args);
+   break;
+   case J_SHORT:
+   result-s = (jshort) native_call_gp(method, target, args);
+   break;
+   case J_BOOLEAN:
+   result-z = (jboolean) native_call_gp(method, target, args);
+   break;
+   case J_LONG:
+   case J_DOUBLE:
+   case J_FLOAT:
+   NOT_IMPLEMENTED;
+   break;
+   case J_RETURN_ADDRESS:
+   case VM_TYPE_MAX:
+   die(unexpected type);
+   }
+}
+
+/**
+ * This calls a VM native function with call arguments copied from
+ * @args array. The array contains @args_count elements of machine
+ * word size. The @target must be a pointer to a VM function. Call
+ * result will be stored in @result.
+ */
+void vm_native_call(struct vm_method *method,
+   const void *target,
+   unsigned long *args,
+   union jvalue *result)
+{
+   switch (method-return_type.vm_type) {
+   case J_VOID:
+   vm_native_call_gp(method, target, args);
+   break;
+   case J_REFERENCE:
+   result-l = (jobject) vm_native_call_gp(method, target, args);
+   break;
+   case J_INT:
+   result-i = (jint) vm_native_call_gp(method, target, args);
+   break;
+   case J_CHAR:
+   

[PATCH 3/4] vm: rename encapsulate_value() to wrap()

2009-10-11 Thread Tomek Grabiec
While at it, make it more robust by using valueOf() functions.

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
---
 include/vm/preload.h |8 +++
 vm/preload.c |   56 ++
 vm/reflection.c  |  153 --
 3 files changed, 124 insertions(+), 93 deletions(-)

diff --git a/include/vm/preload.h b/include/vm/preload.h
index a99fa89..d09f6b7 100644
--- a/include/vm/preload.h
+++ b/include/vm/preload.h
@@ -101,13 +101,21 @@ extern struct vm_method *vm_java_lang_VMThread_init;
 extern struct vm_method *vm_java_lang_VMThread_run;
 extern struct vm_method *vm_java_lang_System_exit;
 extern struct vm_method *vm_java_lang_Boolean_init;
+extern struct vm_method *vm_java_lang_Boolean_valueOf;
 extern struct vm_method *vm_java_lang_Byte_init;
+extern struct vm_method *vm_java_lang_Byte_valueOf;
 extern struct vm_method *vm_java_lang_Character_init;
+extern struct vm_method *vm_java_lang_Character_valueOf;
 extern struct vm_method *vm_java_lang_Double_init;
+extern struct vm_method *vm_java_lang_Double_valueOf;
 extern struct vm_method *vm_java_lang_Float_init;
+extern struct vm_method *vm_java_lang_Float_valueOf;
 extern struct vm_method *vm_java_lang_Integer_init;
+extern struct vm_method *vm_java_lang_Integer_valueOf;
 extern struct vm_method *vm_java_lang_Long_init;
+extern struct vm_method *vm_java_lang_Long_valueOf;
 extern struct vm_method *vm_java_lang_Short_init;
+extern struct vm_method *vm_java_lang_Short_valueOf;
 extern struct vm_method *vm_java_lang_ClassLoader_loadClass;
 extern struct vm_method *vm_java_lang_ClassLoader_getSystemClassLoader;
 extern struct vm_method *vm_java_lang_Number_intValue;
diff --git a/vm/preload.c b/vm/preload.c
index 23516af..ba2d50f 100644
--- a/vm/preload.c
+++ b/vm/preload.c
@@ -247,13 +247,21 @@ struct vm_method *vm_java_lang_VMThread_init;
 struct vm_method *vm_java_lang_VMThread_run;
 struct vm_method *vm_java_lang_System_exit;
 struct vm_method *vm_java_lang_Boolean_init;
+struct vm_method *vm_java_lang_Boolean_valueOf;
 struct vm_method *vm_java_lang_Byte_init;
+struct vm_method *vm_java_lang_Byte_valueOf;
 struct vm_method *vm_java_lang_Character_init;
+struct vm_method *vm_java_lang_Character_valueOf;
 struct vm_method *vm_java_lang_Double_init;
+struct vm_method *vm_java_lang_Double_valueOf;
 struct vm_method *vm_java_lang_Float_init;
+struct vm_method *vm_java_lang_Float_valueOf;
 struct vm_method *vm_java_lang_Integer_init;
+struct vm_method *vm_java_lang_Integer_valueOf;
 struct vm_method *vm_java_lang_Long_init;
+struct vm_method *vm_java_lang_Long_valueOf;
 struct vm_method *vm_java_lang_Short_init;
+struct vm_method *vm_java_lang_Short_valueOf;
 struct vm_method *vm_java_lang_ClassLoader_loadClass;
 struct vm_method *vm_java_lang_ClassLoader_getSystemClassLoader;
 struct vm_method *vm_java_lang_VMString_intern;
@@ -360,48 +368,96 @@ static const struct method_preload_entry 
method_preload_entries[] = {
vm_java_lang_Boolean_init,
},
{
+   vm_java_lang_Boolean,
+   valueOf,
+   (Z)Ljava/lang/Boolean;,
+   vm_java_lang_Boolean_valueOf,
+   },
+   {
vm_java_lang_Byte,
init,
(B)V,
vm_java_lang_Byte_init,
},
{
+   vm_java_lang_Byte,
+   valueOf,
+   (B)Ljava/lang/Byte;,
+   vm_java_lang_Byte_valueOf,
+   },
+   {
vm_java_lang_Character,
init,
(C)V,
vm_java_lang_Character_init,
},
{
+   vm_java_lang_Character,
+   valueOf,
+   (C)Ljava/lang/Character;,
+   vm_java_lang_Character_valueOf,
+   },
+   {
vm_java_lang_Double,
init,
(D)V,
vm_java_lang_Double_init,
},
{
+   vm_java_lang_Double,
+   valueOf,
+   (D)Ljava/lang/Double;,
+   vm_java_lang_Double_valueOf,
+   },
+   {
vm_java_lang_Long,
init,
(J)V,
vm_java_lang_Long_init,
},
{
+   vm_java_lang_Long,
+   valueOf,
+   (J)Ljava/lang/Long;,
+   vm_java_lang_Long_valueOf,
+   },
+   {
vm_java_lang_Short,
init,
(S)V,
vm_java_lang_Short_init,
},
{
+   vm_java_lang_Short,
+   valueOf,
+   (S)Ljava/lang/Short;,
+   vm_java_lang_Short_valueOf,
+   },
+   {
vm_java_lang_Float,
init,
(F)V,
vm_java_lang_Float_init,
},
{
+   vm_java_lang_Float,
+   valueOf,
+   (F)Ljava/lang/Float;,
+

[PATCH 1/4] vm: fix native_vmclass_get_declared_methods()

2009-10-11 Thread Tomek Grabiec
We should perform the vm_method_is_special() check also when
public_only == false;

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
---
 vm/reflection.c |   23 ++-
 1 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/vm/reflection.c b/vm/reflection.c
index 6d03a57..d97fec9 100644
--- a/vm/reflection.c
+++ b/vm/reflection.c
@@ -173,6 +173,7 @@ native_vmclass_get_declared_methods(struct vm_object *clazz,
jboolean public_only)
 {
struct vm_class *vmc;
+   int count;
 
vmc = vm_object_to_vm_class(clazz);
if (!vmc)
@@ -181,25 +182,21 @@ native_vmclass_get_declared_methods(struct vm_object 
*clazz,
if (vm_class_is_primitive_class(vmc) || vm_class_is_array_class(vmc))
return 
vm_object_alloc_array(vm_array_of_java_lang_reflect_Field, 0);
 
-   int count;
+   count = 0;
+   for (int i = 0; i  vmc-class-methods_count; i++) {
+   struct vm_method *vmm = vmc-methods[i];
 
-   if (public_only) {
-   count = 0;
+   if (public_only  !vm_method_is_public(vmm))
+   continue;
 
-   for (int i = 0; i  vmc-class-methods_count; i++) {
-   struct vm_method *vmm = vmc-methods[i];
+   if (vm_method_is_special(vmm))
+   continue;
 
-   if (vm_method_is_public(vmm) 
-   !vm_method_is_special(vmm))
-   count ++;
-   }
-   } else {
-   count = vmc-class-methods_count;
+   count ++;
}
 
struct vm_object *array
-   = vm_object_alloc_array(vm_array_of_java_lang_reflect_Method,
-   count);
+   = vm_object_alloc_array(vm_array_of_java_lang_reflect_Method, 
count);
if (!array) {
NOT_IMPLEMENTED;
return NULL;
-- 
1.6.0.4


--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[PATCH 2/4] regression: fix TestCase.assertObjectEquals()

2009-10-11 Thread Tomek Grabiec

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
---
 regression/jvm/TestCase.java |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/regression/jvm/TestCase.java b/regression/jvm/TestCase.java
index fd00063..2a53a8b 100644
--- a/regression/jvm/TestCase.java
+++ b/regression/jvm/TestCase.java
@@ -90,7 +90,7 @@ public class TestCase {
 assertTrue(o.getClass().getName().equals(className));
 }
 
-protected static void assertObjectEquals(String a, String b) {
+protected static void assertObjectEquals(Object a, Object b) {
 if (a == null  b == null)
 return;
 
-- 
1.6.0.4


--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[PATCH 3/4] x86: make native_call() hard crash for not implemented types.

2009-10-11 Thread Tomek Grabiec

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
---
 arch/x86/call.c |8 
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/x86/call.c b/arch/x86/call.c
index 717d53d..0b96020 100644
--- a/arch/x86/call.c
+++ b/arch/x86/call.c
@@ -137,7 +137,7 @@ void native_call(struct vm_method *method,
case J_LONG:
case J_DOUBLE:
case J_FLOAT:
-   NOT_IMPLEMENTED;
+   error(not implemented);
break;
case J_RETURN_ADDRESS:
case VM_TYPE_MAX:
@@ -181,7 +181,7 @@ void vm_native_call(struct vm_method *method,
case J_LONG:
case J_DOUBLE:
case J_FLOAT:
-   NOT_IMPLEMENTED;
+   error(not implemented);
break;
case J_RETURN_ADDRESS:
case VM_TYPE_MAX:
@@ -294,7 +294,7 @@ void native_call(struct vm_method *method,
break;
case J_DOUBLE:
case J_FLOAT:
-   NOT_IMPLEMENTED;
+   error(not implemented);
break;
case J_RETURN_ADDRESS:
case VM_TYPE_MAX:
@@ -340,7 +340,7 @@ void vm_native_call(struct vm_method *method,
break;
case J_DOUBLE:
case J_FLOAT:
-   NOT_IMPLEMENTED;
+   error(not implemented);
break;
case J_RETURN_ADDRESS:
case VM_TYPE_MAX:
-- 
1.6.0.4


--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[PATCH] vm: fix bug in native_field_get()

2009-10-11 Thread Tomek Grabiec

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
---
 vm/reflection.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/vm/reflection.c b/vm/reflection.c
index d97fec9..faf27bd 100644
--- a/vm/reflection.c
+++ b/vm/reflection.c
@@ -621,7 +621,7 @@ struct vm_object *native_field_get(struct vm_object *this, 
struct vm_object *o)
value_p = o-fields[vmf-offset];
}
 
-   return wrap((union jvalue *) value_p, type);
+   return wrap((union jvalue *) value_p, type);
 }
 
 jint native_field_get_modifiers_internal(struct vm_object *this)
-- 
1.6.0.4


--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[penberg/jato] 2800c1: vm: change call result return method for vm_call_m...

2009-10-11 Thread noreply
Branch: refs/heads/master
Home:   http://github.com/penberg/jato

Commit: 2800c15f01d34f3a876fa8ad8cade6d4d8bbc89b

http://github.com/penberg/jato/commit/2800c15f01d34f3a876fa8ad8cade6d4d8bbc89b
Author: Tomek Grabiec tgrab...@gmail.com
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M arch/x86/call.c
  M include/vm/call.h
  M vm/call.c
  M vm/jni-interface.c
  M vm/reflection.c

Log Message:
---
vm: change call result return method for vm_call_method_*() so that it can 
handle any type

Before that, all vm_call_method_*() functions returned unsigned long
which was not a good idea because there was no way to handle jlong or
jdouble this way on x86.

This patch changes the API, so that vm_call_method_*() functions are
given a pointer to a union jvalue to which the result should be
saved. This way we can use vm_call_method_*() functions in a machine
and type independed way.

While at it, implement JNI funciton families:
 CallStatic*Method()
 CallStatic*MethodV()
 Call*Method()

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi


Commit: 5b3f9aceb2a06450a7b144d891613cbb19ba12be

http://github.com/penberg/jato/commit/5b3f9aceb2a06450a7b144d891613cbb19ba12be
Author: Tomek Grabiec tgrab...@gmail.com
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M include/vm/preload.h
  M vm/preload.c
  M vm/reflection.c

Log Message:
---
vm: implement unwrap() for J_LONG and J_DOUBLE

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi


Commit: d40ed3a80f0834e0e4ef3563ea7b6360f34c892a

http://github.com/penberg/jato/commit/d40ed3a80f0834e0e4ef3563ea7b6360f34c892a
Author: Tomek Grabiec tgrab...@gmail.com
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M include/vm/preload.h
  M vm/preload.c
  M vm/reflection.c

Log Message:
---
vm: rename encapsulate_value() to wrap()

While at it, make it more robust by using valueOf() functions.

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi


Commit: c112c32fe6ac47688d888d88241767eb68d29158

http://github.com/penberg/jato/commit/c112c32fe6ac47688d888d88241767eb68d29158
Author: Tomek Grabiec tgrab...@gmail.com
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M vm/reflection.c

Log Message:
---
vm: fix call_static_method() and call_virtual_method()

Those functions should return values wrapped in approptiate objects,
not the value itself. This caused a SIGSEGV when running clojure
because an integer value was accessed like an object reference.

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi


Commit: 79f827b6c3ad989ba7b05268d5f1ce7f333ae761

http://github.com/penberg/jato/commit/79f827b6c3ad989ba7b05268d5f1ce7f333ae761
Author: Tomek Grabiec tgrab...@gmail.com
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M vm/reflection.c

Log Message:
---
vm: fix native_vmclass_get_declared_methods()

We should perform the vm_method_is_special() check also when
public_only == false;

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi


Commit: ac9a5a30b7f879cf869c6f4888f9a504b6cecaa0

http://github.com/penberg/jato/commit/ac9a5a30b7f879cf869c6f4888f9a504b6cecaa0
Author: Tomek Grabiec tgrab...@gmail.com
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M regression/jvm/TestCase.java

Log Message:
---
regression: fix TestCase.assertObjectEquals()

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi


Commit: d323b0fe358ccc54f1277ca23becbb79d50391ee

http://github.com/penberg/jato/commit/d323b0fe358ccc54f1277ca23becbb79d50391ee
Author: Tomek Grabiec tgrab...@gmail.com
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M arch/x86/call.c

Log Message:
---
x86: make native_call() hard crash for not implemented types.

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi


Commit: b9216f14470638be038b2a748915931d11c232e0

http://github.com/penberg/jato/commit/b9216f14470638be038b2a748915931d11c232e0
Author: Tomek Grabiec tgrab...@gmail.com
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M regression/jvm/MethodTest.java

Log Message:
---
regression: add regression test for method invokation via reflection

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi


Commit: b4b01dcdd6052eafe18501f683274daf3b42aba6

http://github.com/penberg/jato/commit/b4b01dcdd6052eafe18501f683274daf3b42aba6
Author: Tomek Grabiec tgrab...@gmail.com
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M vm/reflection.c

Log Message:
---
vm: fix bug in native_field_get()

Signed-off-by: Tomek Grabiec tgrab...@gmail.com
Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi




[penberg/jato] 5ab2c5: regression: Move reflection API tests to new packa...

2009-10-11 Thread noreply
Branch: refs/heads/master
Home:   http://github.com/penberg/jato

Commit: 5ab2c53a70cc1f288c86a10e3a6da567a88f97de

http://github.com/penberg/jato/commit/5ab2c53a70cc1f288c86a10e3a6da567a88f97de
Author: Pekka Enberg penb...@cs.helsinki.fi
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M Makefile
  A regression/java/lang/reflect/ClassTest.java
  A regression/java/lang/reflect/MethodTest.java
  R regression/jvm/ClassTest.java
  R regression/jvm/MethodTest.java
  M regression/run-suite.sh

Log Message:
---
regression: Move reflection API tests to new package

This patch moves reflection API tests to java.lang.reflect package in
the regress directory to make them stand out better from the core JVM
test cases in jvm package.

Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi



--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[penberg/jato] a21441: Move LICENSE to top level

2009-10-11 Thread noreply
Branch: refs/heads/master
Home:   http://github.com/penberg/jato

Commit: a214410456791f961a2d1da18356c557a415ecaa

http://github.com/penberg/jato/commit/a214410456791f961a2d1da18356c557a415ecaa
Author: Pekka Enberg penb...@cs.helsinki.fi
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  A LICENSE
  R jit/LICENSE

Log Message:
---
Move LICENSE to top level

Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi



--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[penberg/jato] fdb155: jit: rename subroutines_should_not_occure() to fai...

2009-10-11 Thread noreply
Branch: refs/heads/master
Home:   http://github.com/penberg/jato

Commit: fdb155807a1c864e3c8f8be86cf7af7a27d70446

http://github.com/penberg/jato/commit/fdb155807a1c864e3c8f8be86cf7af7a27d70446
Author: Pekka Enberg penb...@cs.helsinki.fi
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M include/jit/subroutine.h
  M jit/subroutine.c

Log Message:
---
jit: rename subroutines_should_not_occure() to fail_subroutine_bc()

Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi


Commit: 5744c486b4bf9b40f8112e0bfdf5f1abc9f86e47

http://github.com/penberg/jato/commit/5744c486b4bf9b40f8112e0bfdf5f1abc9f86e47
Author: Pekka Enberg penb...@cs.helsinki.fi
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M jit/subroutine.c

Log Message:
---
jit: Move reference to header of jit/subroutine.c

The reference to subroutine bytecode inlining paper is important
information for anyone reading the code so move the reference to header
of jit/subroutine.c like the ones we have in jit/linear-scan.c.

Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi



--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[penberg/jato] 671d24: jit: clean up includes in jit/subroutine.c

2009-10-11 Thread noreply
Branch: refs/heads/master
Home:   http://github.com/penberg/jato

Commit: 671d24748077e5a19524026a5575465a4077a3bd

http://github.com/penberg/jato/commit/671d24748077e5a19524026a5575465a4077a3bd
Author: Pekka Enberg penb...@cs.helsinki.fi
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M jit/subroutine.c

Log Message:
---
jit: clean up includes in jit/subroutine.c

We should include our own headers before we include headers to make sure
the former headers are standalone.

Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi



--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[penberg/jato] 9f290d: Update README

2009-10-11 Thread noreply
Branch: refs/heads/master
Home:   http://github.com/penberg/jato

Commit: 9f290dee78e11308945bba0e1b0b428917aeb4e9

http://github.com/penberg/jato/commit/9f290dee78e11308945bba0e1b0b428917aeb4e9
Author: Pekka Enberg penb...@cs.helsinki.fi
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M README

Log Message:
---
Update README

Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi



--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel


[penberg/jato] 27a646: Fix typo in README

2009-10-11 Thread noreply
Branch: refs/heads/master
Home:   http://github.com/penberg/jato

Commit: 27a64688281b4adb994165ab7273d2e4c9d2835d

http://github.com/penberg/jato/commit/27a64688281b4adb994165ab7273d2e4c9d2835d
Author: Pekka Enberg penb...@cs.helsinki.fi
Date:   2009-10-11 (Sun, 11 Oct 2009)

Changed paths:
  M README

Log Message:
---
Fix typo in README

Signed-off-by: Pekka Enberg penb...@cs.helsinki.fi



--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
___
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel