X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fcacaoh%2Fdummy.c;h=16e9b3a825d106e9eb53119578571703c80ccf06;hb=91fc25d196327ad44830be3ab51231e9f358a6ac;hp=b3afe2a3a78348d10da5f4d1c27176c3fffffad8;hpb=5173a47af097bdc04c553cb1ee0ab58daef5d7b3;p=cacao.git diff --git a/src/cacaoh/dummy.c b/src/cacaoh/dummy.c index b3afe2a3a..16e9b3a82 100644 --- a/src/cacaoh/dummy.c +++ b/src/cacaoh/dummy.c @@ -22,8 +22,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - $Id: dummy.c 8102 2007-06-19 18:09:16Z twisti $ - */ @@ -31,16 +29,18 @@ #include #include +#include #include #include -#include "threads/threads-common.h" +#include "mm/memory.h" -#include "toolbox/logging.h" +#include "native/llni.h" -#include "vm/types.h" +#include "toolbox/logging.h" #include "vm/global.h" +#include "vm/primitive.h" #include "vm/vm.h" #include "vmcore/class.h" @@ -55,7 +55,7 @@ char *_Jv_bootclasspath; -java_objectheader *javastring_new_slash_to_dot(utf *u) +java_handle_t *javastring_new_slash_to_dot(utf *u) { vm_abort("javastring_new_slash_to_dot"); @@ -71,7 +71,7 @@ bool access_is_accessible_class(classinfo *referer, classinfo *cls) } bool access_is_accessible_member(classinfo *referer, classinfo *declarer, - s4 memberflags) + int32_t memberflags) { vm_abort("access_is_accessible_member"); @@ -79,6 +79,60 @@ bool access_is_accessible_member(classinfo *referer, classinfo *declarer, } +/* array **********************************************************************/ + +java_handle_t *array_objectarray_element_get(java_handle_objectarray_t *a, int32_t index) +{ + java_handle_t *value; + int32_t size; + + if (a == NULL) { + log_println("array_objectarray_element_get(a=%p, index=%d): NullPointerException", a, index); + return NULL; + } + + size = LLNI_array_size(a); + + if ((index < 0) || (index > size)) { + log_println("array_objectarray_element_get(a=%p, index=%d): ArrayIndexOutOfBoundsException", a, index); + return NULL; + } + + LLNI_objectarray_element_get(a, index, value); + + return value; +} + +void array_objectarray_element_set(java_handle_objectarray_t *a, int32_t index, java_handle_t *value) +{ + int32_t size; + + if (a == NULL) { + log_println("array_objectarray_element_set(a=%p, index=%d): NullPointerException", a, index); + return; + } + + size = LLNI_array_size(a); + + if ((index < 0) || (index > size)) { + log_println("array_objectarray_element_set(a=%p, index=%d): ArrayIndexOutOfBoundsException", a, index); + return; + } + + LLNI_objectarray_element_set(a, index, value); +} + +int32_t array_length_get(java_handle_t *a) +{ + if (a == NULL) { + log_println("array_length_get(a=%p): NullPointerException", a); + return 0; + } + + return LLNI_array_size(a); +} + + /* asm ************************************************************************/ void asm_abstractmethoderror(void) @@ -104,32 +158,53 @@ void intrp_asm_getclassvalues_atomic(vftbl_t *super, vftbl_t *sub, castinfo *out /* builtin ********************************************************************/ -java_objectheader *builtin_clone(void *env, java_objectheader *o) +java_handle_t *builtin_clone(void *env, java_handle_t *o) { abort(); return NULL; } -s4 builtin_isanysubclass(classinfo *sub, classinfo *super) +int32_t builtin_isanysubclass(classinfo *sub, classinfo *super) { abort(); return 0; } -java_objectheader *builtin_new(classinfo *c) +java_handle_t *builtin_new(classinfo *c) { abort(); return NULL; } -java_objectarray *builtin_anewarray(s4 size, classinfo *componentclass) +java_handle_objectarray_t *builtin_anewarray(int32_t size, classinfo *componentclass) { - abort(); + java_objectarray_t *oa = (java_objectarray_t*) mem_alloc( + sizeof(java_array_t) + size * sizeof(java_object_t*)); + java_handle_objectarray_t *h = (java_handle_objectarray_t*) LLNI_WRAP( + (java_object_t*) oa); - return NULL; + if (h != NULL) { + LLNI_array_size(h) = size; + } + + return h; +} + +java_handle_bytearray_t *builtin_newarray_byte(int32_t size) +{ + java_bytearray_t *ba = (java_bytearray_t*) mem_alloc( + sizeof(java_array_t) + size * sizeof(int8_t)); + java_handle_bytearray_t *h = (java_handle_bytearray_t*) LLNI_WRAP( + (java_object_t*) ba); + + if (h != NULL) { + LLNI_array_size(h) = size; + } + + return h; } @@ -360,22 +435,27 @@ void finalizer_run(void *o, void *p) /* gc *************************************************************************/ -s8 gc_get_heap_size(void) +void gc_reference_register(java_object_t **ref, int32_t reftype) +{ + vm_abort("gc_reference_register"); +} + +int64_t gc_get_heap_size(void) { return 0; } -s8 gc_get_free_bytes(void) +int64_t gc_get_free_bytes(void) { return 0; } -s8 gc_get_total_bytes(void) +int64_t gc_get_total_bytes(void) { return 0; } -s8 gc_get_max_heap_size(void) +int64_t gc_get_max_heap_size(void) { return 0; } @@ -383,11 +463,16 @@ s8 gc_get_max_heap_size(void) /* heap ***********************************************************************/ -void *heap_alloc_uncollectable(u4 bytelength) +void *heap_alloc_uncollectable(uint32_t bytelength) { return calloc(bytelength, 1); } +s4 heap_get_hashcode(java_object_t *o) +{ + return 0; +} + /* jit ************************************************************************/ @@ -397,18 +482,47 @@ void jit_invalidate_code(methodinfo *m) } +/* llni ***********************************************************************/ + +void llni_critical_start() +{ + vm_abort("llni_critical_start"); +} + +void llni_critical_end() +{ + vm_abort("llni_critical_end"); +} + + +/* localref *******************************************************************/ + +java_handle_t *localref_add(java_object_t *o) +{ +#if defined(ENABLE_HANDLES) + java_handle_t *h = (java_handle_t*) mem_alloc(sizeof(java_handle_t)); + + h->heap_object = o; + + return h; +#else + return (java_handle_t*) o; +#endif +} + + /* lock ***********************************************************************/ -void lock_init_object_lock(java_objectheader *o) +void lock_init_object_lock(java_object_t *o) { } -bool lock_monitor_enter(java_objectheader *o) +bool lock_monitor_enter(java_object_t *o) { return true; } -bool lock_monitor_exit(java_objectheader *o) +bool lock_monitor_exit(java_object_t *o) { return true; } @@ -420,43 +534,71 @@ void md_param_alloc(methoddesc *md) { } +void md_param_alloc_native(methoddesc *md) +{ +} + /* memory *********************************************************************/ -void *mem_alloc(s4 size) +void *mem_alloc(int32_t size) { /* real implementation in src/mm/memory.c clears memory */ return calloc(size, 1); } -void *mem_realloc(void *src, s4 len1, s4 len2) +void *mem_realloc(void *src, int32_t len1, int32_t len2) { return realloc(src, len2); } -void mem_free(void *m, s4 size) +void mem_free(void *m, int32_t size) { free(m); } -void *dump_alloc(s4 size) +void *dump_alloc(int32_t size) { return malloc(size); } -void dump_release(s4 size) +void dump_release(int32_t size) { } -s4 dump_size(void) +int32_t dump_size(void) { return 0; } +/* primitive ******************************************************************/ + +classinfo *primitive_arrayclass_get_by_type(int type) +{ + return NULL; +} + +classinfo *primitive_class_get_by_type(int type) +{ + abort(); + return NULL; +} + +classinfo *primitive_class_get_by_char(char ch) +{ + abort(); + return NULL; +} + + /* properties *****************************************************************/ +void properties_add(char *key, char *value) +{ +} + char *properties_get(char *key) { return NULL; @@ -564,7 +706,7 @@ classinfo * resolve_classref_or_classinfo_eager(classref_or_classinfo cls, /* stacktrace *****************************************************************/ -java_objectarray *stacktrace_getClassContext() +java_handle_objectarray_t *stacktrace_getClassContext() { return NULL; } @@ -572,11 +714,7 @@ java_objectarray *stacktrace_getClassContext() /* threads ********************************************************************/ -#if defined(ENABLE_THREADS) -pthread_key_t threads_current_threadobject_key; -#endif - -ptrint threads_get_current_tid(void) +intptr_t threads_get_current_tid(void) { return 0; } @@ -592,6 +730,10 @@ void threads_cast_startworld(void) /* vm *************************************************************************/ +void vm_printconfig(void) +{ +} + void vm_abort(const char *text, ...) { va_list ap; @@ -607,7 +749,7 @@ void vm_abort(const char *text, ...) abort(); } -java_objectheader *vm_call_method(methodinfo *m, java_objectheader *o, ...) +java_handle_t *vm_call_method(methodinfo *m, java_handle_t *o, ...) { return NULL; } @@ -620,7 +762,7 @@ void stringtable_update(void) log_println("stringtable_update: REMOVE ME!"); } -java_objectheader *literalstring_new(utf *u) +java_object_t *literalstring_new(utf *u) { log_println("literalstring_new: REMOVE ME!");