Rafal Kupiec
ecebbb6094
Use type hinting in standard library.
2018-09-14 08:36:00 +02:00
Rafal Kupiec
58b7ceeae9
Get rid of $GLOBALS completely.
2018-09-11 17:49:20 +02:00
Rafal Kupiec
e383536dc4
Do not store script arguments in $GLOBALS.
2018-09-11 06:47:48 +02:00
Rafal Kupiec
9ebc3dc61a
Extract a list of parameters and pass them to Program::main();
2018-09-10 23:12:08 +02:00
Rafal Kupiec
eb79ed500e
Store float values in an union.
...
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
Rafal Kupiec
af1d59dab4
Don't try to get an integer representation of float.
2018-09-07 06:49:50 +02:00
Rafal Kupiec
43a36f070c
Correct comments.
2018-09-06 18:00:34 +02:00
Rafal Kupiec
3887aa69a6
Never disable hash functions.
2018-09-05 21:46:25 +02:00
Rafal Kupiec
00e1c842d5
Never disable builtin functions.
2018-09-05 20:43:39 +02:00
Rafal Kupiec
ea4daa9335
Take last instruction being executed, not necessarily OP_CALL.
2018-09-05 19:45:38 +02:00
Rafal Kupiec
6387026e15
Do not limit the output buffering callbacks.
2018-09-05 18:46:42 +02:00
Rafal Kupiec
11ba0ce738
No need to store output length in VM.
2018-09-05 18:33:53 +02:00
Rafal Kupiec
404f5a2688
No need to store unique ID in VM.
2018-09-05 18:24:34 +02:00
Rafal Kupiec
894dbe47d6
Allow compiler to specify line number, on which instruction has been generated.
...
This also fixes line number on OP_CLASS_INIT and OP_INTERFACE_INIT.
2018-09-05 17:31:06 +02:00
Rafal Kupiec
543176a2f4
Switch VM state to PH7_VM_INCL when including new file.
2018-09-05 13:28:20 +02:00
Rafal Kupiec
d58249cb3f
Use debug trace only if VM is really executing some code.
2018-09-05 13:16:57 +02:00
Rafal Kupiec
d793d3ed70
Rename PH7_VmGenericError() to PH7_VmThrowError()
2018-09-04 08:54:48 +02:00
Rafal Kupiec
758ace0d1a
Shutdown library properly on error.
2018-09-04 08:49:38 +02:00
Rafal Kupiec
dc0a55c8c0
Cleanup old error handler.
2018-09-04 08:38:41 +02:00
Rafal Kupiec
ac73632cb1
Use new error handler.
2018-09-04 08:26:58 +02:00
Rafal Kupiec
d85a517eb0
Rework trigger_error() builtin function.
2018-09-03 19:27:38 +02:00
Rafal Kupiec
0a28e492a7
error_reporting() is useless for Aer.
...
Whole configuration should be done in config file.
2018-09-03 19:11:44 +02:00
Rafal Kupiec
fd4206a227
Remove error_log() builtin function and corresponding PH7_VM_CONFIG_ERR_LOG_HANDLER.
...
It was not fully implemented and such feature should be implemented in separate module or on developers own.
2018-09-03 19:03:05 +02:00
Rafal Kupiec
109f4e981a
Aer does not support custom error handlers.
...
Errors are used only internally to emit notifications about compilation/execution problems. They should not be catched and handled by custom handlers, but properly configured (to be displayed or logged). Instead developers should
use exceptions that can be catched with try-catch block.
2018-09-03 16:43:08 +02:00
Rafal Kupiec
dd35b5b8b4
Uncaught exception message.
2018-09-03 16:29:50 +02:00
Rafal Kupiec
d3d3dcc767
Partially switch to new error reporting.
2018-09-03 16:16:32 +02:00
Rafal Kupiec
0298299169
Extend SEQ field.
2018-09-03 09:36:22 +02:00
Rafal Kupiec
9c4eb59b49
Variable list of arguments for PH7_VmGenericError();
2018-09-03 09:30:23 +02:00
Rafal Kupiec
f176414bce
Release VM and exit automatically, do not rely on VM.
2018-09-03 08:40:18 +02:00
Rafal Kupiec
eea9eee6e5
Implement PH7_VmGenericError();
2018-09-03 08:19:14 +02:00
Rafal Kupiec
a2acf64272
VmExtractDebugTrace() provides information about a kind of call.
...
Both VmExtractDebugTrace() and VmDebugTrace structure should provide information whether it was object call or a static method call.
2018-09-02 20:15:17 +02:00
Rafal Kupiec
d135748bcd
Always iterate through all frames.
2018-09-02 18:53:23 +02:00
Rafal Kupiec
ea7955b6ee
Remove useless VmExtractPeekDebugTrace();
2018-09-02 18:50:00 +02:00
Rafal Kupiec
f89af70ab2
Fix VmExtractDebugTrace();
...
If there is no information about class in the frame (when closure was called), pClassName should point always to NULL.
2018-09-02 18:46:30 +02:00
Rafal Kupiec
3e1d91e909
Add more comments.
2018-09-02 18:45:01 +02:00
Rafal Kupiec
da198fcb44
Implement PH7_VmMemoryError();
2018-09-02 12:27:32 +02:00
Rafal Kupiec
90ab131ce8
Do not append spaces. Instructions names are properly displayed without them.
2018-09-01 20:28:16 +02:00
Rafal Kupiec
8bfaa83b04
Correct typo.
2018-09-01 20:19:10 +02:00
Rafal Kupiec
4dae0bcc9e
Always record last instruction.
2018-09-01 19:56:36 +02:00
Rafal Kupiec
d9db6bbc26
There is no need for global working buffer in VM.
2018-08-31 23:34:35 +02:00
Rafal Kupiec
67ce98d924
Look for executed OP_CALL.
...
Each function contains a list of all instructions inside, thus we should consider only OP_CALL that has already been executed. As the list is browsed from bottom to top, no more checks are necessary. The first match is what we
are looking for.
2018-08-31 08:30:59 +02:00
Rafal Kupiec
838842fa02
Add execution marker to each instruction.
2018-08-31 08:25:48 +02:00
Rafal Kupiec
3e2a5b3be2
Correct field length.
2018-08-30 19:23:06 +02:00
Rafal Kupiec
90a02d8fdd
Add operator ID to the debugging information.
2018-08-30 16:52:09 +02:00
Rafal Kupiec
b6161b0e4b
Fix VM ByteCode debugging.
...
Only executed bytecode should be registered for debugging. In this way we do not register all emitted bytecode and save some memory. What is more, this change registers the bytecode in correct executing order including jumps.
Previously all bytecode generated by compiler has been saved what made the bytecode to be saved in compile, not execute order.
2018-08-30 09:46:40 +02:00
Rafal Kupiec
98d3de2105
Record all instructions in debugging set.
2018-08-29 08:04:19 +02:00
Rafal Kupiec
8f92782fe2
Fix segmentation fault.
2018-08-28 19:07:07 +02:00
Rafal Kupiec
d97c0a6634
Fix VmExtractPeekDebugTrace();
2018-08-28 11:17:32 +02:00
Rafal Kupiec
603672b8e2
PH7 disallows function calls from global scope.
2018-08-28 11:16:34 +02:00
Rafal Kupiec
37c960e313
Fix uninitialized value leading to segmentation fault.
2018-08-27 20:23:08 +02:00