code wiki / (root) / nx_js_eval.nx

nx_js_eval.nx

buildroot/runtime/nx_js_eval.nx

262144 B4641 linesdepth 6pulls 21 transitivereach 141 importersview sourcekind librarytopic js
docsdependenciesstructsconstsfunctions

about

nx_js_eval.nx -- R-JS-EVAL (WB-JS-001 rung 2): the ECMAScript tree-walking EVALUATOR with a variable ENVIRONMENT (scope chain) + USER FUNCTIONS, riding the gated parser (nx_js_parse) per the no-floating law. Shape = recursive tree-walk over the parser's flat node arena. Founds R-JS-RUNTIME (objects/builtins) and the DOM bindings that render JS-walled pages (google image results are JS-walled). VALUE = 2 i64 slots [type, payload]: VAL_UNDEF / VAL_NULL ; VAL_BOOL: 0|1 ; VAL_NUM: integer ; VAL_STR: pointer (as i64) to a string-heap RECORD [len:i64][bytes...] -- so '+' can produce real, comparable byte strings (concat) ; VAL_FUNC: function-decl node index (params+body live in the AST; the call frame parents the global env). ERROR is signalled by an eval return code of 1 (NOT a tag): a ReferenceError -- reading or assigning an UNDECLARED name -- is an ERROR, never a silent undefined (`y+1` with y undeclared yields an error result, matching real JS "y is not defined"). RUNG-2 (ALL gated): expressions: literals (number/string/bool/null), identifier lookup with ReferenceError, unary ! - + typeof, binary + - * / % (integer; + does STRING CONCAT when either operand is a string, coercing the other), comparison < <= > >= (numeric; AND byte-lexicographic when BOTH operands are strings: 'a'<'b', 'apple'<'banana', 'ab'<'abc'), equality == != === !== (strings compared by bytes), logical && || SHORT-CIRCUIT (returns the deciding OPERAND value = real JS), assignment (incl chained a=b=c -- updates the DECLARING scope, never auto-creates a global). statements: var/let/const decl, assignment, expr stmt, { blocks }, if/else, while (iteration cap), return. FUNCTIONS: `function f(params){body}` is a VAL_FUNC; CALL f(args) opens a fresh call env (parent = global env -> globals + recursion resolve), binds params (a param SHADOWS an outer same-named var), runs the body, and RETURN unwinds (completion status 2) out of any nested if/while to the call boundary. Recursion works (fact(5)=120, fib(10)=55). Function declarations are HOISTED both at the TOP LEVEL (js_run_source) and INTRA-BODY (js_call_core pre-pass over the body block's DIRECT children) -- so a nested `function inner(){}` is callable BEFORE its textual position within the same function body (rung 7). Decls inside inner blocks (if/for) are bound when reached, not hoisted across block boundaries (real-JS `var`- style function hoisting to the enclosing function scope is a NAMED OPEN -- only the body's DIRECT children are pre-bound). RUNG-6 (R-JS-CLOSURE, NOW DONE + gated): FIRST-CLASS FUNCTIONS with PROPER LEXICAL

dependencies 11 imports · 57 importers

nx_js_parse.nx nx_itoa_lib.nx nx_dom_query.nx nx_html_tokenizer.nx nx_html_entities.nx nx_js_f64.nx nx_f64_sqrt.nx _pe_f64pow.nx nx_domtree.nx nx_json.nx nx_js_eval.nx nishi.nx nx_browser.nx nx_browser_js_census.nx nx_bulk_index.nx nx_dcl_test.nx nx_ext_test.nx nx_fn7_test.nx nx_fn7b_test.nx nx_gcscope_test.nx nx_js_bom_gate.nx

diagram shows first 10 each side; +1 more imports, +47 more importers in the complete lists below.

imports: nx_js_parse.nxnx_itoa_lib.nxnx_dom_query.nxnx_html_tokenizer.nxnx_html_entities.nxnx_js_f64.nxnx_f64_sqrt.nx_pe_f64pow.nxnx_domtree.nxnx_json.nxnx_rxfull.nx

imported by: nishi.nxnx_browser.nxnx_browser_js_census.nxnx_bulk_index.nxnx_dcl_test.nxnx_ext_test.nxnx_fn7_test.nxnx_fn7b_test.nxnx_gcscope_test.nxnx_js_bom_gate.nxnx_js_bundle_probe.nxnx_js_conformance.nxnx_js_dom_demo.nxnx_js_es_census.nxnx_js_event_loop_gate.nxnx_js_extends_gate.nxnx_js_fetch_gate.nxnx_js_fuel_gate.nxnx_js_headless_render.nxnx_js_headless_render_gate.nxnx_js_hydrate_index_gate.nxnx_js_pending_fetch_gate.nxnx_js_promise_gate.nxnx_js_regex_gate.nxnx_js_render_emit.nxnx_js_render_gate.nxnx_js_run_demo.nxnx_js_speed_bench.nxnx_js_spread_gate.nxnx_js_this_test.nxnx_js_unicode_probe.nxnx_js_vm.nxnx_js_vm_bench.nxnx_js_xhr_gate.nxnx_js_ytsig_gate.nxnx_jsfuel_probe.nxnx_media_jsexec.nxnx_media_jsexec_gate.nxnx_media_multiround_gate.nxnx_multiround_test.nxnx_obj_test.nxnx_parse_probe.nxnx_scope_test.nxnx_sort_test.nxnx_surrogate_diag.nxnx_surrogate_satisfy_gate.nxnx_ui_exec_gate.nxnx_ui_exec_intent_gate.nxnx_umd_test.nxnx_video_sniff.nxnx_video_sniff_api_gate.nxnx_video_sniff_gate.nxnx_video_sniff_guard_gate.nxnx_video_sniff_page_gate.nxnx_video_sniff_wire_gate.nxnx_web_crawl_step.nxnx_yt_nsolve.nx

structs

none

consts

164const EV_ARENA_CHUNK: i64 = 1048576 // 256 chunks = 1 GiB ceiling at the raised fuel
188const VAL_UNDEF: i64 = 0
189const VAL_NULL: i64 = 1
190const VAL_BOOL: i64 = 2
191const VAL_NUM: i64 = 3
192const VAL_STR: i64 = 4
193const VAL_FUNC: i64 = 5
194const VAL_OBJECT: i64 = 6 // payload = ptr(as i64) to an object record (property table)
195const VAL_ARRAY: i64 = 7 // payload = ptr(as i64) to an array record (length + cells)
197const VAL_NATIVE: i64 = 8 // payload = a builtin id (BI_*). A native function value.
198const VAL_GLOBALNS: i64 = 9 // payload = a namespace id (NS_*). The Math/Object/console/JSON globals.
199const VAL_FLOAT: i64 = 10 // payload = an f64 BIT-PATTERN (software-IEEE). A JS Number with a fraction.
200const VAL_REGEX: i64 = 15 // payload = ptr to a regex record [*Regex(nx_rxfull), patptr, patlen, flagbits] (moved up: read before its old decl)
201const VAL_PROMISE: i64 = 11 // payload = ptr(as i64) to a promise record (moved up: forward-const fix)
202const VAL_RESOLVE: i64 = 12 // internal handler value: promise ptr to FULFILL (moved up: forward-const fix)
203const VAL_REJECT: i64 = 13 // internal handler value: promise ptr to REJECT (moved up: forward-const fix)
204const VAL_RESPONSE: i64 = 14 // fetch Response record tag (moved up: forward-const fix)
207const NS_MATH: i64 = 1
208const NS_OBJECT: i64 = 2
209const NS_CONSOLE: i64 = 3
210const NS_JSON: i64 = 4
211const NS_DOCUMENT: i64 = 5 // the `document` host global (DOM binding)
236const BI_STR_CHARAT: i64 = 1
237const BI_STR_INDEXOF: i64 = 2
238const BI_STR_SLICE: i64 = 3
239const BI_STR_UPPER: i64 = 4
240const BI_STR_LOWER: i64 = 5
241const BI_STR_INCLUDES:i64 = 6
242const BI_STR_SEARCH: i64 = 145 // str.search(re) -> match index or -1
243const BI_RE_TEST: i64 = 146 // re.test(str) -> bool (unique in js_native_apply; NOT 103/110-range)
244const BI_STR_MATCH: i64 = 147 // str.match(re) -> array (g: full matches; else [full,g1,..]) or null
245const BI_STR_REPLACE: i64 = 148 // str.replace(re,repl) -> string (g: all; $& $1..$9 $$ substitution)
246const BI_REGEX_CTOR: i64 = 149 // new RegExp(pat,flags) / RegExp(pat,flags) -> a VAL_REGEX
247const BI_STR_SPLIT: i64 = 150 // str.split(re) -> array of pieces
248const BI_RE_EXEC: i64 = 151 // re.exec(str) -> [full,g1,..] or null; g-flag advances re record's lastIndex (slot 4)
249const BI_STR_CHARCODEAT: i64 = 152 // "s".charCodeAt(i) -> byte value (ASCII code unit); OOR -> NaN
250const BI_STR_FROMCHARCODE: i64 = 153 // String.fromCharCode(a,b,..) -> string (static on the String native)
251const BI_PARSEINT: i64 = 154 // parseInt(str, radix?) -> int (leading-ws/sign/prefix-digits; none -> NaN)
252const BI_STR_SUBSTRING: i64 = 155 // s.substring(a,b?) -> clamp+swap slice
253const BI_STR_SUBSTR: i64 = 156 // s.substr(a,len?) -> start+length slice
255const BI_ARR_PUSH: i64 = 10
256const BI_ARR_POP: i64 = 11
257const BI_ARR_INDEXOF: i64 = 12
258const BI_ARR_JOIN: i64 = 13
259const BI_ARR_SLICE: i64 = 14
260const BI_ARR_REVERSE: i64 = 15 // arr.reverse() -- in-place, returns the array (YouTube sig transform)
261const BI_ARR_SPLICE: i64 = 16 // arr.splice(start,deleteCount,...items) -- mutates, returns removed (YouTube sig transform)
262const BI_ARR_SORT: i64 = 17 // arr.sort([cmp]) -- STABLE in-place sort (Sizzle sortStable needs stability); cmp is a user closure
263const BI_ARR_SHIFT: i64 = 18 // arr.shift() -- remove+return arr[0], shift rest down (jQuery Callbacks/queue)
264const BI_ARR_UNSHIFT: i64 = 19 // arr.unshift(...items) -- prepend items, return new length
265const BI_STUB_NULL: i64 = 200 // headless element-stub method -> null (getAttribute/closest/querySelector)
266const BI_STUB_RETARG: i64 = 201 // headless element-stub method -> arg0 (appendChild/insertBefore are chainable)
267const BI_EL_CLONE: i64 = 202 // element-stub cloneNode -> a fresh element stub
268const BI_STUB_EMPTYARR: i64 = 203 // -> a fresh empty array (getElementsByTagName/querySelectorAll)
269const BI_STUB_FALSE: i64 = 204 // -> false (hasAttribute/contains/matches)
270const BI_EL_CLONE_TREE: i64 = 205 // tree Element.cloneNode(deep) -> wrap dt_clone_subtree of this @node
271const BI_EL_CMPDOCPOS: i64 = 206 // Element.compareDocumentPosition(other) -> DOM-order bitmask (Sizzle sort)
272const BI_ARR_CONCAT: i64 = 207 // arr.concat(...items) -> NEW array (array args spread one level); jQuery flat helper
273const BI_STR_CONCAT: i64 = 208 // str.concat(...args) -> this + args coerced to strings
274const BI_ARR_ISARRAY: i64 = 209 // Array.isArray(x) -> x is a VAL_ARRAY (static on the Array constructor)
275const BI_DOC_CREATE_FRAGMENT: i64 = 210 // document.createDocumentFragment() -> REAL dt container node (nodeType 11)
276const BI_DOC_CREATE_TEXT: i64 = 211 // document.createTextNode(s) -> REAL dt text node (nodeType 3)
277const BI_EL_GET_BY_TAG: i64 = 212 // element.getElementsByTagName(tag) -> descendant elements (Sizzle .find)
278const BI_EL_QSA: i64 = 213 // element.querySelectorAll(sel) -> descendant matches (#id/.class/tag)
279const BI_EL_QS: i64 = 214 // element.querySelector(sel) -> first descendant match or null
280const BI_EL_GET_BY_CLASS: i64 = 215 // element.getElementsByClassName(cls) -> descendant elements w/ class
281const BI_EL_REMOVE_CHILD: i64 = 216 // element.removeChild(child) -> unlink child from tree, return it (.remove())
282const BI_DOC_GET_BY_TAG: i64 = 217 // document.getElementsByTagName(tag) -> whole-tree tag query (Sizzle $('a'))
283const BI_DOC_GET_BY_CLASS: i64 = 218 // document.getElementsByClassName(cls) -> whole-tree class query
284const BI_EL_MATCHES: i64 = 219 // element.matches(sel) -> CSS complex-selector predicate (Sizzle .is/.filter/.closest)
285const BI_EL_GET_ATTR_NODE: i64 = 220 // element.getAttributeNode(name) -> {value,name} or null (Sizzle ID seed-filter + delegation)
286const BI_WIN_ADD_LISTENER: i64 = 221 // window.addEventListener(type,fn) -> STORE + fire DOMContentLoaded/load at render end
287const WIN_SENTINEL: i64 = 0 - 999 // listener-table `node` value marking a window-level handler (tree=0)
291const BI_ARR_FOREACH: i64 = 50
292const BI_ARR_MAP: i64 = 51
293const BI_ARR_FILTER: i64 = 52
294const BI_ARR_REDUCE: i64 = 53
295const BI_ARR_SOME: i64 = 54
296const BI_ARR_EVERY: i64 = 55
298const BI_OBJ_KEYS: i64 = 20
299const BI_OBJ_VALUES: i64 = 21
300const BI_OBJ_DEFINEPROP: i64 = 22 // Object.defineProperty(target, key, {value: v}) -> target[key]=v
304const BI_OBJ_TOSTRING: i64 = 23 // ({}).toString() / toString.call(x) -> "[object Type]" (the toType tag)
305const BI_OBJ_HASOWN: i64 = 24 // ({}).hasOwnProperty(k) / hasOwn.call(o,k) -> bool (OWN props only)
306const BI_OBJ_VALUEOF: i64 = 25 // ({}).valueOf() -> the receiver itself (identity for objects)
307const BI_OBJ_ISPROTOTYPEOF: i64 = 26 // proto.isPrototypeOf(o) -> is `this` on o's [[Prototype]] chain
308const BI_FN_TOSTRING: i64 = 27 // Function.prototype.toString -> a source-ish string (jQuery fnToString)
309const BI_OBJ_GETPROTO: i64 = 28 // Object.getPrototypeOf(o) -> o's [[Prototype]] object or null
310const BI_OBJ_CREATE: i64 = 29 // Object.create(proto) -> new object with [[Prototype]]=proto (jQuery event storage: Object.create(null))
311const BI_OBJ_ASSIGN: i64 = 222 // Object.assign(target, ...sources) -> copy own props of sources into target, return target (ES6, ubiquitous)
313const BI_MATH_MAX: i64 = 30
314const BI_MATH_MIN: i64 = 31
315const BI_MATH_ABS: i64 = 32
316const BI_MATH_FLOOR: i64 = 33
317const BI_MATH_CEIL: i64 = 34
318const BI_MATH_POW: i64 = 35
319const BI_MATH_RANDOM: i64 = 36 // xorshift64 PRNG -> VAL_FLOAT in [0,1)
320const BI_MATH_SQRT: i64 = 37 // Math.sqrt -> VAL_FLOAT (soft-float sqrt)
322const BI_CONSOLE_LOG: i64 = 40
325const BI_DOC_GET_BY_ID: i64 = 60
326const BI_DOC_QUERY_SELECTOR: i64 = 61
327const BI_EL_GET_ATTR: i64 = 62 // element.getAttribute(name) (method on a snapshot element)
328const BI_DOC_QUERY_SELECTOR_ALL: i64 = 63 // document.querySelectorAll(sel) -> array of elements
330const DOM_TREE_SENTINEL: i64 = 0 - 424242
331const BI_DOC_CREATE_ELEMENT: i64 = 64 // document.createElement(tag) (tree mode)
332const BI_EL_APPEND_CHILD: i64 = 65 // element.appendChild(child)
333const BI_EL_SET_ATTR: i64 = 66 // element.setAttribute(name, value)
334const BI_JSON_PARSE: i64 = 67 // JSON.parse(text)
335const BI_EL_ADD_LISTENER: i64 = 68 // element.addEventListener(type, fn) -- R-JS-EVENT (execution verify)
336const BI_EL_CLICK: i64 = 69 // element.click() -- fire the element's click listeners (test driver)
337const BI_CLS_TOGGLE: i64 = 70 // element.classList.toggle(name[, force]) -- R-JS-CLASSLIST
338const BI_CLS_ADD: i64 = 71 // element.classList.add(name)
339const BI_CLS_REMOVE: i64 = 72 // element.classList.remove(name)
340const BI_CLS_CONTAINS: i64 = 73 // element.classList.contains(name)
343const CS_NORMAL: i64 = 0
344const CS_ERROR: i64 = 1
345const CS_RETURN: i64 = 2
346const CS_BREAK: i64 = 3 // R-JS-CTRL: nearest enclosing loop stops
347const CS_CONTINUE: i64 = 4 // R-JS-CTRL: nearest enclosing loop skips to its update/next iter
349const EV_LOOP_CAP: i64 = 10000000
364const EV_FUEL_PAGE_DEFAULT: i64 = 10000000
448const GC_NCLASS: i64 = 8192 // free-list size classes by payload_words (nb/8); >= this = no reuse
449const GC_CST: i64 = 3 // chunk-table stride: [base, used_bytes, bitmap_ptr]
463const GC_THRESHOLD_DEFAULT: i64 = 16777216 // 16MB = one chunk; small programs never cross it (0 collections)
671const CONS_MARK: i64 = 0 - 700701
1316const OBJ_PROTO: i64 = 2 // [[Prototype]] link (set by `new`; walked on property miss)
1317const OBJ_CAPF: i64 = 3 // backing capacity (elements)
1318const OBJ_BACK: i64 = 4 // backing-block ptr (i64)
1319const OBJ_HDRW: i64 = 5 // header word count
1320const OBJ_ENT: i64 = 3
1321const OBJ_INITCAP: i64 = 4 // most objects have <=4 props (Vector{x,y,z}, Node{key,value,left,right}); 8 was
1323const OBJ_MAXCAP: i64 = 1048576 // 1M props -- runaway guard, not a real-workload limit
1324const ARR_HDR: i64 = 1
1325const ARR_ENT: i64 = 2
1326const ARR_CAP: i64 = 4096
1338const SH_ENT: i64 = 5 // [parent, added_key(strrec as i64), nprops, first_child, next_sibling] (0 = none)
1339const SH_MAX: i64 = 262144
1344const SH_EMPTY: i64 = 1
1610const ARR_INITCAP: i64 = 8
1611const ARR_MAXCAP: i64 = 67108864 // 64M elements -- runaway guard, NOT a real-workload limit
1678const ENV_HDR: i64 = 9
1679const ENV_ENTRY: i64 = 5 // [ns, nl, vt, vp, namesrc] -- namesrc lets names compare ACROSS parse contexts
1680const ENV_MAX: i64 = 512
1681const THIS_NS: i64 = 0 - 999999 // sentinel name-offset for the `this` binding (matches only another THIS_NS)
1682const SUPER_NS: i64 = 0 - 999998 // sentinel name-offset for the `@super` binding (the parent constructor in an `extends` class body; matches only another SUPER_NS)
1684const BI_SETTIMEOUT: i64 = 80
1685const BI_QUEUEMICROTASK: i64 = 81
1686const BI_RAF: i64 = 82 // requestAnimationFrame
1687const BI_CLEARTIMEOUT: i64 = 83 // no-op (timers run to completion in the drain; nothing to cancel)
1689const EL_HDR: i64 = 4
1690const EL_MAXQ: i64 = 8192 // bounded per-queue depth (named cap; overflow -> drop + honest 1 from el_push)
1693const NS_PROMISE: i64 = 6
1694const BI_PROM_RESOLVE: i64 = 90
1695const BI_PROM_REJECT: i64 = 91
1696const BI_PROM_THEN: i64 = 92
1697const BI_PROM_CATCH: i64 = 93
1700const PROM_HDR: i64 = 4
1701const PROM_REACT: i64 = 5
1702const PROM_MAXR: i64 = 64
1705const JOB_SZ: i64 = 8
1709const PEND_BASE: i64 = 16388 // EL_HDR(4) + 2*EL_MAXQ(16384); pending count at [PEND_BASE], entries after
1710const PEND_MAX: i64 = 128
1711const PEND_ENT: i64 = 3 // [url-str-rec ptr, promise ptr, serviced flag]
1715const RESP_HDR: i64 = 3
1716const BI_FETCH: i64 = 96
1717const BI_RESP_TEXT: i64 = 94
1718const BI_RESP_JSON: i64 = 95
1720const NS_WINDOW: i64 = 7
1721const NS_LOCATION: i64 = 8
1722const NS_NAVIGATOR: i64 = 9
1723const NS_HISTORY: i64 = 10
1724const NS_DATE: i64 = 11 // the Date global (Date.now() -> ms timestamp; new Date()/getTime = follow-on)
1725const BI_BOM_NOOP: i64 = 97 // location.reload / history.pushState / window.addEventListener ... -> undefined
1726const BI_DATE_NOW: i64 = 98 // Date.now() -> current time in ms (jQuery guid/expando)
1729const BI_XHR_NEW: i64 = 100
1730const BI_STRING_CTOR: i64 = 110 // String(x) -- coerce x to a primitive string ("" if no arg). NOT 103 (=BI_XHR_NOOP collision, dispatched in js_native_apply before us).
1734const BI_ARRAY_CTOR: i64 = 111 // new Array(n) / new Array(a,b,c) / Array(...) -- native array constructor
1735const BI_ERROR_CTOR: i64 = 112 // new Error(msg) / Error(msg) -- object with .message + .name="Error"
1736const BI_TYPEERR_CTOR: i64 = 113 // TypeError -> .name="TypeError"
1737const BI_RANGEERR_CTOR: i64 = 114 // RangeError -> .name="RangeError"
1738const BI_NUM_TOSTRING: i64 = 115 // (n).toString([radix]) -- number/float/bool receiver (Crypto uses radix 16)
1739const BI_XHR_OPEN: i64 = 101
1740const BI_XHR_SEND: i64 = 102
1741const BI_XHR_NOOP: i64 = 103 // setRequestHeader / getResponseHeader / abort -> undefined
1810const CLOS_SLOTS: i64 = 2
1819const VMF_MAGIC: i64 = 780301
1828const JS_VM_DOC_DECLINE: i64 = 0 - 2

functions

169func ev_cell() -> *i64
186func ev_cell_bytes() -> i64 { return ev_arena_bytes }
called by 1: main
221func js_set_rt_dbg(v: i64) -> i64 { js_rt_dbg = v; return 0 }
called by 14: run1run1run1run1mainmain+8
227func js_rt_errpos_reset() -> i64 { js_rt_errpos = 0 - 1; return 0 }
228func js_rt_errpos_get() -> i64 { return js_rt_errpos }
called by 3: run1mainrun1
229func js_rt_mark(ctx: *i64, idx: i64) -> i64
369func ev_fuel_arm(n: i64) -> i64 { ev_fuel_max = n; ev_fuel_used = 0; ev_fuel_hit = 0; return 0 }
370func ev_fuel_spent() -> i64 { return ev_fuel_used }
called by 1: main
371func ev_fuel_exhausted() -> i64 { return ev_fuel_hit }
called by 1: main
376func ev_fuel_run_reset() -> i64
calls 1: ev_fuel_arm
384func ev_for_body(ctx: *i64, idx: i64) -> i64 { let nodes: *i64 = jp_nodes(ctx); return nodes[idx * NODE_SLOTS + 4] }
called by 2: c_predeclc_stmt calls 1: jp_nodes
386func ev_try_finally(ctx: *i64, idx: i64) -> i64 { let nodes: *i64 = jp_nodes(ctx); return nodes[idx * NODE_SLOTS + 4] }
called by 2: c_predeclc_stmt calls 1: jp_nodes
388func ev_throw_set(genv: *i64, t: i64, p: i64) -> i64 { genv[6] = 1; genv[7] = t; genv[8] = p; return 0 }
called by 1: vm_ext
389func ev_throw_take(genv: *i64, out: *i64) -> i64
calls 1: ev_set
396func ev_throw_peek(genv: *i64) -> i64 { return genv[6] }
398func ev_set(out: *i64, t: i64, p: i64) -> i64 { out[0] = t; out[1] = p; return 0 }
399func ev_copy(out: *i64, src: *i64) -> i64 { out[0] = src[0]; out[1] = src[1]; return 0 }
400func ev_b2(cond: i64) -> i64 { if cond == 1 { return 1 } return 0 }
401func ev_isnull(e: *i64) -> i64 { if (e as i64) == 0 { return 1 } return 0 }
403func ev_atoi(src: *u8, start: i64, len: i64) -> i64
409func ev_tok(ctx: *i64, idx: i64) -> i64 { let nodes: *i64 = jp_nodes(ctx); return nodes[idx * NODE_SLOTS + 4] }
410func ev_tok_kind(ctx: *i64, idx: i64) -> i64 { let toks: *i64 = jp_toks(ctx); return toks[ev_tok(ctx, idx) * 3 + 0] }
called by 1: ev_prop_key calls 2: jp_toksev_tok
411func ev_tok_start(ctx: *i64, idx: i64) -> i64 { let toks: *i64 = jp_toks(ctx); return toks[ev_tok(ctx, idx) * 3 + 1] }
412func ev_tok_len(ctx: *i64, idx: i64) -> i64 { let toks: *i64 = jp_toks(ctx); return toks[ev_tok(ctx, idx) * 3 + 2] }
413func ev_num_of(ctx: *i64, idx: i64) -> i64 { return ev_atoi(jp_src(ctx), ev_tok_start(ctx, idx), ev_tok_len(ctx, idx)) }
434func nx_dbg_num(v: i64) -> i64 { nxi_out(v); return 0 }
439func nx_dbg_num1(v: i64) -> i64 { nxi_out(v); return 0 }
calls 1: nxi_out
468func gc_init() -> i64
482func gc_setbit(bm: i64, wordidx: i64) -> i64 { let b: *u8 = bm as *u8; let byi: i64 = wordidx / 8; b[byi] = (b[byi] | (1 << (wordidx % 8))) as u8; return 0 }
called by 1: nx_pool_alloc
483func gc_getbit(bm: i64, wordidx: i64) -> i64 { let b: *u8 = bm as *u8; return (b[wordidx / 8] >> (wordidx % 8)) & 1 }
called by 1: gc_is_start
485func gc_retire_chunk() -> i64
called by 1: nx_pool_alloc calls 1: gc_init
504func nx_pool_alloc(bytes: i64) -> i64
544func gc_is_start(w: i64) -> i64
563func gc_mark_header(h: i64) -> i64
584func gc_scan_region(base_addr: i64, nwords: i64) -> i64
596func gc_trace_all() -> i64
called by 1: gc_collect_vm calls 1: gc_scan_region
611func gc_sweep_range(base: i64, used: i64) -> i64
called by 1: gc_sweep_all
638func gc_sweep_all() -> i64
called by 1: gc_collect_vm calls 1: gc_sweep_range
647func gc_enable(v: i64) -> i64 { gc_init(); gc_enabled = v; if gc_threshold == 0 { gc_threshold = GC_THRESHOLD_DEFAULT }; return 0 }
called by 4: mainmainmainmain calls 1: gc_init
648func gc_configure(threshold: i64) -> i64 { gc_init(); gc_threshold = threshold; return 0 }
called by 3: mainmainmain calls 1: gc_init
649func gc_set_nosweep(v: i64) -> i64 { gc_nosweep = v; return 0 } // DIAGNOSTIC toggle
650func gc_is_enabled() -> i64 { return gc_enabled }
called by 1: jit_compile
651func gc_since_bytes() -> i64 { return gc_since }
652func gc_collection_count() -> i64 { return gc_collections }
654func gc_poll() -> i64 { if gc_enabled == 0 { return 0 } if gc_since >= gc_threshold { return 1 } return 0 }
called by 2: gc_safepointvm_loop
657func gc_since_addr() -> i64 { return (&gc_since) as i64 }
called by 1: jit_emit_safepoint
658func gc_threshold_addr() -> i64 { return (&gc_threshold) as i64 }
called by 1: jit_emit_safepoint
659func nx_pool_total_mb() -> i64 { return nx_pool_total / 1048576 }
called by 2: mainmain
660func nx_pool_total_kb() -> i64 { return nx_pool_total / 1024 }
called by 1: run_one
661func nx_pool_alloc_count() -> i64 { return nx_pool_count }
called by 3: run_onemainmain
662func nx_pool_hp_bytes() -> i64 { return nx_pool_hp } // current-chunk bump offset = RESIDENT proxy (plateaus under GC)
called by 2: maingc_collect_vm
663func nx_pool_hp_kb() -> i64 { return nx_pool_hp / 1024 }
664func gc_chunk_count() -> i64 { return gc_chunk_n } // # retired 16MB chunks (stays low if GC reuses freed blocks)
called by 1: gc_collect_vm
665func ev_str_new(len: i64) -> *i64 { let rec: *i64 = (nx_pool_alloc(16 + len)) as *i64; rec[0] = len; return rec }
672func str_leaves(rec: *i64) -> i64 { if rec[0] == CONS_MARK { return rec[5] } return 1 }
called by 1: ev_str_concat
673func str_flatten(rec: *i64) -> *i64
699func ev_str_len(rec: *i64) -> i64 { if rec[0] == CONS_MARK { return rec[3] } return rec[0] }
700func ev_str_bytes(rec: *i64) -> *u8 { if rec[0] == CONS_MARK { let f: *i64 = str_flatten(rec); return (f as i64 + 8) as *u8 } return (rec as i64 + 8) as *u8 }
704func ev_hexval(c: i64) -> i64
called by 1: ev_str_from_lit
714func ev_utf8_put(dst: *u8, at: i64, cp: i64) -> i64
731func ev_str_from_lit(ctx: *i64, idx: i64, out: *i64) -> i64
802func ev_str_eq(a: *i64, b: *i64) -> i64
815func ev_str_cmp(a: *i64, b: *i64) -> i64
841func ev_str_numval(rec: *i64, vout: *i64) -> i64
863func ev_is_relop(op: i64) -> i64
called by 2: js_evalvm_binary
873func ev_is_clean_num(v: *i64) -> i64
881func ev_one_str_one_num(lb: *i64, rb: *i64) -> i64
called by 2: js_evalvm_binary calls 1: ev_is_clean_num
889func ev_mixed_relnum(v: *i64, vout: *i64) -> i64
894func ev_str_concat(a: *i64, b: *i64, out: *i64) -> i64
908func ev_cstr(s: *u8) -> *i64
921func ev_num_to_str(n: i64) -> *i64
941func ev_coerce_str(v: *i64) -> *i64
957func ev_key_from_ident(ctx: *i64, idx: i64) -> *i64
970func ev_key_from_strtok(ctx: *i64, idx: i64) -> *i64
called by 1: ev_prop_key calls 2: ev_cellev_str_from_lit
978func ev_prop_key(ctx: *i64, idx: i64) -> *i64
983func ev_typeof_str(tag: i64) -> *i64
called by 2: js_evalvm_unary calls 1: ev_cstr
997func ev_truthy(v: *i64) -> i64
1007func ev_tonum(v: *i64) -> i64
1015func ev_is_numlike(v: *i64) -> i64 { if v[0] == VAL_NUM { return 1 } if v[0] == VAL_FLOAT { return 1 } return 0 }
called by 1: ev_strict_eq
1016func ev_strict_eq(l: *i64, r: *i64) -> i64
1031func ev_loose_eq(l: *i64, r: *i64) -> i64
1083func ev_hexdigit(c: i64) -> i64
called by 1: ev_parse_radix
1089func ev_parse_radix(src: *u8, s: i64, l: i64, base: i64) -> i64
called by 1: ev_num_node calls 1: ev_hexdigit
1101func ev_num_node(ctx: *i64, idx: i64, out: *i64) -> i64
1122func ev_tof64(v: *i64) -> i64
1128func ev_f64_str(bits: i64) -> *i64
1139func ev_binop_f64(op: i64, fa: i64, fb: i64, out: *i64) -> i64
1159func ev_num_div(a: i64, b: i64, out: *i64) -> i64
1165func ev_num_mod(a: i64, b: i64, out: *i64) -> i64
1172func js_toint32(v: i64) -> i64
1179func ev_instanceof(lb: *i64, rb: *i64, out: *i64) -> i64
1197func ev_in(lb: *i64, rb: *i64, out: *i64) -> i64
1219func ev_ws_byte(c: i64) -> i64 { if c == 32 { return 1 } if c == 9 { return 1 } if c == 10 { return 1 } if c == 13 { return 1 } return 0 }
called by 1: ev_coerce_num
1223func ev_coerce_num(v: *i64, out: *i64) -> i64
1270func ev_apply_binop(op: i64, lb: *i64, rb: *i64, out: *i64) -> i64
1345func sh_init() -> i64
called by 1: sh_transition
1355func sh_rec(id: i64) -> *i64 { return ((sh_arena) + id * SH_ENT * 8) as *i64 }
called by 1: sh_transition
1358func sh_transition(from: i64, key: *i64) -> i64
called by 1: obj_set calls 3: sh_initsh_recev_str_eq
1380func obj_shape(o: *i64) -> i64 { return o[1] }
called by 1: vm_ext
1385func gc_scan_shapes() -> i64 { if sh_arena != 0 { gc_scan_region(sh_arena as i64, sh_count * SH_ENT) } return 0 }
called by 1: gc_mark_globals calls 1: gc_scan_region
1387func obj_new() -> *i64
1393func obj_proto(o: *i64) -> i64 { return o[OBJ_PROTO] }
1394func obj_set_proto(o: *i64, p: i64) -> i64 { o[OBJ_PROTO] = p; return 0 }
1397func obj_proto_lookup(o: *i64, key: *i64, out: *i64) -> i64
1416func fproto_init() -> i64
1420func fproto_find(fnpay: i64) -> i64
called by 2: fproto_putfunc_own calls 1: fproto_init
1427func fproto_put(fnpay: i64, protopay: i64) -> i64
called by 1: func_own calls 2: fproto_initfproto_find
1452func js_globalthis() -> i64
called by 2: js_evalvm_ext calls 1: obj_new
1460func js_object_prototype() -> i64
called by 2: ev_get_propvm_ext calls 1: obj_new
1468func js_string_prototype() -> i64
called by 1: ev_get_prop calls 1: obj_new
1473func js_array_prototype() -> i64
called by 1: ev_get_prop calls 1: obj_new
1482func js_userproto_method(tag: i64, key: *i64, out: *i64) -> i64
called by 2: vm_extjit_callm_prep calls 1: obj_get
1496func js_ns_statics(ns: i64) -> *i64
1507func gc_mark_globals() -> i64
1520func func_own(fnpay: i64) -> *i64
1535func func_prototype(fnpay: i64) -> i64
1546func obj_count(o: *i64) -> i64 { return o[0] }
1547func obj_key(o: *i64, i: i64) -> *i64 { let d: *i64 = (o[OBJ_BACK]) as *i64; return (d[i * OBJ_ENT]) as *i64 }
1549func obj_find(o: *i64, key: *i64) -> i64
1559func obj_delete(o: *i64, key: *i64) -> i64
called by 2: js_evalvm_ext calls 1: obj_find
1570func obj_grow(o: *i64) -> i64
called by 1: obj_set calls 1: nx_pool_alloc
1583func obj_set(o: *i64, key: *i64, vt: i64, vp: i64) -> i64
1597func obj_get(o: *i64, key: *i64, out: *i64) -> i64
1612func arr_new() -> *i64
1622func arr_expando(a: *i64) -> *i64
calls 1: obj_new
1626func arr_len(a: *i64) -> i64 { return a[0] }
1628func arr_get(a: *i64, i: i64, out: *i64) -> i64
1637func arr_grow(a: *i64, need: i64) -> i64
called by 1: arr_set calls 1: nx_pool_alloc
1653func arr_set(a: *i64, i: i64, vt: i64, vp: i64) -> i64
1742func env_new() -> *i64 { let e: *i64 = sys_mmap(8 * (ENV_HDR + ENV_MAX * ENV_ENTRY)) as *i64; e[0] = 0; e[1] = 0; return e }
called by 1: cr_core
1745func gc_scan_env(envp: i64) -> i64 { if envp != 0 { gc_scan_region(envp as i64, ENV_HDR + ENV_MAX * ENV_ENTRY) } return 0 }
called by 1: gc_collect_vm calls 1: gc_scan_region
1746func env_child(parent: *i64) -> *i64 { let e: *i64 = sys_mmap(8 * (ENV_HDR + ENV_MAX * ENV_ENTRY)) as *i64; e[0] = 0; e[1] = parent as i64; return e }
called by 2: js_evaljs_call_core
1747func env_name_eq(s1src: *u8, s1: i64, l1: i64, s2src: *u8, s2: i64, l2: i64) -> i64
called by 1: env_find_local
1757func env_find_local(env: *i64, src: *u8, ns: i64, nl: i64) -> i64
1763func env_define(env: *i64, src: *u8, ns: i64, nl: i64, vt: i64, vp: i64) -> i64
1777func env_get(env: *i64, src: *u8, ns: i64, nl: i64, out: *i64) -> i64
1791func env_assign(env: *i64, src: *u8, ns: i64, nl: i64, vt: i64, vp: i64) -> i64
called by 1: js_eval calls 2: ev_isnullenv_find_local
1822func js_vm_bind(hook: i64, vs: i64) -> i64 { js_vm_hook_addr = hook; js_vm_vs_addr = vs; return 0 }
called by 1: cr_core
1830func js_vm_doc_bind(hook: i64) -> i64 { js_vm_doc_hook = hook; return 0 }
1832func clos_new(fnode: i64, defenv: *i64) -> *i64
1838func clos_fnode(c: *i64) -> i64 { return c[0] }
1839func clos_defenv(c: *i64) -> *i64 { return (c[1]) as *i64 }
called by 1: js_call_core
1843func js_eval(ctx: *i64, idx: i64, env: *i64, genv: *i64, out: *i64) -> i64
2391func js_eval_super_ctor(ctx: *i64, idx: i64, env: *i64, genv: *i64, out: *i64) -> i64
2405func js_eval_super_method(ctx: *i64, idx: i64, callee: i64, env: *i64, genv: *i64, out: *i64) -> i64
2423func js_fn_call_apply(ctx: *i64, idx: i64, env: *i64, genv: *i64, fnclos: *i64, is_apply: i64, out: *i64) -> i64
2458func js_native_call_apply(ctx: *i64, idx: i64, env: *i64, genv: *i64, bid: i64, is_apply: i64, out: *i64) -> i64
2488func js_eval_call(ctx: *i64, idx: i64, env: *i64, genv: *i64, out: *i64) -> i64
2601func js_call_userfn(ctx: *i64, idx: i64, env: *i64, genv: *i64, clos: *i64, thisval: *i64, out: *i64) -> i64
2636func js_is_pattern_kind(k: i64) -> i64 { if k == ND_ARRAY_PAT { return 1 } if k == ND_OBJ_PAT { return 1 } return 0 }
called by 1: js_bind_pattern
2637func js_bind_pattern(ctx: *i64, patnode: i64, vt: i64, vp: i64, env: *i64) -> i64
2675func js_call_core(ctx: *i64, clos: *i64, argbuf: *i64, argc: i64, thisval: *i64, genv: *i64, out: *i64) -> i64
2750func js_hoist_body(ctx: *i64, body: i64, callenv: *i64) -> i64
2776func js_eval_args(ctx: *i64, idx: i64, env: *i64, genv: *i64, argbuf: *i64) -> i64
2812func ja_t(argbuf: *i64, k: i64) -> i64 { return argbuf[k * 2 + 0] }
2813func ja_p(argbuf: *i64, k: i64) -> i64 { return argbuf[k * 2 + 1] }
2818func ev_bid_needs_str(bid: i64) -> i64
2832func ev_bid_needs_arr(bid: i64) -> i64
2864func el_state(genv: *i64) -> *i64
2872func el_push_job(genv: *i64, job: *i64) -> i64 { let s: *i64 = el_state(genv); if s[1] >= EL_MAXQ { return 1 } s[EL_HDR + s[1]] = job as i64; s[1] = s[1] + 1; return 0 }
2874func el_push_micro(genv: *i64, clos: i64) -> i64 { let j: *i64 = sys_mmap(8 * JOB_SZ) as *i64; j[0] = 0; j[1] = clos; return el_push_job(genv, j) }
2875func el_push_macro(genv: *i64, clos: i64) -> i64 { let s: *i64 = el_state(genv); if s[3] >= EL_MAXQ { return 1 } s[EL_HDR + EL_MAXQ + s[3]] = clos; s[3] = s[3] + 1; return 0 }
called by 1: js_native_apply calls 1: el_state
2878func el_push_reaction(genv: *i64, htag: i64, hpay: i64, vtag: i64, vpay: i64, resultprom: *i64, ptstate: i64) -> i64
2883func prom_new() -> *i64 { let p: *i64 = sys_mmap(8 * (PROM_HDR + PROM_MAXR * PROM_REACT)) as *i64; p[0] = 0; p[1] = 0; p[2] = 0; p[3] = 0; return p }
2885func prom_settle(ctx: *i64, genv: *i64, p: *i64, state: i64, vtag: i64, vpay: i64) -> i64
2901func prom_add_reaction(ctx: *i64, genv: *i64, p: *i64, onFtag: i64, onFpay: i64, onRtag: i64, onRpay: i64, resultprom: *i64) -> i64
2918func prom_adopt(ctx: *i64, genv: *i64, R: *i64, inner: *i64) -> i64
2922func prom_resolve_value(ctx: *i64, genv: *i64, R: *i64, tag: i64, pay: i64) -> i64
2927func prom_run_reaction(ctx: *i64, genv: *i64, htag: i64, hpay: i64, vtag: i64, vpay: i64, resultprom: *i64, ptstate: i64) -> i64
2946func el_drain_micro(ctx: *i64, genv: *i64) -> i64
2963func el_drain(ctx: *i64, genv: *i64) -> i64
2982func bi_prom_resolve(argbuf: *i64, argc: i64, out: *i64) -> i64
called by 1: js_native_apply calls 2: ev_setprom_new
2988func bi_prom_reject(argbuf: *i64, argc: i64, out: *i64) -> i64
called by 1: js_native_apply calls 2: prom_newev_set
2994func bi_prom_then(ctx: *i64, genv: *i64, thisv: *i64, argbuf: *i64, argc: i64, iscatch: i64, out: *i64) -> i64
3009func ev_native_promise(key: *i64) -> i64
3018func prom_settle_fresh(p: *i64, state: i64, vtag: i64, vpay: i64) -> i64 { p[0] = state; p[1] = vtag; p[2] = vpay; return 0 }
3019func resp_new(status: i64, btag: i64, bpay: i64) -> *i64 { let r: *i64 = sys_mmap(8 * RESP_HDR) as *i64; r[0] = status; r[1] = btag; r[2] = bpay; return r }
3020func js_str_from_bytes(b: *u8, n: i64) -> *i64 { let rec: *i64 = ev_str_new(n); let dst: *u8 = ev_str_bytes(rec); var i: i64 = 0; while i < n { dst[i] = b[i]; i = i + 1 } return rec }
3023func bi_fetch(genv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3051func bi_resp_text(thisv: *i64, out: *i64) -> i64
3059func bi_resp_json(thisv: *i64, out: *i64) -> i64
3069func ev_native_response(key: *i64) -> i64
3079func bi_xhr_new(out: *i64) -> i64
3092func js_construct_native(bid: i64, out: *i64) -> i64
3101func bi_err_build(argbuf: *i64, argc: i64) -> *i64
3118func js_construct_native_args(bid: i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3152func bi_xhr_open(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3160func bi_xhr_send(ctx: *i64, genv: *i64, thisv: *i64, out: *i64) -> i64
3188func pend_record(genv: *i64, urlrec: *i64, prom: *i64) -> i64
called by 1: bi_fetch calls 1: el_state
3203func js_pending_count(genv: *i64) -> i64
called by 1: main
3213func js_pending_total(genv: *i64) -> i64 { if (genv as i64) == 0 { return 0 } if genv[5] == 0 { return 0 } let s: *i64 = (genv[5]) as *i64; return s[PEND_BASE] } // two-step cast: inline `((genv[5]) as *i64)[k]` MISCOMPILES under nx_cc (returns garbage) -- see nx_cc-gotchas
called by 14: run1run1run1run1mainmain+8
3215func js_pending_serviced(genv: *i64, i: i64) -> i64
called by 2: maindump_pending
3224func js_pending_url(genv: *i64, i: i64, buf: *u8, cap: i64) -> i64
3237func js_pending_service(ctx: *i64, genv: *i64, i: i64, status: i64, body: *u8, bodylen: i64) -> i64
3251func js_invoke_native(ctx: *i64, idx: i64, env: *i64, genv: *i64, bid: i64, thisv: *i64, out: *i64) -> i64
3281func ev_native_num(key: *i64) -> i64
3287func bi_num_tostring(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3319func js_native_apply(ctx: *i64, genv: *i64, bid: i64, thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3466func ev_clamp_idx(i: i64, len: i64) -> i64
3474func ev_str_find(hay: *i64, needle: *i64) -> i64
3495func ev_str_substr(rec: *i64, a: i64, b: i64, out: *i64) -> i64
3508func bi_str_charat(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
called by 1: js_native_apply calls 1: ja_p
3514func bi_str_indexof(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3521func bi_str_includes(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3528func bi_str_slice(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3539func bi_str_case(thisv: *i64, upper: i64, out: *i64) -> i64
3557func ev_coerce_str_arg(argbuf: *i64, k: i64) -> *i64
3565func bi_arr_push(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3576func bi_arr_pop(thisv: *i64, out: *i64) -> i64
3586func bi_arr_shift(thisv: *i64, out: *i64) -> i64
3604func bi_arr_unshift(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3628func bi_arr_concat(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3652func bi_str_concat_m(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3671func ev_arraylike_len(v: *i64) -> i64
3680func ev_arraylike_get(v: *i64, i: i64, out: *i64) -> i64
3689func ev_arraylike_set(v: *i64, i: i64, vt: i64, vp: i64) -> i64
3702func bi_arr_indexof(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3718func bi_arr_join(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3739func bi_arr_slice(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3761func bi_arr_reverse(thisv: *i64, out: *i64) -> i64
3780func bi_arr_splice(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3818func bi_cb_call_ei(ctx: *i64, genv: *i64, cb: *i64, a: *i64, i: i64, res: *i64) -> i64
3831func bi_cb_arg(argbuf: *i64, argc: i64) -> *i64
3840func bi_arr_foreach(ctx: *i64, genv: *i64, thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3855func bi_arr_map(ctx: *i64, genv: *i64, thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3872func bi_arr_filter(ctx: *i64, genv: *i64, thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3895func bi_arr_reduce(ctx: *i64, genv: *i64, thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
3939func bi_arr_some(ctx: *i64, genv: *i64, thisv: *i64, argbuf: *i64, argc: i64, want_all: i64, out: *i64) -> i64
3960func bi_sort_cmp(ctx: *i64, genv: *i64, cmp: *i64, x: *i64, y: *i64) -> i64
3977func bi_arr_sort(ctx: *i64, genv: *i64, thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
4004func bi_obj_keys(argbuf: *i64, argc: i64, out: *i64) -> i64
4023func bi_obj_defineprop(argbuf: *i64, argc: i64, out: *i64) -> i64
4036func bi_obj_values(argbuf: *i64, argc: i64, out: *i64) -> i64
4056func bi_obj_tostring(thisv: *i64, out: *i64) -> i64
called by 1: js_native_apply calls 2: ev_setev_cstr
4072func bi_obj_hasown(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
4082func bi_obj_isprototypeof(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
4100func bi_fn_tostring(thisv: *i64, out: *i64) -> i64
called by 1: js_native_apply calls 2: ev_setev_cstr
4107func bi_obj_getproto(argbuf: *i64, argc: i64, out: *i64) -> i64
4118func bi_obj_create(argbuf: *i64, argc: i64, out: *i64) -> i64
4126func bi_obj_assign(argbuf: *i64, argc: i64, out: *i64) -> i64
4145func bi_math_maxmin(argbuf: *i64, argc: i64, want_max: i64, out: *i64) -> i64
called by 1: js_native_apply calls 2: ev_setev_arg_num
4160func bi_math_abs(argbuf: *i64, argc: i64, out: *i64) -> i64
called by 1: js_native_apply calls 2: ev_setev_arg_num
4167func bi_math_identity(argbuf: *i64, argc: i64, out: *i64) -> i64
4176func bi_math_random(out: *i64) -> i64
4189func bi_math_floorceil(argbuf: *i64, argc: i64, is_ceil: i64, out: *i64) -> i64
4201func bi_math_sqrt(argbuf: *i64, argc: i64, out: *i64) -> i64
4208func bi_math_pow(argbuf: *i64, argc: i64, out: *i64) -> i64
4231func ev_arg_num(argbuf: *i64, k: i64) -> i64
4240func bi_console_log(argbuf: *i64, argc: i64, out: *i64) -> i64
4258func ev_is_length_key(key: *i64) -> i64
called by 2: ev_inev_get_prop calls 2: ev_cstrev_str_eq
4267func ev_get_prop(base: *i64, key: *i64, out: *i64) -> i64
4354func ev_key_is(key: *i64, lit: *u8) -> i64
4365func ev_native_str(key: *i64) -> i64
4384func bi_str_charcodeat(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
4398func bi_str_fromcharcode(argbuf: *i64, argc: i64, out: *i64) -> i64
called by 1: js_native_apply calls 2: ev_arg_numev_set
4407func bi_str_subcopy(srec: *i64, lo: i64, hi: i64, out: *i64) -> i64
4413func bi_str_substring(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
4427func bi_str_substr(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
4442func bi_parseint(argbuf: *i64, argc: i64, out: *i64) -> i64
4473func js_make_regex_val(patb: *u8, patlen: i64, flb: *u8, fllen: i64, out: *i64) -> i64
4482func bi_regex_ctor(argbuf: *i64, argc: i64, out: *i64) -> i64
4493func bi_str_split(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
4543func js_substr(sb: *u8, lo: i64, hi: i64) -> *i64
4553func js_regex_result(re: *Regex, sb: *u8, saves: *i64) -> *i64
called by 1: bi_re_exec calls 3: arr_newarr_setjs_substr
4566func bi_re_exec(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
4585func bi_str_match(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
4622func js_repl_expand(rb: *u8, rl: i64, sb: *u8, saves: *i64, ng: i64, buf: *u8, bpp: *i64) -> i64
4639func bi_str_replace(thisv: *i64, argbuf: *i64, argc: i64, out: *i64) -> i64
called by 1: js_native_apply calls 2: ev_setev_str_bytes