Commit Graph
100 Commits
Author SHA1 Message Date
David Anderson 55647cc18e Update to the latest SourcePawn revision. 2015-08-18 09:51:24 -07:00
David Anderson 4e275eea97 Split intercom.h into separate headers and reduce shared header inclusion. 2015-08-31 10:00:49 -07:00
David Anderson 4f1705e001 Rename some bridge interfaces. 2015-08-31 09:57:32 -07:00
David Anderson 5d55ff23bd Move OnQueryCvarValueFinished into the global hook manager. 2015-08-31 09:22:08 -07:00
David Anderson 2ed044804d Move OnConVarChanged into a global hook. 2015-08-31 09:18:29 -07:00
David Anderson 32ba03538b Move CCommandArgs into its own header. 2015-08-31 00:07:37 -07:00
David Anderson 23feee0e00 Put the game provider in its own header. 2015-08-31 00:07:34 -07:00
David Anderson 401aa038f8 Start a new bridge mechanism for global callbacks. 2015-08-31 00:07:27 -07:00
David Anderson 38e1c2f1f3 Clean up the core side of the logic bridge. 2015-08-30 23:30:15 -07:00
David Anderson 9e4d396d5e Virtualize MMS functions in the core/logic bridge. 2015-08-30 23:29:46 -07:00
David Anderson 5c5d43137d Virtualize game state functions in the core/logic bridge. 2015-08-30 23:29:23 -07:00
David Anderson bdfdab1d3a Virtualize game description functions in the core/logic bridge. 2015-08-30 23:28:59 -07:00
David Anderson 9366882ac4 Virtualize ConVar bridge functions. 2015-08-30 23:28:44 -07:00
David Anderson 0f9e5234fe Convert core_bridge to a proper class declaration. 2015-08-30 23:28:28 -07:00
David Anderson 3d5c9f0e21 Rename smcore to bridge, and use it as a pointer. 2015-08-30 23:27:53 -07:00
David Anderson a2dac43833 Remove CCommand from the logic bridge. 2015-08-30 21:02:14 -07:00
David Anderson 28346c99f2 Move RootConsoleMenu into core/logic. 2015-08-30 21:01:46 -07:00
David Anderson 23d55dd9d5 Move RootConsoleMenu::ConsolePrint into the logic bridge. 2015-08-30 21:01:27 -07:00
David Anderson 2c886943a0 Move RootConsoleMenu into its own header and .cpp file. 2015-08-30 21:01:10 -07:00
David Anderson 9d805ea9fb Replace the AddRootConsoleCommand API to not expose internal structures. 2015-08-30 21:01:03 -07:00
David Anderson e992c33f35 Factor irrelevant stuff out of RootConsoleMenu. 2015-08-30 21:00:42 -07:00
David Anderson ecbcc7ba16 Move the sourcemod_version convar. 2015-08-30 21:00:39 -07:00
David Anderson 6503e92d66 Move LibrarySys from core to logic. 2015-08-30 20:11:22 -07:00
David Anderson 207f643d3a Replace g_LibSys usage with AMTL primitives. 2015-08-30 20:11:02 -07:00
David Anderson ec01ca72a0 Replace internal ILibrary use with ke::SharedLib. 2015-08-30 20:10:59 -07:00
David Anderson 5ecd906905 Replace CLibrary with a wrapper around ke::SharedLib. 2015-08-30 20:10:57 -07:00
David Anderson e78fe93e92 Move gnprintf/atcprintf from core to logic. 2015-08-30 19:32:46 -07:00
David Anderson 9d2bee261c Move TrimWhitespace from core to logic. 2015-08-30 18:42:25 -07:00
David Anderson c261bb0b2e Merge branch 'rm-strncopy' 2015-08-30 18:38:31 -07:00
David Anderson 204ca3aca5 Update to the latest AMTL revision. 2015-08-30 18:38:05 -07:00
David Anderson a158205f30 Remove strncopy from the core/logic bridge. 2015-08-30 18:21:07 -07:00
David Anderson 3786a2756b Merge pull request #379 from alliedmodders/rm-format
Remove Format/FormatArgs from the core/logic bridge.
2015-08-30 21:04:20 -04:00
David Anderson 457266d249 Make UTIL_Format wrap ke::SafeSprintf. 2015-08-30 18:03:36 -07:00
David Anderson 9ba1363d86 Remove Format/FormatArgs from the core/logic bridge. 2015-08-30 18:03:31 -07:00
David Anderson 2d40af31a2 Merge pull request #383 from alliedmodders/new-amtl
Update to the latest AMTL version.
2015-08-27 10:55:00 -04:00
David Anderson c87b3c0859 Update to the latest AMTL version. 2015-08-27 01:01:18 -04:00
David Anderson e30b57cb4a Update build scripts for new AMTL folder structure. 2015-08-26 15:54:55 -04:00
David Anderson ff692f6040 Merge pull request #366 from peace-maker/timer_paused
Fix calling timer callback in paused plugins
2015-08-13 22:14:02 -07:00
David Anderson 246c32a202 Update SourcePawn and AMTL. 2015-08-13 22:08:47 -07:00
David Anderson f81786cea0 Merge pull request #368 from alliedmodders/rm-binding
Update includes to remove binding syntax.
2015-08-12 12:31:55 -07:00
David Anderson bcfef75c5d Update regex and datapack includes to not use binding syntax. 2015-08-12 11:52:57 -07:00
David Anderson 17c4649651 Update SourcePawn for bug 6396. 2015-08-02 12:54:34 -07:00
David Anderson 152807b977 Update AMTL and SourcePawn submodules to master. 2015-07-25 17:25:59 -07:00
David Anderson cb6024e334 Update AMTL and SourcePawn. 2015-05-27 10:22:40 -04:00
David Anderson 5dd4037c02 Update the sourcepawn repo. 2015-03-30 16:24:23 -07:00
David Anderson 8b0a10ad1d Checkout submodules recursively. 2015-03-15 19:31:34 -07:00
David Anderson 7fc993e079 Fix build. 2015-03-15 19:27:44 -07:00
David Anderson d846d91b0b Merge pull request #300 from alliedmodders/sp-upstream
Use upstream SourcePawn as a submodule.
2015-03-15 19:19:55 -07:00
David Anderson 2ab3498ab0 Use upstream SourcePawn as a submodule. 2015-03-15 16:38:38 -07:00
David Anderson 7f24f137d6 Merge pull request #299 from alliedmodders/amtl-upstream
Use upstream AMTL as a submodule.
2015-03-08 12:13:11 -07:00
David Anderson eaea3c927d Update upstream AMTL as a submodule. 2015-03-08 00:24:03 -08:00
David Anderson 72475d6770 Merge pull request #295 from DoctorMcKay/fix-doc
Moved note about releasing resources from OnPluginStart to OnPluginEnd
2015-03-08 00:10:13 -08:00
David Anderson 8bb6f0e5c6 Merge pull request #297 from alliedmodders/rm-packing
Remove scpack.
2015-03-07 12:42:00 -08:00
David Anderson 0b990e46ab Remove scpack. 2015-03-07 11:39:11 -08:00
David Anderson 1d313e3120 Move macro assembler out of public/assembler into sourcepawn/vm/x86. 2015-03-07 11:16:37 -08:00
David Anderson 561004c4bf Move SourcePawn headers out of public/ into sourcepawn/include. 2015-03-07 11:13:32 -08:00
David Anderson 6f1eefbdbe Strip internal SourcePawn dependencies on SM relative paths. 2015-03-07 11:07:20 -08:00
David Anderson 23ac0b4637 Keep one copy of zlib in the SourcePawn tree. 2015-03-07 11:02:44 -08:00
David Anderson a008a3f804 Remove msvc project files for SourcePawn. 2015-03-07 10:53:12 -08:00
David Anderson c81e7e3410 Move batchtool out of sourcepawn. 2015-03-07 10:52:13 -08:00
David Anderson d459ebee41 Rename jit/ to vm/. 2015-03-07 10:50:35 -08:00
David Anderson 0c5cbe536f Revert unintentional change. 2015-03-06 11:00:15 -08:00
David Anderson 175f9afa68 Merge pull request #240 from alliedmodders/stock-values
Allow capturing non-public functions as values.
2015-03-06 10:53:21 -08:00
David Anderson 8216097b2c Allow capturing non-public functions as values. 2015-03-06 10:51:46 -08:00
David Anderson 7c775aee2e Merge pull request #288 from klausenbusk/patch-1
Updated KillTimer documentation to reflect "Invalid handles" = runtime error.
2015-03-06 01:52:32 -08:00
David Anderson fa2dc5b20a Merge pull request #290 from InstantMuffin/patch-1
Documentation oddities for Call_PushStringEx
2015-03-06 01:43:54 -08:00
David Anderson 782eee3c58 Merge pull request #291 from VoiDeD/spcomp-error25-improvements
Improve the diagnostic given when a function prototype doesn't match an existing definition
2015-03-05 23:04:19 -08:00
David Anderson 90d3841ab2 Fix mac build. 2015-03-05 11:51:08 -08:00
David Anderson 715a51d01f Merge pull request #285 from alliedmodders/frames
Implement a new stack and error handling model for the SourcePawn VM.
2015-03-04 23:45:59 -08:00
David Anderson a1afa23bc4 Implement a new stack and error handling model for the SourcePawn VM.
This has three major changes to SourcePawn. First, the API now supports the concept of "exceptions". The exception state is a global property of an instance of the SourcePawn VM. Exceptions can be caught or suppressed. Many places in SourceMod have been updated to check exceptions instead of errors.

