RFR: JDK-8241503: C2: Share MacroAssembler between mach nodes during code emission [v11]

Boris Ulasevich bulasevich at openjdk.org
Wed Apr 10 21:24:46 UTC 2024


On Mon, 8 Apr 2024 06:09:14 GMT, Boris Ulasevich <bulasevich at openjdk.org> wrote:

>> Cesar Soares Lucas has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 12 commits:
>> 
>>  - Merge remote-tracking branch 'origin/master' into reuse-macroasm
>>  - Fix AArch64 build & improve comment about InstructionMark
>>  - Catching up with changes in master
>>  - Catching up with origin/master
>>  - Catch up with origin/master
>>  - Merge with origin/master
>>  - Fix build, copyright dates, m4 files.
>>  - Fix merge
>>  - Catch up with master branch.
>>    
>>    Merge remote-tracking branch 'origin/master' into reuse-macroasm
>>  - Some inst_mark fixes; Catch up with master.
>>  - ... and 2 more: https://git.openjdk.org/jdk/compare/89e0889a...b4d73c98
>
> Do you need help understanding the problem? The crash occurred because you removed the line `fprintf(fp, "  cbuf.set_insts_mark();\n");` from the generator of AD nodes ::emit() methods. That is why emit_call_reloc finds cbuf.insts->_mark unitialized.
> 
> 
> // Call Runtime Instruction
> instruct CallRuntimeDirect(method meth) %{
>   match(CallRuntime);
>   effect(USE meth);
>   ins_cost(CALL_COST);
>   format %{ "CALL,runtime" %}
>   ins_encode( Java_To_Runtime( meth ),
>               call_epilog );
>   ins_pipe(simple_call);
> %}
> 
> -->
> 
> void CallRuntimeDirectNode::emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const {
>   cbuf.set_insts_mark();
>   // Start at oper_input_base() and count operands
>   unsigned idx0 = 1;
>   unsigned idx1 = 1;    //
>   {
> #line 1217 "/home/boris/jdk-bulasevich/src/hotspot/cpu/arm/arm.ad"
>     // CALL directly to the runtime
>     emit_call_reloc(cbuf, as_MachCall(), opnd_array(1), runtime_call_Relocation::spec());
> #line 999999
>   }
>   {
> #line 1213 "/home/boris/jdk-bulasevich/src/hotspot/cpu/arm/arm.ad"
>     // nothing
> #line 999999
>   }
> }

> @bulasevich - I just pushed a fix for ARM32. Can you please run your tests again? Thanks!

Good. Tests are OK now.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/16484#issuecomment-2048456503


More information about the shenandoah-dev mailing list