19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* //device/libs/android_runtime/BindTest.cpp 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Copyright 2006, The Android Open Source Project 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License"); 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** you may not use this file except in compliance with the License. 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** You may obtain a copy of the License at 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** http://www.apache.org/licenses/LICENSE-2.0 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Unless required by applicable law or agreed to in writing, software 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS, 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** See the License for the specific language governing permissions and 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** limitations under the License. 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project*/ 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <stdio.h> 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <stdlib.h> 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <jam-public.h> 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic u4 offset_instanceString; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic FieldBlock *fb_classString = NULL; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic Class *class_ReturnedObject = NULL; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic MethodBlock *mb_ReturnedObject_setReturnedString = NULL; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic MethodBlock *mb_Java_Lang_Object_Equals = NULL; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic u4 offset_mObj; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic u4 offset_mBool; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic u4 offset_mInt; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic u4 offset_mString; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic u4 offset_mDouble; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic u4 offset_mLong; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* native String getString(); */ 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic uintptr_t * 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectgetString(Class *clazz, MethodBlock *mb, uintptr_t *ostack) 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_OBJ (createString ("String")); 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* native String getNullString(); */ 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic uintptr_t * 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectgetNullString(Class *clazz, MethodBlock *mb, uintptr_t *ostack) 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_OBJ (createString (NULL)); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* native String getBooleanTrue(); */ 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic uintptr_t * 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectgetBooleanTrue(Class *clazz, MethodBlock *mb, uintptr_t *ostack) 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_BOOLEAN (TRUE); 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* native String getBooleanFalse(); */ 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic uintptr_t * 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectgetBooleanFalse(Class *clazz, MethodBlock *mb, uintptr_t *ostack) 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_BOOLEAN (FALSE); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* native Object nonvoidThrowsException() */ 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic uintptr_t * 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectnonvoidThrowsException (Class *clazz, MethodBlock *mb, uintptr_t *ostack) 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (1) { 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project signalException("java/lang/NullPointerException", NULL); 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project goto exception; 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_OBJ (NULL); 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectexception: 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_VOID; 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* native void setInstanceString(String s); */ 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic uintptr_t * 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectsetInstanceString (Class *clazz, MethodBlock *mb, uintptr_t *ostack) 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object *jthis = (Object *) ostack[0]; 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project JOBJ_set_obj(jthis, offset_instanceString, ostack[1]); 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_VOID; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* native void setClassString(String s) */ 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic uintptr_t * 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectsetClassString (Class *clazz, MethodBlock *mb, uintptr_t *ostack) 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// Object *jthis = (Object *) ostack[0]; 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fb_classString->static_value = ostack[1]; 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_VOID; 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* native String makeStringFromThreeChars(char a, char b, char c); */ 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic uintptr_t * 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectmakeStringFromThreeChars (Class *clazz, MethodBlock *mb, uintptr_t *ostack) 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Object *jthis = ostack[0]; 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char a = (char) ostack[1]; 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char b = (char) ostack[2]; 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char c = (char) ostack[3]; 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char str[4]; 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project str[0] = a; 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project str[1] = b; 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project str[2] = c; 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project str[3] = 0; 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_OBJ(createString(str)); 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* native ReturnedObject makeReturnedObject(String a); */ 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic uintptr_t * 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectmakeReturnedObject (Class *clazz, MethodBlock *mb, uintptr_t *ostack) 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Object *jthis = (Object*)ostack[0]; 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object *a = (Object*)ostack[1]; 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object *ret; 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ret = allocObject(class_ReturnedObject); 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project executeMethod(ret, mb_ReturnedObject_setReturnedString, a); 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_OBJ (ret); 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* native double addDoubles(double a, double b); */ 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic uintptr_t * 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectaddDoubles (Class *clazz, MethodBlock *mb, uintptr_t *ostack) 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Object *jthis = (Object*)ostack[0]; 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project double a = JARG_get_double(1); 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project double b = JARG_get_double(3); 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_DOUBLE(a+b); 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* native void setAll (Object obj, boolean bool, int i, String str, double d, long l) */ 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic uintptr_t * 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectsetAll (Class *clazz, MethodBlock *mb, uintptr_t *ostack) 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object *jthis = JARG_get_obj(0); 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object *obj = JARG_get_obj(1); 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool b = JARG_get_bool(2); 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int i = JARG_get_int(3); 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char *str = JARG_get_cstr_strdup(4); 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project double d = JARG_get_double(5); 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long long ll = JARG_get_long_long(5+2); 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project JOBJ_set_obj(jthis, offset_mObj, obj); 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project JOBJ_set_bool(jthis, offset_mBool, b); 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project JOBJ_set_int(jthis, offset_mInt, i); 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project JOBJ_set_cstr(jthis, offset_mString, str); 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project free(str); 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project str = NULL; 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project JOBJ_set_double(jthis, offset_mDouble, d); 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project JOBJ_set_long_long(jthis, offset_mLong, ll); 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_VOID; 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* native void compareAll (Object obj, boolean bool, int i, String str, double d, long l) */ 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic uintptr_t * 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectcompareAll (Class *clazz, MethodBlock *mb, uintptr_t *ostack) 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object *jthis = JARG_get_obj(0); 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object *obj = JARG_get_obj(1); 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool b = JARG_get_bool(2); 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int i = JARG_get_int(3); 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object *strObj = JARG_get_obj(4); 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project double d = JARG_get_double(5); 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long long ll = JARG_get_long_long(5+2); 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool ret; 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void *result; 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object *mStringObj = JOBJ_get_obj(jthis, offset_mString); 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char *s = JARG_get_cstr_strdup(4); 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result = executeMethod (strObj, lookupVirtualMethod(strObj,mb_Java_Lang_Object_Equals), 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project JOBJ_get_obj(jthis, offset_mString)); 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (exceptionOccurred()) { 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_VOID; 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ret = (*(uintptr_t *)result != 0) 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && (obj == JOBJ_get_obj(jthis, offset_mObj)) 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && (b == JOBJ_get_bool(jthis, offset_mBool)) 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && (i == JOBJ_get_int(jthis, offset_mInt)) 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && (d == JOBJ_get_double(jthis, offset_mDouble)) 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && (ll == JOBJ_get_long_long(jthis, offset_mLong)); 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RETURN_BOOLEAN(ret); 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic VMMethod methods[] = { 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"getString", getString}, 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"getNullString", getNullString}, 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"getBooleanTrue", getBooleanTrue}, 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"getBooleanFalse", getBooleanFalse}, 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"nonvoidThrowsException", nonvoidThrowsException}, 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"setInstanceString", setInstanceString}, 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"setClassString", setClassString}, 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"makeStringFromThreeChars", makeStringFromThreeChars}, 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"makeReturnedObject", makeReturnedObject}, 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"addDoubles", addDoubles}, 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"setAll", setAll}, 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {"compareAll", compareAll}, 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project {NULL, NULL} 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid register_BindTest() 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project jamvm_registerClass("BindTest", methods); 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Class *clazz = NULL; 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project clazz = findClassFromClassLoader("BindTest", getSystemClassLoader()); 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (clazz == NULL) { 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "Error: BindTest not found\n"); 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project clearException(); 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FieldBlock *fb; 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fb = findField(clazz, "instanceString", "Ljava/lang/String;"); 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (fb == NULL || ((fb->access_flags & ACC_STATIC) == ACC_STATIC)) { 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "Error: BindTest.instanceString not found or error\n"); 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset_instanceString = fb->offset; 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fb_classString = findField(clazz, "classString", "Ljava/lang/String;"); 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (fb_classString == NULL || ((fb_classString->access_flags & ACC_STATIC) != ACC_STATIC)) { 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "Error: BindTest.classString not found or error\n"); 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project class_ReturnedObject = findClassFromClassLoader("ReturnedObject", getSystemClassLoader()); 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (class_ReturnedObject == NULL) { 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "Error: ReturnedObject class not found or error\n"); 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mb_ReturnedObject_setReturnedString= 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project findMethod (class_ReturnedObject, "setReturnedString", "(Ljava/lang/String;)V"); 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mb_ReturnedObject_setReturnedString == NULL) { 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "Error: ReturnedObject.setReturnedString class not found or error\n"); 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset_mObj = findField(clazz, "mObj", "Ljava/lang/Object;")->offset; 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset_mBool = findField(clazz, "mBool", "Z" )->offset; 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset_mInt = findField(clazz, "mInt", "I")->offset; 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset_mString = findField(clazz, "mString", "Ljava/lang/String;")->offset; 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset_mDouble = findField(clazz, "mDouble", "D")->offset; 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset_mLong = findField(clazz, "mLong", "J")->offset; 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mb_Java_Lang_Object_Equals = findMethod ( 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project findClassFromClassLoader("java/lang/Object", getSystemClassLoader()), 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "equals", "(Ljava/lang/Object;)Z"); 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 290