8164508: unexpected profiling mismatch in c1 generated code
Made 8027631 first arg skip applicable to not inlined virtual callsite too. Reviewed-by: kvn
This commit is contained in:
parent
6384a5d55d
commit
4ae6ce2b44
@ -3210,14 +3210,14 @@ void LIRGenerator::profile_arguments(ProfileCall* x) {
|
|||||||
Bytecodes::Code bc = x->method()->java_code_at_bci(bci);
|
Bytecodes::Code bc = x->method()->java_code_at_bci(bci);
|
||||||
int start = 0;
|
int start = 0;
|
||||||
int stop = data->is_CallTypeData() ? ((ciCallTypeData*)data)->number_of_arguments() : ((ciVirtualCallTypeData*)data)->number_of_arguments();
|
int stop = data->is_CallTypeData() ? ((ciCallTypeData*)data)->number_of_arguments() : ((ciVirtualCallTypeData*)data)->number_of_arguments();
|
||||||
if (x->inlined() && x->callee()->is_static() && Bytecodes::has_receiver(bc)) {
|
if (x->callee()->is_loaded() && x->callee()->is_static() && Bytecodes::has_receiver(bc)) {
|
||||||
// first argument is not profiled at call (method handle invoke)
|
// first argument is not profiled at call (method handle invoke)
|
||||||
assert(x->method()->raw_code_at_bci(bci) == Bytecodes::_invokehandle, "invokehandle expected");
|
assert(x->method()->raw_code_at_bci(bci) == Bytecodes::_invokehandle, "invokehandle expected");
|
||||||
start = 1;
|
start = 1;
|
||||||
}
|
}
|
||||||
ciSignature* callee_signature = x->callee()->signature();
|
ciSignature* callee_signature = x->callee()->signature();
|
||||||
// method handle call to virtual method
|
// method handle call to virtual method
|
||||||
bool has_receiver = x->inlined() && !x->callee()->is_static() && !Bytecodes::has_receiver(bc);
|
bool has_receiver = x->callee()->is_loaded() && !x->callee()->is_static() && !Bytecodes::has_receiver(bc);
|
||||||
ciSignatureStream callee_signature_stream(callee_signature, has_receiver ? x->callee()->holder() : NULL);
|
ciSignatureStream callee_signature_stream(callee_signature, has_receiver ? x->callee()->holder() : NULL);
|
||||||
|
|
||||||
bool ignored_will_link;
|
bool ignored_will_link;
|
||||||
|
@ -23,10 +23,11 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @test
|
* @test
|
||||||
* @bug 8059556 8158639
|
* @bug 8059556 8158639 8164508
|
||||||
*
|
*
|
||||||
* @run main/othervm -Xbatch compiler.jsr292.NullConstantReceiver
|
* @run main/othervm -Xbatch compiler.jsr292.NullConstantReceiver
|
||||||
* @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::run compiler.jsr292.NullConstantReceiver
|
* @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::run compiler.jsr292.NullConstantReceiver
|
||||||
|
* @run main/othervm -Xbatch -XX:CompileCommand=compileonly,*::run compiler.jsr292.NullConstantReceiver
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.jsr292;
|
package compiler.jsr292;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user