diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:45 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:45 -0800 |
commit | d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /core/jni/BindTest.cpp | |
parent | 076357b8567458d4b6dfdcf839ef751634cd2bfb (diff) | |
download | frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.zip frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.gz frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'core/jni/BindTest.cpp')
-rw-r--r-- | core/jni/BindTest.cpp | 289 |
1 files changed, 0 insertions, 289 deletions
diff --git a/core/jni/BindTest.cpp b/core/jni/BindTest.cpp deleted file mode 100644 index 5fae400..0000000 --- a/core/jni/BindTest.cpp +++ /dev/null @@ -1,289 +0,0 @@ -/* //device/libs/android_runtime/BindTest.cpp -** -** Copyright 2006, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ - -#include <stdio.h> -#include <stdlib.h> -#include <jam-public.h> - -static u4 offset_instanceString; -static FieldBlock *fb_classString = NULL; -static Class *class_ReturnedObject = NULL; -static MethodBlock *mb_ReturnedObject_setReturnedString = NULL; -static MethodBlock *mb_Java_Lang_Object_Equals = NULL; - -static u4 offset_mObj; -static u4 offset_mBool; -static u4 offset_mInt; -static u4 offset_mString; -static u4 offset_mDouble; -static u4 offset_mLong; - - -/* native String getString(); */ -static uintptr_t * -getString(Class *clazz, MethodBlock *mb, uintptr_t *ostack) -{ - RETURN_OBJ (createString ("String")); -} - -/* native String getNullString(); */ -static uintptr_t * -getNullString(Class *clazz, MethodBlock *mb, uintptr_t *ostack) -{ - RETURN_OBJ (createString (NULL)); -} - -/* native String getBooleanTrue(); */ -static uintptr_t * -getBooleanTrue(Class *clazz, MethodBlock *mb, uintptr_t *ostack) -{ - RETURN_BOOLEAN (TRUE); -} - -/* native String getBooleanFalse(); */ -static uintptr_t * -getBooleanFalse(Class *clazz, MethodBlock *mb, uintptr_t *ostack) -{ - RETURN_BOOLEAN (FALSE); -} - -/* native Object nonvoidThrowsException() */ -static uintptr_t * -nonvoidThrowsException (Class *clazz, MethodBlock *mb, uintptr_t *ostack) -{ - if (1) { - signalException("java/lang/NullPointerException", NULL); - goto exception; - } - - RETURN_OBJ (NULL); -exception: - RETURN_VOID; -} - -/* native void setInstanceString(String s); */ -static uintptr_t * -setInstanceString (Class *clazz, MethodBlock *mb, uintptr_t *ostack) -{ - Object *jthis = (Object *) ostack[0]; - - JOBJ_set_obj(jthis, offset_instanceString, ostack[1]); - - RETURN_VOID; -} - -/* native void setClassString(String s) */ -static uintptr_t * -setClassString (Class *clazz, MethodBlock *mb, uintptr_t *ostack) -{ -// Object *jthis = (Object *) ostack[0]; - - fb_classString->static_value = ostack[1]; - - RETURN_VOID; -} - -/* native String makeStringFromThreeChars(char a, char b, char c); */ -static uintptr_t * -makeStringFromThreeChars (Class *clazz, MethodBlock *mb, uintptr_t *ostack) -{ - // Object *jthis = ostack[0]; - char a = (char) ostack[1]; - char b = (char) ostack[2]; - char c = (char) ostack[3]; - - char str[4]; - - str[0] = a; - str[1] = b; - str[2] = c; - str[3] = 0; - - RETURN_OBJ(createString(str)); -} - -/* native ReturnedObject makeReturnedObject(String a); */ -static uintptr_t * -makeReturnedObject (Class *clazz, MethodBlock *mb, uintptr_t *ostack) -{ - //Object *jthis = (Object*)ostack[0]; - Object *a = (Object*)ostack[1]; - - Object *ret; - - ret = allocObject(class_ReturnedObject); - - executeMethod(ret, mb_ReturnedObject_setReturnedString, a); - - RETURN_OBJ (ret); -} - -/* native double addDoubles(double a, double b); */ -static uintptr_t * -addDoubles (Class *clazz, MethodBlock *mb, uintptr_t *ostack) -{ - //Object *jthis = (Object*)ostack[0]; - double a = JARG_get_double(1); - double b = JARG_get_double(3); - - RETURN_DOUBLE(a+b); -} - -/* native void setAll (Object obj, boolean bool, int i, String str, double d, long l) */ -static uintptr_t * -setAll (Class *clazz, MethodBlock *mb, uintptr_t *ostack) -{ - Object *jthis = JARG_get_obj(0); - - Object *obj = JARG_get_obj(1); - bool b = JARG_get_bool(2); - int i = JARG_get_int(3); - char *str = JARG_get_cstr_strdup(4); - double d = JARG_get_double(5); - long long ll = JARG_get_long_long(5+2); - - JOBJ_set_obj(jthis, offset_mObj, obj); - JOBJ_set_bool(jthis, offset_mBool, b); - JOBJ_set_int(jthis, offset_mInt, i); - JOBJ_set_cstr(jthis, offset_mString, str); - free(str); - str = NULL; - JOBJ_set_double(jthis, offset_mDouble, d); - JOBJ_set_long_long(jthis, offset_mLong, ll); - - RETURN_VOID; -} - -/* native void compareAll (Object obj, boolean bool, int i, String str, double d, long l) */ -static uintptr_t * -compareAll (Class *clazz, MethodBlock *mb, uintptr_t *ostack) -{ - Object *jthis = JARG_get_obj(0); - - Object *obj = JARG_get_obj(1); - bool b = JARG_get_bool(2); - int i = JARG_get_int(3); - Object *strObj = JARG_get_obj(4); - double d = JARG_get_double(5); - long long ll = JARG_get_long_long(5+2); - - bool ret; - - void *result; - - Object *mStringObj = JOBJ_get_obj(jthis, offset_mString); - - char *s = JARG_get_cstr_strdup(4); - - result = executeMethod (strObj, lookupVirtualMethod(strObj,mb_Java_Lang_Object_Equals), - JOBJ_get_obj(jthis, offset_mString)); - - if (exceptionOccurred()) { - RETURN_VOID; - } - - ret = (*(uintptr_t *)result != 0) - && (obj == JOBJ_get_obj(jthis, offset_mObj)) - && (b == JOBJ_get_bool(jthis, offset_mBool)) - && (i == JOBJ_get_int(jthis, offset_mInt)) - && (d == JOBJ_get_double(jthis, offset_mDouble)) - && (ll == JOBJ_get_long_long(jthis, offset_mLong)); - - - RETURN_BOOLEAN(ret); -} - -static VMMethod methods[] = { - {"getString", getString}, - {"getNullString", getNullString}, - {"getBooleanTrue", getBooleanTrue}, - {"getBooleanFalse", getBooleanFalse}, - {"nonvoidThrowsException", nonvoidThrowsException}, - {"setInstanceString", setInstanceString}, - {"setClassString", setClassString}, - {"makeStringFromThreeChars", makeStringFromThreeChars}, - {"makeReturnedObject", makeReturnedObject}, - {"addDoubles", addDoubles}, - {"setAll", setAll}, - {"compareAll", compareAll}, - {NULL, NULL} -}; - - -void register_BindTest() -{ - jamvm_registerClass("BindTest", methods); - - Class *clazz = NULL; - - clazz = findClassFromClassLoader("BindTest", getSystemClassLoader()); - - if (clazz == NULL) { - fprintf(stderr, "Error: BindTest not found\n"); - clearException(); - return; - } - - FieldBlock *fb; - - fb = findField(clazz, "instanceString", "Ljava/lang/String;"); - - if (fb == NULL || ((fb->access_flags & ACC_STATIC) == ACC_STATIC)) { - fprintf(stderr, "Error: BindTest.instanceString not found or error\n"); - return; - } - - offset_instanceString = fb->offset; - - fb_classString = findField(clazz, "classString", "Ljava/lang/String;"); - - if (fb_classString == NULL || ((fb_classString->access_flags & ACC_STATIC) != ACC_STATIC)) { - fprintf(stderr, "Error: BindTest.classString not found or error\n"); - return; - } - - - class_ReturnedObject = findClassFromClassLoader("ReturnedObject", getSystemClassLoader()); - - if (class_ReturnedObject == NULL) { - fprintf(stderr, "Error: ReturnedObject class not found or error\n"); - return; - } - - mb_ReturnedObject_setReturnedString= - findMethod (class_ReturnedObject, "setReturnedString", "(Ljava/lang/String;)V"); - - if (mb_ReturnedObject_setReturnedString == NULL) { - fprintf(stderr, "Error: ReturnedObject.setReturnedString class not found or error\n"); - return; - } - - offset_mObj = findField(clazz, "mObj", "Ljava/lang/Object;")->offset; - offset_mBool = findField(clazz, "mBool", "Z" )->offset; - offset_mInt = findField(clazz, "mInt", "I")->offset; - offset_mString = findField(clazz, "mString", "Ljava/lang/String;")->offset; - offset_mDouble = findField(clazz, "mDouble", "D")->offset; - offset_mLong = findField(clazz, "mLong", "J")->offset; - - - mb_Java_Lang_Object_Equals = findMethod ( - findClassFromClassLoader("java/lang/Object", getSystemClassLoader()), - "equals", "(Ljava/lang/Object;)Z"); - -} - - |