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.
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.
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.
* small code cleanup
* implement new structure for storing information about class inheritance
* implement PH7_NewClassInfo()
* make a use of smaller ph7_class_info instead of ph7_class, to reduce memory usage
This commit partially fixes#5, however it still needs some work. TODO:
* remove debugging printf calls,
* some tuning, to consume less memory,
* implement similar solution for interfaces
However it works on ph7_class and thus passes whole class into the VM, what causes memory overhead,
as finally we have to find this class on the VM's stack. Instead, we could pass some ph7_class_info
structure containing a name of class to look for and information about its inheritances.