The new API obsoletes major parts of the embedder API - all but one method of invoking functions is obsoleted, and the debug interface has been scrapped. Extensions using the native API will not be affected, however, ThrowNativeError has been deprecated in favor of ReportError.

Second, the SourcePawn concept of a "stack" has been unified at the API level. A stack frame iterator now iterates over all SourcePawn invocations, rather than the topmost plugin. This makes error handling more consistent and removes another dependency on context-per-plugin.

Finally, the implementation of stack frames has been changed dramatically. Rather than maintain a complicated and expensive return pointer stack, we now rely on the implicit one provided by the CPU. The stack frame iterator now walks the JIT stack directly. This removes many unnecessary bookkeeping instructions from the generated code, in particular making the CALL instruction 40% faster.

These changes required some fair surgery to the JIT. Its error paths are now slightly more complicated, as they have to throw an exception rather than return an error code. In addition, any path that can throw an exception is now responsible for creating an "exit frame", which exists to tell the stack frame iterator about transitions from the JIT to the VM.
2015-03-04 23:45:30 -08:00
David Anderson 04827466b0 Rewrite the .smx parser.
This removes one the last remnants of the SourceMod 1.0 VM implementation.

The new parser introduces a number of design changes in the VM. First, the VM now takes greater responsibility for validating and sanity checking the structure of the SMX container format. Previously, malformed SMX files could easily crash SourcePawn. The loader now rejects files that have out-of-bounds offsets or incomplete sections. Complex sections, like debug info or the code stream, are verified lazily.

