893 value = kelem->multi_allocate(rank, dims, CHECK_(true));
894 } else {
895 if (strcmp(field_signature, "[B") == 0) {
896 value = oopFactory::new_byteArray(length, CHECK_(true));
897 } else if (strcmp(field_signature, "[Z") == 0) {
898 value = oopFactory::new_boolArray(length, CHECK_(true));
899 } else if (strcmp(field_signature, "[C") == 0) {
900 value = oopFactory::new_charArray(length, CHECK_(true));
901 } else if (strcmp(field_signature, "[S") == 0) {
902 value = oopFactory::new_shortArray(length, CHECK_(true));
903 } else if (strcmp(field_signature, "[F") == 0) {
904 value = oopFactory::new_floatArray(length, CHECK_(true));
905 } else if (strcmp(field_signature, "[D") == 0) {
906 value = oopFactory::new_doubleArray(length, CHECK_(true));
907 } else if (strcmp(field_signature, "[I") == 0) {
908 value = oopFactory::new_intArray(length, CHECK_(true));
909 } else if (strcmp(field_signature, "[J") == 0) {
910 value = oopFactory::new_longArray(length, CHECK_(true));
911 } else if (field_signature[0] == '[' && field_signature[1] == 'L') {
912 Klass* kelem = resolve_klass(field_signature + 1, CHECK_(true));
913 value = oopFactory::new_array(kelem, length, CHECK_(true));
914 } else {
915 report_error("unhandled array staticfield");
916 }
917 }
918 java_mirror->obj_field_put(fd->offset(), value);
919 return true;
920 } else if (strcmp(field_signature, "Ljava/lang/String;") == 0) {
921 const char* string_value = parse_escaped_string();
922 Handle value = java_lang_String::create_from_str(string_value, CHECK_(true));
923 java_mirror->obj_field_put(fd->offset(), value());
924 return true;
925 } else if (field_signature[0] == 'L') {
926 Klass* k = resolve_klass(field_signature, CHECK_(true));
927 oop value = InstanceKlass::cast(k)->allocate_instance(CHECK_(true));
928 java_mirror->obj_field_put(fd->offset(), value);
929 return true;
930 }
931 return false;
932 }
933
|
893 value = kelem->multi_allocate(rank, dims, CHECK_(true));
894 } else {
895 if (strcmp(field_signature, "[B") == 0) {
896 value = oopFactory::new_byteArray(length, CHECK_(true));
897 } else if (strcmp(field_signature, "[Z") == 0) {
898 value = oopFactory::new_boolArray(length, CHECK_(true));
899 } else if (strcmp(field_signature, "[C") == 0) {
900 value = oopFactory::new_charArray(length, CHECK_(true));
901 } else if (strcmp(field_signature, "[S") == 0) {
902 value = oopFactory::new_shortArray(length, CHECK_(true));
903 } else if (strcmp(field_signature, "[F") == 0) {
904 value = oopFactory::new_floatArray(length, CHECK_(true));
905 } else if (strcmp(field_signature, "[D") == 0) {
906 value = oopFactory::new_doubleArray(length, CHECK_(true));
907 } else if (strcmp(field_signature, "[I") == 0) {
908 value = oopFactory::new_intArray(length, CHECK_(true));
909 } else if (strcmp(field_signature, "[J") == 0) {
910 value = oopFactory::new_longArray(length, CHECK_(true));
911 } else if (field_signature[0] == '[' && field_signature[1] == 'L') {
912 Klass* kelem = resolve_klass(field_signature + 1, CHECK_(true));
913 value = oopFactory::new_objArray(kelem, length, CHECK_(true));
914 } else if (field_signature[0] == '[' && field_signature[1] == 'Q') {
915 Klass* kelem = resolve_klass(field_signature + 1, CHECK_(true));
916 value = oopFactory::new_valueArray(kelem, length, CHECK_(true));
917 } else {
918 report_error("unhandled array staticfield");
919 }
920 }
921 java_mirror->obj_field_put(fd->offset(), value);
922 return true;
923 } else if (strcmp(field_signature, "Ljava/lang/String;") == 0) {
924 const char* string_value = parse_escaped_string();
925 Handle value = java_lang_String::create_from_str(string_value, CHECK_(true));
926 java_mirror->obj_field_put(fd->offset(), value());
927 return true;
928 } else if (field_signature[0] == 'L') {
929 Klass* k = resolve_klass(field_signature, CHECK_(true));
930 oop value = InstanceKlass::cast(k)->allocate_instance(CHECK_(true));
931 java_mirror->obj_field_put(fd->offset(), value);
932 return true;
933 }
934 return false;
935 }
936
|