| Index: gm/gm.h
|
| diff --git a/gm/gm.h b/gm/gm.h
|
| index e00a650f3352b241b6bccc628f9cda6068028a58..6fe59c2726ad6353ff6a8014bd0d90bb3e1d8235 100644
|
| --- a/gm/gm.h
|
| +++ b/gm/gm.h
|
| @@ -34,10 +34,20 @@ struct GrContextOptions;
|
| DEF_SIMPLE_GM_BG_NAME(NAME, CANVAS, W, H, SK_ColorWHITE, SkString(#NAME))
|
| #define DEF_SIMPLE_GM_BG(NAME, CANVAS, W, H, BGCOLOR)\
|
| DEF_SIMPLE_GM_BG_NAME(NAME, CANVAS, W, H, BGCOLOR, SkString(#NAME))
|
| -#define DEF_SIMPLE_GM_BG_NAME(NAME, CANVAS, W, H, BGCOLOR, NAME_STR) \
|
| - static void SK_MACRO_CONCAT(NAME, _GM)(SkCanvas * CANVAS); \
|
| - DEF_GM(return new skiagm::SimpleGM(NAME_STR, SK_MACRO_CONCAT(NAME, _GM), \
|
| - SkISize::Make(W, H), BGCOLOR);) \
|
| +
|
| +// Disable tail calls in Simple GM functions to make sure they appear on any stack trace.
|
| +#if defined(__clang__)
|
| + #define DISABLE_TAIL_CALLS __attribute__((optnone))
|
| +#elif defined(__GNUC__)
|
| + #define DISABLE_TAIL_CALLS __attribute__((optimize("-O1")))
|
| +#else
|
| + #define DISABLE_TAIL_CALLS /*TODO: MSVC*/
|
| +#endif
|
| +
|
| +#define DEF_SIMPLE_GM_BG_NAME(NAME, CANVAS, W, H, BGCOLOR, NAME_STR) \
|
| + static void DISABLE_TAIL_CALLS SK_MACRO_CONCAT(NAME, _GM)(SkCanvas * CANVAS); \
|
| + DEF_GM(return new skiagm::SimpleGM(NAME_STR, SK_MACRO_CONCAT(NAME, _GM), \
|
| + SkISize::Make(W, H), BGCOLOR);) \
|
| void SK_MACRO_CONCAT(NAME, _GM)(SkCanvas * CANVAS)
|
|
|
| namespace skiagm {
|
|
|