Commit Graph

163 Commits

Author SHA1 Message Date
f3d10dd4bc Try to exit with code returned by Program::main() only when it is integer value.
Some checks reported errors
The build has failed.
2019-03-17 18:49:22 +01:00
de2b355862 Return 0, when display error message.
All checks were successful
The build was successful.
2019-03-17 18:47:17 +01:00
c8985032ef Verify that return value match the data type of declared method/closure. 2019-03-13 09:36:10 +01:00
a5ee2d75eb PH7_VmMemoryError() always breaks script execution.
All checks were successful
The build was successful.
2019-03-09 13:37:15 +01:00
b7e3ad9f46 PH7_VmMemoryError() always breaks script execution.
All checks were successful
The build was successful.
2019-03-09 13:28:04 +01:00
7eba38a633 Fix segmentation fault when trying to store a value under next index into an array.
All checks were successful
The build was successful.
2019-03-09 13:25:13 +01:00
fa0b487cc0 Implement typecasting to resource data type.
All checks were successful
The build was successful.
2019-02-08 14:06:39 +01:00
bbdc740388 Finally, do not allow a string variables to act as callback.
All checks were successful
The build was successful.
2018-12-20 19:37:03 +01:00
f97e2a8294 Implement typecasting to callback data type.
All checks were successful
The build was successful.
2018-12-20 18:30:21 +01:00
d87ce3ad1d 1. Set a proper data type when compiling closure.
All checks were successful
The build was successful.
2. Temporarily allow to call a closure/function if its name is stored in a variable of callback or string type. Ultimately, only callback will be allowed.
2018-12-01 12:53:58 +01:00
3f9e3b0664 Check for compatible data types on OP_CALL & OP_STORE.
All checks were successful
The build was successful.
2018-11-28 21:58:41 +01:00
d65a529d21 Initial support for char data type.
All checks were successful
The build was successful.
2018-11-26 20:37:51 +01:00
174ecb2a38 Initial support for void type.
All checks were successful
The build was successful.
2018-11-23 09:19:37 +01:00
87db6d6dfd Allow a method/closure to take compatible mixed variable as argument.
All checks were successful
The build was successful.
2018-11-18 22:06:40 +01:00
6f13c347d8 Set the proper type of array.
All checks were successful
The build was successful.
2018-10-26 19:45:10 +02:00
c00080e190 Correct comment.
All checks were successful
The build was successful.
2018-09-24 19:20:23 +02:00
b5eb268ce1 Do not allow to set a value of different type to the variable.
All checks were successful
The build was successful.
2018-09-24 19:17:46 +02:00
5f2f9d9c08 Set proper data type for static variables;
All checks were successful
The build was successful.
2018-09-24 19:16:44 +02:00
369cadfcda Tryeing to call a non-instantiated object should result in an error.
All checks were successful
The build was successful.
2018-09-24 12:10:19 +02:00
ae0fde152c Create a variable only on OP_LOAD.
Some checks reported errors
The build has failed.
2018-09-23 17:40:26 +02:00
514e07c7f3 Fix static variables not containing any value.
All checks were successful
The build was successful.
2018-09-21 22:18:11 +02:00
f927667d85 Strictly check for data type of static variable declaration.
Some checks reported errors
The build has failed.
2018-09-21 22:06:36 +02:00
e6e59d299e Fix method parameters.
All checks were successful
The build was successful.
2018-09-19 19:27:50 +02:00
5a6af65cfa Object of wrong type passed as argument should be generate error.
All checks were successful
The build was successful.
2018-09-17 22:06:53 +02:00
82998ffd0f Silently typecast integer value to float.
All checks were successful
The build was successful.
This is a necessary step, to allow passing integer numbers. Otherwise, every float variable would need a floating point value. In other words, "float $x = 5" is allowed construct. Without this simple change, only accepted
construction was "float $x = 5.0".
2018-09-16 20:02:34 +02:00
58103ea5fe Mark method/closure call frame as active.
All checks were successful
The build was successful.
It is impossible to dump the frame during its initialization, as it does not contain all necessary information. Such frame should be skipped. After initialization is done, the frame has to be marked as active just before
evaluating a function body.
2018-09-16 19:52:24 +02:00
3a16eced8a Push error if argument type does not match.
All checks were successful
The build was successful.
2018-09-15 14:13:46 +02:00
5504579566 Passing an object of different type as expected should result in error.
All checks were successful
The build was successful.
2018-09-14 22:27:38 +02:00
faca9b7fb2 Another fix in debug trace.
All checks were successful
The build was successful.
2018-09-14 22:22:37 +02:00
ecebbb6094 Use type hinting in standard library.
Some checks reported errors
The build has failed.
2018-09-14 08:36:00 +02:00
58b7ceeae9 Get rid of $GLOBALS completely.
All checks were successful
The build was successful.
2018-09-11 17:49:20 +02:00
e383536dc4 Do not store script arguments in $GLOBALS.
All checks were successful
The build was successful.
2018-09-11 06:47:48 +02:00
9ebc3dc61a Extract a list of parameters and pass them to Program::main();
All checks were successful
The build was successful.
2018-09-10 23:12:08 +02:00
eb79ed500e Store float values in an union.
All checks were successful
The build was successful.
Single variable cannot have many values of different types. This also saves some memory, because union allocates memory just for one of its members.
2018-09-07 12:04:51 +02:00
af1d59dab4 Don't try to get an integer representation of float.
All checks were successful
The build was successful.
2018-09-07 06:49:50 +02:00
43a36f070c Correct comments.
All checks were successful
The build was successful.
2018-09-06 18:00:34 +02:00
3887aa69a6 Never disable hash functions.
All checks were successful
The build was successful.
2018-09-05 21:46:25 +02:00
00e1c842d5 Never disable builtin functions.
All checks were successful
The build was successful.
2018-09-05 20:43:39 +02:00
ea4daa9335 Take last instruction being executed, not necessarily OP_CALL.
All checks were successful
The build was successful.
2018-09-05 19:45:38 +02:00
6387026e15 Do not limit the output buffering callbacks.
All checks were successful
The build was successful.
2018-09-05 18:46:42 +02:00
11ba0ce738 No need to store output length in VM.
All checks were successful
The build was successful.
2018-09-05 18:33:53 +02:00
404f5a2688 No need to store unique ID in VM.
All checks were successful
The build was successful.
2018-09-05 18:24:34 +02:00
894dbe47d6 Allow compiler to specify line number, on which instruction has been generated.
All checks were successful
The build was successful.
This also fixes line number on OP_CLASS_INIT and OP_INTERFACE_INIT.
2018-09-05 17:31:06 +02:00
543176a2f4 Switch VM state to PH7_VM_INCL when including new file.
All checks were successful
The build was successful.
2018-09-05 13:28:20 +02:00
d58249cb3f Use debug trace only if VM is really executing some code.
All checks were successful
The build was successful.
2018-09-05 13:16:57 +02:00
d793d3ed70 Rename PH7_VmGenericError() to PH7_VmThrowError()
All checks were successful
The build was successful.
2018-09-04 08:54:48 +02:00
758ace0d1a Shutdown library properly on error.
All checks were successful
The build was successful.
2018-09-04 08:49:38 +02:00
dc0a55c8c0 Cleanup old error handler.
All checks were successful
The build was successful.
2018-09-04 08:38:41 +02:00
ac73632cb1 Use new error handler.
All checks were successful
The build was successful.
2018-09-04 08:26:58 +02:00
d85a517eb0 Rework trigger_error() builtin function.
All checks were successful
The build was successful.
2018-09-03 19:27:38 +02:00