mirror of
https://github.com/janet-lang/janet
synced 2024-11-17 22:24:49 +00:00
Add some debug information to more builtin functions.
This commit is contained in:
parent
2a87dada47
commit
f0f5af24c2
@ -246,7 +246,7 @@ value."
|
||||
:let (tuple 'let verb (doone (+ i 2)))
|
||||
:when (tuple 'if verb (doone (+ i 2)))
|
||||
(error ("unexpected loop predicate: " verb)))
|
||||
(switch
|
||||
(switch
|
||||
verb
|
||||
:range (do
|
||||
(def [start end _inc] (ast.unwrap1 object))
|
||||
@ -293,7 +293,7 @@ value."
|
||||
(def $accum (gensym "accum"))
|
||||
(tuple 'do
|
||||
(tuple 'def $accum @[])
|
||||
(tuple 'loop head
|
||||
(tuple 'loop head
|
||||
(tuple array.push $accum
|
||||
(tuple.prepend body 'do)))
|
||||
$accum))
|
||||
@ -734,7 +734,7 @@ in the same manner, and so on. Useful for expressing pipelines of data."
|
||||
"Get the number of occurences of each value in a indexed structure."
|
||||
[ind]
|
||||
(def freqs @{})
|
||||
(loop
|
||||
(loop
|
||||
[x :in ind]
|
||||
(def n (get freqs x))
|
||||
(put freqs x (if n (+ 1 n) 1)))
|
||||
@ -1016,8 +1016,9 @@ onvalue."
|
||||
} :in st]
|
||||
(file.write stdout " in")
|
||||
(when c (file.write stdout " cfunction"))
|
||||
(when name (file.write stdout (string " " name)))
|
||||
(when func (file.write stdout (string " " func)))
|
||||
(if name
|
||||
(file.write stdout (string " " name))
|
||||
(when func (file.write stdout (string " " func))))
|
||||
(when pc (file.write stdout (string " (pc=" pc ")")))
|
||||
(when tail (file.write stdout " (tailcall)"))
|
||||
(file.write stdout "\n"))))
|
||||
@ -1060,7 +1061,7 @@ environment is needed, use run-context."
|
||||
(def last (get parts (- (length parts) 1)))
|
||||
(def normname (string.replace-all "." "/" path))
|
||||
(array.push
|
||||
(map (fn [x]
|
||||
(map (fn [x]
|
||||
(def y (string.replace "??" last x))
|
||||
(string.replace "?" normname y))
|
||||
paths)
|
||||
@ -1104,7 +1105,7 @@ returned from compiling and running the file."
|
||||
(put cache path newenv)
|
||||
(put loading path true)
|
||||
(def f (find-mod path))
|
||||
(if f
|
||||
(if f
|
||||
(do
|
||||
# Normal dst module
|
||||
(defn chunks [buf] (file.read f 1024 buf))
|
||||
@ -1115,7 +1116,7 @@ returned from compiling and running the file."
|
||||
(file.close f)
|
||||
(put loading path nil)
|
||||
newenv)
|
||||
(do
|
||||
(do
|
||||
# Try native module
|
||||
(def n (find-native path))
|
||||
(if (not n)
|
||||
|
@ -983,6 +983,7 @@ DstCompileResult dst_compile(Dst source, DstTable *env, int flags) {
|
||||
|
||||
if (c.result.status == DST_COMPILE_OK) {
|
||||
DstFuncDef *def = dstc_pop_funcdef(&c);
|
||||
def->name = dst_cstring("[thunk]");
|
||||
c.result.funcdef = def;
|
||||
}
|
||||
|
||||
|
@ -60,6 +60,7 @@ static const DstReg cfuns[] = {
|
||||
|
||||
/* Utility for inline assembly */
|
||||
static DstFunction *dst_quick_asm(
|
||||
const char *name,
|
||||
int32_t arity,
|
||||
int varargs,
|
||||
int32_t slots,
|
||||
@ -71,6 +72,7 @@ static DstFunction *dst_quick_asm(
|
||||
def->slotcount = slots;
|
||||
def->bytecode = malloc(bytecode_size);
|
||||
def->bytecode_length = bytecode_size / sizeof(uint32_t);
|
||||
def->name = dst_cstring(name);
|
||||
if (!def->bytecode) {
|
||||
DST_OUT_OF_MEMORY;
|
||||
}
|
||||
@ -105,11 +107,11 @@ DstTable *dst_stl_env(int flags) {
|
||||
/* Load main functions */
|
||||
dst_env_cfuns(env, cfuns);
|
||||
|
||||
dst_env_def(env, "debug", dst_wrap_function(dst_quick_asm(0, 0, 1, debug_asm, sizeof(debug_asm))));
|
||||
dst_env_def(env, "error", dst_wrap_function(dst_quick_asm(1, 0, 1, error_asm, sizeof(error_asm))));
|
||||
dst_env_def(env, "apply1", dst_wrap_function(dst_quick_asm(2, 0, 2, apply_asm, sizeof(apply_asm))));
|
||||
dst_env_def(env, "yield", dst_wrap_function(dst_quick_asm(1, 0, 2, yield_asm, sizeof(yield_asm))));
|
||||
dst_env_def(env, "resume", dst_wrap_function(dst_quick_asm(2, 0, 2, resume_asm, sizeof(resume_asm))));
|
||||
dst_env_def(env, "debug", dst_wrap_function(dst_quick_asm("debug", 0, 0, 1, debug_asm, sizeof(debug_asm))));
|
||||
dst_env_def(env, "error", dst_wrap_function(dst_quick_asm("error", 1, 0, 1, error_asm, sizeof(error_asm))));
|
||||
dst_env_def(env, "apply1", dst_wrap_function(dst_quick_asm("apply1", 2, 0, 2, apply_asm, sizeof(apply_asm))));
|
||||
dst_env_def(env, "yield", dst_wrap_function(dst_quick_asm("yield", 1, 0, 2, yield_asm, sizeof(yield_asm))));
|
||||
dst_env_def(env, "resume", dst_wrap_function(dst_quick_asm("resume", 2, 0, 2, resume_asm, sizeof(resume_asm))));
|
||||
|
||||
dst_env_def(env, "VERSION", dst_cstringv(DST_VERSION));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user