Re: [PATCH] jit: EXPR_INSTANCEOF should have J_INT return type

2009-08-10 Thread Pekka Enberg
On Tue, 2009-08-11 at 01:10 +0200, Tomek Grabiec wrote: > Signed-off-by: Tomek Grabiec > --- > jit/expression.c |2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/jit/expression.c b/jit/expression.c > index 3acbd3c..e1001a1 100644 > --- a/jit/expression.c > +++ b/jit/

[PATCH] jit: EXPR_INSTANCEOF should have J_INT return type

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- jit/expression.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/jit/expression.c b/jit/expression.c index 3acbd3c..e1001a1 100644 --- a/jit/expression.c +++ b/jit/expression.c @@ -551,7 +551,7 @@ struct expression *arraylength_expr(stru

[PATCH] jit: EXPR_ARRAYLENGTH should have J_INT result type

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- jit/expression.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/jit/expression.c b/jit/expression.c index 428b94a..3acbd3c 100644 --- a/jit/expression.c +++ b/jit/expression.c @@ -542,7 +542,7 @@ struct expression *multianewarray_expr(s

[PATCH] vm: move init_system_properties() call before arguments are parsed

2009-08-10 Thread Tomek Grabiec
Otherwise we get SIGSEGV when passing -Dkey=value options. Signed-off-by: Tomek Grabiec --- vm/jato.c |3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/vm/jato.c b/vm/jato.c index e18cf62..9f73d8c 100644 --- a/vm/jato.c +++ b/vm/jato.c @@ -1185,9 +1185,10 @@ main(int arg

[PATCH] vm: fix array field setters and getters for float

2009-08-10 Thread Tomek Grabiec
We should use jdouble and jfloat, or otherwise there will be implicit argument conversion from uint64_t to double when array_get_field_double() will be called in vm_jni_release_double_array_elements() with jdouble argument. This bug caused that gnu/java/awt/peer/gtk/FreetypeGlyphVector.getMetrics

[PATCH 3/3] x86: implement d2l conversion

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- arch/x86/insn-selector.brg | 30 ++ regression/jvm/DoubleArithmeticTest.java | 16 ++-- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/arch/x86/insn-selector.brg b/arch/x86/insn-selector.b

[PATCH 1/3] x86: add floating point instructions needed for d2l

2009-08-10 Thread Tomek Grabiec
Add instructions: INSN_FNSTCW_MEMBASE - store fpu control word INSN_FLDCW_MEMBASE - load fpu control word INSN_FISTP_64_MEMBASE - store double value as 64-bit integer with truncation. Signed-off-by: Tomek Grabiec --- arch/x86/emit-code.c| 18 ++ arch/x86/include

[PATCH] x86: reveal the magic behind l2d

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- arch/x86/insn-selector.brg | 27 +-- 1 files changed, 21 insertions(+), 6 deletions(-) diff --git a/arch/x86/insn-selector.brg b/arch/x86/insn-selector.brg index 41ab693..297ef7f 100644 --- a/arch/x86/insn-selector.brg +++ b/arch/x86/in

[PATCH 2/3] x86: add INSN_OR_IMM_MEMBASE

2009-08-10 Thread Tomek Grabiec
Is needed for d2l. Signed-off-by: Tomek Grabiec --- arch/x86/emit-code.c|8 arch/x86/include/arch/instruction.h |1 + arch/x86/lir-printer.c |7 +++ arch/x86/use-def.c |1 + 4 files changed, 17 insertions(+), 0 deletions(

[PATCH] x86: reveal the magic behind l2d

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- arch/x86/insn-selector.brg | 27 +-- 1 files changed, 21 insertions(+), 6 deletions(-) diff --git a/arch/x86/insn-selector.brg b/arch/x86/insn-selector.brg index 41ab693..297ef7f 100644 --- a/arch/x86/insn-selector.brg +++ b/arch/x86/in

[PATCH] x86: do not use J_REFERENCE as register type when it doesn't hold an object reference.

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- arch/x86/insn-selector.brg |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/insn-selector.brg b/arch/x86/insn-selector.brg index 40fc329..e753fc9 100644 --- a/arch/x86/insn-selector.brg +++ b/arch/x86/insn-selector.brg @@ -2454

[PATCH] vm: fix pack_args()

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- include/vm/system.h | 10 ++ vm/jni-interface.c | 47 +-- 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/include/vm/system.h b/include/vm/system.h index 2ce6012..bfe3112 100644 --- a/inclu

[PATCH 14/14] vm: implement NewObjectA JNI function

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- vm/jni-interface.c | 50 +- 1 files changed, 49 insertions(+), 1 deletions(-) diff --git a/vm/jni-interface.c b/vm/jni-interface.c index d357da6..29d8061 100644 --- a/vm/jni-interface.c +++ b/vm/jni-interface.c @

[PATCH 10/14] vm: put licence text in reflection.c

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- vm/reflection.c | 26 ++ 1 files changed, 26 insertions(+), 0 deletions(-) diff --git a/vm/reflection.c b/vm/reflection.c index 90e4add..3357f9e 100644 --- a/vm/reflection.c +++ b/vm/reflection.c @@ -1,3 +1,29 @@ +/* + * Copyright (c) 2

[PATCH 13/14] vm: implement NewXXXArray JNI function family

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- vm/jni-interface.c | 37 + 1 files changed, 29 insertions(+), 8 deletions(-) diff --git a/vm/jni-interface.c b/vm/jni-interface.c index 4bef032..d357da6 100644 --- a/vm/jni-interface.c +++ b/vm/jni-interface.c @@ -799,6 +799

[PATCH 11/14] jit: move register allocation to temporary_expr() constructor

2009-08-10 Thread Tomek Grabiec
It protects agains invalid register allocation for temporary. It fixes the bug in convert_array_load() where the high register was always set to NULL. Signed-off-by: Tomek Grabiec --- include/jit/expression.h |2 +- jit/expression.c | 14 ++ jit/object-bc.c

[PATCH 12/14] x86: support for long array element load/store

2009-08-10 Thread Tomek Grabiec
This adds support for laload and lastore for x86. Signed-off-by: Tomek Grabiec --- arch/x86/insn-selector.brg| 24 ++-- regression/jvm/ArrayTest.java |2 +- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/arch/x86/insn-selector.brg b/arch/x86/insn-se

[PATCH 09/14] vm: make native_constructor_construct_native() work with nonempty argument list

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- vm/reflection.c | 14 ++ 1 files changed, 10 insertions(+), 4 deletions(-) diff --git a/vm/reflection.c b/vm/reflection.c index c84eb49..90e4add 100644 --- a/vm/reflection.c +++ b/vm/reflection.c @@ -9,6 +9,9 @@ #include "jit/args.h" #include "ji

[PATCH 08/14] vm: implement java/lang/reflection/Method.invokeNative()

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- include/vm/call.h |4 ++ include/vm/reflection.h |6 +++ vm/call.c | 24 + vm/jato.c |1 + vm/reflection.c | 93 +++ 5 files changed, 121 insertions(

[PATCH 06/14] vm: implement java/lang/reflection/Method.getParameterTypes()

2009-08-10 Thread Tomek Grabiec
This also implements Constructor.getParameterTypes() Signed-off-by: Tomek Grabiec --- include/vm/reflection.h |2 + vm/jato.c |1 + vm/reflection.c | 98 --- 3 files changed, 95 insertions(+), 6 deletions(-) diff --git

[PATCH 05/14] vm: introduce count_java_arguments()

2009-08-10 Thread Tomek Grabiec
Returns the count of java arguments that are passed to method. Signed-off-by: Tomek Grabiec --- include/vm/types.h |1 + jit/invoke-bc.c| 14 ++ vm/types.c | 13 + 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/include/vm/types.h b/inc

[PATCH 07/14] vm: implement VMClass.isInterface()

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- vm/jato.c | 11 +++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/vm/jato.c b/vm/jato.c index 184a702..33f7f90 100644 --- a/vm/jato.c +++ b/vm/jato.c @@ -729,6 +729,16 @@ native_vmclassloader_loadclass(struct vm_object *name, jboolean

[PATCH 04/14] vm: move parse_method_args() to vm/types.c

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- include/jit/args.h |1 - include/vm/types.h |1 + jit/args.c | 54 vm/types.c | 54 4 files changed, 55 insertions(+), 55 deletio

[PATCH 02/14] vm: make parse_method_args() be able to return type name

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- include/jit/args.h |2 +- jit/args.c | 32 +++- jit/trace-jit.c|2 +- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/include/jit/args.h b/include/jit/args.h index b2fdd5a..5728048 100644 --- a/inc

[PATCH 01/14] vm: implement VMClass.getDeclaredMethods()

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- include/vm/preload.h|5 +++ include/vm/reflection.h |3 ++ vm/jato.c |1 + vm/preload.c| 10 +++ vm/reflection.c | 70 +++ 5 files changed, 89 insertions(+), 0 d

[PATCH 03/14] vm: use parse_method_args() in count_arguments()

2009-08-10 Thread Tomek Grabiec
This increases maintainability. After this, method arguments are parsed only by parse_method_args(). Signed-off-by: Tomek Grabiec --- test/jit/invoke-bc-test.c | 20 +++-- vm/types.c| 102 +--- 2 files changed, 27 insertions(+), 95 d

[PATCH] jit: put only J_REFERENCE types in the gc map

2009-08-10 Thread Vegard Nossum
Also print out the stack slot (if known). This code probably still needs some fixing. Signed-off-by: Vegard Nossum --- jit/gc-map.c| 22 -- jit/trace-jit.c | 13 + 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/jit/gc-map.c b/jit/gc-map.c

[PATCH 3/3] jit: add all (in-use) virtual registers to gc map

2009-08-10 Thread Vegard Nossum
Previously, we added only those vregs which were active (had a machine register assigned) at the gc safepoint. Now we add both in-register and in-stack variables to the stack map, and print the machine register in the gc-map tracing. Signed-off-by: Vegard Nossum --- jit/gc-map.c|6 --

[PATCH 1/3] x86: add lir printer for INSN_TEST_IMM_MEMDISP

2009-08-10 Thread Vegard Nossum
Signed-off-by: Vegard Nossum --- arch/x86/lir-printer.c | 19 +++ 1 files changed, 19 insertions(+), 0 deletions(-) diff --git a/arch/x86/lir-printer.c b/arch/x86/lir-printer.c index 61e7645..c69ae36 100644 --- a/arch/x86/lir-printer.c +++ b/arch/x86/lir-printer.c @@ -70,6 +70,

[PATCH 2/3] jit: only add J_REFERENCE types to the gc register/stack map

2009-08-10 Thread Vegard Nossum
Signed-off-by: Vegard Nossum --- jit/gc-map.c |3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/jit/gc-map.c b/jit/gc-map.c index 997c7e6..a341f17 100644 --- a/jit/gc-map.c +++ b/jit/gc-map.c @@ -26,6 +26,9 @@ int gc_map_init(struct compilation_unit *cu)

[PATCH] test: fix 'make test' breakage

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- test/jit/invoke-bc-test.c | 20 +++- 1 files changed, 15 insertions(+), 5 deletions(-) diff --git a/test/jit/invoke-bc-test.c b/test/jit/invoke-bc-test.c index 1d71670..c6d0634 100644 --- a/test/jit/invoke-bc-test.c +++ b/test/jit/invoke-bc-tes

[PATCH 5/5] x86: select gc safepoints before function calls

2009-08-10 Thread Vegard Nossum
Signed-off-by: Vegard Nossum --- arch/x86/insn-selector.brg | 16 1 files changed, 16 insertions(+), 0 deletions(-) diff --git a/arch/x86/insn-selector.brg b/arch/x86/insn-selector.brg index 01b57d7..a8a418e 100644 --- a/arch/x86/insn-selector.brg +++ b/arch/x86/insn-selector.

[PATCH 4/5] x86: fix INSN_TEST_IMM_MEMDISP (introduce OPERAND_MEMDISP)

2009-08-10 Thread Vegard Nossum
Signed-off-by: Vegard Nossum --- arch/x86/emit-code.c|2 +- arch/x86/include/arch/instruction.h |1 + arch/x86/instruction.c | 12 +++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/arch/x86/emit-code.c b/arch/x86/emit-code.c index

[PATCH 1/5] jit: add gc-map creation entry point

2009-08-10 Thread Vegard Nossum
Signed-off-by: Vegard Nossum --- Makefile |1 + include/jit/gc-map.h |8 jit/compiler.c |5 + jit/gc-map.c |7 +++ 4 files changed, 21 insertions(+), 0 deletions(-) create mode 100644 include/jit/gc-map.h create mode 100644 jit/gc-map.c

[PATCH 2/5] jit: preliminary support for creating (somewhat crude) gc register/stack maps

2009-08-10 Thread Vegard Nossum
Signed-off-by: Vegard Nossum --- arch/x86/include/arch/instruction.h |2 + include/jit/compilation-unit.h |5 jit/gc-map.c| 37 +++ 3 files changed, 44 insertions(+), 0 deletions(-) diff --git a/arch/x86/include/arch/ins

[PATCH 3/5] jit: preliminary support for gc map tracing

2009-08-10 Thread Vegard Nossum
Signed-off-by: Vegard Nossum --- include/jit/compiler.h |2 ++ jit/compiler.c |3 +++ jit/trace-jit.c| 41 + vm/jato.c |6 ++ 4 files changed, 52 insertions(+), 0 deletions(-) diff --git a/include/jit/compiler

[PATCH 2/2] vm: move parse_method_args() and vm_method_java_argument_count() to vm/types.c

2009-08-10 Thread Tomek Grabiec
It also renames vm_method_java_argument_count() to count_java_arguments() because it is simmilar to count_arguments() fucntion. This fixes 'make test' breakage introduced in commit: "vm: introduce vm_method_java_argument_count()" Signed-off-by: Tomek Grabiec --- include/jit/args.h |1 - in

[PATCH 1/2] vm: fix bug in get_method_parameter_types()

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- vm/reflection.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/vm/reflection.c b/vm/reflection.c index 66bbc12..bc0dc9c 100644 --- a/vm/reflection.c +++ b/vm/reflection.c @@ -281,7 +281,7 @@ static struct vm_object *get_method_parameter

[PATCH 6/6] vm: implement VMClass.isInterface()

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- vm/jato.c | 11 +++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/vm/jato.c b/vm/jato.c index 6b6bbf6..304cb1a 100644 --- a/vm/jato.c +++ b/vm/jato.c @@ -728,6 +728,16 @@ native_vmclassloader_loadclass(struct vm_object *name, jboolean

[PATCH 5/6] vm: implement java/lang/reflection/Method.getParameterTypes()

2009-08-10 Thread Tomek Grabiec
This also implements Constructor.getParameterTypes() Signed-off-by: Tomek Grabiec --- include/vm/reflection.h |2 + vm/jato.c |1 + vm/reflection.c | 97 --- 3 files changed, 94 insertions(+), 6 deletions(-) diff --git

[PATCH 2/6] vm: introduce vm_method_java_argument_count()

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- include/vm/method.h |2 ++ jit/invoke-bc.c | 14 ++ vm/method.c | 15 +++ 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/include/vm/method.h b/include/vm/method.h index ebb1abe..3a6bac5 100644 --- a/inc

[PATCH 3/6] vm: make parse_method_args() be able to return type name

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- include/jit/args.h |2 +- jit/args.c | 32 +++- jit/trace-jit.c|2 +- vm/method.c|2 +- 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/include/jit/args.h b/include/jit/args.h index b2f

[PATCH 4/6] vm: use parse_method_args() in count_arguments()

2009-08-10 Thread Tomek Grabiec
This increases maintainability. After this, method arguments are parsed only by parse_method_args(). Signed-off-by: Tomek Grabiec --- vm/types.c | 102 +++ 1 files changed, 12 insertions(+), 90 deletions(-) diff --git a/vm/types.c b/vm/ty

[PATCH 1/6] vm: implement VMClass.getDeclaredMethods()

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- include/vm/preload.h|5 +++ include/vm/reflection.h |3 ++ vm/jato.c |1 + vm/preload.c| 10 +++ vm/reflection.c | 70 +++ 5 files changed, 89 insertions(+), 0 d

[PATCH 8/8] vm: add thread synchronization for GC

2009-08-10 Thread Vegard Nossum
Original code by Pekka Enberg. Signed-off-by: Vegard Nossum --- include/vm/gc.h |1 + vm/gc.c | 59 +++ 2 files changed, 60 insertions(+), 0 deletions(-) diff --git a/include/vm/gc.h b/include/vm/gc.h index b833219..05e324c 10064

[PATCH 7/8] vm: count the number of threads for GC

2009-08-10 Thread Vegard Nossum
Signed-off-by: Vegard Nossum --- include/vm/gc.h|4 test/arch-x86/Makefile |1 + test/jit/Makefile |1 + test/vm/gc-stub.c |9 + vm/gc.c| 25 + vm/thread.c|5 + 6 files changed, 45 inserti

[PATCH 4/8] lib: specify initial status of guard-page in constructor

2009-08-10 Thread Vegard Nossum
This patch adds a parameter "bool hidden" to the guard-page constructor, which signals whether the page should be initially hidden or accessible. Needed for GC, which wants an initially unhidden page. Signed-off-by: Vegard Nossum --- include/lib/guard-page.h |4 +++- jit/exception.c

[PATCH 1/8] x86: call use-def table sanity checking arch-specific init code

2009-08-10 Thread Vegard Nossum
Signed-off-by: Vegard Nossum --- arch/x86/init.c |3 +++ vm/jato.c |9 - 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/arch/x86/init.c b/arch/x86/init.c index 5353f70..25b2e1a 100644 --- a/arch/x86/init.c +++ b/arch/x86/init.c @@ -1,6 +1,7 @@ #include #

[PATCH 3/8] Move {vm -> lib}/guard-page.[ch]

2009-08-10 Thread Vegard Nossum
Signed-off-by: Vegard Nossum --- Makefile |2 +- include/lib/guard-page.h |9 + include/vm/guard-page.h |9 - jit/exception.c |2 +- lib/guard-page.c | 90 ++ test/arch-x86/Makefile |2 +-

[PATCH 2/8] vm: allocate a safepoint guard page for the garbage collector

2009-08-10 Thread Vegard Nossum
Signed-off-by: Vegard Nossum --- Makefile| 11 ++- include/vm/gc.h |8 vm/gc.c | 12 vm/jato.c |2 ++ 4 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 include/vm/gc.h create mode 100644 vm/gc.c diff --git a/Mak

[PATCH 5/8] x86: add support for INSN_TEST_IMM_MEMDISP

2009-08-10 Thread Vegard Nossum
Signed-off-by: Vegard Nossum --- arch/x86/emit-code.c| 23 +++ arch/x86/include/arch/instruction.h |2 ++ arch/x86/instruction.c | 10 ++ arch/x86/use-def.c |1 + 4 files changed, 36 insertions(+), 0 deletions(-

[PATCH 6/8] vm: catch gc safepoints in signal handler

2009-08-10 Thread Vegard Nossum
Signed-off-by: Vegard Nossum --- include/vm/gc.h |1 + vm/gc.c |4 vm/signal.c | 21 + 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/include/vm/gc.h b/include/vm/gc.h index 6c39996..82766ca 100644 --- a/include/vm/gc.h +++ b/include

[PATCH 4/4] x86: fix spill/reload instruction for J_DOUBLE

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- arch/x86/include/arch/instruction.h | 21 + 1 files changed, 17 insertions(+), 4 deletions(-) diff --git a/arch/x86/include/arch/instruction.h b/arch/x86/include/arch/instruction.h index 9140484..6a56b35 100644 --- a/arch/x86/include/arch/

[PATCH 3/4] x86: save/restore 64-bit values of XMM registers if CPU supports it

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- arch/x86/emit-code.c| 79 +++ arch/x86/include/arch/stack-frame.h |2 +- test/arch-x86/Makefile |1 + 3 files changed, 63 insertions(+), 19 deletions(-) diff --git a/arch/x86/emit-code.c b/ar

[PATCH 2/4] jit: fix fixup_vtable()

2009-08-10 Thread Tomek Grabiec
We should not fixup the actual object class's vtable, but the vtable of the class in which method was declared. This bug led to invocation of incorrect methods. Signed-off-by: Tomek Grabiec --- arch/x86/emit-code.c | 37 - include/jit/vtable.h |3 +++ j

[PATCH 1/4] vm: remove code redundancy in setup_vtable()

2009-08-10 Thread Tomek Grabiec
Signed-off-by: Tomek Grabiec --- vm/class.c | 22 ++ 1 files changed, 2 insertions(+), 20 deletions(-) diff --git a/vm/class.c b/vm/class.c index 15084af..757d242 100644 --- a/vm/class.c +++ b/vm/class.c @@ -101,30 +101,12 @@ setup_vtable(struct vm_class *vmc)