Bug 190503

Summary: Use currentStackPointer more
Product: WebKit Reporter: Yusuke Suzuki <ysuzuki>
Component: New BugsAssignee: Yusuke Suzuki <ysuzuki>
Status: RESOLVED FIXED    
Severity: Normal CC: benjamin, cdumez, cmarcelo, dbates, ews-watchlist, keith_miller, mark.lam, msaboff, saam, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch saam: review+

Description Yusuke Suzuki 2018-10-11 18:03:44 PDT
Use currentStackPointer more
Comment 1 Yusuke Suzuki 2018-10-11 18:04:24 PDT
Created attachment 352115 [details]
Patch
Comment 2 Saam Barati 2018-10-11 18:19:03 PDT
Comment on attachment 352115 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=352115&action=review

> Source/WTF/wtf/StackBounds.cpp:55
> +    volatile uint8_t* stackValue = bitwise_cast<uint8_t*>(currentStackPointer());

Does this work on debug builds where this is an actual function call?
Comment 3 Yusuke Suzuki 2018-10-11 18:31:58 PDT
(In reply to Saam Barati from comment #2)
> Comment on attachment 352115 [details]
> Patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=352115&action=review
> 
> > Source/WTF/wtf/StackBounds.cpp:55
> > +    volatile uint8_t* stackValue = bitwise_cast<uint8_t*>(currentStackPointer());
> 
> Does this work on debug builds where this is an actual function call?

Yeah, at least in x64, it works :)
Comment 4 Yusuke Suzuki 2018-10-11 18:33:40 PDT
Landed in https://trac.webkit.org/r237059
Comment 5 Radar WebKit Bug Importer 2018-10-11 18:34:26 PDT
<rdar://problem/45213815>
Comment 6 Mark Lam 2018-10-11 18:50:53 PDT
(In reply to Yusuke Suzuki from comment #3)
> (In reply to Saam Barati from comment #2)
> > Comment on attachment 352115 [details]
> > Patch
> > 
> > View in context:
> > https://bugs.webkit.org/attachment.cgi?id=352115&action=review
> > 
> > > Source/WTF/wtf/StackBounds.cpp:55
> > > +    volatile uint8_t* stackValue = bitwise_cast<uint8_t*>(currentStackPointer());
> > 
> > Does this work on debug builds where this is an actual function call?
> 
> Yeah, at least in x64, it works :)

Yes, currentStackPointer() is designed to work on both release and debug builds.  They work differently though: the release build version relies on it being inlined, while the debug build version relies on it not being inlined.