RFR(S): 8184123: [MVT] C2 crashes with SIGSEGV in ValueTypeNode::is_loaded

Tobias Hartmann tobias.hartmann at oracle.com
Wed Jul 12 13:53:55 UTC 2017


Thanks Vladimir!

Best regards,
Tobias

On 12.07.2017 15:16, Vladimir Ivanov wrote:
> Looks good.
> 
> Best regards,
> Vladimir Ivanov
> 
> On 7/12/17 4:07 PM, Tobias Hartmann wrote:
>> Hi,
>>
>> please review the following patch:
>> https://bugs.openjdk.java.net/browse/JDK-8184123
>> http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.30/
>>
>> We crash in ValueTypeNode::is_loaded() because the code incorrectly assumes that all value type field loads have an AddP address input [1]. I refactored the code to use AddPNode::Ideal_base_and_offset() to retrieve the base node and offset (if available).
>>
>> Verified with replay compilation.
>>
>> Thanks,
>> Tobias
>>
>> [1] Failing ValueTypeNode (i == 0):
>>   3    StartOSR    ===  3  0  [[ 3  5  6  7  8  9  10 ]]  #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:rawptr:BotPTR}
>>   76    ConI    ===  0  [[ 77  90  239  135  238 ]]  #int:1
>>   10    Parm    ===  3  [[ 36  35  29  29  25  25 ]] Parm0: rawptr:BotPTR !jvms: FillI2::bc_value @ bci:11
>>   7    Parm    ===  3  [[ 178  127  273  27  31  35  36  54  40  270  156  94  81  16  185  230  282  285 ]] Memory  Memory: @BotPTR *+bot, idx=Bot; !orig=[72],[208],[105] !jvms: FillI2::bc_value @ bci:11
>>   5    Parm    ===  3  [[ 35  36  27  31 ]] Control !jvms: FillI2::bc_value @ bci:11
>>   239    AddI    === _  35  76  [[ 290  237 ]]  !orig=135 !jvms: FillI2::bc_value @ bci:22
>>   35    LoadI    ===  5  7  10  [[ 63  291  97  84  237  239 ]]  @rawptr:BotPTR, idx=Raw; #int (does not depend only on test) !orig=[75] !jvms: FillI2::bc_value @ bci:11
>>   46    ConP    ===  0  [[ 47  45  111  148  237 ]]  #NULL
>>   237    ValueType    === _  46  35  239  [[ 288 ]]  #valuetype[2]:{int, int} !orig=148,147,146 !jvms: ValueI2::of @ bci:0 FillI2::bc_value @ bci:23
>>


More information about the valhalla-dev mailing list