RFR: 8013393: Merge templateTable_x86 32 and 64 bit files into one file.
Dean Long
dean.long at oracle.com
Mon Mar 2 18:37:50 UTC 2015
Hi Coleen. Let's say the _32 file contains
32
x
y
z
int
and the _64 file contains
64
x
y
z
long
Then "diff -DLP64 _32 _64" will give:
#ifndef LP64
32
#else /* LP64 */
64
#endif /* LP64 */
x
y
z
#ifndef LP64
int
#else /* LP64 */
long
#endif /* LP64 */
In other words, an automatic merge of the two files, with the
differences in #ifdefs.
thanks,
dl
On 3/2/2015 7:01 AM, Coleen Phillimore wrote:
>
> Hi Dean,
> I'm not sure how to do this diff that you're suggesting. I don't
> think an intermediate changeset makes sense either. The bytecodes are
> pretty well tested with our normal testing so increasing this to more
> than one change, just increases testing and putback overhead.
>
> I've looked at this several times and it's not very difficult to tell
> what's done and whether it's correct. The diffs do not span a lot of
> code (at most 5 lines at a time), so there are no new whole functions
> to read that are new code.
>
> I'm still really don't understand what kind of diff you're requesting
> that would make it easier. Can you provide an example?
>
> thanks,
> Coleen
>
> On 2/27/15, 6:13 PM, Dean Long wrote:
>> Hi Coleen. I believe I understand what Max did, and that it was not
>> an automated merge,
>> which to me says that properly reviewing the change requires looking
>> at all 2851
>> changed lines and mentally deciding if the result is equivalent to
>> the original.
>>
>> What I was suggesting was essentially two things. First, an aid to
>> the reviewer,
>> and second, a way to reduce risk. In the end it's up to the
>> reviewers. If they
>> prefer to see the changes in a single diff, they can compare a
>> single-file
>> automated merge with the single-file result of Max's merge. It
>> doesn't matter
>> if the reviewer does it or Max does it as a convenience. Regarding risk,
>> if the reviewers aren't comfortable deciding that all 2851 are correct,
>> the changes could be staged into several pieces, and the first piece
>> could
>> be an automated merge that would be cleaned up later, on the assumption
>> that an automated merge could be considered trivially correct and
>> therefore
>> not risky. I hope that clears up my somewhat terse comments below.
>>
>> dl
>>
>> On 2/27/2015 12:06 PM, Coleen Phillimore wrote:
>>>
>>> Dean, This merge wasn't automatic in any way, so I don't think what
>>> you're proposing makes sense. I think if you look at the webrev
>>> you'll see what Max has done.
>>> Thanks,
>>> Coleen
>>>
>>> On 2/27/15, 1:39 PM, Dean Long wrote:
>>>> Hi Max. You could do an automatic merge using something like "diff
>>>> -w -D LP64 templateTable_x86_32.cpp and templateTable_x86_64.cpp",
>>>> then compare
>>>> your improvements to that. That way all the changes would show up in
>>>> a single diff. Or you could even check in the automatic merge
>>>> first, to reduce
>>>> risk, then break up the improvements into smaller pieces.
>>>>
>>>> dl
>>>>
>>>> On 2/27/2015 9:36 AM, Max Ockner wrote:
>>>>> Hello all,
>>>>> Please review this change which involves merging 32 and 64 bit
>>>>> interpreter files.
>>>>>
>>>>> Bug ID: 8013393
>>>>> Webrev: cr.openjdk.java.net/~coleenp/8013393
>>>>>
>>>>> Summary: templateTable_x86_64.cpp and templateTable_x86_32.cpp
>>>>> have been merged into one file*. These files originally shared
>>>>> thousands of lines of duplicate code.
>>>>> There were also many nearly identical sections of code which
>>>>> differed only in register usage (example: rsi vs. r13) or in the
>>>>> usage of nearly identical functions (example: movptr vs. movq/movl).
>>>>> Given that (1) new bytecodes could be added soon, and (2) these
>>>>> files have been tormenting Coleen for years, this change seems
>>>>> overdue.
>>>>>
>>>>> *There are currently two files. The updated templateTable_x86.cpp
>>>>> is copied into both templateTable_x86_32.cpp and
>>>>> templateTable_x86_64.cpp to make it easier to review (so the diff
>>>>> is not the entire file). This will be changed back to one file
>>>>> after review.
>>>>>
>>>>> For functions that could be merged, one copy was kept. In some
>>>>> cases, files were merged by factoring out small differences such
>>>>> as register usage (example: rbcp equals r13 or rsi depending on
>>>>> the platform). For functions that could not be merged, the 32 and
>>>>> 64 bit versions are adjacent and are defined conditionally using
>>>>> #ifdef based on the platform.
>>>>>
>>>>> There are still improvements to be made, but they are small and
>>>>> can be filed seperately.
>>>>>
>>>>> Tested with:
>>>>> JPRT
>>>>> UTE nsk.jvmti.testlist
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Max Ockner
>>>>
>>>
>>
>
More information about the hotspot-dev
mailing list