On 21/06/2018 10:37 PM, Thomas Stüfe wrote:
On Thu, Jun 21, 2018 at 1:27 PM, David Holmes <david.hol...@oracle.com> wrote:
On 21/06/2018 10:05 AM, Martin Buchholz wrote:

On Wed, Jun 20, 2018 at 4:03 PM, Martin Buchholz <marti...@google.com
<mailto:marti...@google.com>> wrote:

     Hi David and build-dev folk,

     After way too much build/hotspot hacking, I have a better fix:

     clang inlined os::current_stack_pointer into its caller __in the
     same translation unit___ (that could be fixed in a separate change)
     so of course in this case it didn't have to follow the ABI.  Fix is
     obvious in hindsight:

     -address os::current_stack_pointer() {
     +NOINLINE address os::current_stack_pointer() {


If y'all like the addition of NOINLINE, it should probably be added to all
of the 14 variants of os::current_stack_pointer.
Gives me a chance to try out the submit repo.


I can't help but think other platforms actually rely on it being inlined so
that it really does return the stack pointer of the method calling
os::current_stack_pointer!


But we only inline today if caller is in the same translation unit and
builds with optimization, no?

Don't know, but Martin's encountering a case where it is being inlined - is that likely to be unique for some reason?

I never assume the compiler does the obvious these days :) or that there can't be clever link-time tricks as well.

Maybe the safest thing to do is to only make a change for the clang case and leave everything else alone.

David
-----


..Thomas

David

Reply via email to