Commit Graph

168 Commits (7f74602b7e0e15048835e84eac088696978479ab)

Author SHA1 Message Date
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 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 2270d8e41f up the default warning level, turn off rtti by default 2021-03-31 01:35:02 +02:00
Daniel Kolesa eddbf64c87 get rid of call_with_cleanup 2021-03-30 23:49:50 +02:00
Daniel Kolesa 970e37f318 make alias pushing separate from setting value 2021-03-30 20:24:46 +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 4154944726 remove fixed-size argument stacks and reliance on argument ids 2021-03-30 00:28:06 +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 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 d7700a9337 remove now unused BC_INST_CONC_M 2021-03-28 01:31:59 +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 a37eb25d1c move public state methods where they belong 2021-03-27 00:26:59 +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 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 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 4b6c284ea1 separate cs_parser.cc, drop cs_util.cc 2021-03-23 02:00:23 +01:00
Daniel Kolesa 2cc1b0e271 add cs_std.cc, drop cs_util.hh 2021-03-23 01:46:56 +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 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 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 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 82d366366e drop libostd requirement entirely 2021-03-20 08:23:51 +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 5648c1a757 use string_view everywhere that returns or takes a string 2021-03-20 04:10:27 +01:00
Daniel Kolesa 5a4cccf194 move strref impl to cs_util 2021-03-19 02:28:30 +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 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 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 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 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 8805594bc2 style fixes 2018-04-27 23:53:55 +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 f0f6dc437f fix build 2017-04-17 17:13:14 +02:00
Daniel Kolesa 73d1b142d1 fixes 2017-03-31 03:34:09 +02: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 9b4ea3e765 replace removed PointerRange 2017-02-14 17:41: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
Daniel Kolesa 0dd69fedea remove memory.hh includes 2017-02-01 20:20:57 +01:00
Daniel Kolesa 58bf658409 update according to ostd 2017-01-30 19:38:11 +01:00
Daniel Kolesa 8dc423dcaa update according to ostd 2017-01-30 01:18:55 +01:00
Daniel Kolesa 3bdb0c4d7b update according to ostd 2017-01-29 15:17:43 +01:00
Daniel Kolesa 8e31583612 use uint32_t 2017-01-25 02:10:17 +01:00
Daniel Kolesa 1c5c0939e1 use size_t 2017-01-25 02:09:50 +01:00
Daniel Kolesa d14c8f8593 update to latest ostd 2017-01-25 01:57:33 +01:00
Daniel Kolesa 57478f6866 move to std::vector 2017-01-25 01:18:29 +01:00
Daniel Kolesa 79b1a031ca use new ostd features 2016-11-15 22:54:05 +01:00
Daniel Kolesa c4471b71bf unexpose allocator related stuff from public API 2016-10-03 19:23:15 +02:00
Daniel Kolesa 5d70e2c80f simplify parser error handling (and allow for wider usage of line infos) 2016-09-29 21:21:21 +02:00
Daniel Kolesa 64b12b442b remove a jump 2016-09-23 21:06:44 +02:00
Daniel Kolesa 3a0cd8d378 exception-proof rundepth 2016-09-23 21:04:52 +02:00
Daniel Kolesa 604fd4e000 proper line infos at parse time 2016-09-22 01:44:35 +02:00
Daniel Kolesa 814b2824e9 match ostd api 2016-09-18 19:31:19 +02:00
Daniel Kolesa 845232605d remove the out stream and re-do the var printing system 2016-09-15 21:59:11 +02:00
Daniel Kolesa f12197bbe5 throw CsErrorException where appropriate (robust error handling everywhere) 2016-09-15 21:15:54 +02:00
Daniel Kolesa 377e9d7702 throw out of the VM on errors 2016-09-15 20:55:58 +02:00
Daniel Kolesa 38c17d1911 implement break/continue in bytecode 2016-09-15 02:12:22 +02:00