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 <tgrab...@gmail.com>
---
 include/jit/args.h  |    1 -
 include/vm/method.h |    2 -
 include/vm/types.h  |    2 +
 jit/args.c          |   54 -----------------------------------------
 jit/invoke-bc.c     |    2 +-
 vm/method.c         |   15 -----------
 vm/reflection.c     |    3 +-
 vm/types.c          |   67 +++++++++++++++++++++++++++++++++++++++++++++++++++
 8 files changed, 72 insertions(+), 74 deletions(-)

diff --git a/include/jit/args.h b/include/jit/args.h
index 5728048..8e9bceb 100644
--- a/include/jit/args.h
+++ b/include/jit/args.h
@@ -17,7 +17,6 @@ struct expression *convert_args(struct stack *mimic_stack,
                                struct vm_method *method);
 struct expression *convert_native_args(struct stack *mimic_stack,
                                       unsigned long nr_args);
-const char *parse_method_args(const char *type_str, enum vm_type *vmtype, char 
**name_p);
 
 #ifndef CONFIG_ARGS_MAP
 static inline int args_map_init(struct vm_method *method)
diff --git a/include/vm/method.h b/include/vm/method.h
index 3a6bac5..ebb1abe 100644
--- a/include/vm/method.h
+++ b/include/vm/method.h
@@ -52,8 +52,6 @@ struct vm_method {
 int vm_method_init(struct vm_method *vmm,
        struct vm_class *vmc, unsigned int method_index);
 
-unsigned int vm_method_java_argument_count(struct vm_method *vmm);
-
 static inline bool vm_method_is_public(struct vm_method *vmm)
 {
        return vmm->method->access_flags & CAFEBABE_METHOD_ACC_PUBLIC;
diff --git a/include/vm/types.h b/include/vm/types.h
index e7b3c42..d45916a 100644
--- a/include/vm/types.h
+++ b/include/vm/types.h
@@ -42,6 +42,8 @@ enum vm_type bytecode_type_to_vmtype(int);
 int vmtype_to_bytecode_type(enum vm_type);
 int get_vmtype_size(enum vm_type);
 const char *get_vm_type_name(enum vm_type);
+const char *parse_method_args(const char *, enum vm_type *, char **);
+unsigned int count_java_arguments(const char *);
 
 static inline bool vm_type_is_float(enum vm_type type)
 {
diff --git a/jit/args.c b/jit/args.c
index deed9c0..f054c5c 100644
--- a/jit/args.c
+++ b/jit/args.c
@@ -146,57 +146,3 @@ convert_native_args(struct stack *mimic_stack, unsigned 
long nr_args)
   out:
        return args_list;
 }
-
-const char *parse_method_args(const char *type_str, enum vm_type *vmtype,
-                             char **name_p)
-{
-       const char *type_name_start;
-
-       if (*type_str == '(')
-               type_str++;
-
-       type_name_start = type_str;
-
-       if (name_p)
-               *name_p = NULL;
-
-       if (*type_str == ')')
-               return NULL;
-
-       if (*type_str == '[') {
-               *vmtype = J_REFERENCE;
-               type_str++;
-
-               if (*type_str != 'L') {
-                       type_str++;
-                       goto out;
-               }
-       }
-
-       if (*type_str == 'L') {
-               ++type_name_start;
-               ++type_str;
-               while (*(type_str++) != ';')
-                       ;
-               *vmtype = J_REFERENCE;
-       } else {
-               char primitive_name[2];
-
-               primitive_name[0] = *(type_str++);
-               primitive_name[1] = 0;
-
-               *vmtype = str_to_type(primitive_name);
-       }
-
- out:
-       if (name_p) {
-               size_t size = (size_t) type_str - (size_t) type_name_start;
-
-               if (*vmtype == J_REFERENCE)
-                       size--;
-
-               *name_p = strndup(type_name_start, size);
-       }
-
-       return type_str;
-}
diff --git a/jit/invoke-bc.c b/jit/invoke-bc.c
index 0113378..947f522 100644
--- a/jit/invoke-bc.c
+++ b/jit/invoke-bc.c
@@ -54,7 +54,7 @@ static unsigned int method_real_argument_count(struct 
vm_method *invoke_target)
 {
        int argc;
 
-       argc = vm_method_java_argument_count(invoke_target);
+       argc = count_java_arguments(invoke_target->type);
 
        if (!vm_method_is_static(invoke_target))
                argc++;
diff --git a/vm/method.c b/vm/method.c
index 566aee9..095c1de 100644
--- a/vm/method.c
+++ b/vm/method.c
@@ -174,18 +174,3 @@ int vm_method_prepare_jit(struct vm_method *vmm)
 
        return 0;
 }
-
-unsigned int vm_method_java_argument_count(struct vm_method *vmm)
-{
-       unsigned int count;
-       enum vm_type type;
-       const char *a;
-
-       count = 0;
-       a = vmm->type;
-
-       while ((a = parse_method_args(a, &type, NULL)))
-               count ++;
-
-       return count;
-}
diff --git a/vm/reflection.c b/vm/reflection.c
index bc0dc9c..be9a97f 100644
--- a/vm/reflection.c
+++ b/vm/reflection.c
@@ -4,6 +4,7 @@
 #include "vm/die.h"
 #include "vm/preload.h"
 #include "vm/reflection.h"
+#include "vm/types.h"
 
 #include "jit/args.h"
 #include "jit/exception.h"
@@ -259,7 +260,7 @@ static struct vm_object *get_method_parameter_types(struct 
vm_method *vmm)
        char *type_name;
        int i;
 
-       count = vm_method_java_argument_count(vmm);
+       count = count_java_arguments(vmm->type);
        array = vm_object_alloc_array(vm_array_of_java_lang_Class, count);
        if (!array) {
                NOT_IMPLEMENTED;
diff --git a/vm/types.c b/vm/types.c
index 27f5c3c..644790c 100644
--- a/vm/types.c
+++ b/vm/types.c
@@ -160,3 +160,70 @@ const char *get_vm_type_name(enum vm_type type) {
 
        return vm_type_names[type];
 }
+
+const char *parse_method_args(const char *type_str, enum vm_type *vmtype,
+                             char **name_p)
+{
+       const char *type_name_start;
+
+       if (*type_str == '(')
+               type_str++;
+
+       type_name_start = type_str;
+
+       if (name_p)
+               *name_p = NULL;
+
+       if (*type_str == ')')
+               return NULL;
+
+       if (*type_str == '[') {
+               *vmtype = J_REFERENCE;
+               type_str++;
+
+               if (*type_str != 'L') {
+                       type_str++;
+                       goto out;
+               }
+       }
+
+       if (*type_str == 'L') {
+               ++type_name_start;
+               ++type_str;
+               while (*(type_str++) != ';')
+                       ;
+               *vmtype = J_REFERENCE;
+       } else {
+               char primitive_name[2];
+
+               primitive_name[0] = *(type_str++);
+               primitive_name[1] = 0;
+
+               *vmtype = str_to_type(primitive_name);
+       }
+
+ out:
+       if (name_p) {
+               size_t size = (size_t) type_str - (size_t) type_name_start;
+
+               if (*vmtype == J_REFERENCE)
+                       size--;
+
+               *name_p = strndup(type_name_start, size);
+       }
+
+       return type_str;
+}
+
+unsigned int count_java_arguments(const char *type)
+{
+       unsigned int count;
+       enum vm_type vmtype;
+
+       count = 0;
+
+       while ((type = parse_method_args(type, &vmtype, NULL)))
+               count ++;
+
+       return count;
+}
-- 
1.6.0.6


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel

Reply via email to