Commit graph

15062 commits

Author SHA1 Message Date
Christoph Oelckers
1b6af10f38 - scriptified Weapon.CheckAmmo and Weapon.DepleteAmmo 2019-04-15 21:56:30 +02:00
Christoph Oelckers
9e6279ed5b - scriptified the rest of the morph code. 2019-04-15 21:56:28 +02:00
Christoph Oelckers
5f5410e35f - fixed: Since out types cannot be marked as such in a function prototype (as it'd cause parameter mismatches in the resolving pass) it is necessary to check the argflags as well when determining the register type. 2019-04-15 21:56:26 +02:00
Christoph Oelckers
b886219f53 - scriptified P_MorphMonster. 2019-04-15 21:56:23 +02:00
Christoph Oelckers
d4ff49e110 - fixed message output. 2019-04-15 21:56:22 +02:00
Christoph Oelckers
02f785f794 - testing and cleanup of scripted morph code. 2019-04-15 21:56:20 +02:00
Christoph Oelckers
9b1e96262c - P_UndoPlayerMorph scriptified.
Not tested yet and still missing a new native interface.
2019-04-15 21:56:18 +02:00
Christoph Oelckers
395413fc9a - scriptified P_MorphPlayer and dependencies.
It still needs its counterpart scriptified as well before it can work.

# Conflicts:
#	src/gi.cpp
#	wadsrc/static/zscript/base.txt
2019-04-15 21:56:16 +02:00
Christoph Oelckers
8669dbdcfe - removed test and debug code.
# Conflicts:
#	src/gl/scene/gl_scenedrawer.h
2019-04-15 21:50:57 +02:00
drfrag
60e667f732 - Fixed compilation. 2019-04-15 21:48:55 +02:00
Magnus Norddahl
5f7aeb3186 - fix missing include statement 2019-04-15 16:09:14 +02:00
Christoph Oelckers
1fd23f5228 - fixed initialization of default parameters in dynamically created function calls like in the MENUDEF parser 2019-04-15 16:09:13 +02:00
Magnus Norddahl
31f524fd6b - inline VBTL opcode
- remove old META and CLSS implementations
2019-04-15 16:09:11 +02:00
Magnus Norddahl
d4e3bee7c6 - add return type to CreateFuncSignature 2019-04-15 16:09:10 +02:00
Magnus Norddahl
1aebbfb3b5 - fix typo 2019-04-15 16:09:08 +02:00
Magnus Norddahl
815b7d8b7e - add support in the jit compiler to do direct native calls using the x64 calling convention 2019-04-15 16:09:07 +02:00
Christoph Oelckers
f00892e06d - exported ADecal to ZScript as a non-native class.
Its one function is still native but this was by far the easiest of the remaining actor classes to export.
2019-04-15 16:09:05 +02:00
Christoph Oelckers
cc8e390dce removed the quite redundant GetStateForButtonName function
Since it forwards directly to FindState and has no script bindings there is no need to keep it, it'd only complicate the full scriptification of the weapon class if it stuck around.
2019-04-15 16:09:04 +02:00
Christoph Oelckers
95767fb63a - fixed some issues with the bodyque and moved this variable into FLevelLocals
* it was never saved in savegames, leaving the state of dead bodies undefined
* it shouldn't be subjected to pointer substitution because all it contains is old dead bodies, not live ones.

# Conflicts:
#	src/r_data/r_translate.cpp
2019-04-15 16:08:18 +02:00
Christoph Oelckers
edfe8b36c6 - cleaned up the PointerSubstitution code
Since the only thing it gets used for is swapping out PlayerPawns it can safely skip all global variables that never point to a live player, which allowed to remove quite a bit of code here that stood in the way of scriptifying more content
2019-04-15 16:06:22 +02:00
Christoph Oelckers
f2fe079ddb - fixed the reginfo checks for the Draw... functions.
They need to be offset by the same amount as the arguments so that the values are properly matched.

# Conflicts:
#	src/v_draw.cpp
2019-04-15 16:03:51 +02:00
Christoph Oelckers
5e63252fdc - moved the type infomation entirely out of VMValue.
For the varargs functions that used the Type field to validate their parameters, now a hidden additional argument is passed which contains a byte array with the type info for the current call's arguments. Since this is static per call location it can be better prepared once when the code is being compiled instead of being put in a runtime created array for each invocation. Everything else uses the per-function instance of the same data.

The only thing that still needed the type field with a VMValue is the defaults array, so this uses a different struct type now to store its data.

# Conflicts:
#	src/v_draw.cpp
2019-04-15 16:02:17 +02:00
Christoph Oelckers
cb9c1f021c - generate register type info for the parameter lists of all functions.
Currently used for loading parameters into registers.
For checking parameters of native functions some more work is needed to get the info to the function. Currently it doesn't receive the function descriptor.
2019-04-15 15:52:22 +02:00
Magnus Norddahl
a277137d85 - add missing CheckVMFrame call 2019-04-15 15:52:21 +02:00
Magnus Norddahl
0fe213765b - only allocate stack space for vmframe and call returns when we need them 2019-04-15 15:52:20 +02:00
Magnus Norddahl
03258d1334 - improve dumpjit output slightly 2019-04-15 15:52:19 +02:00
Magnus Norddahl
ec3b491f19 - don't emit VMValue.Type information when we know the receiver isn't going to read it anyway 2019-04-15 15:52:18 +02:00
Magnus Norddahl
fe64de28d4 - delay emitting PARAM and VTBL instructions until CALL/CALL_K 2019-04-15 15:52:16 +02:00
alexey.lysiuk
5d0bf48e22 - use custom offsetof() macro
src/scripting/vm/jit_call.cpp:164:38: warning: offset of on non-standard-layout type 'VMScriptFunction' [-Winvalid-offsetof]
src/scripting/vm/jit_load.cpp:87:50: warning: offset of on non-standard-layout type 'DObject' [-Winvalid-offsetof]
src/scripting/vm/jit_load.cpp:96:50: warning: offset of on non-standard-layout type 'DObject' [-Winvalid-offsetof]
src/scripting/vm/jit_load.cpp:257:53: warning: offset of on non-standard-layout type 'DObject' [-Winvalid-offsetof]
2019-04-15 15:52:15 +02:00
alexey.lysiuk
4edcb06a9d - fixed compilation of POSIX targets
src/scripting/backend/vmbuilder.h:169:19: error: no member named 'function' in namespace 'std'
2019-04-15 15:52:14 +02:00
Christoph Oelckers
b33fd19fa2 - missed one OP_RESULT. 2019-04-15 15:52:13 +02:00
Christoph Oelckers
6727301330 - moved all code related to function calls into the helper class so that all future work on the calling convention is in one place only. 2019-04-15 15:52:12 +02:00
Christoph Oelckers
a900390683 - moved all handling for the simple calls into EmitterArray to have it in one place only.
The main case of FxVmFunctionCall is not done yet, though.
2019-04-15 15:52:11 +02:00
Christoph Oelckers
054640ce41 - removed OP_TAIL.
The amount of support code for this minor optimization was quite large and this stood in the way of streamlining the VM's calling convention, so it was preferable to remove it before moving on.
2019-04-15 15:52:10 +02:00
Magnus Norddahl
33bef2183e - fix compile errors 2019-04-15 15:52:08 +02:00
Christoph Oelckers
ab689c0984 - fixed TArray's Append methods.
I mistakenly assumed that Grow would incease the array's reserved space.
2019-04-15 15:52:07 +02:00
Christoph Oelckers
e9a5f094c9 - changed OP_PARAM handling so that all registers remain allocated until the call instruction and reordered instruction emission so that the param instructions all directly precede the call instruction. 2019-04-15 15:48:37 +02:00
Christoph Oelckers
9380ccb922 - completed the Dehacked fix.
I missed some arguments that were specified but set to 'not given'.
2019-04-15 15:48:35 +02:00
Christoph Oelckers
45f83636e9 - restored the old A_Jump prototype because DECORATE needs this to parse the arguments. 2019-04-15 15:48:34 +02:00
Christoph Oelckers
f10c927850 - fixed: The Dehacked function wrappers now need full parameter lists. 2019-04-15 15:48:32 +02:00
Magnus Norddahl
783adc7be1 - disabled code that shows how a thunk function and native setup would look like 2019-04-15 15:48:31 +02:00
Christoph Oelckers
03001991f1 - fixed IJMP code generation for the JIT compiler.
With a proper count value available this can be done properly. The only relevant targets are the jumps immediately succeeding the IJMP instructions, nothing else.
2019-04-15 15:48:30 +02:00
Christoph Oelckers
f557c77602 - do not use instructions from too recent instruction set extensions.
andn is part of BMI1 which was introduced in 2012, which is far too recent to be used unchecked.
2019-04-15 15:48:29 +02:00
Christoph Oelckers
9456c877d4 - deconstruct A_Jump with multiple labels into A_Jump(chance, RandomPick(label1, label2, label3,...)) to remove this ugly special case from the VM calling convention.
This also adds the number of available choices to OP_IJMP.
2019-04-15 15:48:27 +02:00
Magnus Norddahl
44b89bba96 - inline ReadBarrier, GetClass and GetClassMeta 2019-04-15 15:48:25 +02:00
Christoph Oelckers
05fd4d8b62 - fixed RNG setup in FxRandom. 2019-04-15 15:48:24 +02:00
Christoph Oelckers
9d126954d1 - removed the default parameter handling from all native script functions because it is no longer needed.
# Conflicts:
#	src/p_actionfunctions.cpp

# Conflicts:
#	src/hwrenderer/postprocessing/hw_postprocessshader.cpp
#	src/v_2ddrawer.cpp
2019-04-15 14:59:00 +02:00
Christoph Oelckers
6d8cf38cef - fixed FxFRandom setup which used a path in FxRandom that is no longer supported. 2019-04-15 14:37:46 +02:00
Magnus Norddahl
075a666c75 - stop using lambda functions for CreateCall because MSVC lambas use a different calling convention and "converts" them to the right one by generating a thunk function 2019-04-15 14:37:44 +02:00
Magnus Norddahl
51900d5d98 - removed the SetupSimpleFrameMissingArgs logic as the number of args are now guaranteed 2019-04-15 14:37:43 +02:00