mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
6988346: 6986046 breaks tiered
Adjusted profiling code generation to use the new ValueStack implementation; lowered optimization level for c1_LinearScan.cpp on solaris x64. Reviewed-by: kvn, never
This commit is contained in:
parent
8067fc5d4a
commit
8309071a08
5 changed files with 8 additions and 10 deletions
|
@ -35,7 +35,8 @@ ifeq ("${Platform_compiler}", "sparcWorks")
|
||||||
|
|
||||||
# Temporary until SS10 C++ compiler is fixed
|
# Temporary until SS10 C++ compiler is fixed
|
||||||
OPT_CFLAGS/generateOptoStub.o = -xO2
|
OPT_CFLAGS/generateOptoStub.o = -xO2
|
||||||
|
# Temporary util SS12u1 C++ compiler is fixed
|
||||||
|
OPT_CFLAGS/c1_LinearScan.o = -xO2
|
||||||
else
|
else
|
||||||
|
|
||||||
ifeq ("${Platform_compiler}", "gcc")
|
ifeq ("${Platform_compiler}", "gcc")
|
||||||
|
|
|
@ -3405,7 +3405,7 @@ bool GraphBuilder::try_inline_full(ciMethod* callee, bool holder_known) {
|
||||||
profile_call(recv, holder_known ? callee->holder() : NULL);
|
profile_call(recv, holder_known ? callee->holder() : NULL);
|
||||||
}
|
}
|
||||||
if (profile_inlined_calls()) {
|
if (profile_inlined_calls()) {
|
||||||
profile_invocation(callee, state(), 0);
|
profile_invocation(callee, copy_state_before());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3780,6 +3780,6 @@ void GraphBuilder::profile_call(Value recv, ciKlass* known_holder) {
|
||||||
append(new ProfileCall(method(), bci(), recv, known_holder));
|
append(new ProfileCall(method(), bci(), recv, known_holder));
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphBuilder::profile_invocation(ciMethod* callee, ValueStack* state, int bci) {
|
void GraphBuilder::profile_invocation(ciMethod* callee, ValueStack* state) {
|
||||||
append(new ProfileInvoke(callee, state, bci));
|
append(new ProfileInvoke(callee, state));
|
||||||
}
|
}
|
||||||
|
|
|
@ -347,7 +347,7 @@ class GraphBuilder VALUE_OBJ_CLASS_SPEC {
|
||||||
NOT_PRODUCT(void print_inline_result(ciMethod* callee, bool res);)
|
NOT_PRODUCT(void print_inline_result(ciMethod* callee, bool res);)
|
||||||
|
|
||||||
void profile_call(Value recv, ciKlass* predicted_holder);
|
void profile_call(Value recv, ciKlass* predicted_holder);
|
||||||
void profile_invocation(ciMethod* inlinee, ValueStack* state, int bci);
|
void profile_invocation(ciMethod* inlinee, ValueStack* state);
|
||||||
|
|
||||||
// Shortcuts to profiling control.
|
// Shortcuts to profiling control.
|
||||||
bool is_profiling() { return _compilation->is_profiling(); }
|
bool is_profiling() { return _compilation->is_profiling(); }
|
||||||
|
|
|
@ -2246,13 +2246,11 @@ LEAF(ProfileInvoke, Instruction)
|
||||||
private:
|
private:
|
||||||
ciMethod* _inlinee;
|
ciMethod* _inlinee;
|
||||||
ValueStack* _state;
|
ValueStack* _state;
|
||||||
int _bci_of_invoke;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ProfileInvoke(ciMethod* inlinee, ValueStack* state, int bci)
|
ProfileInvoke(ciMethod* inlinee, ValueStack* state)
|
||||||
: Instruction(voidType)
|
: Instruction(voidType)
|
||||||
, _inlinee(inlinee)
|
, _inlinee(inlinee)
|
||||||
, _bci_of_invoke(bci)
|
|
||||||
, _state(state)
|
, _state(state)
|
||||||
{
|
{
|
||||||
// The ProfileInvoke has side-effects and must occur precisely where located QQQ???
|
// The ProfileInvoke has side-effects and must occur precisely where located QQQ???
|
||||||
|
@ -2261,7 +2259,6 @@ LEAF(ProfileInvoke, Instruction)
|
||||||
|
|
||||||
ciMethod* inlinee() { return _inlinee; }
|
ciMethod* inlinee() { return _inlinee; }
|
||||||
ValueStack* state() { return _state; }
|
ValueStack* state() { return _state; }
|
||||||
int bci_of_invoke() { return _bci_of_invoke; }
|
|
||||||
virtual void input_values_do(ValueVisitor*) {}
|
virtual void input_values_do(ValueVisitor*) {}
|
||||||
virtual void state_values_do(ValueVisitor*);
|
virtual void state_values_do(ValueVisitor*);
|
||||||
};
|
};
|
||||||
|
|
|
@ -2309,7 +2309,7 @@ void LIRGenerator::do_Base(Base* x) {
|
||||||
|
|
||||||
// increment invocation counters if needed
|
// increment invocation counters if needed
|
||||||
if (!method()->is_accessor()) { // Accessors do not have MDOs, so no counting.
|
if (!method()->is_accessor()) { // Accessors do not have MDOs, so no counting.
|
||||||
CodeEmitInfo* info = new CodeEmitInfo(scope()->start()->state(), NULL);
|
CodeEmitInfo* info = new CodeEmitInfo(scope()->start()->state()->copy(ValueStack::StateBefore, SynchronizationEntryBCI), NULL);
|
||||||
increment_invocation_counter(info);
|
increment_invocation_counter(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue