diff options
author | Mike Klein <mtklein@chromium.org> | 2017-09-15 14:02:08 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-09-15 18:25:34 +0000 |
commit | 7c55726156a6b2bda10035188be0077848bd3ede (patch) | |
tree | 3944c8628aedd7181637c64d384fc98a09277028 /src/jumper/SkJumper_misc.h | |
parent | cb4d58766668b003fea67798027fc25d84acd059 (diff) |
centralize SI, Ctx, and load_and_inc()
We've got independent definitions of SI, LazyCtx/Ctx, and load_and_inc()
in _stages.cpp and _lowp.cpp. It's a good time to centralize them,
taking _stages.cpp's SI and load_and_inc(), and _lowp's Ctx.
SI and load_and_inc() are uninterestingly different. But using _lowp's
Ctx will let us get its prettier typed stage definitions into
_stages.cpp, but that is not not done here.
This is a pure refactor with no generated code changes.
Change-Id: I53260b0fdc71a77bf9e3ed6f3df3a2a4cbd2392b
Reviewed-on: https://skia-review.googlesource.com/47181
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/jumper/SkJumper_misc.h')
-rw-r--r-- | src/jumper/SkJumper_misc.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/jumper/SkJumper_misc.h b/src/jumper/SkJumper_misc.h index 09758fba7d..8f7ebb56ac 100644 --- a/src/jumper/SkJumper_misc.h +++ b/src/jumper/SkJumper_misc.h @@ -63,19 +63,21 @@ SI void* load_and_inc(void**& program) { #endif } -// LazyCtx doesn't do anything unless you call operator T*(), encapsulating the logic -// from above that stages without a context pointer are represented by just 1 void*. -struct LazyCtx { +// Lazily resolved on first cast. Does nothing if cast to Ctx::None. +struct Ctx { + using None = decltype(nullptr); + void* ptr; void**& program; - explicit LazyCtx(void**& p) : ptr(nullptr), program(p) {} + explicit Ctx(void**& p) : ptr(nullptr), program(p) {} template <typename T> operator T*() { if (!ptr) { ptr = load_and_inc(program); } return (T*)ptr; } + operator None() { return nullptr; } }; #endif//SkJumper_misc_DEFINED |