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