Magnus Norddahl
7e0dacdb1d
- disabled code that shows how a thunk function and native setup would look like
2018-11-17 16:26:54 +01:00
Christoph Oelckers
89cec539fa
- 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.
2018-11-17 13:39:14 +01:00
Christoph Oelckers
fcb5684607
- 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.
2018-11-17 13:10:18 +01:00
Christoph Oelckers
adde0510fe
- 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.
2018-11-17 12:35:03 +01:00
Magnus Norddahl
68afc419af
- inline ReadBarrier, GetClass and GetClassMeta
2018-11-17 10:54:16 +01:00
Christoph Oelckers
6398c27646
- fixed RNG setup in FxRandom.
2018-11-17 10:06:01 +01:00
Christoph Oelckers
94ed30e782
- removed the default parameter handling from all native script functions because it is no longer needed.
2018-11-17 10:03:40 +01:00
Christoph Oelckers
e643582957
- fixed FxFRandom setup which used a path in FxRandom that is no longer supported.
2018-11-17 08:06:23 +01:00
Magnus Norddahl
f99bba48dc
- 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
2018-11-17 05:12:47 +01:00
Magnus Norddahl
f082a8af98
- removed the SetupSimpleFrameMissingArgs logic as the number of args are now guaranteed
2018-11-17 00:49:22 +01:00
Magnus Norddahl
8ec85cb0ee
- add warning text when falling back to the VM
2018-11-17 00:36:40 +01:00
Christoph Oelckers
6423902c63
- removed the unused 'no arguments' cases from the BuiltinRandom functions and split off BuiltinRandom2 into its own function.
...
This removes the last non-vararg cases where a native VM function checks 'numparam'. As of this commit all function calls will pass the complete list of arguments.
2018-11-17 00:14:39 +01:00
Magnus Norddahl
ea26bf6b2f
- make functions using too many registers (more than 200) fall back to the VM
2018-11-17 00:04:15 +01:00
Christoph Oelckers
95ab1da6a0
- always pass complete argument lists in the VM.
2018-11-16 22:43:12 +01:00
Christoph Oelckers
97573a0452
- implemented VMCallWithDefaults and used it for all calls with variable arguments.
...
This isn't used for the 3 action function calls because it requires an array allocation which would be a bit too costly for something as frequently called as action functions.
They will need a different approach.
2018-11-16 19:18:33 +01:00
Christoph Oelckers
6d7710165c
- fixed last commit.
2018-11-16 18:50:34 +01:00
Christoph Oelckers
c24da62cdd
- marked all places where an incomplete parameter list may be passed to the VM by a native call by redirecting VMCall to an intermediate VMCallWithDefaults. This function must later fill in the missing arguments from the default.
2018-11-16 18:41:27 +01:00
Christoph Oelckers
acbdfddb26
Merge remote-tracking branch 'remotes/origin/master' into asmjit
2018-11-16 17:20:12 +01:00
Christoph Oelckers
8c57447108
- Restricted argument count check to the void return case.
...
There were some issues here:
* a check for mismatching count is too strict because it is legal to omit return values
* it failed to detect returning multiple values in a single expression.
2018-11-16 12:28:24 +01:00
Christoph Oelckers
358001c306
fixed right shift operator for unsigned values
...
This is version protected to avoid breaking old code.
2018-11-16 11:32:24 +01:00
Christoph Oelckers
7cd89fe07b
- fixed: FxUnaryNotBitwise modified the source operand instead of allocating a new one.
2018-11-16 11:21:51 +01:00
Magnus Norddahl
ac28f0d34f
- remove unused argument
2018-11-16 01:33:41 +01:00
Magnus Norddahl
34b037c9db
- avoid calling VMFillParams for simple stack frames
...
- split Setup into more functions
2018-11-16 01:13:25 +01:00
Player701
c569029b1d
- Readonly pointer casting now works in ZScript.
2018-11-15 23:28:37 +01:00
Magnus Norddahl
6c31d2e965
- add dword store to memset code
2018-11-15 23:04:11 +01:00
Magnus Norddahl
00d41432d8
- disable jit in 32-bit builds
2018-11-15 22:47:44 +01:00
Magnus Norddahl
5ef2175c38
- fix wrong offsets
2018-11-15 22:40:12 +01:00
Magnus Norddahl
0394dc56b7
- generate a memset for the allocated stack memory because that's what the VM does
...
(this really shouldn't be done by the VM either - the compiler backend should clear its registers if it wants them to be zero!)
2018-11-15 22:33:13 +01:00
Magnus Norddahl
f3e0db913c
- fix operand size mismatch error
2018-11-15 22:07:27 +01:00
Magnus Norddahl
3b2faf5397
Merge remote-tracking branch 'origin/master' into asmjit
2018-11-15 22:02:11 +01:00
Cacodemon345
07838f4c2a
BOUNCEONUNRIPPABLES flag; makes actors bounce on actors with DONTRIP flag
2018-11-15 12:47:57 +01:00
alexey.lysiuk
39a3527396
- fixed compilation of targets with optimization
2018-11-15 10:59:37 +02:00
Christoph Oelckers
aa4de71e6d
Merge branch 'master' into asmjit
2018-11-15 09:25:27 +01:00
Chronos Ouroboros
96b8f12a30
Fix the code for MODF_RK in the JIT compiler.
2018-11-14 21:05:24 -02:00
Chronos Ouroboros
566eb58000
Fixed the Vector2/3 != operator.
2018-11-14 20:01:13 +01:00
Chronos Ouroboros
5375a99cf6
Added support for CMP_APPROX to EQV_R and moved the code to a template.
2018-11-14 10:29:48 -02:00
Magnus Norddahl
8429fc8124
- fix missing type check when using Push or Insert for typed arrays
2018-11-14 10:08:04 +01:00
Magnus Norddahl
99849bc0c5
Merge remote-tracking branch 'origin/master' into asmjit
2018-11-14 01:23:17 +01:00
Christoph Oelckers
33f2f9f34e
- fixed: ZScript's finalization code used the last parsed lump for of one translation unit as reference, not the base lump.
...
This resulted in incorrect messages but also could produce some more subtle errors.
2018-11-12 00:22:50 +01:00
Magnus Norddahl
e6023c55a8
- modify exception checks to jump ahead if the exception is to be thrown as it limits static misprediction
2018-11-10 22:48:20 +01:00
Magnus Norddahl
a7ef178284
- fix a typo
2018-11-10 19:56:54 +01:00
Magnus Norddahl
173fe94736
- fix the throw messages
2018-11-10 19:52:41 +01:00
Christoph Oelckers
3c5609537a
- fixed vector math instructions to use the same order of operations as the VM.
2018-11-09 22:36:08 +01:00
Magnus Norddahl
534606f4ce
- add vm_jit cvar to control JIT compilation
2018-11-01 21:39:30 +01:00
Magnus Norddahl
369dcfd57f
Merge remote-tracking branch 'origin/master' into asmjit
2018-11-01 21:23:26 +01:00
alexey.lysiuk
8597c9e326
- added warning for constant conditional expression
...
ZScript code like `if (x = 0) // ...` no longer causes assertion failure in Debug but produces a warning regadless of configuration
https://forum.zdoom.org/viewtopic.php?t=62422
2018-11-01 16:05:27 +02:00
Christoph Oelckers
b9f2cce8de
- versioned the return mismatch check to demote it to a warning for older versions than 3.7.
2018-11-01 11:30:53 +01:00
alexey.lysiuk
d3461be40c
- made 'return void' case a compilation error
2018-11-01 11:18:22 +01:00
Magnus Norddahl
295fc7d7f7
Revert "- the build tests are using some ancient dino 7.1 Windows SDK where UnwindInfoAddress isn't part of the struct yet."
...
This reverts commit 20516e1c0b
.
2018-10-17 08:54:41 +02:00
Magnus Norddahl
20516e1c0b
- the build tests are using some ancient dino 7.1 Windows SDK where UnwindInfoAddress isn't part of the struct yet.
2018-10-15 03:06:40 +02:00
Magnus Norddahl
1f0add9067
- update JIT PARAM handling to match the VM instruction change
2018-10-14 23:13:30 +02:00
Magnus Norddahl
70f18f87b9
Merge remote-tracking branch 'origin/master' into asmjit
2018-10-14 22:55:57 +02:00
Magnus Norddahl
1a2e5b12d0
- RUNTIME_FUNCTION only exists in 64-bit Windows
2018-10-14 22:54:30 +02:00
Christoph Oelckers
dd719f0f14
- extended the register limit for 'param'.
...
The instruction one free instruction byte so it's now using that to extend its argument's register range to 65535.
For param this is needed because it passes strings by reference and creating an implicit temporary copy for string constants does not work here.
2018-10-14 09:13:26 +02:00
Magnus Norddahl
cd211da2d8
- fix wrong shift direction
2018-10-14 08:53:18 +02:00
Magnus Norddahl
a3f6950a4f
- build enough of the unwind opcodes for visual studio's debugger to produce the correct call stack
2018-10-14 08:27:27 +02:00
Magnus Norddahl
cf9bae67a8
- construct our own runtime as the one provided by asmjit is too primitive
2018-10-14 00:46:54 +02:00
Magnus Norddahl
300553a21f
- add more names to asmjit objects
2018-10-12 08:02:35 +02:00
Magnus Norddahl
7ca598de2d
- remove the frameX registers as they were just constant offsets to vmframe that could be merged into other constant offsets
2018-10-12 07:41:16 +02:00
Magnus Norddahl
b15ca09486
- give the remaining virtual registers names
2018-10-12 07:05:42 +02:00
Magnus Norddahl
c86e4480b6
- give temp registers names and reuse the FString object for formatting names
2018-10-12 06:59:03 +02:00
Magnus Norddahl
0bb4a159e5
- skip RESULT opcodes when outputting assembly
2018-10-12 06:25:51 +02:00
Magnus Norddahl
44294a051a
- clean up assembly output slightly by only generating labels for the opcodes jumped to
2018-10-12 06:14:27 +02:00
Magnus Norddahl
ade6ae24e9
- fix CASTB opcode implementation
2018-10-11 04:32:49 +02:00
Magnus Norddahl
fc870fce87
- fix missing convert from float to double in LSP and LSP_R opcodes
...
- fix missing convert from double to float in SSP and SSP_R opcodes
2018-10-11 03:53:11 +02:00
Magnus Norddahl
aa6e09f7e8
- fix debug build compile error
2018-10-11 03:14:42 +02:00
Magnus Norddahl
0120ea190c
- remove the need to do any VARF_Native runtime checks by making native functions use the same calling convention as the script version
2018-10-10 23:47:56 +02:00
Magnus Norddahl
b6bc06e568
- do script calls directly from asmjit without using a lambda wrapper
...
- do VARF_Native check at compile time when possible
2018-10-10 22:08:26 +02:00
Magnus Norddahl
01825231ec
- add -dumpjit command line parameter that dumps the JIT log for all functions to dumpjit.txt
2018-10-10 06:17:35 +02:00
Magnus Norddahl
452c6fd158
- fix return warning
2018-10-10 04:57:35 +02:00
Magnus Norddahl
884e185db0
- switch to using setjmp/longjmp for exception handling
2018-10-09 16:30:55 +02:00
Magnus Norddahl
2b05e75656
Merge branch 'asmjit' of https://github.com/coelckers/gzdoom into asmjit
2018-10-09 14:46:40 +02:00
Magnus Norddahl
3f4638ca31
- add disabled code that attempts to load registers directly from function arguments
2018-10-09 14:46:27 +02:00
Magnus Norddahl
9c3b8507af
- add missing include statement
2018-10-09 07:15:46 +02:00
Magnus Norddahl
f0d9b49099
- allocate VMFrame on the stack for simple functions with no strings
2018-10-09 05:19:29 +02:00
Magnus Norddahl
bee3a964ae
- remove argument not used anymore
2018-10-09 05:18:44 +02:00
Magnus Norddahl
b7c0cd5d05
- move VM creation into the jitted function. this will allow the jit compiler to skip vm frame creation when possible
2018-10-09 03:37:11 +02:00
Magnus Norddahl
e930dfaae7
- create ScriptCall function pointer on VMScriptFunction
2018-10-09 02:52:07 +02:00
Magnus Norddahl
137ef034d1
- modify the VM calling convention so that the callee sets up its own VM frame
2018-10-09 02:08:15 +02:00
Magnus Norddahl
367b60d88c
- fix wrong registers getting saved when passing parameters by reference
2018-10-08 23:44:54 +02:00
Magnus Norddahl
d643fbd077
- removed CanJit as all opcodes are now implemented
...
- fix some store bugs
2018-10-07 22:21:48 +02:00
Magnus Norddahl
47bcf318a5
- fix 32 bit compile errors
2018-10-07 20:55:06 +02:00
Magnus Norddahl
f321f64a05
- catch and rethrow c++ exceptions
2018-10-07 20:38:08 +02:00
Magnus Norddahl
47485194f4
- reuse temp virtual registers
2018-10-07 09:02:28 +02:00
Magnus Norddahl
c5a5265e40
Merge remote-tracking branch 'origin/master' into asmjit
2018-10-07 06:32:13 +02:00
Magnus Norddahl
d47988202a
- workaround bug in asmjit's register allocator for calls where the return register is already allocated in a physical register needed by one of the call arguments
2018-10-07 06:29:54 +02:00
Magnus Norddahl
5bf76523d6
- switch ToMemAddress to imm_ptr where allowed
2018-09-18 18:13:53 +02:00
Magnus Norddahl
05ac219ba6
- switch from ASMJIT_ARCH_X64 to ASMJIT_ARCH_64BIT when checking if we need to use 64-bit pointers
2018-09-18 18:05:53 +02:00
Magnus Norddahl
ad260aa971
- create a very basic OP_IJMP implementation
2018-09-17 21:52:21 +02:00
Magnus Norddahl
61735ddd8b
- create CreateCall helper to get rid of a lot of the cc.call boilerplate
2018-09-17 12:00:25 +02:00
Magnus Norddahl
f61df60240
- implement OP_TAIL and OP_TAIL_K
2018-09-17 09:02:23 +02:00
Magnus Norddahl
d032914c3d
- use the ParamOpcodes array for finding the OP_PARAM's used by a call
2018-09-17 00:31:25 +02:00
Magnus Norddahl
da040e818c
- implement string version of OP_CAST
2018-09-17 00:17:32 +02:00
Magnus Norddahl
102c00ce13
- implement string part of OP_CASTB
2018-09-16 22:39:48 +02:00
Magnus Norddahl
c8e4bf089c
- implement OP_LFP
2018-09-16 03:39:54 +02:00
Magnus Norddahl
ba4606c1d5
- read the parameters and registers directly off the stack
2018-09-16 03:20:56 +02:00
Jonathan Russell
69bc39914b
- changed a bunch of manual address additions in string opcodes to leas
2018-09-15 21:09:43 +01:00
Magnus Norddahl
3477b22714
- more load fixes
2018-09-15 18:08:01 +02:00
Magnus Norddahl
4364feea9a
- fix truncated load addresses due to a bug in asmjit
...
- change ToMemAddress to use uint64_t
2018-09-15 15:38:16 +02:00
Magnus Norddahl
06b54d3aaa
- avoid certain x86::ptr overloads as the last argument is not always an offset
2018-09-15 15:05:52 +02:00
alexey.lysiuk
7d1af25b46
Fixed code generation of infinite for loop
...
https://forum.zdoom.org/viewtopic.php?t=62023
2018-09-15 13:19:28 +02:00
Jonathan Russell
407418a92e
- fixed typo in last commit
2018-09-15 00:26:14 +01:00
Jonathan Russell
b83f4f48d6
- implemented SS_R, LCS_R, and LKS_R
2018-09-15 00:25:13 +01:00
Magnus Norddahl
ce9925d257
- fix bug in LKF_R
2018-09-15 01:06:48 +02:00
Magnus Norddahl
7e7bce4965
- fixed OP_VTBL bug
2018-09-15 00:28:34 +02:00
Magnus Norddahl
266f838de7
- fix crash in OP_RET handling
2018-09-15 00:12:12 +02:00
Magnus Norddahl
663e61a4fb
- simplify some code
2018-09-14 23:38:57 +02:00
Magnus Norddahl
90d8d4af24
Merge pull request #573 from Gutawer/asmjit
...
Added string PARAM and RET
2018-09-14 20:07:47 +02:00
Jonathan Russell
11fbd9a0a4
- added string PARAM and RET
2018-09-14 18:20:31 +01:00
Magnus Norddahl
4e85134d8e
Merge remote-tracking branch 'gzdoom/master' into asmjit
2018-09-14 02:09:17 +02:00
Magnus Norddahl
d09a377f12
- fix clang errors and warnings
2018-09-14 01:07:05 +02:00
Jonathan Russell
0b6c514067
- added OP_MOVES, OP_CONCAT, OP_LENS, OP_CMPS
2018-09-13 20:31:06 +01:00
Magnus Norddahl
c359601737
- fix opcodes not being listed in jit debug assembly
2018-09-13 19:03:30 +02:00
Magnus Norddahl
b92e5fbf2a
- move EmitRESULT to jit_call
2018-09-13 02:56:02 +02:00
Magnus Norddahl
fad8c9c7b4
- minor cleanups in header file
2018-09-13 02:38:51 +02:00
Magnus Norddahl
ef170883ef
- split JitCompiler into multiple files
2018-09-13 02:29:04 +02:00
Jonathan Russell
b8bdc3b4c8
- added strings and a few string opcodes
2018-09-12 23:56:04 +01:00
Magnus Norddahl
afc3c6b562
- fix CALL_K and disable CALL
2018-09-12 21:58:31 +02:00
Magnus Norddahl
ced793b791
- implement OP_CALL and OP_CALL_K
2018-09-12 01:37:30 +02:00
Magnus Norddahl
981950fef0
- fix misc integer opcodes and remove mov statements when they have no effect
2018-09-11 23:31:32 +02:00
Jonathan Russell
4d3c496121
- changed the way EmitComparisonOpcode works to get rid of the temporary register that was used previously
2018-09-11 21:48:02 +01:00
Magnus Norddahl
4d1cb258d6
- implement PARAM and PARAMI
2018-09-11 17:08:51 +02:00
Magnus Norddahl
6f55c76f05
- fix missing zero extend
2018-09-09 23:21:47 +02:00
Magnus Norddahl
4076ce791b
- fix that the code for META and CLSS was swapped
2018-09-09 22:42:59 +02:00
Magnus Norddahl
19442732d4
- some jump fixes
2018-09-09 22:03:57 +02:00
Magnus Norddahl
b40cbfb22e
- fix jump direction in EmitComparisonOpcode
2018-09-09 20:35:37 +02:00
Jonathan Russell
eeb4419bc4
- more spelling mistakes...
2018-09-02 23:47:22 +01:00
Jonathan Russell
fdf17a5d8e
- fix minor spelling error
2018-09-02 23:45:32 +01:00
Jonathan Russell
28f2311108
- add vector comparison opcodes
2018-09-02 23:44:25 +01:00
Christoph Oelckers
4571aa52f0
- fixed bad code for OP_SRL_KR.
2018-09-02 18:20:38 +02:00
Magnus Norddahl
168c274601
- remove some macros and add functions checking if a register needs to be copied
2018-09-02 15:36:39 +02:00
Magnus Norddahl
55955b9c22
Merge remote-tracking branch 'gzdoom/master' into asmjit
2018-09-02 03:46:06 +02:00
Magnus Norddahl
323d290c99
- implemented LBIT, SBIT, VTBL, SCOPE, NEW, NEW_K, THROW, EQA_R and EQA_K
2018-09-02 03:39:02 +02:00
Magnus Norddahl
ccd2f58fb4
- implement emitter functions for LKP_R, META, CLSS, LO, LO_R, LP, LP_R, SO, SO_R, SP, SP_R
...
- add emit code for throwing exceptions on null pointers
2018-08-31 06:57:30 +02:00
Magnus Norddahl
999b3833ff
- improve jit debug output slightly
2018-08-30 19:55:00 +02:00
Magnus Norddahl
bba422ffcc
- fix offsetting bug when loading address registers
2018-08-30 19:47:38 +02:00
Magnus Norddahl
c7e14e63bc
- fix swapped operands in EmitSUBF_KR
2018-08-30 18:47:25 +02:00
Magnus Norddahl
4b22fa7bc8
- implement MODF_RR, MODF_RK and MODF_KR
2018-08-29 01:27:37 +02:00
Magnus Norddahl
a5719e73eb
- fix mul using wrong instruction
2018-08-29 01:07:36 +02:00
Magnus Norddahl
25e7042bc5
- implement BOUND opcodes and add logging the resulting assembly code if asmjit throws an exception
2018-08-26 14:27:46 +02:00
Christoph Oelckers
d263f7bcc8
- removed most of the old LastIndexOf methods in FString, only leaving one for ZScript and clearly giving it a name that says it all. RIndexOf has been made the proper version of LastIndexOf internally now.
2018-08-25 20:54:16 +02:00
Christoph Oelckers
c04c48d157
- renamed RIndexOf to RightIndexOf
2018-08-25 20:39:58 +02:00
Kevin Caccamo
884de51b70
Add the "RIndexOf" method to FString, which works like String.lastIndexOf from JavaScript
...
RIndexOf returns the index where the substring starts, instead of the index where the substring ends - 1.
Deprecate the LastIndexOf method of StringStruct
2018-08-25 20:37:40 +02:00
Magnus Norddahl
7b886cc434
- implement a few more opcodes and fix some bugs
2018-08-25 13:38:45 +02:00
Magnus Norddahl
f84028eeae
- implemented pow, min, max
2018-08-24 23:17:35 +02:00
Magnus Norddahl
eb9d2b54f3
Merge remote-tracking branch 'gzdoom/master' into asmjit
2018-08-23 18:20:23 +02:00
Magnus Norddahl
17813e4b3e
- implement ATAN2 and FLOP
2018-08-20 01:40:37 +02:00
Magnus Norddahl
38fa25d0c5
- implement DYNCAST*, TEST, TESTN and JMP opcodes
2018-08-20 00:44:48 +02:00
Christoph Oelckers
fad406c4c9
- got rid of FNameNoInit and made the default constructor of FName non-initializing.
...
This setup has been a constant source of problems so now I reviewed all uses of FName to make sure that everything that needs to be initialized is done manually.
This also merges the player_t constructor into the class definition as default values.
2018-08-19 08:19:19 +02:00
Magnus Norddahl
302d753d17
- convert JitCompile's switch into a class to enable easier code reuse
2018-08-19 01:46:56 +02:00
Magnus Norddahl
c17be9eb21
- fix clang compile error
2018-08-18 22:46:18 +02:00
Magnus Norddahl
3453f05f06
- implement throwing by storing exception information in a struct, then return from the jitted function and throw from c++
2018-08-18 22:41:18 +02:00
Jonathan Russell
d983ae66c7
- removed the ability to use printf-like formatting in emitAbortExceptionCall, it barely worked
2018-08-18 20:37:55 +01:00
Jonathan Russell
6424190cbf
- add first draft of abort exceptions
2018-08-18 18:03:18 +01:00
Magnus Norddahl
c89d8bb9bb
- call play sqrt when calculating lengths
2018-08-18 18:41:35 +02:00
Magnus Norddahl
b159b5667a
- fix 8 and 16 bit store
2018-08-18 18:21:52 +02:00
Magnus Norddahl
e557e8fac0
- destroy the jit runtime when all script functions are destroyed
2018-08-18 17:50:47 +02:00
alexey.lysiuk
34f2d8f310
- fixed typo in error message
2018-08-18 17:45:26 +03:00
alexey.lysiuk
31bd7cfc04
- prohibit assignment of dynamic arrays
...
https://forum.zdoom.org/viewtopic.php?t=61682
2018-08-18 15:20:38 +03:00
Magnus Norddahl
9d68d43ce7
- disable all unimplemented opcodes in the switch to ensure 'Unknown VM opcode' fatal error is generated if CanJit has a bug
2018-08-18 13:18:52 +02:00
Magnus Norddahl
68b2cd58d8
Fix compile errors on macOS
2018-08-18 12:37:33 +02:00
alexey.lysiuk
d965c9aa76
- support static const arrays inside structs
...
https://forum.zdoom.org/viewtopic.php?t=61677
2018-08-18 13:00:33 +03:00
Jonathan Russell
6a40e092fe
- added remaining int arithmetic opcodes (and fixed float loading offset issue)
2018-08-17 22:06:12 +01:00
Jonathan Russell
758ee5cbfb
- forgot to turn off debug switch in last commit
2018-08-17 19:15:27 +01:00
Jonathan Russell
08c0ac541f
- made absMaskInt const
2018-08-17 19:14:31 +01:00
Jonathan Russell
d137b3c94e
- implemented CMP_APPROX for OP_EQF_*, making ~== work for doubles
2018-08-17 19:08:19 +01:00
Marisa Kirisame
155afebb65
Add HITOWNER flag, when set, allows a projectile to collide with its shooter.
2018-08-17 19:47:12 +02:00
Chronos Ouroboros
079391e5ac
Updated CanJit's supported opcodes list.
2018-08-16 21:45:04 +02:00
Chronos Ouroboros
a8ce626708
Pointer addition opcodes must leave NULL pointers as they are.
2018-08-16 21:45:04 +02:00
Chronos Ouroboros
591783087d
Changed binary int ops to use a temporary register, fixed some opcodes.
...
For some reason, binary ops might reuse one of the input registers as the output register.
This is a problem for very obvious reasons.
2018-08-14 20:08:04 -03:00
Jonathan Russell
dc03cb7a80
- made CMP_CHECK checking compile time
2018-08-14 20:50:32 +01:00
Jonathan Russell
740415246e
- added exact floating point comparison opcodes
2018-08-14 18:32:17 +01:00
Jonathan Russell
167693f102
- implemented all integer comparison operators
2018-08-14 15:07:09 +01:00
Jonathan Russell
b30df47499
- adds OP_EQ_R, the first instruction using jumps
2018-08-14 13:02:56 +01:00
Magnus Norddahl
0ced612d2c
- add misc float opcodes
2018-08-14 01:07:30 +02:00
Jonathan Russell
cdb5a9d91e
- added most vector maths opcodes
2018-08-13 21:36:55 +01:00
Chronos Ouroboros
cb28bbc72e
Fix floats and implement some more opcodes.
2018-08-13 13:07:36 -03:00
Magnus Norddahl
83d769f55c
- copy initial register values from the VM frame
2018-08-13 00:15:42 +02:00
Magnus Norddahl
7108fd6228
- implement most of the integer math opcodes
2018-08-12 04:34:57 +02:00
Magnus Norddahl
cbb945d8a7
- embed and use asmjit to JIT ZScript VM functions
2018-08-12 02:11:13 +02:00
Christoph Oelckers
6634416b89
- allow skipping optional arguments of the parent function in a virtual override definition.
...
This is mainly to allow retroactive addition to existing virtual functions without breaking existing content.
The MeansOfDeath fix for Actor.Die would not be possible without such handling.
2018-07-29 17:00:05 +02:00
alexey.lysiuk
e9041c0697
- fixed potential garbage collection of still referenced objects
...
Objects from dynamic array stored in items of array of structures were incorrectly treated as unreachable
https://forum.zdoom.org/viewtopic.php?t=61354
2018-07-28 19:34:20 +02:00
Christoph Oelckers
6d0b172762
- added MF8_DONTFACETALKER flag which prevents NPCs from facing the player in conversations.
2018-07-22 11:32:45 +02:00
Christoph Oelckers
2a0c3e63a3
- allow temporary strings to be used as self pointer for String's member functions.
...
Due to how function calls get resolved by the code generator there were some incorrect flags on the self pointer which triggered an assert and caused incorrect code generation.
Fortunately this was a mostly contained special case for which a workaround was possible.
2018-07-20 10:38:55 +02:00
alexey.lysiuk
b2697a99f8
- added missing null pointer checks to VM ops
2018-07-16 17:10:47 +03:00
alexey.lysiuk
5d27c16f30
- disabled default values for out parameters
...
https://forum.zdoom.org/viewtopic.php?t=61128
2018-06-30 11:44:22 +03:00
Christoph Oelckers
ae1fe041ee
- ZScript used the wrong variable for compatflags2.
...
ii_* is merely the storage for info from the compatibility.txt lump.
2018-06-09 17:59:21 +02:00
alexey.lysiuk
4a1f36623b
- fixed: flag CVars in ZScript referenced wrong addresses
2018-06-09 17:21:55 +03:00
Christoph Oelckers
1fdcacc337
- redirect script access to the compatflags CVARs to their internal shadow variables.
...
This is needed so that MAPINFO settings for these flags don't get ignored.
2018-06-08 22:55:44 +02:00
Marisa Kirisame
fae514f30d
BLOCKASPLAYER flag: treat non-player actors as blockable by "block players" lines
2018-06-04 22:18:51 +02:00
Christoph Oelckers
7d515e72c2
- fixed: FxFloatCast must transfer the outer expression's value type to the inner expression if it performs a float->float cast.
...
This violated an important rule that a cast may not alter the expression's type and led to failed asserts elsewhere.
2018-06-02 07:50:23 +02:00
alexey.lysiuk
ef536e7b00
- fixed crash in DECORATE parsing
...
The case with forward declared class used as a parent must be handled explicitly
actor MyWeapon : Weapon { Weapon.AmmoType "MyBaseAmmo" }
actor MyAmmo : MyBaseAmmo { }
actor MyBaseAmmo : Ammo { }
2018-05-10 11:47:16 +03:00
alexey.lysiuk
2ae8d39441
Removed all superfluous #include's
...
Automatically optimized by CLion IDE with manual corrections
2018-04-24 14:30:35 +03:00
Christoph Oelckers
cf8447d19c
-protected critical portal data from getting written to by user code.
...
This data is game critical and may only be altered by code that knows what is allowed and what not. It must never be altered by any user code ever.
However, since the SkyViewpoint actors need to set up some relations between themselves and the default sky portals the previously purely internal 'internal' flag has been exported as a new keyword.
2018-04-15 12:13:02 +02:00
alexey.lysiuk
7bd281ddc9
Added zero initialization of implicit dynamic array items
...
https://forum.zdoom.org/viewtopic.php?t=60111
2018-04-05 12:22:41 +03:00
alexey.lysiuk
ac7e5def32
Forbade dynamic array as the return type of a function
...
Compiler ignored this case silently but it crashed during code generation
2018-04-02 15:18:30 +03:00
alexey.lysiuk
ff96980dda
Fixed handling of default values in String.Mid()
...
https://forum.zdoom.org/viewtopic.php?t=60047
2018-03-31 21:45:20 +03:00
Christoph Oelckers
e89a598b31
- renamed FTexture's UseType flags and gave them a dedicated type.
...
This was done mainly to reduce the amount of occurences of the word FTexture but it immediately helped detect two small and mostly harmless bugs that were found due to the stricter type checks.
2018-03-25 20:26:16 +02:00
Jason Francis
bd7791ad9c
Allow setting string user variables in ACS
2018-03-24 10:20:39 +01:00
Jason Francis
4494b18e8a
Enable string & float user_ properties in UDMF things
2018-03-24 10:20:39 +01:00
Christoph Oelckers
f1bfc3514d
- fixed: For proper recognition of optional function arguments, the argflags must also be copied from the parent function to ensure they are itdentical on the override.
2018-03-14 19:52:30 +01:00
Christoph Oelckers
5d436cd3ed
- forward the error state of the translation parser to the calling code so that it can print a message pointing to the problem content.
2018-03-12 19:14:56 +01:00
Christoph Oelckers
13ef97c4ac
- removed debug message.
2018-03-12 18:47:49 +01:00
Major Cooke
4851c5bfde
Insert an extra line after printing the warnings.
2018-03-12 18:17:08 +01:00
Christoph Oelckers
def5e1d61b
Added proper handling for default parameter values of virtual overrides
...
Due to how the VM handles default parameters, these must always be identical to the parent to prevent undefined behavior.
So now, if such parameters are encountered, the compiler will either abort (for script version >= 3.3) or print a warning (for older versions.)
Any defaults being specified for older versions will be ignored, though, and the defaults of the parent function be copied to the override.
2018-03-12 10:19:16 +01:00
alexey.lysiuk
81bc05b7c5
Added support for default values of arguments with uint type
2018-03-07 15:58:06 +02:00
Christoph Oelckers
bcc8972356
- fixed: A preincrement of a local variable generated wrong code if passed as a function parameter.
...
Due to the special nature of this expression the code generator got stuck in 'address' mode and passed the address of the variable instead of its value.
2018-03-01 15:00:18 +01:00
Christoph Oelckers
425f1408f7
- fixed skip_super application fro ZScript.
...
The order of processing is different here so when the property gets parsed there are no states to delete.
To fix this the property just flags the class and lets the ZScript state compiler deal with this as needed.
2018-02-28 18:10:04 +01:00
Christoph Oelckers
af14609de7
- don't skip empty arrays which are themselves array elements in the ZScript serializer.
2018-02-27 15:42:22 +01:00
Christoph Oelckers
aaaf9aa108
Added 'TeleportSpecial' as an alias for 'Teleport' in ZScript to deconflict from the Actor.Teleport function.
2018-02-27 12:44:00 +01:00
alexey.lysiuk
74357ced0c
Fixed read of potentially junk values in ZScript parser
...
The following ill-formed ZScript code might crash targets with sizeof(int) != sizeof(void*) like 64-bit Intel
class test { void func() { if (true) ( return; ) } }
2018-02-21 16:26:04 +02:00
alexey.lysiuk
1e41c042d4
Fixed codegen crash with non-numeric random seed
...
The following code crashed ZScript code generator if my_seed is not convertible to numeric type
SetRandomSeed[my_random_id](my_seed);
2018-02-19 11:46:36 +02:00
Christoph Oelckers
09f1859c83
- allow retrieving the length of a string constant.
2018-01-21 18:49:46 +01:00
Christoph Oelckers
dbf0a68b02
Merge commit '67e3106254e987f5acb9534e725d4f5c3eaa82b2'
...
# Conflicts:
# src/doomdata.h
# src/namedef.h
# src/p_udmf.cpp
2018-01-20 19:07:54 +01:00
Christoph Oelckers
19cf887ad1
- fixed: Dynamic arrays for object pointers need different treatment than arrays for regular pointers, because they require GC::WriteBarrier to be called.
2018-01-19 19:49:42 +01:00
alexey.lysiuk
6d20da8ab5
Fixed nust -> must typos
2018-01-18 11:43:32 +02:00
Magnus Norddahl
5f36b86013
- Add dynamic spot lights
2018-01-04 17:58:11 +01:00
alexey.lysiuk
d50ba4954a
Fixed potential crash when calling undefined function in ZScript
...
The following code which uses explicit class specifier led to a crash:
class C
{
void F()
{
Object.Undefined();
}
}
2017-12-23 15:27:32 +02:00
Christoph Oelckers
ab58e4acb0
- use FileWriter for the AST dump.
2017-12-02 12:01:55 +01:00
alexey.lysiuk
5d83ee5e89
Exposed String.Remove() function to ZScript
...
https://forum.zdoom.org/viewtopic.php?t=58402
2017-11-12 14:44:21 +02:00
alexey.lysiuk
4beefb7007
Removed warning for uninitialized variables in ZScript
...
This reverts commit 8104ef5189
2017-11-06 15:38:28 +02:00
alexey.lysiuk
274951839a
Removed unused parameter from several functions in FStateDefinitions class
...
src/p_states.cpp:724:54: warning: parameter ‘actor’ set but not used [-Wunused-but-set-parameter]
https://forum.zdoom.org/viewtopic.php?t=58364
2017-11-05 15:20:25 +02:00
alexey.lysiuk
8104ef5189
Added warning for uninitialized variables in ZScript
...
https://forum.zdoom.org/viewtopic.php?t=57868
2017-11-03 16:23:41 +02:00
alexey.lysiuk
dac5777a70
Removed obsolete declarations from codegen.h
2017-11-03 12:44:28 +02:00
alexey.lysiuk
81ea9fb372
Added runtime check for negative array indices in VM
...
https://forum.zdoom.org/viewtopic.php?t=57886
2017-11-02 18:01:13 +02:00
alexey.lysiuk
57de598e48
Added implicit scope for if/else, while and do/while statements in ZScript
...
Scope is added only for variable or constant definition so it will no longer leak to outer scope
https://forum.zdoom.org/viewtopic.php?t=57848
2017-11-02 17:10:54 +02:00
alexey.lysiuk
de7d8995d5
Added string representation of 'static const' token
...
No more 'Unknown(-141)' in 'Expecting ...' error message
2017-11-02 14:45:35 +02:00
alexey.lysiuk
62e91b23bd
Extended String.LastIndexOf() with endIndex parameter
...
https://forum.zdoom.org/viewtopic.php?t=57326
2017-11-01 15:24:05 +02:00
alexey.lysiuk
c4865d2bb6
Exposed string split functionality to ZScript
...
https://forum.zdoom.org/viewtopic.php?t=58114
2017-10-28 11:44:12 +03:00
alexey.lysiuk
40a348b1f1
Fixed potential crash in resolving of multiple assignment
...
https://forum.zdoom.org/viewtopic.php?t=58055
https://forum.zdoom.org/viewtopic.php?t=58237
2017-10-27 18:15:24 +03:00
alexey.lysiuk
cb982ec313
Use FString::Back() when possible
...
Changed usages of str[str.Len() - 1] to str.Back()
2017-10-23 11:55:20 +03:00
alexey.lysiuk
48f9e53580
Added better error message for invalid class/struct member
...
https://forum.zdoom.org/viewtopic.php?t=57959
2017-09-24 10:25:05 +03:00
Magnus Norddahl
cfc1bfd1e2
- Fixed FxPow::Resolve not specifying the ValueType
2017-09-24 01:15:58 +02:00
Christoph Oelckers
eade38fb09
- fixed crash when defining a global constant which references a class member constant in its value.
2017-09-02 08:14:50 +02:00
Christoph Oelckers
948e50e458
- fixed: The struct field compiler did not check for forward declared type references that hadn't been resolved yet.
2017-08-27 12:31:47 +02:00
alexey.lysiuk
7b98fdb910
Added ToInt() and ToDouble() functions to ZScript string
...
https://forum.zdoom.org/viewtopic.php?t=57678
2017-08-25 15:09:18 +03:00
Christoph Oelckers
b4fa95ab15
- handle state label resolution in a non-actor cpntext more gracefully.
...
Note that this is merely a hotfix. Properly handling this to allow universal use of state scopes will require more work in cases where a scoped state is being accessed through a non-self pointer.
2017-08-12 10:04:06 +02:00
alexey.lysiuk
33beca6e6f
Exposed ToLower() and ToUpper() string functions to ZScript
...
https://forum.zdoom.org/viewtopic.php?t=57515
2017-08-07 15:24:18 +03:00
Rachael Alexanderson
91ff447a90
- fixed compile from last commit
...
- refactored the zscript hookup a bit, made it actually work
2017-07-29 17:03:43 -04:00
Rachael Alexanderson
712d21e26a
- implement per-renderer sprite hiding based on the actor's render feature flags
...
- hook the thing up to zscript (does not currently compile)
2017-07-29 17:03:43 -04:00
alexey.lysiuk
7436693860
Enabled dynamic stack size in ZScript parser generated by Lemon
...
https://forum.zdoom.org/viewtopic.php?t=57322
2017-07-23 11:54:16 +03:00
alexey.lysiuk
c56cd245ac
Added IndexOf() and LastIndexOf() functions to ZScript string type
...
https://forum.zdoom.org/viewtopic.php?t=57313
2017-07-22 10:54:32 +03:00
Christoph Oelckers
daca12600d
- fixed: The ADDA_RK opcode used the wrong constant type for the offset it adds to the pointer.
2017-07-15 09:14:39 +02:00
alexey.lysiuk
71b70d74a9
Fixed error handling in vector by scalar multiplication
...
https://forum.zdoom.org/viewtopic.php?t=57089
2017-07-01 12:37:31 +03:00
alexey.lysiuk
279b1e27dc
Made usage of assertions in VM code consistent
...
https://forum.zdoom.org/viewtopic.php?t=56995
2017-06-22 10:36:08 +03:00
Christoph Oelckers
3b024c347b
- use a dedicated flag word for the dynamic light flags instead of piggybacking on some flags4 bits.
2017-06-18 10:15:31 +02:00
alexey.lysiuk
eda55b25ee
Fixed code generation for vector parameters with default values
...
https://forum.zdoom.org/viewtopic.php?t=56915
2017-06-16 11:58:24 +03:00
Christoph Oelckers
1ed415014e
- fixed: 'self' may never be null for native VM functions so it must always abort if null gets passed.
2017-06-05 08:43:12 +02:00
Christoph Oelckers
91680a1e8d
- fixed incorrect number of returns in SetRandomSeed.
2017-06-04 18:56:03 +02:00
Rachael Alexanderson
2997f31f9f
- removed ZDOOMADD and updated actors in question with ZDOOMTRANS
2017-06-04 12:30:35 +02:00
Rachael Alexanderson
89b372cb01
- Changed MF7_SPRITEFLIP, MF8_ZDOOMTRANS to RenderFlags
...
- Added RF_ZDOOMADD
- renamed r_canontrans to r_vanillatrans
- this developer's insanity level has increased by 231%.
2017-06-04 12:30:35 +02:00
Rachael Alexanderson
01f88cfb16
- Added 'canonical transparency' cvar r_canontrans - this simply turns off transparency for Doom objects that were marked as transparent sometime in ZDoom's development cycle
2017-06-04 12:30:35 +02:00
jplebreton
2c7a0c87c8
add FloatBobStrength Actor property, a multiplier on Z offset created by FloatBob behavior. default of 1.0 is current behavior, set higher/lower for more/less extreme bobbing.
2017-06-03 18:02:27 +02:00
Christoph Oelckers
1465102ba0
- added SetRandomSeed function for ZScript. This uses the same RNG syntax as the other random functions.
2017-05-31 11:33:57 +02:00
Christoph Oelckers
b50123ec6b
- avoid function call in VM code.
...
- return after calling ThrowAbortException because this avoids storing some register variables on the stack.
2017-05-30 17:50:56 +02:00
alexey.lysiuk
62bac1d612
Added check for nullptr to CLSS and META instructions of scripting VM
...
https://forum.zdoom.org/viewtopic.php?t=56667
2017-05-30 18:09:51 +03:00
Christoph Oelckers
97b664968e
- removed a few unused VM opcodes.
2017-05-19 10:27:22 +02:00
Rachael Alexanderson
a96ef5276d
- Added new flags8 actor field. Isn't it frightening how quickly how we got to our 8th flag field?
...
- Speaking of frightening, added +FRIGHTENING flag.
2017-05-15 19:17:46 +02:00
Rachael Alexanderson
2acb485121
- Added +SPRITEFLIP which reverses a sprite's left-rightness.
2017-05-03 21:13:31 +02:00
Christoph Oelckers
aac6e65842
- fixed: FxActionSpecialCall did not resolve float to int casts.
2017-05-01 22:44:58 +02:00
alexey.lysiuk
ea3b47d0ad
Added generic workaround for double type alignment
...
This fixes not only 32-bit Linux/macOS builds but PowerPC Mac target too
2017-04-23 14:49:36 +03:00
Christoph Oelckers
57d703236b
- changed Doom source license to GPL in all subdirectories and fixed missing licenses in a few other files.
2017-04-17 12:27:19 +02:00
Christoph Oelckers
2d0da4fcfa
- fixed: Dynamic arrays of objects in structs were not registered for garbage collection.
2017-04-15 13:20:58 +02:00
Christoph Oelckers
e333e31410
- fixed: Vector array elements failed to allocate the proper amount of registers.
2017-04-15 12:03:21 +02:00
Christoph Oelckers
ca1981c52f
- fixed missing null pointer check in BuiltinNameToClass.
2017-04-14 23:06:12 +02:00
Christoph Oelckers
d014395dae
- do not delete the namespaces when removing compiler symbols. They still get referenced by some types and must remain until the engine shuts down.
2017-04-14 19:40:50 +02:00
Christoph Oelckers
7186342221
- do not try to serialize static arrays.
2017-04-14 19:25:47 +02:00
Christoph Oelckers
92acbdc625
- made GetClassName an intrinsic and expanded it to also work on class types.
2017-04-14 16:14:27 +02:00
Christoph Oelckers
7983f6ea4f
- fixed incorrect return variable.
2017-04-14 15:23:18 +02:00
Christoph Oelckers
cd180d29c7
- block direct use of 'new' for DObjects.
...
This is to ensure that the Class pointer can be set right on creation. ZDoom had always depended on handling this lazily which poses some problems for the VM.
So now there is a variadic Create<classtype> function taking care of that, but to ensure that it gets used, direct access to the new operator has been blocked.
This also neccessitated making DArgs a regular object because they get created before the type system is up. Since the few uses of DArgs are easily controllable this wasn't a big issue.
- did a bit of optimization on the bots' decision making whether to pick up a health item or not.
2017-04-14 13:31:58 +02:00
Christoph Oelckers
2d098e99fb
- fixed: WP_NOCHANGE had different values in native and script code, resulting in problems with weapon selection.
...
This now explicitly allocates a single object it can safely point to instead of trying to hack around it.
2017-04-13 18:59:45 +02:00
Christoph Oelckers
98dab9c4b9
- took PTypeBase and all its subclasses out of the DObject hierarchy.
...
- moved scope flag to a new variable that is specific to PType instead of hijacking the ObjectFlags for this.
2017-04-13 17:47:17 +02:00
Christoph Oelckers
988fe8d735
- removed all RTTI from the type table.
...
Using names is just as good as using types so now this is what's done.
2017-04-13 16:01:38 +02:00
Christoph Oelckers
aeb455d705
- removed all RTTI checks for the types.
2017-04-13 15:38:06 +02:00
Christoph Oelckers
b2d944974e
- first stage of simplifying the type system.
...
Let's use inline checkers in PType instead of constantly having to do clumsy IsKindOf checks etc. Once complete this also means that the types can be taken out of the class hierarchy, freeing up some common names.
2017-04-13 12:52:18 +02:00
alexey.lysiuk
fbc1028d2b
Fixed crash when parsing DECORATE constant expressions
2017-04-13 12:06:59 +03:00
alexey.lysiuk
1889efa814
Fixed build with Clang
...
Fixed bunch of compilation errors:
cannot pass non-trivial object of type 'FString' to variadic method; expected type from format string was 'char *' [-Wnon-pod-varargs]
Fixed linker erorr:
g_doomedmap.cpp.o: In function `InitActorNumsFromMapinfo()':
src/g_doomedmap.cpp: undefined reference to `PClass::FindActor(FName)'
2017-04-13 10:40:43 +03:00
Christoph Oelckers
1712667ce2
Merge branch 'master' of https://github.com/coelckers/gzdoom
2017-04-13 02:18:16 +02:00
Christoph Oelckers
85d8244d03
- fixed: With the reorganization of the class data the setup of actor replacements must be delayed until after InitializeDefaults has been called.
2017-04-13 02:18:06 +02:00
Christoph Oelckers
6599e2c425
- moved the VM types into their own file and only include it where really needed.
2017-04-13 01:12:04 +02:00
Christoph Oelckers
fc9e304189
- separated class descriptors from VM types.
...
Combining these two groups of data has been the cause of many hard to detect errors because it allowed liberal casting between types that are used for completely different things.
2017-04-12 22:46:49 +02:00
Christoph Oelckers
afd6743965
- moved AddNativeField to PSymbolTable, too.
2017-04-12 18:29:58 +02:00
Christoph Oelckers
8dc11317dd
- Moved WriteFields into SymbolTable as well.
2017-04-12 17:42:10 +02:00
Christoph Oelckers
96631e8808
- make PClass not inherit from PStruct.
...
Having these two types related can cause problems with detection in the compiler because for some parts they need quite different handling.
Common handling for the fields has been moved into PSymbolTable but overall redundancy was quite minor as both types share surprisingly little functionality.
2017-04-12 17:21:13 +02:00
alexey.lysiuk
20a9f17a15
Fixed handling of count parameter's default value in Array.Delete()
...
https://mantis.zdoom.org/view.php?id=571
2017-04-12 17:40:17 +03:00
Christoph Oelckers
0d7b7d6ab1
- merged PStruct and PNativeStruct.
...
There were exactly 4 places in the code that checked for the difference, this is better done with a flag.
2017-04-12 15:12:41 +02:00
Christoph Oelckers
6308251084
- added a FindSymbol wrapper to PClass so that other code does not need to access the symbol table directly.
...
- added an isActor utility function to codegen.cpp to simplify a few constructs.
2017-04-12 13:08:41 +02:00
Christoph Oelckers
b17ab7a133
- put PObjectPointer to some use.
...
- fixed: There was no check for compatible class pointers.
2017-04-12 11:40:40 +02:00
Christoph Oelckers
80801d11b1
- removed some redundant static_casts.
2017-04-12 10:29:04 +02:00
Christoph Oelckers
9c9b2ccf6d
- replaced more dyn_casts and checks for RUNTIME_CLASS(PClassActor)
...
It is preferable to use IsDescendantOf wherever possible if we ever want to be able to separate PClass from PType.
2017-04-12 10:20:58 +02:00
Christoph Oelckers
5350721ec5
- removed PClass::DeriveData because it is no longer needed.
...
- fixed: IsVisibleToPlayer and optimized it a bit more.
- moved SourceLumpName to PClass, so that it can also be used for non-actors (there's a lot of non-Actor classes already.)
- separated the serializer for PClassPointer from PPointer. Even though not doable, a pointer to a class type is something entirely different than a class pointer with a restriction so each should handle its own case.
2017-04-12 09:55:27 +02:00
Christoph Oelckers
e4d2380775
- moved all remaining fields from PClassActor to FActorInfo.
...
- added a few access functions for FActorInfo variables.
With PClassActor now empty the class descriptors can finally be converted back to static data outside the class hierarchy, like they were before the scripting merge, and untangle the game data from VM internals.
2017-04-12 00:07:41 +02:00
Christoph Oelckers
854053a14f
- use TArrays instead of TMaps to store damage factors and pain chances.
...
For these fields maps have no advantage. Linearly searching a small array with up to 10 entries is nearly always faster than generating a hash for finding the entry in the map.
2017-04-11 23:29:37 +02:00
Christoph Oelckers
4afe2d4218
- moved OwnedStates and NumOwnedStates out of PClassActor.
2017-04-11 22:44:35 +02:00
Christoph Oelckers
05240ccbe5
- fixed redundant reallocation of constructable meta fields.
...
- some optimization of access to OwnedStates in old DECORATE.
- consolidate all places that print a state name into a subfunction.
- allocate states from the ClassDataAllocator memory arena. States do not need to be freed separately from the rest of the static class data.
2017-04-11 21:48:41 +02:00
Christoph Oelckers
311ce2362a
- started moving stuff out of PClassActor into meta data.
...
This reinstates the old FActorInfo as part of the meta data a class can have so that the class descriptor itself can be freed from any data not directly relevant for managing the class's type information.
2017-04-11 19:37:56 +02:00
Christoph Oelckers
6a3ddaa8fa
- moved Restricted/ForbiddenToPlayerClass fully to the script side.
...
This required some fixes for allowing to read from metadata arrays.
2017-04-11 15:11:13 +02:00
Christoph Oelckers
7a6e70e777
- reenabled the part of OP_THROW that throws a VMAbortException. This part is still needed for a runtime variable access check.
2017-04-11 00:11:36 +02:00
alexey.lysiuk
d5edd3db36
Commented out remains of VM exception handling opcodes
...
This fixes build with GCC/Clang
2017-04-10 22:18:43 +03:00
Christoph Oelckers
040c70714c
- commented out the exception handling opcodes in the VM.
...
They are currently not used and not planned to be used - and they are rather costly by increasing stack size per call quite significantly.
2017-04-10 20:41:55 +02:00
Christoph Oelckers
9ae97502be
- removed the last remnants of the ATAGs.
2017-04-10 17:08:52 +02:00
Christoph Oelckers
60dd58e7d2
- most ATAG stuff is gone, except for the static storage space in the VMFunction.
2017-04-10 16:06:18 +02:00
Christoph Oelckers
5464336035
- removed ATAGs from the function builder.
2017-04-10 15:48:27 +02:00
Christoph Oelckers
e551ef52f8
- removed atag parameter from GetConstantAddress.
2017-04-10 15:39:04 +02:00
Christoph Oelckers
ef77cbd295
- stop using the ATAGs for checking pointer types in asserts.
...
This is an incredibly costly way to do a debug check as it infests the entire VM design from top to bottom. These tags are basically useless for anything else but validating object pointers being passed to native functions (i.e. mismatches between definition and declaration) and that simply does not justify a feature that costs execution time in non-debug builds and added memory overhead everywhere.
Note that this commit does not remove the tags, it only discontinues their use.
2017-04-10 15:18:31 +02:00
Christoph Oelckers
74faacd218
- fixed: FxVMFunctionCall::GetDirectFunction did not perform any checks on the function's self pointer and failed to report a mismatch as an error.
...
- also fixed two places in the code where the above caused some incorrect definitions not to be detected.
2017-04-06 20:52:38 +02:00
Christoph Oelckers
e780cd8297
- seems the wrong version of this got committed...
2017-04-01 12:04:31 +02:00
Christoph Oelckers
41f2f61b94
- minor VM optimization: Precalculate a function's frame size when compiling it instead of doing it each time it gets called.
...
This made up ca. 10% of the 'call' instruction's execution time.
2017-04-01 10:42:47 +02:00
Christoph Oelckers
3f9ad55432
- allow multiple expressions in 'for' iteration part.
2017-03-29 22:18:52 +02:00
Christoph Oelckers
19e7d60275
- removed DSBarInfo::Scaled because it tended to disagree with StatusBar->Scaled.
2017-03-29 00:35:35 +02:00
Christoph Oelckers
2d1641f0cd
- fixed: Reference types passed as a reference parameter were not properly checked for.
2017-03-29 00:00:25 +02:00
nashmuhandes
99d1581c27
Added "DontLightActors" flag for dynamic lights. Actors will not be illuminated by lights that are given this flag.
2017-03-28 21:33:16 +02:00
Christoph Oelckers
a6bf93c624
- implemented the Heretic status bar.
2017-03-27 21:01:40 +02:00
Christoph Oelckers
a3ee3c287e
- major progress on the status bar code: SBARINFO's DrawGraphic has been ported into a generic function of the base statusbar class and put to use for a few items on the Strife status bar.
...
- decided to ditch the widget system I had started to lay out. As it turns out that would make things far more complicated and slower than they need to be.
2017-03-24 00:47:08 +01:00
Christoph Oelckers
31ea33bfc4
- rewrote the condition nodes from SBARINFO in ZScript. This compiles but hasn't been tested yet.
2017-03-23 00:25:26 +01:00
Christoph Oelckers
9bd75bcac5
- some conceptual work on statusbar stuff. This looks like a viable approach to build something that can replace SBARINFO.
2017-03-22 19:56:21 +01:00
Christoph Oelckers
4417afd548
- changed VMValue to handle strings by reference.
...
This makes VMValue a real POD type with no hacky overloads and eliminates a lot of destructor code in all places that call a VM function. Due to the way this had to be handled, none of these destructors could be skipped because any value could have been a string.
This required some minor changes in functions that passed a temporary FString into the VM to ensure that the temporary object lives long enough to be handled. The code generator had already been changed to deal with this in a previous commit.
This is easily offset by the code savings and reduced maintenance needs elsewhere.
2017-03-22 01:44:56 +01:00
Christoph Oelckers
9bffe4ee50
- scriptified the main statusbar interface and the Strife status bar.
...
Note that the Strife status bar does not draw the health bars yet. I tried to replace the hacky custom texture with a single fill operation but had to find out that all the coordinate mangling for the status bar is being done deep in the video code. This needs to be fixed before this can be made to work.
Currently this is not usable in mods because they cannot initialize custom status bars yet.
2017-03-22 00:32:52 +01:00
alexey.lysiuk
7aa6a6b0b3
Restored explicit assignment operators for VMValue
...
Unfortunately strings require special handling and so all operators must be available
This partly solves https://mantis.zdoom.org/view.php?id=453 (and https://mantis.zdoom.org/view.php?id=459 too)
2017-03-21 12:14:50 +02:00
Christoph Oelckers
1031481167
- added some checks to exclude dynamic lights from being subjected to shadowmapping if they do not touch any one-sided lines from the back side. This condition is a requirement for a 1D shadowmap to even have an effect.
2017-03-20 00:34:19 +01:00
Christoph Oelckers
0721aef218
- fixed: FxAssign used the wrong value type for emitting the store operation.
...
It used the expression's value type, but needs to use the variable's, which can be different when the assignment is synthesized from a builtin function.
2017-03-19 21:36:18 +01:00
Christoph Oelckers
403c5693a9
- cleaned out a large part of unused methods from VMValue.
...
- keep string registers which are being used as function parameters allocated until after the function call returns. This is for allowing to pass strings by reference which would avoid some costly constructor/destructor loops in the call instruction.
2017-03-19 21:25:30 +01:00
Christoph Oelckers
ac95cba848
- fixed generic class type properties to handle "" and "none" as 'no class'.
2017-03-19 12:02:17 +01:00
Christoph Oelckers
845c43876c
- moved all trivial actor properties into the scripts as 'property' declarations.
2017-03-19 11:30:28 +01:00
Christoph Oelckers
3cced6c7cc
- fixed the early-outs for empty functions in the VM caller.
...
OP_RET should not be used as an absolute number here.
2017-03-18 21:31:43 +01:00
Christoph Oelckers
a2f2be17ef
- status screen fully scriptified but not active yet.
2017-03-18 19:35:26 +01:00
Christoph Oelckers
74e9d9db1a
- fixed: The evaluation of multi-string ZScript properties did not work correctly.
2017-03-18 15:45:36 +01:00
alexey.lysiuk
cb5ddeff25
Fixed compilation warnings reported by Clang
...
src/gl/scene/gl_clipper.h:150:23: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
src/gl/dynlights/gl_aabbtree.cpp:137:24: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:137:34: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:137:44: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:139:6: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:139:30: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:139:54: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:142:6: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:143:3: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:144:3: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_aabbtree.cpp:167:6: warning: using integer absolute value function 'abs' when argument is of floating point type [-Wabsolute-value]
src/gl/dynlights/gl_shadowmap.cpp:163:31: warning: '&&' within '||' [-Wlogical-op-parentheses]
src/p_saveg.cpp:367:16: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
src/p_saveg.cpp:402:60: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
src/p_setup.cpp:1553:39: warning: format specifies type 'ptrdiff_t' (aka 'long') but the argument has type 'int' [-Wformat]
src/scripting/zscript/zcc_compile.cpp:293:74: warning: field 'AST' will be initialized after field 'mVersion' [-Wreorder]
src/swrenderer/drawers/r_thread.cpp:113:21: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
2017-03-18 15:13:02 +02:00
alexey.lysiuk
0130fc27cc
Fixed compilation with GCC/Clang
...
src/scripting/backend/codegen.cpp:317:35: error: cannot initialize return object of type 'FxExpression *' with an rvalue of type 'bool'
2017-03-18 14:31:15 +02:00
Christoph Oelckers
b416322032
- converted FInterBackground into a class so that the scripts can use it.
...
- fixed some issues with default value matching in savegames.
2017-03-18 13:25:22 +01:00
Christoph Oelckers
1e9ef2b1df
- started scriptifying the level intermission screen. This compiles but is not active yet.
...
- allow treatment as one-character string constants as character constants. This became necessary because name constants already use single quotes and are much harder to repurpose due to a higher degree of ambiguity.
- fixed: protected methods in structs were not usable.
2017-03-18 12:18:15 +01:00
alexey.lysiuk
ce3c397ec7
Fixed builtin type names for -dumpast command line option
2017-03-18 13:11:13 +02:00
Christoph Oelckers
d506b2e6a1
- fixed code generation bug with bad class names in DECORATE.
...
- print attenuation info with 'listlights' CCMD.
2017-03-17 16:00:04 +01:00
Christoph Oelckers
64bdc8c495
- fixed some incomplete checks for static arrays.
...
- made AActor::OkaytoSwitchTarget scripted virtual.
2017-03-15 01:39:59 +01:00
Christoph Oelckers
d283beb063
- implemented static constant arrays in class scope.
2017-03-14 23:55:30 +01:00
Christoph Oelckers
6926875b21
- allow parsing of static constant arrays in class scope.
...
This is only the parsing part, the arrays are not yet getting evaluated.
This required quite a hacky workaround because the gramma couldn't be made to accept the rule. The scanner will check if a 'static' token is immediately followed by a 'const' token and will combine both to a new 'staticconst' token that does not create conflicts with other rules.
2017-03-14 20:22:37 +01:00
Christoph Oelckers
539af96b8e
- fixed variable size mismatch and some warnings for 32 bit builds.
2017-03-14 18:48:51 +01:00
alexey.lysiuk
6b8ea7ead3
Fixed comparison of class names for functions and fields
...
https://mantis.zdoom.org/view.php?id=426
2017-03-14 15:50:05 +01:00
Christoph Oelckers
d1ce5e37fc
- fixed another error in DispatchScriptProperty. That AST's data organization is really messed up... :(
2017-03-13 21:22:11 +01:00
alexey.lysiuk
3a039b1e44
Fixed compilation error reported by GCC
2017-03-13 22:05:55 +02:00
Christoph Oelckers
6037ecb6a1
- fixed: Getting the offset to the 'Size' field for static arrays should use a fixed offset, not the size of the defining variable, which, depending on where things are defined, can be different.
2017-03-13 20:27:46 +01:00
Christoph Oelckers
cc60b005a1
- fixed processing of parameter-less ZScript properties.
2017-03-13 19:57:20 +01:00
Christoph Oelckers
cd392e50e9
- added a dummy struct named '_' to define global variables. This can only be used internally.
...
This method was chosen because it avoids adding variable declarations to the global namespace which would have required a lot more work while polluting the grammar.
This way the global variables can be handled by a small bit of special coding in the struct generator.
2017-03-13 14:42:14 +01:00
Christoph Oelckers
5fd86cf98c
- added some syntactic help to the ZScript parser to allow defining the arrays with native structs on the script side instead of having to define them internally.
2017-03-13 12:51:09 +01:00
Christoph Oelckers
61c91f05fc
Merge branch '3.0_work'
...
# Conflicts:
# src/gl/scene/gl_portal.cpp
# src/r_plane.cpp
2017-03-12 20:31:34 +01:00
ZZYZX
0176c29ec2
Will not emit OP_SCOPE if self type can be checked at compile time.
2017-03-12 20:27:38 +01:00
ZZYZX
91e83bf3c6
Fixed DECORATE scope for duplicates
2017-03-12 20:27:38 +01:00
ZZYZX
bd889cc8f1
Fixed various virtualscope oddities; set scope for DECORATE classes to play.
2017-03-12 20:27:38 +01:00
Christoph Oelckers
bd7476fb8d
- untangled r_defs.h from actor.h
...
Both files can now be included independently without causing problems.
This also required moving some inline functions into separate files and splitting off the GC definitions from dobject.h to ensure that r_defs does not need to pull in any part of the object hierarchy.
2017-03-10 02:22:42 +01:00
Christoph Oelckers
a4710bcdb0
- did a bit of header cleanup to reduce the dependency on dobject.h.
2017-03-09 23:30:42 +01:00
Christoph Oelckers
c008ddaf66
- replaced homegrown SWORD, SBYTE and uint32_t types.
2017-03-09 19:31:45 +01:00
Christoph Oelckers
878e6015df
- made all iterator classes natively abstract so that they do not get a ConstructNative method so that OP_NEW can refuse creating them without the need to mark them as abstract.
...
- block creation of actors with the 'new' instruction. Unlike the above these cannot be made abstract because without ConstructNative they cannot be serialized.
2017-03-09 17:21:37 +01:00
Christoph Oelckers
77bac4f6fa
- fixed code generation for min/max when the first operand was a local variable or constant.
...
The code for constants was not optimal because the first operand of the instructions cannot be constant. This was solved by swapping it with the second choice which will always be non-constant.
The code for local variables did not allocate a new destination register and would overwrite the first parameter's variable.
2017-03-09 09:36:12 +01:00
Christoph Oelckers
6dee9ff566
- replaced another large batch of homegrown type use.
2017-03-08 18:55:53 +01:00
Christoph Oelckers
1cb89c6b37
- fixed bad call to validate function.
2017-03-08 13:35:21 +01:00
Christoph Oelckers
d911cdcfe7
- missed a bit.
2017-03-07 22:18:50 +01:00
Christoph Oelckers
e2f3a09dd0
- refactored the scope check for VirtualScope calls.
...
It now uses a dedicated opcode instead of piggybacking on OP_CALL and it passes data that is closer to the VM. Symbols should be avoided at this level.
It also will skip the scope instruction if the code generator detects that both calling function and the self pointer type have the same scope, this assumes that subclasses cannot flip between UI and Play.
2017-03-07 22:17:48 +01:00
Christoph Oelckers
0c686c593b
- simplify the runtime checks for OP_NEW.
...
They are not needed for OP_NEW_K which can evaluate the class relations at compile time and for OP_NEW the calling function can also be checked at compile time, passing only the scope value itself.
2017-03-07 19:57:55 +01:00
Christoph Oelckers
4f97db74f2
- fixed: The deprecation checks in the compiler backend were wrong.
2017-03-06 19:24:31 +01:00
Major Cooke
e111b0b92e
Fixed: Deprecated functions could not act because FxVMFunctionCall::CheckAccessibility returned false on warning.
2017-03-06 17:37:18 +01:00
alexey.lysiuk
4eb9f662cb
Fixed compilation with Clang
...
src/scripting/backend/codegen.cpp:8568:10: error: cannot initialize return object of type 'FxExpression *' with an rvalue of type 'bool'
2017-03-06 10:41:17 +02:00
Christoph Oelckers
2b5fea4ea8
- added version checks for function calls and virtual overrides.
...
- restricted the UI functions in inventory.
2017-03-05 21:44:10 +01:00
Christoph Oelckers
8a5daf211c
- added version check for member variables.
2017-03-05 20:41:41 +01:00
ZZYZX
8400961a00
Did some cleanup - since FScopeBarrier is not in codegen now, it's possible to include it properly from vm.h
2017-03-05 18:39:59 +01:00
Christoph Oelckers
456ac64723
- implemented version checks for compile-time type determination and for class inheritance.
...
Note that in this system, DECORATE counts as version 2.0, so any data that should be available to DECORATE should not use version restriction.
2017-03-05 17:58:55 +01:00
Christoph Oelckers
7df698dad8
- implemented the parser basics of a ZScript versioning system.
...
Note that this completely disables the newly added keywords 'play' and 'ui' for unversioned code to allow using them as identifiers as I have found at least one mod that uses a variable named 'play' that would have been rendered broken otherwise.
This also disables many ZScript only keywords for other parsing jobs.
2017-03-05 14:13:00 +01:00
alexey.lysiuk
27376b1697
Fixed compilation of Debug configuration
...
src/scripting/vm/vmexec.cpp:204:44: error: no member named 'Native' in 'VMScriptFunction'
2017-03-05 11:39:25 +02:00
ZZYZX
38b86ad83c
No need for explicit EFX_Self check in FxStructMember::RequestAddress if self is set to readonly elsewhere.
2017-03-05 09:49:31 +01:00
ZZYZX
1832531726
Fixed: check protected fields against analog of OwningClass in functions, as opposed to the type that the field was accessed from.
2017-03-05 09:49:31 +01:00
ZZYZX
3eafc13b08
Removed BarrierSide from VMFunction, since it's obsolete with addition of VarFlags
2017-03-05 09:49:31 +01:00
ZZYZX
7cbabfb0d4
Implemented implicit 'protected' inheritance in virtual functions
2017-03-05 09:49:31 +01:00
ZZYZX
b87f9b540e
Implemented 'protected' on fields and methods
2017-03-05 09:49:31 +01:00
ZZYZX
9d4179ca06
Protected on methods of StaticEventHandler is completely useless
2017-03-05 09:49:31 +01:00
ZZYZX
6af5c1fa2b
Produce a warning if clearscope is used on non-inner structs. Also now checking for outer class presence correctly.
2017-03-05 09:49:31 +01:00
ZZYZX
86a494aacd
Can use clearscope on struct to signify that it should be plain data even if defined inside a play/ui class
2017-03-05 09:49:31 +01:00
ZZYZX
6c90d05407
By default, inner struct in class should take the scope of it's outer class
2017-03-05 09:49:31 +01:00
ZZYZX
0a7aebae93
Fixed const method qualifier. Also, fixed: const is not clearscope, treat differently.
2017-03-05 09:49:31 +01:00
Christoph Oelckers
7dbc6939c4
- declared most native getters in Actor as const.
...
- made the self pointer of const functions readonly.
This seems to work fine. Both calling a non-const function and trying to assign a value to a member fail with an error message.
2017-03-04 12:43:07 +01:00
Christoph Oelckers
b3ba5bfe2c
- allow 'const' on class functions. This is preferable to 'clearscope' so that the UI code can call getter functions without having to declare things as 'clearscope'.
...
Clearscope is a dangerous context and should be limited to the minimum extent possible and preferably be blocked in user code.
This may still need some work on const functions but better have it in now.
2017-03-04 12:07:45 +01:00
Christoph Oelckers
5551f3a8c5
- declared the sectorplanes in Sector as read only and marked all relevant functions in the planes themselves const.
...
This is to block modification of the planes directly. For future-proofness with renderer changes everything that alters these values should go through he function interface.
2017-03-04 11:48:36 +01:00
Christoph Oelckers
3879e67cee
- the #if was in the wrong place.
2017-03-04 11:34:53 +01:00
alexey.lysiuk
a5edd48996
Fixed remaining warning reported by Clang
...
src/scripting/zscript/zcc_compile.cpp:2456:54: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
2017-03-04 12:23:15 +02:00
alexey.lysiuk
d8cee4d3a5
Fixed most of warnings reported by Clang
...
src/scripting/zscript/zcc_compile.cpp: warning: comparison of integers of different signs: 'int' and 'unsigned long' [-Wsign-compare]
src/p_acs.cpp: warning: format specifies type 'char *' but the argument has type 'PClass *' [-Wformat]
2017-03-04 12:17:53 +02:00
Christoph Oelckers
fd4727e701
- did a bit of cleanup.
...
- disabled the runtime check in OP_CALL because as implemented it doesn't clean up properly and is not fully implemented.
2017-03-04 10:28:51 +01:00
ZZYZX
3338fb7f33
Added SendNetworkEvent static method to EventHandler; Fixed qualified static method call from own class (previously was 'shadowed' by qualified virtual method call)
2017-03-04 00:57:41 +02:00
ZZYZX
c9a994a885
Fixed: clearscope should also clear the inherited scope (through struct member access chain); Fixed: struct member access chain should ONLY work for structs (forgot that FxClassMember inherits FxStructMember)
2017-03-04 00:04:19 +02:00
ZZYZX
723f9770a4
Merge remote-tracking branch 'gz/master' into gz_master2
2017-03-03 23:33:02 +02:00
ZZYZX
421f78c771
Fixed potential crash with new() in anonymous functions (is that even allowed?); Added compile-time check for disallowed new()
2017-03-03 22:52:35 +02:00
ZZYZX
3a57a9809f
Removed nonew class modifier
2017-03-03 22:42:12 +02:00
ZZYZX
78533cc316
Fixed: the name of accessed field is now properly retrieved in FxStructMember::RequestAddress
2017-03-03 22:38:33 +02:00
Christoph Oelckers
fd20e1d78f
- allow hooking custom serializers into PPointer so that serializable types can be handled without having to create new type classes which would be a bit unwieldy thanks to how the type system works.
2017-03-03 20:11:13 +01:00
Christoph Oelckers
c630b07011
- replaced SDWORD with int32_t globally.
...
This type wasn't used in the software rendering code so it could be removed already. The other homegrown types will have to be dealt with later.
2017-03-03 19:35:08 +01:00
Christoph Oelckers
cfda1a49d4
- forgot to save the last fix for the previous commit.
...
- let the script compiler also output the size of the allocated data for the script functions in addition to the actual code size.
2017-03-02 11:58:30 +01:00
Christoph Oelckers
00dc59ebdc
- separated the blood translation index from the BloodColor variable to allow more than 255 blood translations and as a prerequisite for allowing to change the blood color.
2017-03-02 10:26:23 +01:00
Christoph Oelckers
0de79042d4
- fixed: 'Bloodtype' cannot use the generic property definition because it needs special handling for optional arguments. This reinstates the native handler.
2017-03-01 20:20:46 +01:00
Christoph Oelckers
12915b5f6e
- use an inventory flag to decide what items are slipped by DF_NO_HEALTH and DF_NO_ARMOR. With all the changes over the last 10 years this had become too spotty.
...
- use an enum type for ItemFlags, just like it was done for actor flags. Since the flag word is almost full it may soon be necessary to add a second one and then this kind of security check may become necessary.
2017-02-28 21:45:47 +01:00
Christoph Oelckers
168627f549
- native meta variables are not needed anymore. They were only a temporary aid to properly handle this, but now all have been redone.
2017-02-28 14:38:50 +01:00
Christoph Oelckers
fc125f7eaf
- reworked the obituary system to use scripted virtual overrides. Let's hope this solves the problems with the original code, now that any actor needing special treatment can override it.
2017-02-28 14:30:14 +01:00
Christoph Oelckers
851984efe0
- made GetDeathHeight a virtual scripted function.
...
- made GetGibHealth a virtual scripted function.
- removed a few more native meta properties.
2017-02-28 13:40:46 +01:00
Christoph Oelckers
d5250d6b9f
- made WoundHealth modifiable to allow more control over the wound state.
2017-02-28 12:56:35 +01:00
Christoph Oelckers
2a4a5e7a70
- refactored a few more native meta properties.
2017-02-28 12:47:44 +01:00
Christoph Oelckers
1311f08f47
- scriptified Actor.GetBloodType as a virtual function to allow mods more flexibility here.
...
- made CameraHeight a modifiable actor property - it was readonly before.
- allow accessing the type constants from ZScript, this required quite a bit of explicit coding because the type system has no capabilities to search for basic types by name.
2017-02-28 12:11:25 +01:00
Christoph Oelckers
b6a1fe7fc6
- scriptified the basic attack functions, its properties and the explosion properties to test the new metadata system.
2017-02-28 10:51:32 +01:00
Christoph Oelckers
a93a7e1cac
- handle player meta properties.
...
Only two really make sense, the rest is never used from scripts and may just remain where it was.
2017-02-28 01:23:12 +01:00
Christoph Oelckers
78a66e001a
- properly handle all meta properties for inventory items.
2017-02-28 00:45:16 +01:00
Christoph Oelckers
f343d36ea9
- implemented the basics of a working metadata system.
...
This will store class meta properties in a separate memory block so that it won't have to muck around with PClass - which made the implementation from the scripting branch relatively useless because extending the data wasn't particularly easy and also not well implemented. This can now be handled just like the defaults.
2017-02-27 23:28:19 +01:00
Christoph Oelckers
321c846d01
- added StealthAlpha actor property for defining a minimum visibility value of a stealth monster.
2017-02-27 19:46:27 +01:00
Christoph Oelckers
f9f9f2d5fc
- added selfdamagefactor actor property.
2017-02-27 11:22:51 +01:00
Christoph Oelckers
f918a9d9a7
- added a BOUNCE_NotOnShootables flag that hopefully helps addressing the biggest glitch in the bouncing code.
2017-02-26 22:31:43 +01:00
Christoph Oelckers
7a1f36bfb0
- added RF_DONTINTERPOLATE flag.
2017-02-26 20:01:39 +01:00
Christoph Oelckers
0cc46a2aaf
- added a FORCEINFIGHTING flag.
2017-02-26 19:05:20 +01:00
alexey.lysiuk
6ae91ac9ea
Fixed scripting type of demoplayback global variable
...
https://mantis.zdoom.org/view.php?id=334
2017-02-26 10:36:03 +02:00
Christoph Oelckers
35033891ac
- added MF7_NOINFIGHTSPECIES flag.
2017-02-25 20:12:30 +01:00
Christoph Oelckers
10c6b7a80b
- added a NULL check to the VM's entry point, in case some bad but non-fatal DECORATE results in a function not having generated any code.
2017-02-25 10:57:12 +01:00
Christoph Oelckers
5bc26763cb
- fixed: String CVARs get stored as a const char *, not an FString, so the ls opcode cannot be used to read their content.
2017-02-23 22:01:46 +01:00
Christoph Oelckers
fc101049c6
- exported gamestate variable and forced it to 32 bit internally.
...
- forced gameaction_t to 32 bit to avoid problems with undefined size issues.
2017-02-23 19:29:43 +01:00
alexey.lysiuk
eb40e8bcf0
Removed DYNLIGHT preprocessor definition
...
https://mantis.zdoom.org/view.php?id=318
2017-02-22 23:02:58 +02:00
Christoph Oelckers
bb6e667f33
- removed some unneeded version.h #includes.
2017-02-20 01:42:53 +01:00
Christoph Oelckers
26144340b8
- fixed: Hexen's poison cloud needs to call P_DamageMobj, even with a damage value of 0. Added a new flag to handle this case because normally this is not desirable.
2017-02-19 23:20:09 +01:00
Christoph Oelckers
68b47d81de
- fixed WP_NOCHANGE changes with a restart, so this must be taken into account for the script variable holding it.
2017-02-19 17:58:54 +01:00
Christoph Oelckers
9089beb110
- scriptified most of the remaining parts of DMenu. Only the engine interface remains native now.
2017-02-19 15:23:33 +01:00
Christoph Oelckers
e05242e44d
- scriptified the remaining parts of the conversationmenu.
...
- do not resolve the backdrop texture to a texture ID at load time. This will allow custom menu classes to use this info differently.
- added a new ZSDF userstring property to dialog pages to give mods more means for customization.
- allow overriding the conversation menu class both globally through MAPINFO and per conversation in ZSDF.
2017-02-19 14:21:49 +01:00
Christoph Oelckers
d85b9cdd71
- scriptified the input methods of DConversationMenu.
...
- fixed handling of DimAllowed.
2017-02-19 13:07:49 +01:00
Christoph Oelckers
2440951811
-scriptified the ReadThis screen.
2017-02-19 00:08:30 +01:00
Christoph Oelckers
aabcc1f92e
- scriptified the input functions of DMessageBoxMenu.
2017-02-18 23:05:01 +01:00
Christoph Oelckers
f5a0f6b3bf
- almost done with TextEnterMenu.
2017-02-18 21:18:23 +01:00
ZZYZX
6ec7d9af59
No more crashing in anonymous functions during runtime check of virtualscope
2017-02-18 08:02:38 +02:00
ZZYZX
fb9b8c8870
Re-enabled clearscope for methods; made isBlinking() clearscope
2017-02-18 07:51:41 +02:00
ZZYZX
ab07b30d5e
Fixed: implicit method call without specifying self should be checked as well
2017-02-18 07:48:28 +02:00
ZZYZX
463620c3b8
ClearScope is not needed for methods either. Disabled, but not removed - reenable if needed later
2017-02-18 07:33:27 +02:00
ZZYZX
d7f5d8a403
ClearScope for fields essentially means 'world-writable'. We don't want to support that - disallowed
2017-02-18 07:31:07 +02:00
ZZYZX
dbc595f886
Marked DrawPowerup as ui, still compiles and somewhat works :D
2017-02-18 07:30:20 +02:00
ZZYZX
afc9050a43
Marked Thinker play. Marked OnDestroy and Destroy virtualscope. It compiles :D
2017-02-18 06:56:00 +02:00
ZZYZX
e0ae0fdb2e
Dynamic virtualscope checking. May yet be buggy.
2017-02-18 06:27:28 +02:00
ZZYZX
b5ab011bb9
Static virtualscope checking. This is possible, because virtualscope can't produce false positives (data readable for everyone), only false negatives (which are handled at runtime later)
2017-02-18 04:07:12 +02:00
Christoph Oelckers
5f1241a55c
- scriptified the rest of the player menu. This compiles and runs but doesn't work yet, it will be fixed in the next commit.
2017-02-18 01:20:07 +01:00
ZZYZX
12aa18a92b
Preparing to do class-based method scopes: can't change class scope once defined (play stays play, ui stays ui)
2017-02-18 00:39:57 +02:00
Christoph Oelckers
50d2846e40
- scriptified UpdateColorsets.
2017-02-17 23:16:07 +01:00
ZZYZX
014db18f2a
Fixed some things around
2017-02-17 23:36:16 +02:00
Christoph Oelckers
97eed1e6df
- scriptified UpdateSkins.
2017-02-17 22:12:56 +01:00
ZZYZX
3056570ea9
Implemented a call check between ui/play/data
2017-02-17 23:02:43 +02:00
Christoph Oelckers
498da825a5
- made the Skins array scripting friendly and exported it.
2017-02-17 21:51:23 +01:00
ZZYZX
a2f3d8511d
Implemented a read check between ui/play/data fields with a meaningful error
2017-02-17 22:46:18 +02:00
ZZYZX
a7a4406bb1
Supposedly implemented a write check between ui/play/data
2017-02-17 22:41:04 +02:00
ZZYZX
8b0dee6f66
My am dumb: PStruct is a base for PClass
2017-02-17 22:00:47 +02:00
ZZYZX
ecd4f5a32d
Removed supposedly debug value added in commit b0f3121bec
2017-02-17 20:25:11 +02:00
ZZYZX
496b2a74ce
Disallow const qualifier for classes
2017-02-17 20:04:40 +02:00
ZZYZX
195ae24dcb
const method cannot write to self
2017-02-17 19:54:59 +02:00
ZZYZX
338e676e73
Allow calling const methods on readonly structs
2017-02-17 19:25:29 +02:00
ZZYZX
0f031c5f22
Renamed 'allowui' to 'clearscope'. 'allowui' doesn't reflect the real meaning of the keyword which clears implicit 'play' or 'ui' inherited from parent class (for classes) or owning type (for methods/fields)
2017-02-17 18:24:01 +02:00