comparison src/share/vm/c1/c1_LIRGenerator.cpp @ 12969:9acbfe04b5c3

8026495: JVM Crashes when started with -XX:+DTraceMethodProbes on Solaris x86_64 Summary: Fix wrong calling convention in LIR_Assembler::emit_unwind_handler(), T_METADATA support in calling convention generator, C1 register allocator Reviewed-by: twisti, jrose
author iveresov
date Wed, 23 Oct 2013 11:15:24 -0700
parents 5ccbab1c69f3
children e6ba215af802
comparison
equal deleted inserted replaced
12966:b2ee5dc63353 12969:9acbfe04b5c3
1173 1173
1174 void LIRGenerator::do_Return(Return* x) { 1174 void LIRGenerator::do_Return(Return* x) {
1175 if (compilation()->env()->dtrace_method_probes()) { 1175 if (compilation()->env()->dtrace_method_probes()) {
1176 BasicTypeList signature; 1176 BasicTypeList signature;
1177 signature.append(LP64_ONLY(T_LONG) NOT_LP64(T_INT)); // thread 1177 signature.append(LP64_ONLY(T_LONG) NOT_LP64(T_INT)); // thread
1178 signature.append(T_OBJECT); // Method* 1178 signature.append(T_METADATA); // Method*
1179 LIR_OprList* args = new LIR_OprList(); 1179 LIR_OprList* args = new LIR_OprList();
1180 args->append(getThreadPointer()); 1180 args->append(getThreadPointer());
1181 LIR_Opr meth = new_register(T_METADATA); 1181 LIR_Opr meth = new_register(T_METADATA);
1182 __ metadata2reg(method()->constant_encoding(), meth); 1182 __ metadata2reg(method()->constant_encoding(), meth);
1183 args->append(meth); 1183 args->append(meth);
2718 } 2718 }
2719 2719
2720 if (compilation()->env()->dtrace_method_probes()) { 2720 if (compilation()->env()->dtrace_method_probes()) {
2721 BasicTypeList signature; 2721 BasicTypeList signature;
2722 signature.append(LP64_ONLY(T_LONG) NOT_LP64(T_INT)); // thread 2722 signature.append(LP64_ONLY(T_LONG) NOT_LP64(T_INT)); // thread
2723 signature.append(T_OBJECT); // Method* 2723 signature.append(T_METADATA); // Method*
2724 LIR_OprList* args = new LIR_OprList(); 2724 LIR_OprList* args = new LIR_OprList();
2725 args->append(getThreadPointer()); 2725 args->append(getThreadPointer());
2726 LIR_Opr meth = new_register(T_METADATA); 2726 LIR_Opr meth = new_register(T_METADATA);
2727 __ metadata2reg(method()->constant_encoding(), meth); 2727 __ metadata2reg(method()->constant_encoding(), meth);
2728 args->append(meth); 2728 args->append(meth);
3329 void LIRGenerator::do_RuntimeCall(RuntimeCall* x) { 3329 void LIRGenerator::do_RuntimeCall(RuntimeCall* x) {
3330 LIR_OprList* args = new LIR_OprList(x->number_of_arguments()); 3330 LIR_OprList* args = new LIR_OprList(x->number_of_arguments());
3331 BasicTypeList* signature = new BasicTypeList(x->number_of_arguments()); 3331 BasicTypeList* signature = new BasicTypeList(x->number_of_arguments());
3332 3332
3333 if (x->pass_thread()) { 3333 if (x->pass_thread()) {
3334 signature->append(T_ADDRESS); 3334 signature->append(LP64_ONLY(T_LONG) NOT_LP64(T_INT)); // thread
3335 args->append(getThreadPointer()); 3335 args->append(getThreadPointer());
3336 } 3336 }
3337 3337
3338 for (int i = 0; i < x->number_of_arguments(); i++) { 3338 for (int i = 0; i < x->number_of_arguments(); i++) {
3339 Value a = x->argument_at(i); 3339 Value a = x->argument_at(i);