On 10/27/17 9:37 AM, David Holmes wrote:
src/hotspot/share/c1/c1_LinearScan.cpp
ConstantIntValue((jint)0);
why is this cast needed? what causes the ambiguity? (If this was a
template I'd understand ;-) ). Also didn't you change that
constructor to take an int anyway - not that I think it should - see
below.
Yes, it caused an ambiguity. 0 matches 'int' but it doesn't match
'long' better than any pointer type. So this cast is needed.
But you changed the constructor to take an int!
class ConstantIntValue: public ScopeValue {
private:
- jint _value;
+ int _value;
public:
- ConstantIntValue(jint value) { _value = value; }
+ ConstantIntValue(int value) { _value = value; }
I changed this back to not take an int and changed c1_LinearScan.cpp to
have the (jint)0 cast and output.cp needed (jint)0 casts. 0L doesn't
work for platforms where jint is an 'int' rather than a long because
it's ambiguous with the functions that take a pointer type.
Probably better to keep the type of ConstantIntValue consistent with j
types.
Thanks,
Coleen