RFR(L): JEP165: Compiler Control
Nils Eliasson
nils.eliasson at oracle.com
Mon Oct 5 12:27:20 UTC 2015
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/dbcea355/attachment-0001.html>
More information about the hotspot-compiler-dev
mailing list