changeset 224 | 6a257cd604e7 |
parent 1 | 489c9b5090e2 |
child 362 | 00cf4bffd828 |
223:5c3b023117d9 | 224:6a257cd604e7 |
---|---|
1546 } else { |
1546 } else { |
1547 rtype = T_OBJECT; |
1547 rtype = T_OBJECT; |
1548 } |
1548 } |
1549 |
1549 |
1550 instanceKlassHandle klass(THREAD, java_lang_Class::as_klassOop(mirror)); |
1550 instanceKlassHandle klass(THREAD, java_lang_Class::as_klassOop(mirror)); |
1551 if (!klass->methods()->is_within_bounds(slot)) { |
1551 methodOop m = klass->method_with_idnum(slot); |
1552 if (m == NULL) { |
|
1552 THROW_MSG_0(vmSymbols::java_lang_InternalError(), "invoke"); |
1553 THROW_MSG_0(vmSymbols::java_lang_InternalError(), "invoke"); |
1553 } |
1554 } |
1554 methodHandle method(THREAD, methodOop(klass->methods()->obj_at(slot))); |
1555 methodHandle method(THREAD, m); |
1555 |
1556 |
1556 return invoke(klass, method, receiver, override, ptypes, rtype, args, true, THREAD); |
1557 return invoke(klass, method, receiver, override, ptypes, rtype, args, true, THREAD); |
1557 } |
1558 } |
1558 |
1559 |
1559 |
1560 |
1562 int slot = java_lang_reflect_Constructor::slot(constructor_mirror); |
1563 int slot = java_lang_reflect_Constructor::slot(constructor_mirror); |
1563 bool override = java_lang_reflect_Constructor::override(constructor_mirror) != 0; |
1564 bool override = java_lang_reflect_Constructor::override(constructor_mirror) != 0; |
1564 objArrayHandle ptypes(THREAD, objArrayOop(java_lang_reflect_Constructor::parameter_types(constructor_mirror))); |
1565 objArrayHandle ptypes(THREAD, objArrayOop(java_lang_reflect_Constructor::parameter_types(constructor_mirror))); |
1565 |
1566 |
1566 instanceKlassHandle klass(THREAD, java_lang_Class::as_klassOop(mirror)); |
1567 instanceKlassHandle klass(THREAD, java_lang_Class::as_klassOop(mirror)); |
1567 if (!klass->methods()->is_within_bounds(slot)) { |
1568 methodOop m = klass->method_with_idnum(slot); |
1569 if (m == NULL) { |
|
1568 THROW_MSG_0(vmSymbols::java_lang_InternalError(), "invoke"); |
1570 THROW_MSG_0(vmSymbols::java_lang_InternalError(), "invoke"); |
1569 } |
1571 } |
1570 methodHandle method(THREAD, methodOop(klass->methods()->obj_at(slot))); |
1572 methodHandle method(THREAD, m); |
1571 assert(method->name() == vmSymbols::object_initializer_name(), "invalid constructor"); |
1573 assert(method->name() == vmSymbols::object_initializer_name(), "invalid constructor"); |
1572 |
1574 |
1573 // Make sure klass gets initialize |
1575 // Make sure klass gets initialize |
1574 klass->initialize(CHECK_NULL); |
1576 klass->initialize(CHECK_NULL); |
1575 |
1577 |