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.
belliash2018-08-30 09:46:40 +02:00
98d3de2105
Record all instructions in debugging set.
belliash2018-08-29 08:04:19 +02:00
6d27069590
Add new file for every chunk. Every chunk should has its own file associated, even if it is [MEMORY]. Otherwise, some false information can be provided by interpreter to developer.
belliash2018-08-27 18:04:45 +02:00
c9a1971ace
Rewrite debug_backtrace() builtin function. It makes a use of new VmExtractDebugTrace() function. This probably fixes#45.
belliash2018-08-27 15:47:34 +02:00
e6ad76b031
Dump VM after execution. VM instructions dump should be processed after script execution to follow included files.
belliash2018-08-26 20:29:19 +02:00
a7bbd55d48
Temporarily enable debugging by default.
belliash2018-08-26 20:09:30 +02:00
178f3820f6
Enable debugging. This commit introduces ne debug feature. The PH7 Engine limits the VM dump to the global scope. Since Aer Script is fully object-oriented language the dump option contains only information about last call of OP_DONE. This change, forces the VM to store all instructions set in a global container when debugging is enabled, thus providing information the dump of whole script parse.
belliash2018-08-26 19:59:17 +02:00
dbe373d537
Resolve __CLASS__ at compile time. Ticket: #45: __CLASS__ constant must be resolved at compile time, not run time. Otherwise it returns incorrect data.
belliash2018-08-22 09:59:10 +02:00
a0f7949b24
Resolve __DIR__ at compile time. Ticket: #45: __DIR__ constant must be resolved at compile time, not run time. Otherwise it returns incorrect data.
belliash2018-08-22 06:23:43 +02:00
02242bb93d
Resolve __FILE__ at compile time. Ticket: #45: __FILE__ constant must be resolved at compile time, not run time. Otherwise it returns incorrect data.
belliash2018-08-21 20:18:39 +02:00
19a504fe11
Enter the class block during compilation, #45.
belliash2018-08-21 19:45:50 +02:00
33523e4e8a
Block definitions for class and namespace.
belliash2018-08-21 19:35:00 +02:00
2d99881240
Get rid of manual optimisation technique. This optimisation technique results in non insignificant speed boost on some old x86 architectures. Novadays, we should rely on compiler optimisation.
belliash2018-08-21 06:27:07 +02:00
2160747479
Make get_included_files() returning full path.
belliash2018-08-18 21:02:23 +02:00
cbb4a0aa5c
get_included_files() should return a list of included, files.
belliash2018-08-18 20:42:54 +02:00
00dc23ee4a
Get rid of manual optimisation technique resulting in non insignificant speed boost on some old x86 architectures, #38;
belliash2018-08-18 19:43:00 +02:00
4dbd3ea412
New memory subsystem. This is a new memory subsystem implementing heap calculations as well as new builtin functions: * get_memory_usage() * get_memory_peak_usage() * get_memory_limit() It also allows to set an upper memory limit, ensuring that processed script will not be able to allocate more memory from OS. New subsystem is based on work done in 'memory_limit' branch. Big thanks to devnexen! This finally fixes#25.
belliash2018-08-18 19:24:38 +02:00
2c28b63d90
Properly interpret language constructs, fixes#28.
belliash2018-08-16 17:42:30 +02:00
9100bf0696
Treat 'import' as a special keyword.
belliash2018-08-16 16:32:28 +02:00
b5fe36c14b
There is no need for include_once() and require_once() Aer is object-oriented language and the code it includes is executed in the global scope. Global scope can contain only classes and namespaces and they cannot be re-declared. Thus every file can be included just once. We can leave this to programmer, or take care about it on interpreter side. With this commit, include() and require() builtin functions allows to load file just once. Thanks to that, there is no need for include_once() and require_once(). Done in scope of #30.
belliash2018-08-16 16:12:29 +02:00
510410096b
Aer is OOP language. There is nothing like function.
belliash2018-08-16 13:57:35 +02:00
4961922b1d
Unify error with other related to namespace.
belliash2018-08-16 13:36:19 +02:00
793b6127d5
Temporarily fix namespace support. The namespace feature is not supported in this version, they are treated same way as global scope.
belliash2018-08-16 12:39:05 +02:00
787f3b5d5f
Synchronize the namespace also with first semicolon.
belliash2018-08-16 12:01:36 +02:00
be27532fdf
Unify error level for namespace support.
belliash2018-08-16 11:26:47 +02:00
e208e778e0
Compile global scope independently, fixes#40.
belliash2018-08-16 11:15:03 +02:00
039fde099f
Compile Aer code or chunk of code.
belliash2018-08-16 09:34:18 +02:00
f9946e9842
Reimplement filegroup() and fileowner() as builtin function, #42.
belliash2018-08-15 21:58:21 +02:00
7c7a837efb
Correct another bunch of typos.
belliash2018-08-15 19:06:00 +02:00
71d46e3052
Compiler rework does not allow functions in global scope. These functions will be rewritten in C as a builtin functions in scope of #42.
belliash2018-08-15 18:56:10 +02:00
af139b3f0a
Reimplement C-like min() and max() functions. These functions should have C-like implementation and take exactly 2 arguments: integer or float. Finally, C-implementation will be faster than using PH7 builtin library that needs to be compiled and interpreted.
belliash2018-08-15 17:26:26 +02:00
8ab67084a0
It is as easy to instantiate the class as to remove this useless functions.
belliash2018-08-15 16:31:28 +02:00
6f491b398a
Always show compilation errors
belliash2018-08-15 16:01:09 +02:00
8e87989719
A;ways show compilation errors from evaluated code
belliash2018-08-15 15:41:53 +02:00
052649e677
Trust builtin library. The builtin library should compile successfully. Otherwise, we want to know about it.
belliash2018-08-15 14:12:44 +02:00
ece036b214
Rework the entry point * some functions were not used and have been removed * some parameters seemed to be useless and have been removed * code cleanup
belliash2018-08-14 13:45:27 +02:00