提交 37eb65df 编写于 作者: A asaha

Merge

......@@ -1139,6 +1139,7 @@ ebfd57cc21e6b7f0c22b17c666b6b28c9340e207 jdk8u171-b01
08326a76b14888908523cf2bb1105de63b43544d jdk8u171-b05
4e1445535b6d9c25ed34aba2768139da283847d0 jdk8u171-b06
fd0e42431b94c889b3fea8d8aad048f51d559761 jdk8u171-b07
56123fdca84a3b253b8ea6f72be85bd2ebf39fd0 jdk8u171-b08
f299cf0b7baea1ae85f139f97adb9ab5499f402a jdk8u172-b00
d10254debf7c1342416062bf1ba5258f16a8ce00 jdk8u172-b01
653d9e0cd3f4023675c9eece7f0d563287f1d34f jdk8u172-b02
......
......@@ -180,3 +180,9 @@ address MethodHandles::generate_method_handle_interpreter_entry(MacroAssembler*
return NULL;
}
}
#ifndef PRODUCT
void MethodHandles::trace_method_handle(MacroAssembler* _masm, const char* adaptername) {
// This is just a stub.
}
#endif //PRODUCT
......@@ -2569,13 +2569,35 @@ run:
// this could definitely be cleaned up QQQ
Method* callee;
Klass* iclass = cache->f1_as_klass();
// InstanceKlass* interface = (InstanceKlass*) iclass;
Method *interface_method = cache->f2_as_interface_method();
InstanceKlass* iclass = interface_method->method_holder();
// get receiver
int parms = cache->parameter_size();
oop rcvr = STACK_OBJECT(-parms);
CHECK_NULL(rcvr);
InstanceKlass* int2 = (InstanceKlass*) rcvr->klass();
// Receiver subtype check against resolved interface klass (REFC).
{
Klass* refc = cache->f1_as_klass();
itableOffsetEntry* scan;
for (scan = (itableOffsetEntry*) int2->start_of_itable();
scan->interface_klass() != NULL;
scan++) {
if (scan->interface_klass() == refc) {
break;
}
}
// Check that the entry is non-null. A null entry means
// that the receiver class doesn't implement the
// interface, and wasn't the same as when the caller was
// compiled.
if (scan->interface_klass() == NULL) {
VM_JAVA_ERROR(vmSymbols::java_lang_IncompatibleClassChangeError(), "", note_no_trap);
}
}
itableOffsetEntry* ki = (itableOffsetEntry*) int2->start_of_itable();
int i;
for ( i = 0 ; i < int2->itable_length() ; i++, ki++ ) {
......@@ -2587,7 +2609,8 @@ run:
if (i == int2->itable_length()) {
VM_JAVA_ERROR(vmSymbols::java_lang_IncompatibleClassChangeError(), "", note_no_trap);
}
int mindex = cache->f2_as_index();
int mindex = interface_method->itable_index();
itableMethodEntry* im = ki->first_method_entry(rcvr->klass());
callee = im[mindex].method();
if (callee == NULL) {
......
......@@ -37,6 +37,11 @@ import java.util.List;
public class CompressedClassSpaceSizeInJmapHeap {
public static void main(String[] args) throws Exception {
if (!Platform.shouldSAAttach()) {
System.out.println("SA attach not expected to work - test skipped.");
return;
}
String pid = Integer.toString(ProcessTools.getProcessId());
JDKToolLauncher jmap = JDKToolLauncher.create("jmap")
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册