src/hotspot/share/ci/ciReplay.cpp
changeset 58722 cba8afa5cfed
parent 55050 feba48c5dfb4
child 59056 15936b142f86
equal deleted inserted replaced
58720:ae0af9fb3dbb 58722:cba8afa5cfed
   812       report_error(field_name);
   812       report_error(field_name);
   813       return;
   813       return;
   814     }
   814     }
   815 
   815 
   816     oop java_mirror = k->java_mirror();
   816     oop java_mirror = k->java_mirror();
   817     if (field_signature[0] == '[') {
   817     if (field_signature[0] == JVM_SIGNATURE_ARRAY) {
   818       int length = parse_int("array length");
   818       int length = parse_int("array length");
   819       oop value = NULL;
   819       oop value = NULL;
   820 
   820 
   821       if (field_signature[1] == '[') {
   821       if (field_signature[1] == JVM_SIGNATURE_ARRAY) {
   822         // multi dimensional array
   822         // multi dimensional array
   823         ArrayKlass* kelem = (ArrayKlass *)parse_klass(CHECK);
   823         ArrayKlass* kelem = (ArrayKlass *)parse_klass(CHECK);
   824         if (kelem == NULL) {
   824         if (kelem == NULL) {
   825           return;
   825           return;
   826         }
   826         }
   827         int rank = 0;
   827         int rank = 0;
   828         while (field_signature[rank] == '[') {
   828         while (field_signature[rank] == JVM_SIGNATURE_ARRAY) {
   829           rank++;
   829           rank++;
   830         }
   830         }
   831         jint* dims = NEW_RESOURCE_ARRAY(jint, rank);
   831         jint* dims = NEW_RESOURCE_ARRAY(jint, rank);
   832         dims[0] = length;
   832         dims[0] = length;
   833         for (int i = 1; i < rank; i++) {
   833         for (int i = 1; i < rank; i++) {
   849           value = oopFactory::new_doubleArray(length, CHECK);
   849           value = oopFactory::new_doubleArray(length, CHECK);
   850         } else if (strcmp(field_signature, "[I") == 0) {
   850         } else if (strcmp(field_signature, "[I") == 0) {
   851           value = oopFactory::new_intArray(length, CHECK);
   851           value = oopFactory::new_intArray(length, CHECK);
   852         } else if (strcmp(field_signature, "[J") == 0) {
   852         } else if (strcmp(field_signature, "[J") == 0) {
   853           value = oopFactory::new_longArray(length, CHECK);
   853           value = oopFactory::new_longArray(length, CHECK);
   854         } else if (field_signature[0] == '[' && field_signature[1] == 'L') {
   854         } else if (field_signature[0] == JVM_SIGNATURE_ARRAY &&
       
   855                    field_signature[1] == JVM_SIGNATURE_CLASS) {
   855           Klass* kelem = resolve_klass(field_signature + 1, CHECK);
   856           Klass* kelem = resolve_klass(field_signature + 1, CHECK);
   856           value = oopFactory::new_objArray(kelem, length, CHECK);
   857           value = oopFactory::new_objArray(kelem, length, CHECK);
   857         } else {
   858         } else {
   858           report_error("unhandled array staticfield");
   859           report_error("unhandled array staticfield");
   859         }
   860         }
   890         double value = atof(string_value);
   891         double value = atof(string_value);
   891         java_mirror->double_field_put(fd.offset(), value);
   892         java_mirror->double_field_put(fd.offset(), value);
   892       } else if (strcmp(field_signature, "Ljava/lang/String;") == 0) {
   893       } else if (strcmp(field_signature, "Ljava/lang/String;") == 0) {
   893         Handle value = java_lang_String::create_from_str(string_value, CHECK);
   894         Handle value = java_lang_String::create_from_str(string_value, CHECK);
   894         java_mirror->obj_field_put(fd.offset(), value());
   895         java_mirror->obj_field_put(fd.offset(), value());
   895       } else if (field_signature[0] == 'L') {
   896       } else if (field_signature[0] == JVM_SIGNATURE_CLASS) {
   896         Klass* k = resolve_klass(string_value, CHECK);
   897         Klass* k = resolve_klass(string_value, CHECK);
   897         oop value = InstanceKlass::cast(k)->allocate_instance(CHECK);
   898         oop value = InstanceKlass::cast(k)->allocate_instance(CHECK);
   898         java_mirror->obj_field_put(fd.offset(), value);
   899         java_mirror->obj_field_put(fd.offset(), value);
   899       } else {
   900       } else {
   900         report_error("unhandled staticfield");
   901         report_error("unhandled staticfield");