Commit Graph

371 Commits (master)

Author SHA1 Message Date
Daniel Kolesa d748b0e671 remove state::get_idents
this was never going to be good from API standpoint, and is no
longer necessary (can use ident_count + get_ident by index with
a loop, for example)
2021-05-16 00:51:26 +02:00
Daniel Kolesa 4fb6b9a0bc add ident getter by index, + ident count method on state 2021-05-16 00:50:14 +02:00
Daniel Kolesa 8086c23a77 memory safe error stack state 2021-05-15 23:27:34 +02:00
Daniel Kolesa 3189d87ac9 use a reference for the ident in stack node 2021-05-15 04:23:47 +02:00
Daniel Kolesa b5127c52bf simplify exec_alias more 2021-05-14 23:31:27 +02:00
Daniel Kolesa 72c3ecedb1 move cs thread call stack off real thread call stack 2021-05-14 23:14:48 +02:00
Daniel Kolesa 203e0bd5e4 exec_alias cleanups 2021-05-14 22:42:19 +02:00
Daniel Kolesa 263b12c1c4 stop using reinterpret_cast 2021-05-14 22:10:16 +02:00
Daniel Kolesa 6ffdc7fa91 various vm cleanups 2021-05-14 19:18:11 +02:00
Daniel Kolesa 036362683c kill call_with_args template 2021-05-14 02:54:29 +02:00
Daniel Kolesa 8b04bd1488 refactor vm scope guard 2021-05-14 02:36:16 +02:00
Daniel Kolesa 36fb06425b do not use lambdas with captures in vm 2021-05-13 04:48:55 +02:00
Daniel Kolesa 523586e3a6 mask vm loop always by opcode (fewer switch cases) 2021-05-13 00:43:44 +02:00
Daniel Kolesa a5536d6974 more vm type handling cleanups 2021-05-12 04:09:18 +02:00
Daniel Kolesa 775d69cf1c minor vm cleanups 2021-05-12 03:55:20 +02:00
Daniel Kolesa 43898b4798 make pcall not collect the entire bt, call body per level instead 2021-05-10 01:48:09 +02:00
Daniel Kolesa a8d2bfc442 don't use print_stack in repl 2021-05-10 01:16:27 +02:00
Daniel Kolesa 1739cbed6e remove separate stack_state 2021-05-09 20:21:35 +02:00
Daniel Kolesa fdcc8a09e9 remove gap property from stack_state 2021-05-09 20:01:47 +02:00
Daniel Kolesa 6e779f827f cap default recursion limit at 1024 2021-05-08 21:41:13 +02:00
Daniel Kolesa 201d6031b0 add missing file 2021-05-08 17:26:23 +02:00
Daniel Kolesa 54a7b4b7f1 add assert in lib_base, remove formatting public error api 2021-05-08 17:20:56 +02:00
Daniel Kolesa dec7e844e7 use a regular union for any_value 2021-05-08 06:42:47 +02:00
Daniel Kolesa 7f74602b7e add convenience constructors and assignment ops to any_value 2021-05-07 01:56:43 +02:00
Daniel Kolesa 1c56ea36ff remove save_val 2021-05-07 01:13:02 +02:00
Daniel Kolesa 9437e0951b eliminate type separation between IVAR/FVAR/SVAR 2021-05-07 00:07:13 +02:00
Daniel Kolesa 6218adb78a remove public type specializations for vars 2021-05-06 23:13:48 +02:00
Daniel Kolesa 6fede13b97 remove set_value() specialization per-vartype 2021-05-06 04:13:11 +02:00
Daniel Kolesa fa5e38afad remove the call() specializations per-vartype 2021-05-06 04:07:45 +02:00
Daniel Kolesa 6a892b4b2c move set_raw_value to builtin_var 2021-05-06 04:01:29 +02:00
Daniel Kolesa 74f437f851 s/global_var/builtin_var/ 2021-05-06 03:47:38 +02:00
Daniel Kolesa 139ead5d72 fold BC_INST_IVAR/FVAR/SVAR into one instruction 2021-05-06 03:42:58 +02:00
Daniel Kolesa a57072fb73 use any_value for var storage and return it from value() 2021-05-06 03:34:25 +02:00
Daniel Kolesa 344bba07f3 remove is_ helpers for ident types (except is_var) 2021-05-05 03:24:41 +02:00
Daniel Kolesa bd1e7825d8 be consistent with usage of get_/set_ prefixes 2021-05-05 03:16:32 +02:00
Daniel Kolesa 03325af1e6 pass old and new values to var_changed 2021-05-05 00:37:12 +02:00
Daniel Kolesa 7febb8f5b1 remove internal_error 2021-05-03 00:39:00 +02:00
Daniel Kolesa 5b54c74f2a remove call() methods from state 2021-05-02 22:44:38 +02:00
Daniel Kolesa 4dd1518f6c s/run/call/ 2021-04-30 02:55:20 +02:00
Daniel Kolesa 9c14e6ca65 rename r type to v 2021-04-29 20:02:04 +02:00
Daniel Kolesa 5d4bcaf797 use an ellipsis for variadics instead of V 2021-04-29 19:56:48 +02:00
Daniel Kolesa e14d5c4aa3 remove automatic concatenating variadics
these were pretty much just pointless sugar for something that
can be better achieved with ordinary variadics and an extra call
(which is what it did, except in VM)
2021-04-29 19:29:51 +02:00
Daniel Kolesa e52720ebb2 rename N in arglist to # 2021-04-29 04:15:16 +02:00
Daniel Kolesa da7548664c remove b and F arg types + renames + set default args to none
setting default args to none rather than whatever default
value allows for easily checking whether the arg was set,
without losing anything (since e.g. calling get_integer on
a none value still returns a 0)

'b' and 'F' were kinda ugly and handled special niches, which
are no longer a thing now that we're defaulting to none
2021-04-29 01:40:55 +02:00
Daniel Kolesa a9afa89af6 rework API for by-name lookups/assignments, simplify VM for that 2021-04-28 03:23:17 +02:00
Daniel Kolesa 92281e88c1 remove state::get_alias(), make get_ident() return an optional 2021-04-26 02:42:08 +02:00
Daniel Kolesa 43e6dc9341 remove get_ utilities from ident
this is not a good api (it prevents extensibility, requires
handling errors twice to be safe - once on user side, once
internally - and so on); just cast it
2021-04-25 00:44:45 +02:00
Daniel Kolesa f19fd57549 get rid of some more pointers in API 2021-04-24 23:50:06 +02:00
Daniel Kolesa 3e8db1042a fix ivar and fvar lookup code 2021-04-24 23:43:34 +02:00
Daniel Kolesa f4b8d077bb alias_local and get_ident() memory safety (always return refs) 2021-04-24 23:34:44 +02:00