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
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
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
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
Daniel Kolesa
2a017a336c
reorder vm a bit
2021-03-28 17:11:35 +02:00
Daniel Kolesa
064a7ea99b
document the instructions and drop more now useless vm code
2021-03-28 17:07:29 +02:00
Daniel Kolesa
d11e50f5b5
remove the now useless MAX_RESULTS constant
2021-03-28 01:33:31 +01:00
Daniel Kolesa
d7700a9337
remove now unused BC_INST_CONC_M
2021-03-28 01:31:59 +01:00
Daniel Kolesa
3f513180f1
drop prevargs in codegen
...
since we now have a single, contiguous, unlimited VM stack, this
does not make any sense anymore (it was a limitation of the static
array)
2021-03-28 01:28:31 +01:00
Daniel Kolesa
71f45b2f07
fix up usage of IDENT_FLAG_UNKNOWN
2021-03-28 00:38:41 +01:00
Daniel Kolesa
99f227bfd9
unify arg and non-arg opcodes
2021-03-28 00:19:51 +01:00
Daniel Kolesa
d1e131dbf6
don't rely on MAX_ARGUMENTS where not necessary
2021-03-27 23:43:55 +01:00
Daniel Kolesa
54c0f2ae20
remove more dead bits
2021-03-27 00:35:20 +01:00
Daniel Kolesa
a24f7c9385
remove leftover dead code
2021-03-27 00:32:27 +01:00
Daniel Kolesa
a37eb25d1c
move public state methods where they belong
2021-03-27 00:26:59 +01:00
Daniel Kolesa
b27d4fa7e6
make p_tstate actually private
2021-03-26 03:05:14 +01:00
Daniel Kolesa
bd9a6cbf7c
eliminate more future private accesses
2021-03-26 02:59:42 +01:00
Daniel Kolesa
0b2c4c7038
pass thread_state in more places
2021-03-26 02:29:54 +01:00
Daniel Kolesa
c854e9d189
move the owner tag inside
2021-03-25 01:55:47 +01:00
Daniel Kolesa
468c3a07d4
get rid of some indirections
2021-03-25 01:52:03 +01:00
Daniel Kolesa
d80af7b159
hide internal_state from public state struct
2021-03-25 01:37:42 +01:00
Daniel Kolesa
14cd90116d
use the value stack in more places
2021-03-24 23:30:30 +01:00
Daniel Kolesa
4e8c3ee40f
move the VM stack off the real stack + std cleanups
2021-03-24 22:38:29 +01:00
Daniel Kolesa
3d37ea22c3
put force_ident and force_code in any_value
2021-03-24 21:01:01 +01:00
Daniel Kolesa
00b8312ad5
move most thread state into an internal structure
2021-03-24 20:33:20 +01:00
Daniel Kolesa
4ded59ce70
launder aligned_storage pointers
2021-03-24 02:42:33 +01:00
Daniel Kolesa
d774db675a
separate cs_gen.hh, various refactors
2021-03-24 02:21:32 +01:00
Daniel Kolesa
21aec59ad3
rename namespace to cubescript
2021-03-23 23:32:25 +01:00
Daniel Kolesa
b9b344cba6
remove cs_ namespace in all API
2021-03-23 23:29:32 +01:00
Daniel Kolesa
b3b4624af1
drop cubescript.cc, move parsing stuff from cs_std to cs_parser
2021-03-23 22:17:25 +01:00
Daniel Kolesa
7139370990
move belonging stuff into cs_ident
2021-03-23 21:57:38 +01:00
Daniel Kolesa
d06396f88f
move more stuff into cs_state.cc
2021-03-23 21:55:19 +01:00
Daniel Kolesa
95e0da1fff
move some more stuff, don't use both_libraries() in meson
2021-03-23 02:48:14 +01:00
Daniel Kolesa
b5b0d0adf5
move some public state api into cs_state, separate lib_base
2021-03-23 02:43:18 +01:00
Daniel Kolesa
87e141ab36
move public ident interfaces to cs_ident.cc
2021-03-23 02:35:31 +01:00
Daniel Kolesa
4b766a380f
drop the util namespace
2021-03-23 02:02:43 +01:00
Daniel Kolesa
4b6c284ea1
separate cs_parser.cc, drop cs_util.cc
2021-03-23 02:00:23 +01:00
Daniel Kolesa
68b66c0b28
move strref implementation to strman
2021-03-23 01:49:29 +01:00
Daniel Kolesa
2cc1b0e271
add cs_std.cc, drop cs_util.hh
2021-03-23 01:46:56 +01:00
Daniel Kolesa
f52aeead32
eliminate the strref friend kludge
2021-03-23 01:35:04 +01:00
Daniel Kolesa
6821260c37
separate header/impl for strman
2021-03-23 01:25:47 +01:00
Daniel Kolesa
4588ae2373
separate cs_state, cs_std
2021-03-23 01:11:21 +01:00
Daniel Kolesa
702dca0809
separate ident and error impls into their own files
2021-03-22 22:33:15 +01:00
Daniel Kolesa
f9a49ffba7
get rid of emptyblock
2021-03-22 22:01:49 +01:00
Daniel Kolesa
83e92e6881
ditch a bunch of reinterpret_casts
2021-03-22 21:37:13 +01:00
Daniel Kolesa
3d2f115de5
separate bytecode bits into its own file
2021-03-22 21:26:05 +01:00
Daniel Kolesa
63251f0eac
add cs_callable to replace std::function
...
now function data can be allocated with our own allocator as
well, plus we get guarantees on small storage; this type is
move-only, and it's also more memory efficient than std::function,
at least the libstdc++ implementation
2021-03-22 01:01:51 +01:00
Daniel Kolesa
f72a39f656
manage bytecode memory using the state allocator
...
this means *all* heap allocated memory is now handled through
the state's allocator (well, except things using std::function),
which allows for precise memory tracking and control
2021-03-21 19:23:23 +01:00
Daniel Kolesa
666f487a92
don't need full bcode_ref/unref in this case
2021-03-21 18:53:22 +01:00
Daniel Kolesa
3f866baccb
strict reference counting for bytecode references
2021-03-21 18:45:59 +01:00
Daniel Kolesa
45bf6ed7ef
fix crash on quit where interfaces are destroyed instead of impls
2021-03-21 06:20:56 +01:00
Daniel Kolesa
a591384afd
use our allocator for more buffers
2021-03-21 06:13:45 +01:00
Daniel Kolesa
a5b0ce5d72
drop cs_cmd_internal
2021-03-21 03:07:11 +01:00
Daniel Kolesa
436098cc38
drop the whole cs_alias_internal nonsense
2021-03-21 02:59:37 +01:00
Daniel Kolesa
f8eb07ee2b
hide implementation details of idents
2021-03-21 02:47:02 +01:00
Daniel Kolesa
3905ff0e9d
fix/clean up compileblockstr
2021-03-21 00:00:20 +01:00
Daniel Kolesa
be71d3a4b9
rework allocator errors and error message storage buffer
2021-03-20 21:06:26 +01:00
Daniel Kolesa
d7c93fa8b9
make format errors internal errors
2021-03-20 19:54:46 +01:00
Daniel Kolesa
2f3d5ea938
further clean up list parser api
2021-03-20 19:34:51 +01:00
Daniel Kolesa
82d366366e
drop libostd requirement entirely
2021-03-20 08:23:51 +01:00
Daniel Kolesa
cb926a5750
get rid of ostd requirements inside library entirely
2021-03-20 07:24:25 +01:00
Daniel Kolesa
68669413cc
get rid of most remaining ostd usage
2021-03-20 06:52:10 +01:00
Daniel Kolesa
10b2a81cec
redo (un)escape_string around output iterators
2021-03-20 06:18:31 +01:00
Daniel Kolesa
320fdbaefd
use c++20 std::span
2021-03-20 05:41:25 +01:00
Daniel Kolesa
4068c96ec2
remove the auxiliary run_<type> APIs, they are fairly useless now
2021-03-20 05:14:14 +01:00
Daniel Kolesa
d626fba537
remove file exec api
...
this is something each thing will want to do on its own...
but add a new set of calls that take code source for debug info
2021-03-20 05:10:19 +01:00
Daniel Kolesa
55d5397f4f
implement move behavior for cs_value
...
this prevents things from going horribly wrong when people
do move the values (since the implicit implementations don't
take care of handling the refcounts)
2021-03-20 04:49:47 +01:00
Daniel Kolesa
5648c1a757
use string_view everywhere that returns or takes a string
2021-03-20 04:10:27 +01:00
Daniel Kolesa
70d7e15ed5
eliminate cs_vector/cs_map, use our allocator for all state
2021-03-19 23:05:19 +01:00
Daniel Kolesa
ac1af69d96
move cs_valbuf/charbuf before cs_shared_state
2021-03-19 22:54:22 +01:00
Daniel Kolesa
f41462deaf
move cs_allocator out of cs_shared_state
2021-03-19 22:53:42 +01:00
Daniel Kolesa
b81e419db6
get rid of cs_vector in most places
2021-03-19 22:49:52 +01:00
Daniel Kolesa
0ca8561d5d
add cs_valbuf
2021-03-19 22:40:11 +01:00
Daniel Kolesa
2e725771e4
eliminate remaining cs_string
2021-03-19 22:35:39 +01:00
Daniel Kolesa
fece7ce769
get rid of most remaining cs_string
2021-03-19 22:32:28 +01:00
Daniel Kolesa
4e5e0f5de8
get rid of cs_string in codegen
2021-03-19 22:25:38 +01:00
Daniel Kolesa
b27f8dee91
use state's allocator to manage cs_strman resources
2021-03-19 03:10:02 +01:00
Daniel Kolesa
47b87ab936
get rid of cs_string in lib_list
2021-03-19 02:55:59 +01:00
Daniel Kolesa
e74d8b5bef
get rid of cs_string in lib_str
2021-03-19 02:50:48 +01:00
Daniel Kolesa
5ee7e27839
add cs_charbuf (mutable buffer controlled by our allocator)
...
also use it in a few places
2021-03-19 02:44:29 +01:00
Daniel Kolesa
5a4cccf194
move strref impl to cs_util
2021-03-19 02:28:30 +01:00
Daniel Kolesa
08212df80f
move shared state into cs_util
2021-03-19 02:27:36 +01:00
Daniel Kolesa
126d6ab2b6
use a stolen buffer for strupper/lower
2021-03-19 01:31:34 +01:00
Daniel Kolesa
b42da1e56f
add custom buffer allocation into string manager
2021-03-19 01:00:11 +01:00
Daniel Kolesa
af1a85fb91
get rid of public format_int/float (use cs_value)
2021-03-19 00:34:12 +01:00
Daniel Kolesa
26bcc43578
get rid of tvals_concat in favor of simpler api
2021-03-19 00:31:18 +01:00
Daniel Kolesa
64d9c0e749
make intstr/floatstr internal to cs_value
2021-03-19 00:12:47 +01:00
Daniel Kolesa
b534a6d9af
get rid of some unnecessary string allocs
2021-03-19 00:01:57 +01:00
Daniel Kolesa
d3ec4a47dd
ditch cs_string from public headers + style fix
2021-03-18 23:56:25 +01:00
Daniel Kolesa
9d0494a9da
replace list_parser with a simpler api
2021-03-18 23:53:16 +01:00
Daniel Kolesa
704f9217f7
unify enum style
2021-03-18 20:55:14 +01:00
Daniel Kolesa
7023e09049
don't use memcpy for non-trivial structures
2021-03-18 01:37:38 +01:00
Daniel Kolesa
6ed9ae1235
get rid of standard i/o inside vm
2021-03-18 00:03:30 +01:00
Daniel Kolesa
fb8668a508
use more stringrefs
2021-03-17 23:32:38 +01:00
Daniel Kolesa
7eaf3679a4
get rid of cs_value::get_strr
2021-03-17 21:59:37 +01:00
Daniel Kolesa
2f5bb697eb
use string refs more instead of allocated strings
2021-03-17 21:46:37 +01:00
Daniel Kolesa
8b7f36319d
eliminate length field in cs_value
2021-03-17 21:16:25 +01:00
Daniel Kolesa
e3cff816c7
reduce copying strings around (ensure refs are not erased)
2021-03-17 21:00:19 +01:00
Daniel Kolesa
64130a12bf
remove handling of constants from codegen, bytecode and cs_value
...
also drop move semantics on cs_value
2021-03-17 20:41:08 +01:00
Daniel Kolesa
8def7ce85c
intern all strings in cs_value
2021-03-17 02:47:34 +01:00
Daniel Kolesa
c004db42c6
refactor cs_value and related structures to contain state
...
this will allow us to intern strings inside cs_value
2021-03-17 01:26:30 +01:00
Daniel Kolesa
dcae5b30b2
initial implementation of unique/interned string manager
2021-03-16 00:45:09 +01:00
Daniel Kolesa
e58c69bc99
mesonize libcubescript
2018-10-28 02:56:00 +02:00
Daniel Kolesa
8805594bc2
style fixes
2018-04-27 23:53:55 +02:00
Daniel Kolesa
fb78b4acdd
initial support for "threads"
2018-04-26 19:23:11 +02:00
Daniel Kolesa
07666c7564
naming consistency
2018-04-25 01:49:58 +02:00
Daniel Kolesa
d12e7f67ee
gcc warning fixes
2017-11-06 01:07:53 +01:00
Daniel Kolesa
efdc82324e
fix includes
2017-06-20 21:21:39 +02:00
Daniel Kolesa
d01349886a
remove slice_until
2017-06-15 20:44:09 +02:00
Daniel Kolesa
8d62c09f88
fix build
2017-04-23 15:34:45 +02:00
Daniel Kolesa
f0f6dc437f
fix build
2017-04-17 17:13:14 +02:00
Daniel Kolesa
d744c6b1c6
remove dependency on types.hh
2017-04-04 00:28:56 +02:00
Daniel Kolesa
5b1baafdb3
fixes
2017-04-01 01:06:36 +02:00
Daniel Kolesa
73d1b142d1
fixes
2017-03-31 03:34:09 +02:00
Daniel Kolesa
6b17c4594f
remove slice_until
2017-03-31 03:18:26 +02:00
Daniel Kolesa
70ef1ff486
stuff
2017-03-31 03:10:36 +02:00
Daniel Kolesa
7294580ccf
use range_put_all
2017-02-19 18:13:51 +01:00
Daniel Kolesa
5c2c441925
fix build
2017-02-19 16:44:16 +01:00
Daniel Kolesa
73699bd1cf
use std::min, max, clamp
2017-02-18 17:49:01 +01:00
Daniel Kolesa
e87b1b566c
use appender_range directly
2017-02-18 17:28:43 +01:00
Daniel Kolesa
14436d6aa0
fix build
2017-02-16 20:51:03 +01:00
Daniel Kolesa
8343979e03
fix build after style update
2017-02-16 19:07:22 +01:00
Daniel Kolesa
74edc2821d
fix build
2017-02-15 19:41:12 +01:00
Daniel Kolesa
3c093ce8ad
compile fix
2017-02-14 18:33:45 +01:00
Daniel Kolesa
9b4ea3e765
replace removed PointerRange
2017-02-14 17:41:15 +01:00
Daniel Kolesa
efe4ee523a
fix build
2017-02-13 23:32:15 +01:00
Daniel Kolesa
41eb8b211f
begin naming scheme rework
2017-02-13 18:11:19 +01:00
Daniel Kolesa
140ccf08c6
add cs_internal_error exception and use it for unrecoverable unlikely errors
2017-02-12 22:52:43 +01:00
Daniel Kolesa
6e67ce8574
clean up pointerrange constructor
2017-02-09 22:54:09 +01:00
Daniel Kolesa
fda734a868
ostd fixes
2017-02-09 21:27:57 +01:00
Daniel Kolesa
2536179500
use standard type traits
2017-02-09 20:59:14 +01:00