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
David Anderson
ec05036a2d
Merge pull request #274 from alliedmodders/refactor-api
...
Refactor the public API entrypoint for SourcePawn.
2015-02-24 11:03:32 -08:00
David Anderson
781c5129a9
Remove the JITX86 class.
2015-02-24 02:03:58 -08:00
David Anderson
111dd7eb68
Factor code stubs out of JITX86.
2015-02-24 02:03:58 -08:00
David Anderson
21f5400d9c
Remove ICompilationData.
2015-02-24 02:03:57 -08:00
David Anderson
8cf3e227ea
Move context var initialization into BaseContext.
2015-02-24 02:03:56 -08:00
David Anderson
8c95919b32
Move watchdog/runtime interaction into Environment.
2015-02-24 02:03:55 -08:00
David Anderson
b406c3d03d
Merge sp_vm_engine and engine2.
2015-02-24 02:03:55 -08:00
David Anderson
c70e87d582
Move the code cache into Environment, and out of knight/shared.
2015-02-24 01:57:50 -08:00
David Anderson
57ba8fd09b
De-singleton-ify the watchdog timer.
2015-02-24 01:53:37 -08:00
David Anderson
3cf3f6c3f8
Merge sp_vm_engine and engine2.
2015-02-24 01:52:14 -08:00
David Anderson
499f7b3929
Refactor the public API entrypoint for SourcePawn.
2015-02-24 01:52:13 -08:00
David Anderson
e58415f94a
Fix shell build on Windows.
2015-02-24 01:49:03 -08:00
David Anderson
38d2c3690a
Merge pull request #273 from alliedmodders/add-shell
...
Build the debug spshell as part of AMBuild.
2015-02-23 20:28:30 -08:00
David Anderson
4212fb88c8
Build the debug spshell as part of AMBuild.
2015-02-23 20:21:17 -08:00
David Anderson
f769e1a00c
Merge pull request #272 from alliedmodders/rn-runtime
...
Rename BaseRuntime to PluginRuntime.
2015-02-23 16:56:18 -08:00
[email protected]
1f9b898702
Rename BaseRuntime files to plugin-runtime.
2015-02-23 16:44:15 -08:00
[email protected]
2f71cb4cd7
Rename BaseRuntime to PluginRuntime.
2015-02-23 16:40:36 -08:00
David Anderson
b8d2be9a0d
Merge pull request #271 from alliedmodders/rm-jit-function
...
Rename some horrible classes.
2015-02-23 16:28:28 -08:00
[email protected]
b2d8dde3a5
Rename Function to CompiledFunction.
2015-02-23 16:27:57 -08:00
[email protected]
0ee4885056
Rename sp_vm_function to scripted-invoker.
2015-02-23 16:14:59 -08:00
[email protected]
45bac7feb0
Rename jit_function to compiled-function.
2015-02-23 16:04:57 -08:00
[email protected]
892b8c05b1
Rename JitFunction to CompiledFunction and CFunction to ScriptedInvoker.
2015-02-23 16:03:08 -08:00
David Anderson
7d64ade621
Merge pull request #270 from alliedmodders/modernize-vm-style
...
Modernize sourcepawn/jit style.
2015-02-23 14:38:28 -08:00
[email protected]
45c43f4aee
Modernize sp_vm_basecontext.
2015-02-23 13:40:01 -08:00
[email protected]
1b47aa10ca
Modernize sp_vm_engine style.
2015-02-23 13:08:28 -08:00
[email protected]
bcd88b4437
Modernize sp_vm_function style.
2015-02-23 13:01:00 -08:00
[email protected]
10d778e344
Modernize engine2.* style.
2015-02-23 12:49:26 -08:00
[email protected]
0100ebadb9
Fix build on GCC.
2015-02-23 12:40:02 -08:00
David Anderson
eb9f496cd8
Merge pull request #262 from VoiDeD/bug-6310
...
Fix tag mismatch warning when using SQLite_UseDatabase. (bug 6310)
2015-02-15 21:45:46 -08:00
David Anderson
7e9b22cb6e
Merge pull request #259 from alliedmodders/rm-sizeof-defarg
...
Remove sizeof() as a special-case default argument value.
2015-02-03 12:44:00 -08:00
David Anderson
c116a731f1
Remove sizeof() as a special-case default argument value.
2015-02-02 21:10:20 -08:00
David Anderson
0bb2dc32af
Merge pull request #256 from alliedmodders/bug6302
...
Don't special case hierarchy-free enumeration constants when used as array indices. (bug 6302)
2015-01-31 10:50:24 -08:00
David Anderson
380479cadd
Don't special case hierarchy-free enumeration constants when used as array indices. (bug 6302)
2015-01-29 00:16:06 -08:00
David Anderson
04c23383b1
Merge pull request #255 from alliedmodders/bug6298
...
Fix chained field expressions losing lvalue-ness. (bug 6298)
2015-01-28 17:49:52 -08:00
David Anderson
90ff154598
Fix chained field expressions losing lvalue-ness. (bug 6298)
2015-01-28 17:31:16 -08:00
David Anderson
3040708d4e
Merge pull request #215 from Thordin/more_handles
...
Increased handles to 32k
2015-01-26 11:24:46 -08:00
David Anderson
2382902fe4
Merge pull request #244 from alliedmodders/db-fix
...
Fix wrong value in transitional DBI callback. (bug 6292)
2015-01-23 14:07:22 -08:00
David Anderson
49383e7391
Fix wrong value in transitional DBI callback. (bug 6292)
2015-01-16 00:33:29 -08:00
David Anderson
f715952128
Merge pull request #243 from VoiDeD/umsg-callback
...
Use BfRead or Protobuf tags in umsg hook callbacks, rather than a generic Handle.
2015-01-15 11:58:25 -08:00
David Anderson
4218674e7c
Merge pull request #242 from VoiDeD/umsg-callback
...
Use BfRead tag in umsg hook typedef, rather than a generic Handle.
2015-01-13 20:28:54 -08:00
David Anderson
bded4f9142
Fix uninitialized variable in decl_enum().
2015-01-04 12:12:16 -08:00
David Anderson
491036a1e6
Allow "stock static" in addition to "static stock".
2015-01-04 12:04:51 -08:00
David Anderson
4ec992474e
Remove some heinous preprocessor directives.
...
Gone:
- #emit (bah-roken!)
- #pragma compress (useless)
- #pragma library (useless)
2015-01-03 11:41:37 -08:00
David Anderson
822501b8a1
Fix typos in dbi.inc transitional syntax.
2015-01-03 11:38:51 -08:00
David Anderson
bf3ff460b3
Merge pull request #93 from peace-maker/failstate_dependencies
...
Pause dependent plugins on SetFailState. (bug 6120, r=dvander)
2015-01-03 10:55:52 -08:00
David Anderson
d413a6bd2f
Merge pull request #227 from VoiDeD/newdecls-retag-warning
...
Old style retagging should emit a compiler warning when newdecls are required.
2014-12-17 15:30:08 -08:00
David Anderson
58194c5d99
Merge pull request #225 from powerlord/votecallback-fix
...
Add new-style API compatibility for VoteHandler.
2014-12-16 13:29:09 -08:00
David Anderson
e250eb66d1
Merge pull request #224 from VoiDeD/umsg-fix
...
Fix UserMessageToBfWrite and UserMessageToBfRead
2014-12-15 22:23:47 -08:00
David Anderson
b4199e5aa3
Merge pull request #221 from alliedmodders/tr-db
...
Transitional syntax support for DBI.
2014-12-14 18:37:53 -08:00
David Anderson
b60ef1669c
Update SQL plugins for transitional syntax.
2014-12-14 18:37:32 -08:00
David Anderson
bab1110bc0
Disallow coercion to/from char[] and any[].
2014-12-14 02:00:58 -08:00
David Anderson
b1cb06c5ce
Update DBI for transitional syntax.
2014-12-13 16:34:58 -08:00
David Anderson
5a814c40b3
Merge pull request #207 from alliedmodders/tr-menus
...
Update menu transitional syntax.
2014-12-13 13:29:52 -08:00
David Anderson
1328984e0b
Update plugins for transitional methods.
2014-12-13 13:29:15 -08:00
David Anderson
722a23c818
Redo menu methodmaps.
2014-12-13 12:53:30 -08:00
David Anderson
5959d6ed54
Merge pull request #198 from alliedmodders/tr-events
...
Port events to transitional syntax.
2014-12-13 12:51:58 -08:00
David Anderson
28eb663f9b
Port events to transitional syntax.
2014-12-13 12:51:16 -08:00
David Anderson
b607bfeca9
Reserve 'builtin' as a keyword.
2014-12-12 21:29:28 -08:00
David Anderson
f9d92b0eba
Merge pull request #219 from alliedmodders/static-methods
...
Add support for static methods on methodmaps.
2014-12-12 12:24:28 -08:00
David Anderson
61bf7de101
Revert adminmenu API changes.
2014-12-12 10:10:46 -08:00
David Anderson
5b69efe5d4
Add static method support to methodmaps.
2014-12-12 10:10:46 -08:00
David Anderson
afeae84340
Replace symbol proxies with type symbols.
...
Proxies were rather hacky and complicated, and only existed as a
workaround for oddities with constructors. This patch replaces them with
actual type symbols, a very tiny step to semantically getting rid of tags.
This greatly simplifies how we implement constructors, and paves the way
for using methodmap symbols in field expressions.
Since non-value symbols are new to spcomp1, we place a rather
pigeonholed check into primary() to make sure non-value symbols don't
escape into expressions.
2014-12-12 10:10:43 -08:00
David Anderson
0295f817b8
Allow int: and void: tags, but warn.
2014-12-10 02:36:30 -08:00
David Anderson
18cc1b414b
Fix some compile errors in new-style includes.
2014-12-10 02:12:53 -08:00
David Anderson
a9e252314d
Use typeset in sdkhooks.inc.
2014-12-10 01:13:08 -08:00
David Anderson
1ee3067575
Gracefully error on newly reserved keywords.
2014-12-09 23:18:11 -08:00