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