diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /graphics/asymptote/runbacktrace.cc |
Initial commit
Diffstat (limited to 'graphics/asymptote/runbacktrace.cc')
-rw-r--r-- | graphics/asymptote/runbacktrace.cc | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/graphics/asymptote/runbacktrace.cc b/graphics/asymptote/runbacktrace.cc new file mode 100644 index 0000000000..002debf8f6 --- /dev/null +++ b/graphics/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 |