RFR(L): JEP165: Compiler Control
Nils Eliasson
nils.eliasson at oracle.com
Mon Oct 5 14:25:05 UTC 2015
New webrev here:
http://cr.openjdk.java.net/~neliasso/8046155/webrev.06/
Regards
Nils
On 2015-10-05 14:27, Nils Eliasson wrote:
> Hi,
>
> Thanks for finding.
>
> I fixed it by setting the Compile in the IdealGraphPrinter at the
> beginning of a compilation, and then removed the passing of Compile as
> an argument.
>
> Best regards,
> Nils Eliasson
>
> On 2015-10-01 16:48, Volker Simonis wrote:
>> Hi Nils,
>>
>> I've just found another problem with the IGV. After your changes it
>> will crash because you changed IdealGraphPrinter::should_print() to
>> use "C->dirset()->IGVPrintLevelOption >= level" but at the call sites
>> where should_print() is used the Compiler field of the IGV printer
>> isn't initialized.
>>
>> The quick hack attached below, which always passes the compiler
>> object to should_print() fixes the problem, but may you can up with
>> something better?
>>
>> And what about the InlineMatcherTest.java which I've already objected
>> in my previous mail. It still doesn't seem to work. How is it
>> supposed to be executed?
>>
>> Regards,
>> Volker
>>
>> diff -r 6fba102266ad src/share/vm/opto/compile.cpp
>> --- a/src/share/vm/opto/compile.cpp Thu Oct 01 16:24:12 2015 +0200
>> +++ b/src/share/vm/opto/compile.cpp Thu Oct 01 16:40:46 2015 +0200
>> @@ -838,7 +838,7 @@
>> // Drain the list.
>> Finish_Warm();
>> #ifndef PRODUCT
>> - if (_printer && _printer->should_print(1)) {
>> + if (_printer && _printer->should_print(C, 1)) {
>> _printer->print_inlining(this);
>> }
>> #endif
>> diff -r 6fba102266ad src/share/vm/opto/compile.hpp
>> --- a/src/share/vm/opto/compile.hpp Thu Oct 01 16:24:12 2015 +0200
>> +++ b/src/share/vm/opto/compile.hpp Thu Oct 01 16:40:46 2015 +0200
>> @@ -691,7 +691,7 @@
>>
>> void begin_method() {
>> #ifndef PRODUCT
>> - if (_printer && _printer->should_print(1)) {
>> + if (_printer && _printer->should_print(C, 1)) {
>> _printer->begin_method(this);
>> }
>> #endif
>> @@ -710,7 +710,7 @@
>>
>>
>> #ifndef PRODUCT
>> - if (_printer && _printer->should_print(level)) {
>> + if (_printer && _printer->should_print(C, level)) {
>> _printer->print_method(this,
>> CompilerPhaseTypeHelper::to_string(cpt), level);
>> }
>> #endif
>> @@ -727,7 +727,7 @@
>> event.commit();
>> }
>> #ifndef PRODUCT
>> - if (_printer && _printer->should_print(level)) {
>> + if (_printer && _printer->should_print(C, level)) {
>> _printer->end_method();
>> }
>> #endif
>> diff -r 6fba102266ad src/share/vm/opto/idealGraphPrinter.cpp
>> --- a/src/share/vm/opto/idealGraphPrinter.cpp Thu Oct 01 16:24:12
>> 2015 +0200
>> +++ b/src/share/vm/opto/idealGraphPrinter.cpp Thu Oct 01 16:40:46
>> 2015 +0200
>> @@ -669,7 +669,7 @@
>> // Print current ideal graph
>> void IdealGraphPrinter::print(Compile* compile, const char *name,
>> Node *node, int level, bool clear_nodes) {
>>
>> - if (!_current_method || !_should_send_method ||
>> !should_print(level)) return;
>> + if (!_current_method || !_should_send_method ||
>> !should_print(compile, level)) return;
>>
>> this->C = compile;
>>
>> @@ -722,8 +722,8 @@
>> }
>>
>> // Should method be printed?
>> -bool IdealGraphPrinter::should_print(int level) {
>> - return C->dirset()->IGVPrintLevelOption >= level;
>> +bool IdealGraphPrinter::should_print(Compile* compile, int level) {
>> + return compile->dirset()->IGVPrintLevelOption >= level;
>> }
>>
>> extern const char *NodeClassNames[];
>> diff -r 6fba102266ad src/share/vm/opto/idealGraphPrinter.hpp
>> --- a/src/share/vm/opto/idealGraphPrinter.hpp Thu Oct 01 16:24:12
>> 2015 +0200
>> +++ b/src/share/vm/opto/idealGraphPrinter.hpp Thu Oct 01 16:40:46
>> 2015 +0200
>> @@ -133,7 +133,7 @@
>> void print_method(Compile* compile, const char *name, int level=1,
>> bool clear_nodes = false);
>> void print(Compile* compile, const char *name, Node *root, int
>> level=1, bool clear_nodes = false);
>> void print_xml(const char *name);
>> - bool should_print(int level);
>> + bool should_print(Compile* compile, int level);
>> };
>>
>> #endif
>> diff -r 6fba102266ad src/share/vm/opto/parse2.cpp
>> --- a/src/share/vm/opto/parse2.cpp Thu Oct 01 16:24:12 2015 +0200
>> +++ b/src/share/vm/opto/parse2.cpp Thu Oct 01 16:40:46 2015 +0200
>> @@ -2379,7 +2379,7 @@
>>
>> #ifndef PRODUCT
>> IdealGraphPrinter *printer = IdealGraphPrinter::printer();
>> - if (printer && printer->should_print(1)) {
>> + if (printer && printer->should_print(C, 1)) {
>> char buffer[256];
>> sprintf(buffer, "Bytecode %d: %s", bci(), Bytecodes::name(bc()));
>> bool old = printer->traverse_outs();
>>
>> On Thu, Oct 1, 2015 at 1:47 PM, Nils Eliasson
>> <nils.eliasson at oracle.com <mailto:nils.eliasson at oracle.com>> wrote:
>>
>> Hi Roland,
>>
>> On 2015-09-28 12:02, Roland Westrelin wrote:
>>
>> Hi Nils,
>>
>> http://cr.openjdk.java.net/~neliasso/8046155/webrev.03/
>> <http://cr.openjdk.java.net/%7Eneliasso/8046155/webrev.03/>
>>
>> What does CompileCommandCompatibility do?
>>
>>
>> Control backwards compatibility with CompileCommand for testing
>> purposes. I 'll change the name to the moee descriptive
>> CompilerDirectivesIgnoreCompileCommands (default false).
>>
>>
>> vm_operations.cpp
>>
>> Is that extra include really needed?
>>
>> No, removed.
>>
>>
>> CompilerQueueTest.java
>>
>> Is that extra import really needed?
>>
>> No, removed.
>>
>>
>> block.hpp
>>
>> You don’t need that ciEnv here, right?
>>
>> No, left over from when the directives was stored in the viEnv.
>>
>>
>> compileBroker.cpp
>>
>> 1717 should_break = dirset->BreakAtExecuteOption ||
>> task->check_break_at_flags();
>>
>> doesn’t seem to be used
>>
>> Except for those minor issues, looks good to me.
>>
>> Fixed.
>>
>>
>>
>> - Won't build c1 only or shark only.
>>
>> You can’t push if c1 only doesn’t build, right?
>>
>>
>> It was just a temporary glitch that is fixed now.
>>
>> Thanks,
>> Nils
>>
>>
>> Roland.
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20151005/92e23069/attachment-0001.html>
More information about the hotspot-compiler-dev
mailing list