Commit Graph

690 Commits (7f74602b7e0e15048835e84eac088696978479ab)

Author SHA1 Message Date
Daniel Kolesa 7158a6979b wipe thread state on destroy to prevent dangling pointer use 2021-04-04 19:40:15 +02:00
Daniel Kolesa 9c2d375471 remove overrides for fvar and svar handlers in repl 2021-04-04 19:35:45 +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
Daniel Kolesa c177013ea2 remove reliance on hardcoded indexes entirely 2021-04-04 06:52:02 +02:00
Daniel Kolesa e65e141741 sanitize var names, provide cached builtins for var handlers 2021-04-04 06:47:17 +02:00
Daniel Kolesa a789659387 minor cleanups 2021-04-04 05:36:19 +02:00
Daniel Kolesa 529e34d268 add a variable value change trigger callback 2021-04-04 04:30:36 +02:00
Daniel Kolesa bab8633a05 add proper var value setting helpers 2021-04-04 02:58:04 +02:00
Daniel Kolesa e9fc023daa implement override value saving 2021-04-04 02:44:35 +02:00
Daniel Kolesa 3d91cf2ee7 rea-add proper handling of variable overrides 2021-04-04 02:33:28 +02:00
Daniel Kolesa 6777eb73d5 re-add some support for persistent/overridable flags + fix unknown 2021-04-04 01:08:30 +02:00
Daniel Kolesa f0bb6b1410 make more api private 2021-04-03 06:16:43 +02:00
Daniel Kolesa ddb0799213 minor cleanups 2021-04-03 05:46:05 +02:00
Daniel Kolesa 238e5a6ac5 unexpose get_flags from ident, replace with specific methods 2021-04-03 05:39:19 +02:00
Daniel Kolesa 2a8d2103b8 allow alias_local for arg aliases 2021-04-03 05:26:59 +02:00
Daniel Kolesa b2b83a8e5b clean up some leftover cruft 2021-04-03 03:40:19 +02:00
Daniel Kolesa b00a08ea88 remove most variable code and leave it to user-defined handlers
the user can now define commands '//ivar', '//fvar' and '//svar'
which take identity (which is the variable) as the first argument
followed by any number of user defined arguments with types (one
can use the N argument type to check argument count, and when no
value arguments are provided, print the variable); this allows us
to implement different styles of variable setting without the
interpreter itself knowing about it, as well as ditch all the
stuff with overridden vars and hex vars and whatnot since this is
all specific to the engine and has no place in here

there is still leftover code remaining, which will get cleaned up
afterwards...
2021-04-03 03:16:57 +02:00
Daniel Kolesa 95e7ae320c simplify alias_stack push/pop a bit 2021-04-02 23:50:35 +02:00
Daniel Kolesa 52b305954f per-thread alias stack (the vm should be mostly resumable now) 2021-04-02 19:13:34 +02:00
Daniel Kolesa 881ba4bce9 prepare codebase for per-thread alias stack 2021-04-02 05:47:49 +02:00
Daniel Kolesa e8856f8f9d rename alias_stack to alias_local 2021-04-02 04:43:57 +02:00
Daniel Kolesa 99ec1a8583 make push_alias/alias_stack responsible for unsetting unknown flag 2021-04-02 04:34:14 +02:00
Daniel Kolesa 9d7853a840 store cached compiled code on alias stack
this will reduce needless discards on push and simplify the code
2021-04-02 02:12:31 +02:00
Daniel Kolesa 2b0392e27e remove some more raw bcode usage 2021-04-01 05:25:21 +02:00
Daniel Kolesa b2caade276 remove all raw bcode passing in public api 2021-04-01 05:06:26 +02:00
Daniel Kolesa 039dec8ec5 always define LIBCUBESCRIPT_BUILD for build 2021-04-01 04:39:13 +02:00
Daniel Kolesa e2b65000d5 hide value getter from public alias interface
since this will become thread-specific, this API makes no sense
2021-04-01 04:19:00 +02:00
Daniel Kolesa 6bb3dc2a57 avoid recompiling code when undo/redoing arguments 2021-04-01 03:54:34 +02:00
Daniel Kolesa d8736a059b greatly simplify internal alias stack handling
this should be more efficient too (no value moves)
2021-04-01 03:41:40 +02:00
Daniel Kolesa b36ef94b80 update notes on linenoise 2021-03-31 23:55:40 +02:00
Daniel Kolesa 6068a7259b switch to modified cpp-linenoise, use it on windows 2021-03-31 23:48:22 +02:00
Daniel Kolesa b9c74d86b5 msvc warning fixes 2021-03-31 02:21:32 +02:00
Daniel Kolesa e4c4c51055 remove more problematic public members 2021-03-31 01:48:56 +02:00
Daniel Kolesa 2312961cdc remove string_view from exported members of struct error
msvc doesn't like it
2021-03-31 01:43:29 +02:00
Daniel Kolesa 2270d8e41f up the default warning level, turn off rtti by default 2021-03-31 01:35:02 +02:00
Daniel Kolesa 13d46881e8 windows fixes and other correctness/portability stuff 2021-03-31 01:13:35 +02:00
Daniel Kolesa eddbf64c87 get rid of call_with_cleanup 2021-03-30 23:49:50 +02:00
Daniel Kolesa 19f0ff379a move callable into its own header 2021-03-30 23:37:55 +02:00
Daniel Kolesa 89e5f5f004 move everything to alias_stack and remove stacked_value 2021-03-30 20:55:50 +02:00
Daniel Kolesa 1def48cf76 redo alias_stack for robustness (guarantee order of push/pop) 2021-03-30 20:37:50 +02:00
Daniel Kolesa 970e37f318 make alias pushing separate from setting value 2021-03-30 20:24:46 +02:00
Daniel Kolesa d1243c5cc3 add better api to deal with alias stack 2021-03-30 03:57:43 +02:00
Daniel Kolesa 3dc6ad866f make command argcount unlimited, remove maxargs checks from codegen
also adjust the bytecode appropriately, now you can call commands
with an unlimited number of args and aliases with max 32 args,
extra args will be ignored
2021-03-30 02:08:25 +02:00
Daniel Kolesa c2bb8e4a3d move ident_stack out of public interface 2021-03-30 00:31:11 +02:00
Daniel Kolesa 4154944726 remove fixed-size argument stacks and reliance on argument ids 2021-03-30 00:28:06 +02:00
Daniel Kolesa 9e82dc0d2f get rid of cycle check from push_arg 2021-03-29 23:42:08 +02:00
Daniel Kolesa 47f24d6e2e fix typo 2021-03-29 00:46:13 +02:00
Daniel Kolesa 8385ab01e7 use bitset to store usedargs and increase argcount to 32 2021-03-28 23:46:08 +02:00
Daniel Kolesa 96592fb6ac eliminate MAX_ARGUMENTS from lib_base 2021-03-28 22:56:17 +02:00
Daniel Kolesa f7ba70b8b2 fix conc instruction 2021-03-28 22:49:46 +02:00