On 7/31/19 4:46 PM, Andrew Dinn wrote: > Well, the failure happened during the build process so I didn't > (couldn't) debug it. I disabled the assert in supports_cpuflush() in > order to allow the build to complete and then ran up the resulting JVM > inside gdb to check what was going on. The problem is that with my patch > supports_cpuflush() is called from Assembler::clflush() and the latter > is called from icache_x86.cpp very early during bootstrap (I think this > is neded to flush the flush routine used to flush the code cache). > Anyway, the call happens so early that it precedes the call to > VM_Version::get_processor_features which sets up the _features mask > tested by the assert.
I believe you can untie this bootstrapping circularity by relaxing the assert with Universe::is_fully_unitialized(). It still gives us window to fail with SIGILL if the stub is called early during bootstrap, but that would be something to fix *if* we ever find ourselves there. -Aleksey