[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-hotspot-dev
Subject: Re: RFR: 8074457: Remove the non-Zero CPP Interpreter
From: Christian Thalinger <christian.thalinger () oracle ! com>
Date: 2015-12-22 23:35:58
Message-ID: 288AA4F4-15C9-44FC-8845-AB7B34A0F675 () oracle ! com
[Download RAW message or body]
> On Dec 22, 2015, at 5:23 AM, Coleen Phillimore <coleen.phillimore@oracle.com> \
> wrote:
>
>
> On 12/22/15 8:48 AM, Bertrand Delsart wrote:
> > Hi Coleen,
> >
> > Overall looks good. Thanks for the cleanup.
> >
> > A few minor issues. No showstoppers. Feel free to ignore them or handle them \
> > later.
> > First issue in src/share/vm/interpreter/templateInterpreterGenerator.hpp, for \
> > instance for these lines :
> > #ifdef TARGET_ARCH_aarch64
> > - # include "templateInterpreterGenerator_aarch64.hpp"
> > - #endif
> > + void bang_stack_shadow_pages(bool native_call);
> > + void generate_transcendental_entry(AbstractInterpreter::MethodKind kind, int \
> > fpargs); + #endif // TARGET_ARCH_aarch64
> >
> > Is there a reason to remove a CPU dependent file, which could be customized by \
> > any porting group, and instead directly add port-dependent methods in a shared \
> > file ?
> > Similar problem for AbstractInterpreter::expr_offset_in_bytes, which was defined \
> > in CPU dependent files but is now defined in abstractInterpreter.hpp, requiring a \
> > PPC and SPARC ifdef. Should we instead define new abstractInterpreter_<cpu>.hpp \
> > files, including the CPU specific part that was in interpreter_<cpu>.hpp ?
>
> Hi Bertrand, I was hoping for some comments on these changes in particular and I \
> should have explained my reasoning in the RFR. I decided that a couple of ifdefs \
> in the shared code were better than the cpu dependent inclusion of header files. \
> Mostly because the cpu dependent header files had a lot of duplicated content and \
> it was difficult to find exactly what the differences were between the cpu \
> implementations. Also, it would make the interpreter easier to work on if the \
> interfaces were similar (you can change the same named function in all the cpu \
> files) and this is a mechanism for doing so.
> The example with expr_offset_in_bytes is the annoying difference in sparc, and now \
> PPC, where the TOS points one past Lesp that we filed a cleanup bug for a long time \
> ago. It would be nice not to have this difference!
> Lastly, I also dislike #include in the declaration of a class and so do many IDEs.
Yes, these includes are nasty. I wish we would use inheritance for non-performance \
critical things like these.
>
> Thank you for reviewing the code.
> Coleen
>
>
> >
> > Regards,
> >
> > Bertrand.
> >
> >
> >
> > On 18/12/2015 14:49, Coleen Phillimore wrote:
> > > Summary: Remove cppInterpreter assembly files and reorganize
> > > InterpreterGenerator includes
> > >
> > > This change is mostly removal and removing the InterpreterGenerator
> > > class and making class Interpreter a typedef. I removed conditional
> > > includes from interpreter header files in favor of small sections with
> > > ifdefs. Many interpreter functions are still in the wrong cpp files
> > > but I want to leave that for a follow on, to not overwhelm reviewers.
> > > This is Large but not difficult to review. There is also more purging
> > > that can be done with Zero, but I also want to leave that as a follow on
> > > RFE.
> > >
> > > This has been tested with RBT (most of runtime tests on x86 and sparc),
> > > JPRT and builds zero with debug/fastdebug and product.
> > >
> > > There are changes and deletions to ppc and aarch64. Please let me know
> > > if you want to test with this patch or leave for follow on fixes.
> > >
> > > open webrev at http://cr.openjdk.java.net/~coleenp/8074457/
> > > bug link https://bugs.openjdk.java.net/browse/JDK-8074457
> > >
> > > Thanks,
> > > Coleen
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic