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
a8d2bfc442
don't use print_stack in repl
2021-05-10 01:16:27 +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
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
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
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
f19fd57549
get rid of some more pointers in API
2021-04-24 23:50:06 +02:00
Daniel Kolesa
f4b8d077bb
alias_local and get_ident() memory safety (always return refs)
2021-04-24 23:34:44 +02:00
Daniel Kolesa
84f6d1f0d6
make std::span user replaceable
...
this will allow usage on some older compilers for those who want it
2021-04-15 20:27:24 +02:00
Daniel Kolesa
d358dd83e7
halve the size of any_value by removing state pointer from it
...
this brings more advantages too like actually being default
constructible, so it can be used more easily in data structures etc
2021-04-11 03:32:33 +02:00
Daniel Kolesa
83aa8bfd07
hide bcode pointers from public api
2021-04-10 03:37:59 +02:00
Daniel Kolesa
63023f8c5e
remove parser_state::gen_main
2021-04-10 00:54:28 +02:00
Daniel Kolesa
c0fc1aa452
abstract away ugly bcode reference creation
2021-04-09 01:12:52 +02:00
Daniel Kolesa
dcd5f61748
fewer direct accesses to code vector
2021-04-09 01:03:29 +02:00
Daniel Kolesa
e5a05a3199
remove parser_state::done()
2021-04-09 00:56:58 +02:00
Daniel Kolesa
283f23394d
add more codegen utilities
2021-04-09 00:50:13 +02:00
Daniel Kolesa
5f67b205df
initial bits for separation of codegen from parser
2021-04-09 00:41:55 +02:00
Daniel Kolesa
ccb0c09d59
rename codegen_state to parser_state and move it
...
later commits will rewrite the parser and separate the codegen
bits into their own API
2021-04-08 23:35:30 +02:00
Daniel Kolesa
2de2c9b46c
remove get_raw_type from public interface
...
users of the library never need to know this
2021-04-07 00:30:39 +02:00
Daniel Kolesa
f93042d7b9
add more utility methods for string_ref
2021-04-06 01:10:49 +02:00
Daniel Kolesa
e531ab3434
clean up any_value APIs for consistency
2021-04-06 00:54:46 +02:00
Daniel Kolesa
8c8aa26c20
return refs for new_*var and new_ident (guarantee valid result)
2021-04-05 19:52:13 +02:00
Daniel Kolesa
194d5f960b
drop ret-by-reference run APIs
2021-04-05 18:32:45 +02:00
Daniel Kolesa
06b1661afd
hide thread_state, remove state::thread_pointer()
2021-04-05 04:10:39 +02:00
Daniel Kolesa
1624938c0b
remove public is_in_loop api
2021-04-04 19:43:28 +02:00
Daniel Kolesa
04441f206d
remove the 255 run-depth limitation
...
also add optional per-thread API that sets the maximum run depth
(0 means no limit, default) if you want it; since we no longer
store stuff on the stack it should not be necessary though
2021-04-04 19:31:29 +02:00