Commit Graph

293 Commits

Author SHA1 Message Date
Peace-Maker
5b9ae5917b Add ICellArray and create/free in ISourceMod
Add an ICellArray interface to expose the adt_array CellArray class from
logic to core.
Add methods to ISourceMod to create and delete ICellArray instances in
logic.
2016-08-21 21:32:23 +02:00
David Anderson
a7f5fb7a08 Fix Linux build. 2016-07-26 14:46:58 -07:00
David Anderson
3cccfc15da Update to SourcePawn 1.9 and the latest AMTL. 2016-07-26 01:36:35 -07:00
David Anderson
1b30e78db3 Update to the latest AMTL. 2016-07-09 12:16:17 -07:00
Nicholas Hastings
f12924458f Merge branch 'vs2015' 2016-06-11 12:14:12 -04:00
Nicholas Hastings
40f2512317 Remove support for Source 1 Dota 2. (#496) 2016-04-26 23:18:47 -04:00
Nicholas Hastings
ed46ca3328 Add support for retrieving game server Steam Id (bug 6404). (#495) 2016-04-26 23:17:08 -04:00
Nicholas Hastings
416abd81a1 Add support for compiling with VS2015. 2016-03-30 08:56:27 -04:00
David Anderson
f7bb423f06 Update to the latest SourcePawn and AMTL. 2016-03-13 16:29:11 -07:00
Martynas Mickevičius
37210c9ef1 Fix compilation of sample extension. 2016-02-20 03:27:49 +02:00
Ross Bemrose
2f5257fcb5 Update sample_ext's AMBuildScript with the changes used in SourceMod's AMBuildScript 2016-01-19 12:29:15 -05:00
Nicholas Hastings
c5a81d7c6f Adjust for hl2sdk-bms updates. 2015-12-22 09:53:05 -05:00
David Anderson
c3e5d62bf6 Update to the latest AMTL: remove PassRef. 2015-11-08 13:51:22 -08:00
David Anderson
e2b399b8d3 Update to the latest AMTL - Rename Ref to RefPtr. 2015-11-08 13:14:57 -08:00
David Anderson
c849616003 Add an OnPluginWillUnload callback that precedes OnPluginEnd(). 2015-11-01 00:30:37 -07:00
David Anderson
d674414cf0 Add a versioned IPluginsListener and deprecate the non-versioned class. 2015-11-01 00:23:33 -07:00
David Anderson
87e9dee78b Evict plugins that fail to load. 2015-10-31 17:30:33 -07:00
David Anderson
903315747d Clarify plugin states. 2015-10-31 17:25:59 -07:00
David Anderson
ab1b915a3c Fix re-entrancy issues in CPluginManager by using ReentrantList. 2015-10-31 17:24:22 -07:00
David Anderson
6c5ab80418 Refactor and cleanup the AMBuildScript a bit. 2015-10-08 14:55:53 -07:00
David Anderson
d0843ab997 Add a ReentrantList class to abstract list mutation during iteration. 2015-09-21 01:07:30 -07:00
David Anderson
d9216cc599 Remove references to non-mapupdated plugins. 2015-09-20 20:31:30 -07:00
David Anderson
168b779786 Move sm_dump_handles to core/logic. 2015-09-20 14:33:10 -07:00
Nicholas Hastings
44bacdc067 Fix recent regression with finding engine ptr on CS:S, DoD:S, HL2:DM.
They are still only have engine v21, not yet v22 (let alone v23).
2015-09-14 09:56:06 -04:00
Nicholas Hastings
8f8c00c66d Update metamod-attached extensions to use same engine ptr lookup as core.
(On TF2-branch games, always search for engine v23 first, falling back to v22.)
2015-09-13 17:18:33 -04:00
Kyle Sanderson
d9839bab68 Fix sm-central crashing on start (bug 6413). 2015-09-10 11:32:10 -07:00
David Anderson
5d55ff23bd Move OnQueryCvarValueFinished into the global hook manager. 2015-08-31 09:22:08 -07:00
David Anderson
9d805ea9fb Replace the AddRootConsoleCommand API to not expose internal structures. 2015-08-30 21:01:03 -07:00
David Anderson
204ca3aca5 Update to the latest AMTL revision. 2015-08-30 18:38:05 -07: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
246c32a202 Update SourcePawn and AMTL. 2015-08-13 22:08:47 -07:00
David Anderson
152807b977 Update AMTL and SourcePawn submodules to master. 2015-07-25 17:25:59 -07:00
Ross Bemrose
b705de0143 Add missing CopyFiles function. 2015-07-25 13:16:17 -04:00
Nicholas Hastings
7564c09aff Merge pull request #341 from powerlord/ambuild-sampleext
Add AMBuild2 script to Sample Extension.
2015-06-27 20:10:00 -04:00
David Anderson
cb6024e334 Update AMTL and SourcePawn. 2015-05-27 10:22:40 -04:00
Ross Bemrose
43f4a2f7b7 Fix checking the wrong directory for smsdk_ext.cpp. Updated some comments. 2015-05-14 14:16:19 -04:00
Ross Bemrose
0022b750b5 Split AMBuildScript into AMBulde and AMBuildScript 2015-05-14 13:48:59 -04:00
Ross Bemrose
d49714bb10 Add AMBuildScript, configure.py, and PackageScript 2015-05-14 12:36:59 -04:00
Asher Baker
1b47b68cc7 Correct NameHashSet::add() return type. 2015-05-09 11:57:49 +01:00
Asher Baker
f7c6fc9d1f Restore check_thunks error message. 2015-05-07 21:53:38 +01:00
David Anderson
eaea3c927d Update upstream AMTL as a submodule. 2015-03-08 00:24:03 -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
Nicholas Hastings
2d53547e03 Merge pull request #289 from alliedmodders/more-ninvoke-killing
Remove references to INativeInvoker.h from extension boilerplate.
2015-03-06 07:37:46 -05:00
Nicholas Hastings
6f8ffd55a7 Merge pull request #263 from alliedmodders/admins-trans
Update admins.inc with methodmaps, newdecls (r=dvander, asherkin).
2015-03-05 14:32:15 -05:00
Nicholas Hastings
96703c247c Remove references to INativeInvoker.h from extension boilerplate. 2015-03-05 10:59:19 -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
fcaa5361c8 Don't expose mutable sp_native_t. 2015-02-24 23:10:18 -08:00