Mercurial > hg > graal-jvmci-8
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); |