Signed-off-by: Tomek Grabiec <tgrab...@gmail.com>
---
 include/vm/preload.h |    2 ++
 vm/preload.c         |   14 ++++++++++++++
 vm/reflection.c      |    7 ++++++-
 3 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/include/vm/preload.h b/include/vm/preload.h
index c71d8f9..a99fa89 100644
--- a/include/vm/preload.h
+++ b/include/vm/preload.h
@@ -112,6 +112,8 @@ 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;
 extern struct vm_method *vm_java_lang_Number_floatValue;
+extern struct vm_method *vm_java_lang_Number_longValue;
+extern struct vm_method *vm_java_lang_Number_doubleValue;
 
 int preload_vm_classes(void);
 
diff --git a/vm/preload.c b/vm/preload.c
index b2804da..23516af 100644
--- a/vm/preload.c
+++ b/vm/preload.c
@@ -259,6 +259,8 @@ struct vm_method 
*vm_java_lang_ClassLoader_getSystemClassLoader;
 struct vm_method *vm_java_lang_VMString_intern;
 struct vm_method *vm_java_lang_Number_intValue;
 struct vm_method *vm_java_lang_Number_floatValue;
+struct vm_method *vm_java_lang_Number_longValue;
+struct vm_method *vm_java_lang_Number_doubleValue;
 
 static const struct method_preload_entry method_preload_entries[] = {
        {
@@ -429,6 +431,18 @@ static const struct method_preload_entry 
method_preload_entries[] = {
                "()F",
                &vm_java_lang_Number_floatValue,
        },
+       {
+               &vm_java_lang_Number,
+               "longValue",
+               "()J",
+               &vm_java_lang_Number_longValue,
+       },
+       {
+               &vm_java_lang_Number,
+               "doubleValue",
+               "()D",
+               &vm_java_lang_Number_doubleValue,
+       },
 };
 
 /*
diff --git a/vm/reflection.c b/vm/reflection.c
index 790dce8..e5dea46 100644
--- a/vm/reflection.c
+++ b/vm/reflection.c
@@ -655,8 +655,13 @@ static int unwrap(void *field_ptr, enum vm_type type,
                *(jfloat *) field_ptr = result.f;
                return 0;
        case J_LONG:
+               vm_call_method_this_a(vm_java_lang_Number_longValue, value, 
args, &result);
+               *(jlong *) field_ptr = result.j;
+               return 0;
        case J_DOUBLE:
-               error("not implemented");
+               vm_call_method_this_a(vm_java_lang_Number_doubleValue, value, 
args, &result);
+               *(jdouble *) field_ptr = result.d;
+               return 0;
        case J_VOID:
        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

Reply via email to