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

Tobias Hartmann tobias.hartmann at oracle.com
Wed Jul 12 13:07:46 UTC 2017


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