aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkLazyFnPtr.h
Commit message (Collapse)AuthorAge
* Clean up SkDynamicAnnotations.Gravatar mtklein2015-03-12
| | | | | | | | | | | | | | | | Unprotected reads -> relaxed reads. Unprotected write -> relaxed write. The only unprotected write we had was in SkTraceEvent, which it looks like we nabbed from Chrome at some point and changed only to silence TSAN. Chrome's version uses AtomicWord / NoBarrier_Load / NoBarrier_Store, which boils down to the same as here, intptr_t / relaxed load / relaxed store. This leaves one place where we're lying a bit to TSAN, in include/core/SkLazyPtr.h where we're doing a data-dependent consume load. We're telling TSAN it's consume, but telling any other compiler to compile it as relaxed, given how they all upgrade consume to acquire. This eliminates a barrier for us on ARM. How do you guys deal with this? Just use a consume memory order, take the hit, and hope compilers get smarter one day? BUG=chromium:465721 No public API changes. TBR=reed@google.com Review URL: https://codereview.chromium.org/996763002
* Tinker with SkLazyFnPtr a bit.Gravatar commit-bot@chromium.org2014-05-29
| | | | | | | | | | | | | | | | | | | | | | | | | I moved the choice function from a get() arg to a template parameter. I think this removes some of the overemphasis on "choose" from the call site, making it a bit more clear it's normally very cheap. It's also now more in line with what I'm thinking now for the general SkLazyPtr<T>, which needs a "create" parameter just like SkLazyFnPtr's "choose", but also a "destroy" that it might use both in .get() but also at process exit. That "destroy" needs to be made part of the type to be called at exit, so might as well make "create" and "choose" template parameters too so it's all consistent. Also, add (C). BUG=skia: R=bungeman@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/298393005 git-svn-id: http://skia.googlecode.com/svn/trunk@14971 2bbb7eff-a529-9590-31e7-b0007b416f81
* Spin off just SkLazyFnPtr from 305513002.Gravatar commit-bot@chromium.org2014-05-28
| | | | | | | | | | | | | | | | | The memory barrier in SkOnce is a perf regression for sk_mem{set,cpy} in SkUtils on ARM. We can do a lot better for function pointers. BUG=skia: Committed: http://code.google.com/p/skia/source/detail?r=14929 R=bungeman@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/305753002 git-svn-id: http://skia.googlecode.com/svn/trunk@14938 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert of Spin off just SkLazyFnPtr from 305513002. ↵Gravatar commit-bot@chromium.org2014-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/305753002/) Reason for revert: depends on bad cl Original issue's description: > Spin off just SkLazyFnPtr from 305513002. > > The memory barrier in SkOnce is a perf regression for sk_mem{set,cpy} in > SkUtils on ARM. We can do a lot better for function pointers. > > BUG=skia: > > Committed: http://code.google.com/p/skia/source/detail?r=14929 R=bungeman@google.com, mtklein@chromium.org TBR=bungeman@google.com, mtklein@chromium.org NOTREECHECKS=true NOTRY=true BUG=skia: Author: mtklein@google.com Review URL: https://codereview.chromium.org/300843012 git-svn-id: http://skia.googlecode.com/svn/trunk@14933 2bbb7eff-a529-9590-31e7-b0007b416f81
* Spin off just SkLazyFnPtr from 305513002.Gravatar commit-bot@chromium.org2014-05-28
The memory barrier in SkOnce is a perf regression for sk_mem{set,cpy} in SkUtils on ARM. We can do a lot better for function pointers. BUG=skia: R=bungeman@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/305753002 git-svn-id: http://skia.googlecode.com/svn/trunk@14929 2bbb7eff-a529-9590-31e7-b0007b416f81