summaryrefslogtreecommitdiff
path: root/graphics/asymptote/runbacktrace.cc
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /graphics/asymptote/runbacktrace.cc
Initial commit
Diffstat (limited to 'graphics/asymptote/runbacktrace.cc')
-rw-r--r--graphics/asymptote/runbacktrace.cc117
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