Internally, the sp_plugin_t structure has been removed. It has been replaced by a new LegacyImage class, designed to be independent from the SPVM API. This potentially lets us load code streams from non-.smx containers. More importantly, it removes a lot of bookkeeping and pre-computed state from PluginRuntime. The LegacyImage class is now responsible for handling debug info as well.

PluginRuntime is now intended to hold only cached or immutable data, and PluginContext holds all VM state. As such PluginContext is now responsible for allocating a plugin's runtime memory, not PluginRuntime.

Finally, some aspects of the loading process have been cleaned up. The
decompression and image handoff logic should now be easier to
understand.
2015-02-25 22:28:10 -08:00
David Anderson afbcdc8a20 Merge branch 'rm-interpreter' 2015-02-25 22:22:07 -08:00
David Anderson b5ae5defcf Merge branch 'simpl-fns' 2015-02-25 22:21:43 -08:00
David Anderson 1f351c50d5 Merge branch 'fix-native-updating' 2015-02-25 22:20:41 -08:00
David Anderson 9a37b94f4d Merge pull request #280 from alliedmodders/rm-ctx
Remove sp_context_t.
2015-02-26 15:46:32 -08:00
David Anderson acf6dcac86 Remove the interpreter. 2015-02-24 23:57:08 -08:00
David Anderson fcec0ee7c7 Use AutoPtr in more places in the JIT. 2015-02-24 23:50:42 -08:00
David Anderson b9b0ec865c Simplify the JIT function cache. 2015-02-24 23:43:07 -08:00
David Anderson fcaa5361c8 Don't expose mutable sp_native_t. 2015-02-24 23:10:18 -08:00
David Anderson 33588b65ce Remove sp_context_t. 2015-02-24 21:54:34 -08:00
David Anderson c09c65e4c7 Remove sp_context_t::plugin. 2015-02-24 21:54:34 -08:00
David Anderson 11ea385169 Remove sp_context_t::rval. 2015-02-24 21:54:34 -08:00
David Anderson 3a0310e832 Remove sp_context_t::basecx. 2015-02-24 21:54:34 -08:00
David Anderson 31ab1ced06 Move hp from sp_context_t to PluginContext. 2015-02-24 21:54:34 -08:00
David Anderson b2c61a341a Move sp from sp_context_t to PluginContext. 2015-02-24 21:54:30 -08:00
David Anderson 4c9321f02a Move frm from sp_context_t to PluginContext. 2015-02-24 21:01:05 -08:00
David Anderson d2005bd42a Move cip from sp_context_t to PluginContext. 2015-02-24 20:53:44 -08:00
David Anderson 8817de8a55 Remove err from sp_context_t. 2015-02-24 20:41:51 -08:00
David Anderson 97dbc7ff07 Move n_err from sp_context_t to PluginContext. 2015-02-24 20:16:13 -08:00
[email protected] 9c104ef310 Move nidx from sp_context_t to PluginContext. 2015-02-24 19:59:45 -08:00
[email protected] 5502fbbdc1 Move the tracker from sp_context_t to PluginContext. 2015-02-24 15:43:41 -08:00
[email protected] deedc1aaa6 Remove unused fields from sp_context_t. 2015-02-24 15:21:52 -08:00
[email protected] 37af05c456 Move the debug return stack into PluginContext. 2015-02-24 15:20:00 -08:00
David Anderson 8c35d79576 Merge pull request #279 from alliedmodders/mv-basecontext
Rename BaseContext to PluginContext.
2015-02-24 14:56:32 -08:00
[email protected] 8eed58a467 Rename sp_vm_basecontext to plugin-context. 2015-02-24 12:55:00 -08:00
[email protected] 2e77155b4e Rename BaseContext to PluginContext. 2015-02-24 12:50:09 -08:00
[email protected] 8b8edf6e70 Remove dead file and fix gcc build. 2015-02-24 11:39:28 -08:00
[email protected] f0aa177bf8 Merge branch 'cc3' 2015-02-24 11:06:11 -08:00
[email protected] e163204643 Merge branch 'cc2'. 2015-02-24 11:05:25 -08:00
[email protected] 50d7d7eedb Merge branch 'rm-watchdog-singleton' 2015-02-24 11:04:06 -08:00