diff options
author | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
commit | ad547a6b5986815fda458221149728d9d9ab1d87 (patch) | |
tree | 16296910eb3eca724371474ea9aea3994dc69614 /Build/source/utils/asymptote/runbacktrace.cc | |
parent | 947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (diff) |
restore Build,TODO from r57911
git-svn-id: svn://tug.org/texlive/trunk@57915 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/runbacktrace.cc')
-rw-r--r-- | Build/source/utils/asymptote/runbacktrace.cc | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/runbacktrace.cc b/Build/source/utils/asymptote/runbacktrace.cc new file mode 100644 index 00000000000..002debf8f60 --- /dev/null +++ b/Build/source/utils/asymptote/runbacktrace.cc @@ -0,0 +1,117 @@ +/***** Autogenerated from runbacktrace.in; changes will be overwritten *****/ + +#line 1 "runtimebase.in" +/***** + * runtimebase.in + * Andy Hammerlindl 2009/07/28 + * + * Common declarations needed for all code-generating .in files. + * + *****/ + + +#line 1 "runbacktrace.in" +/***** + * backtrace.in + * Andy Hammerlindl 2009/07/28 + * + * Runtime functions for printing garbage collector backtraces. + * + *****/ + +#line 1 "runtimebase.in" +#include "stack.h" +#include "types.h" +#include "builtin.h" +#include "entry.h" +#include "errormsg.h" +#include "array.h" +#include "triple.h" +#include "callable.h" +#include "opsymbols.h" + +using vm::stack; +using vm::error; +using vm::array; +using vm::read; +using vm::callable; +using types::formal; +using types::function; +using camp::triple; + +#define PRIMITIVE(name,Name,asyName) using types::prim##Name; +#include <primitives.h> +#undef PRIMITIVE + +typedef double real; + +void unused(void *); + +namespace run { +array *copyArray(array *a); +array *copyArray2(array *a); +array *copyArray3(array *a); + +double *copyTripleArray2Components(array *a, size_t &N, + GCPlacement placement=NoGC); +triple *copyTripleArray2C(array *a, size_t &N, + GCPlacement placement=NoGC); +} + +function *realRealFunction(); + +#define CURRENTPEN processData().currentpen + +#line 11 "runbacktrace.in" +// No extra code for .cc file. + +// Autogenerated routines: + + + +#ifndef NOSYM +#include "runbacktrace.symbols.h" + +#endif +namespace run { +#line 16 "runbacktrace.in" +// void generate_random_backtrace(); +void gen_runbacktrace0(stack *) +{ +#line 17 "runbacktrace.in" +#if defined(USEGC) && defined(GC_DEBUG) && defined(GC_BACKTRACE) + GC_generate_random_backtrace(); +#else + error("generate_random_backtrace() requires ./configure --enable-gc-debug"); +#endif +} + +#line 25 "runbacktrace.in" +// void print_random_addresses(Int n=1); +void gen_runbacktrace1(stack *Stack) +{ + Int n=vm::pop<Int>(Stack,1); +#line 26 "runbacktrace.in" +#if defined(USEGC) && defined(GC_DEBUG) && defined(GC_BACKTRACE) + GC_gcollect(); + for (Int i=0; i < n; ++i) + GC_debug_print_heap_obj_proc(GC_base(GC_generate_random_valid_address())); +#else + error("print_random_addresses() requires ./configure --enable-gc-debug"); + unused(&n); // Avoid unused variable warning message. +#endif +} + +} // namespace run + +namespace trans { + +void gen_runbacktrace_venv(venv &ve) +{ +#line 16 "runbacktrace.in" + addFunc(ve, run::gen_runbacktrace0, primVoid(), SYM(generate_random_backtrace)); +#line 25 "runbacktrace.in" + addFunc(ve, run::gen_runbacktrace1, primVoid(), SYM(print_random_addresses), formal(primInt(), SYM(n), true, false)); +} + +} // namespace trans |