}
-/* jni_version_check ************************************************************
+/* jni_version_check ***********************************************************
Check if the given JNI version is supported.
true.......supported
false......not supported
-********************************************************************************/
+*******************************************************************************/
bool jni_version_check(int version)
{
jint _Jv_JNI_GetEnv(JavaVM *vm, void **env, jint version)
{
- STATISTICS(jniinvokation());
+ TRACEJNICALLS("_Jv_JNI_GetEnv(vm=%p, env=%p, %d=version)", vm, env, version);
#if defined(ENABLE_THREADS)
if (threads_get_current_threadobject() == NULL) {
}
#endif
- /* check the JNI version */
+ /* Check the JNI version. */
- switch (version) {
- case JNI_VERSION_1_1:
- case JNI_VERSION_1_2:
- case JNI_VERSION_1_4:
+ if (jni_version_check(version) == true) {
*env = _Jv_env;
return JNI_OK;
-
- default:
- ;
}
#if defined(ENABLE_JVMTI)
stwu sp,-40*4(sp) /* keep stack 16-byte aligned */
stw s0,8*4(sp) /* save used callee saved registers */
- stw a0,9*4(sp) /* save method PV */
#if defined(__DARWIN__)
stw itmp1,10*4(sp) /* register r11 is callee saved */
SAVE_TEMPORARY_REGISTERS(18) /* the offset has to be even */
#endif
+ mr pv,a0 /* move PV into PV register */
+ mtctr pv /* move PV into branch register */
+
mr t0,a1 /* address of data structure */
mr t1,a2 /* stack argument count */
bgt L_asm_vm_call_method_stack_copy_loop
L_asm_vm_call_method_stack_copy_done:
- addi mptr,s0,9*4 /* get address of PV */
- lwz pv,0*4(mptr) /* load PV */
- mtctr pv
bctrl
1:
mflr itmp1
.long dyld_stub_binding_helper
-.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
- .align 2
-L_stacktrace_create_extern_stackframeinfo$stub:
- .indirect_symbol _stacktrace_create_extern_stackframeinfo
- mflr r0
- bcl 20,31,L00$_stacktrace_create_extern_stackframeinfo
-L00$_stacktrace_create_extern_stackframeinfo:
- mflr r11
- addis r11,r11,ha16(L_stacktrace_create_extern_stackframeinfo$lazy_ptr - L00$_stacktrace_create_extern_stackframeinfo)
- mtlr r0
- lwzu r12,lo16(L_stacktrace_create_extern_stackframeinfo$lazy_ptr - L00$_stacktrace_create_extern_stackframeinfo)(r11)
- mtctr r12
- bctr
-.data
-.lazy_symbol_pointer
-L_stacktrace_create_extern_stackframeinfo$lazy_ptr:
- .indirect_symbol _stacktrace_create_extern_stackframeinfo
- .long dyld_stub_binding_helper
-
-
.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
.align 2
L_jit_asm_compile$stub:
.long dyld_stub_binding_helper
-.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
- .align 2
-L_stacktrace_remove_stackframeinfo$stub:
- .indirect_symbol _stacktrace_remove_stackframeinfo
- mflr r0
- bcl 20,31,L00$_stacktrace_remove_stackframeinfo
-L00$_stacktrace_remove_stackframeinfo:
- mflr r11
- addis r11,r11,ha16(L_stacktrace_remove_stackframeinfo$lazy_ptr - L00$_stacktrace_remove_stackframeinfo)
- mtlr r0
- lwzu r12,lo16(L_stacktrace_remove_stackframeinfo$lazy_ptr - L00$_stacktrace_remove_stackframeinfo)(r11)
- mtctr r12
- bctr
-.data
-.lazy_symbol_pointer
-L_stacktrace_remove_stackframeinfo$lazy_ptr:
- .indirect_symbol _stacktrace_remove_stackframeinfo
- .long dyld_stub_binding_helper
-
-
.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
.align 2
L_exceptions_get_and_clear_exception$stub:
.indirect_symbol _exceptions_asm_new_abstractmethoderror
.long dyld_stub_binding_helper
-
-# if defined(ENABLE_REPLACEMENT)
-
-.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
- .align 2
-L_replace_me$stub:
- .indirect_symbol _replace_me
- mflr r0
- bcl 20,31,L00$_replace_me
-L00$_replace_me:
- mflr r11
- addis r11,r11,ha16(L_replace_me$lazy_ptr - L00$_replace_me)
- mtlr r0
- lwzu r12,lo16(L_replace_me$lazy_ptr - L00$_replace_me)(r11)
- mtctr r12
- bctr
-.data
-.lazy_symbol_pointer
-L_replace_me$lazy_ptr:
- .indirect_symbol _replace_me
- .long dyld_stub_binding_helper
-
-
-.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
- .align 2
-L_replace_build_execution_state$stub:
- .indirect_symbol _replace_build_execution_state
- mflr r0
- bcl 20,31,L00$_replace_build_execution_state
-L00$_replace_build_execution_state:
- mflr r11
- addis r11,r11,ha16(L_replace_build_execution_state$lazy_ptr - L00$_replace_build_execution_state)
- mtlr r0
- lwzu r12,lo16(L_replace_build_execution_state$lazy_ptr - L00$_replace_build_execution_state)(r11)
- mtctr r12
- bctr
-.data
-.lazy_symbol_pointer
-L_replace_build_execution_state$lazy_ptr:
- .indirect_symbol _replace_build_execution_state
- .long dyld_stub_binding_helper
-
-
-.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
- .align 2
-L_replace_free_safestack$stub:
- .indirect_symbol _replace_free_safestack
- mflr r0
- bcl 20,31,L00$_replace_free_safestack
-L00$_replace_free_safestack:
- mflr r11
- addis r11,r11,ha16(L_replace_free_safestack$lazy_ptr - L00$_replace_free_safestack)
- mtlr r0
- lwzu r12,lo16(L_replace_free_safestack$lazy_ptr - L00$_replace_free_safestack)(r11)
- mtctr r12
- bctr
-.data
-.lazy_symbol_pointer
-L_replace_free_safestack$lazy_ptr:
- .indirect_symbol _replace_free_safestack
- .long dyld_stub_binding_helper
-
-# endif /* ENABLE_REPLACEMENT */
-
#endif /* defined(__DARWIN__) */
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Contact: cacao@cacaojvm.org
-
- Authors: Christian Thalinger
-
- Changes:
-
*/
#define asm_vm_call_method_exception_handler _asm_vm_call_method_exception_handler
-#define jumptable_int _jumptable_int
-#define jumptable_long _jumptable_long
-
#define asm_call_jit_compiler _asm_call_jit_compiler
#define asm_handle_nat_exception _asm_handle_nat_exception
#define asm_abstractmethoderror _asm_abstractmethoderror
-#define asm_patcher_wrapper _asm_patcher_wrapper
-
#define asm_cacheflush _asm_cacheflush
#define exceptions_asm_new_abstractmethoderror \
L_exceptions_asm_new_abstractmethoderror$stub
-#define patcher_wrapper L_patcher_wrapper$stub
-
-#define replace_me L_replace_me$stub
-#define replace_build_execution_state L_replace_build_execution_state$stub
-#define replace_free_safestack L_replace_free_safestack$stub
-
-#define stacktrace_create_extern_stackframeinfo \
- L_stacktrace_create_extern_stackframeinfo$stub
-
-#define stacktrace_remove_stackframeinfo \
- L_stacktrace_remove_stackframeinfo$stub
-
#endif /* _MD_ASM_H */