RFR (XS): 8044071: Print format/argument warnings
Christian Thalinger
christian.thalinger at oracle.com
Fri May 30 03:06:09 UTC 2014
On May 28, 2014, at 6:03 PM, Mikael Vidstedt <mikael.vidstedt at oracle.com> wrote:
>
> I think you're right. The only use appears to be in the unit test code itself. I just tried #if 0'ing out everything related to NativeMovRegMemPatching and it builds just fine.
>
> I filed an RFE to cover the removal of the class: https://bugs.openjdk.java.net/browse/JDK-8044242
Thanks.
>
> Cheers,
> Mikael
>
> On 2014-05-28 16:15, Dean Long wrote:
>> NativeMovRegMemPatching might be dead code. I can't find where it's used.
>>
>> dl
>>
>> On 5/28/2014 12:48 PM, Christian Thalinger wrote:
>>> This made me curious because I was expecting a cast too:
>>> void NativeMovRegMemPatching::print() {
>>> if (is_immediate()) {
>>> ! tty->print_cr(INTPTR_FORMAT ": mov reg, [reg + %x]", instruction_address(), offset());
>>> ! tty->print_cr(INTPTR_FORMAT ": mov reg, [reg + %d]", p2i(instruction_address()), offset());
>>> Turns out that NativeMovConstRegPatching::data() returns an int:
>>>
>>> int NativeMovConstRegPatching::data() const {
>>> #ifdef _LP64
>>> return data64(addr_at(sethi_offset), long_at(add_offset));
>>> #else
>>> return data32(long_at(sethi_offset), long_at(add_offset));
>>> #endif
>>> }
>>>
>>> but on 64-bit we truncate an intptr_t:
>>>
>>> static intptr_t data64( address pc, int arith_insn ) {
>>>
>>> That’s odd because in NativeMovRegMem we use intptr_t for offset exactly because of the non-immediate case.
>>>
>>> On May 27, 2014, at 3:22 PM, Mikael Vidstedt <mikael.vidstedt at oracle.com> wrote:
>>>
>>>> Please review the below change which addresses a number of print format/argument mismatches when compiling linux/sparc using gcc.
>>>>
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8044071
>>>> Webrev: http://cr.openjdk.java.net/~mikael/webrevs/8044071/webrev.00/webrev/
>>>>
>>>> Most of these are straightforward changes to INTPTR_FORMAT & adding p2i. A couple of changes worth bringing up:
>>>>
>>>> * nativeInst_sparc.cpp
>>>>
>>>> I changed the format of the offset in mov related prints (two occurrences) to %d, since it's really a signed decimal int. This will hopefully reduce confusion when the offset is negative, where previously it would have looked like a relatively large positive offset.
>>>>
>>>> * macroAssembler_sparc.cpp
>>>>
>>>> The new code is in line with other similar patterns in the same file, but the ugly cast should IMHO really be rewritten to cast through a union. RFE?
>>>>
>>>> Cheers,
>>>> Mikael
>>>>
>>
>
More information about the hotspot-dev
mailing list