Mercurial > hg > truffle
diff src/share/vm/opto/graphKit.cpp @ 17776:9ab9f254cfe2
6653795: C2 intrinsic for Unsafe.getAddress performs pointer sign extension on 32-bit systems
Summary: Native pointers less than 64 bits wide should be extended as an unsigned number.
Reviewed-by: kvn, kevinw
author | poonam |
---|---|
date | Mon, 24 Mar 2014 08:43:10 -0700 |
parents | 62825ea7e51f |
children | 606acabe7b5c |
line wrap: on
line diff
--- a/src/share/vm/opto/graphKit.cpp Mon Mar 24 15:34:10 2014 -0700 +++ b/src/share/vm/opto/graphKit.cpp Mon Mar 24 08:43:10 2014 -0700 @@ -1124,6 +1124,17 @@ } return _gvn.transform( new (C) ConvI2LNode(offset)); } + +Node* GraphKit::ConvI2UL(Node* offset) { + juint offset_con = (juint) find_int_con(offset, Type::OffsetBot); + if (offset_con != (juint) Type::OffsetBot) { + return longcon((julong) offset_con); + } + Node* conv = _gvn.transform( new (C) ConvI2LNode(offset)); + Node* mask = _gvn.transform( ConLNode::make(C, (julong) max_juint) ); + return _gvn.transform( new (C) AndLNode(conv, mask) ); +} + Node* GraphKit::ConvL2I(Node* offset) { // short-circuit a common case jlong offset_con = find_long_con(offset, (jlong)Type::OffsetBot);