JAVA_OBJECT XMLVMArray_createFromString(const char* str) { int len = strlen(str); int size = len * sizeof(JAVA_ARRAY_CHAR); int i; JAVA_ARRAY_CHAR* data = XMLVM_ATOMIC_MALLOC(size); for (i = 0; i < len; i++) { data[i] = *str++; } return XMLVMArray_createSingleDimensionWithData(__CLASS_char, len, data); }
JAVA_OBJECT xmlvm_create_java_string_from_pool(int pool_id) { if (stringConstants == JAVA_NULL) { // TODO: use XMLVM_ATOMIC_MALLOC? stringConstants = XMLVM_MALLOC(xmlvm_constant_pool_size * sizeof(JAVA_OBJECT)); XMLVM_BZERO(stringConstants, xmlvm_constant_pool_size * sizeof(JAVA_OBJECT)); } if (stringConstants[pool_id] != JAVA_NULL) { return stringConstants[pool_id]; } java_lang_String* str = __NEW_java_lang_String(); org_xmlvm_runtime_XMLVMArray* charArray = XMLVMArray_createSingleDimensionWithData(__CLASS_char, xmlvm_constant_pool_length[pool_id], (JAVA_OBJECT) xmlvm_constant_pool_data[pool_id]); java_lang_String___INIT____char_1ARRAY(str, charArray); JAVA_OBJECT poolStr = XMLVMUtil_getFromStringPool(str); stringConstants[pool_id] = poolStr; return poolStr; }
JAVA_OBJECT newJavaByteArray (JAVA_ARRAY_BYTE* bytes, JAVA_INT length) { JAVA_OBJECT result = XMLVMArray_createSingleDimensionWithData(__CLASS_byte_1ARRAY, (int) length, bytes); return result; }