Commit Graph

184 Commits

Author SHA1 Message Date
Rafal Kupiec 9290db2504
Another changes in file inclusion mechanism (#58):
The build was successful. Details
* Remove builtin functions: 'include' & 'require'
* Implement 'include' and 'require' statements compiler
* Implement OP_INCLUDE operator
* Allow 'require' statement to be used in global scope as well as in method body and 'include' only in method body
2019-12-10 16:09:26 +01:00
Rafal Kupiec cb71daec12
Code inclusion rework that include several changes (#58):
The build was successful. Details
* include() builtin function allows now to include a chunk of code, eg. a body of some loop
 * include() allows to load and execute file several times
 * require() still allows to include file just once and included file must have a valid OOP syntax
 * both functions will throw E_ERROR when impossible to include specified file
2019-11-27 20:07:50 +01:00
Rafal Kupiec a24e44fbf3
Completely remove this broken threading implementation. Fixes #55.
The build was successful. Details
2019-10-28 21:35:16 +01:00
Rafal Kupiec f3972a9ca2
Rename LFB/LFE operators.
The build was successful. Details
2019-10-25 23:09:30 +02:00
Rafal Kupiec 426ec932ec
Implement MemObjIsHashmap().
The build was successful. Details
2019-09-10 10:55:54 +02:00
Rafal Kupiec 3b9d91f186
Revert 3dcc908788.
The build was successful. Details
2019-08-29 14:23:33 +02:00
Rafal Kupiec 616b2eeae3
Cleanup the headers a bit.
The build was successful. Details
2019-06-29 11:50:01 +02:00
Rafal Kupiec 2ef2b6265c
Never disable IO library.
The build was successful. Details
2019-06-29 11:10:50 +02:00
Rafal Kupiec 48d5088265
Enable the magic number protection.
The build was successful. Details
2019-06-27 22:57:08 +02:00
Rafal Kupiec 3dcc908788
Enable threading.
The build was successful. Details
2019-06-27 20:52:37 +02:00
Rafal Kupiec 8b2086402e
Fix all compiler warnings in AerScript compiler.
The build was successful. Details
2019-06-22 11:59:43 +02:00
Rafal Kupiec dcf37af75e
Implement a NULL-coalescing '??' operator.
The build was successful. Details
2019-06-21 00:34:41 +02:00
Rafal Kupiec 6d964d6113
Add missing declaration for PH7_MemObjIsNull() function.
The build was successful. Details
2019-06-21 00:30:35 +02:00
Rafal Kupiec ca51e2a5da
Add comments.
The build was successful. Details
2019-06-19 10:14:01 +02:00
Rafal Kupiec bd24aa0605
Correct more compiler warnings.
The build was successful. Details
2019-06-19 09:31:40 +02:00
Rafal Kupiec 0be38392bd
Correct variable types, to make compiler silent.
The build was successful. Details
2019-06-17 14:28:03 +02:00
Rafal Kupiec bffd44a7b4
Get rid of some annoying compiler warnings.
The build was successful. Details
2019-06-17 09:51:37 +02:00
Rafal Kupiec 173bac16ad
Add missing definitions.
The build was successful. Details
2019-06-16 19:54:42 +02:00
Rafal Kupiec b3eb2d0139
Include missing header.
The build was successful. Details
2019-06-16 08:41:42 +02:00
Rafal Kupiec 050a637e88
Add missing declarations.
The build was successful. Details
2019-06-16 08:31:43 +02:00
Rafal Kupiec 1a91fedb1f
Proper SXUNUSED() macro implementation.
The build was successful. Details
2019-06-16 00:10:27 +02:00
Rafal Kupiec 0bef248298
Implement PH7_VmDestroyMemObj() to forcibly destroy a memory object.
The build was successful. Details
2019-06-14 17:11:34 +02:00
Rafal Kupiec 5c824ec67d
Do not set any recursion depth limit.
The build was successful. Details
2019-06-10 12:11:55 +02:00
Rafal Kupiec cbe4f29909
Define 'auto' keyword.
The build was successful. Details
2019-06-08 12:19:00 +02:00
Rafal Kupiec d0995a4239
Rename 'instanceof' to 'is'.
The build was successful. Details
2019-06-06 11:53:17 +02:00
Rafal Kupiec 5948c3a5b6
Remove unused function argument.
The build was successful. Details
2019-06-05 17:30:17 +02:00
Rafal Kupiec 9fe4aa653f
We will store 'finally' block bytecode here.
The build was successful. Details
2019-06-04 06:31:07 +02:00
Rafal Kupiec d57d6caf2d
Add 'finally' frame definition.
The build was successful. Details
2019-06-03 19:21:03 +02:00
Rafal Kupiec d0840d7eea
Cleanup after switching from 'parent' constant to '$parent' variable.
The build was successful. Details
2019-06-03 12:31:28 +02:00
Rafal Kupiec 625a386b69
Get rid of 'self' statement.
The build was successful. Details
2019-06-03 12:29:21 +02:00
Rafal Kupiec b1b78433dd
Clean up $base statement.
The build was successful. Details
2019-05-30 18:16:29 +02:00
Rafal Kupiec e654e42b07
Store class directly in function container.
The build was successful. Details
2019-05-22 08:33:56 +02:00
Rafal Kupiec ddd46a4e80
Quick small cleanup.
The build was successful. Details
2019-05-21 19:18:52 +02:00
Rafal Kupiec 3cca5faa76
Store variable type in dedicated field.
The build was successful. Details
2019-05-21 14:49:36 +02:00
Rafal Kupiec 0f4a666b89
Variable type should be separated from control flags.
The build was successful. Details
2019-05-21 10:58:34 +02:00
Rafal Kupiec 1acbd21caf
Store a pointer to class container in each method.
The build was successful. Details
2019-05-21 08:40:10 +02:00
Rafal Kupiec e8c675bd8e
Store a pointer to class container to reduce memory usage.
The build was successful. Details
2019-05-16 15:41:37 +02:00
Rafal Kupiec 7203492763
Store a class name in each attribute.
The build was successful. Details
2019-05-16 13:25:06 +02:00
Rafal Kupiec 8aed5af238
Correct indentation.
The build was successful. Details
2019-05-15 20:15:26 +02:00
Rafal Kupiec f2116a6461
Always use HTTPS when possible.
The build was successful. Details
2019-05-15 20:02:39 +02:00
Rafal Kupiec 07bd3ceec3
Reimplement 'parent' construct as variable $parent.
The build was successful. Details
This commit also adds new controls to variables, which prevents from re-assigning a value when set. Thanks to that, both $this and $parent cannot be overwritten by using OP_STORE instruction. Other instructions still need some
work.
2019-05-08 08:26:48 +02:00
Rafal Kupiec 0c8ca53f70
Continuous numeration.
The build was successful. Details
2019-05-07 09:24:43 +02:00
Rafal Kupiec c4b63a3018
Rename OP_LOAD instruction to OP_LOADV.
The build was successful. Details
2019-05-05 09:33:06 +02:00
Rafal Kupiec 23900f2aed
Remove unused compiler function - PH7_CompileLangConstruct().
The build was successful. Details
In AerScript, there are no such language constructs, that have syntax similiar to functions. If so, it is just a builtin function.
2019-05-04 18:53:11 +02:00
Rafal Kupiec b36510943d
Implement 'define' statement for defining constants globally.
The build was successful. Details
2019-05-04 17:08:09 +02:00
Rafal Kupiec ab8bf48485
Make constant declarations local.
The build was successful. Details
There are several changes in this commit:
 * first of all constants declared by 'const' statement should be local (declared in current scope / frame),
 * constants are declared by using OP_DECLARE instruction,
 * OP_LOADC browses both global and local constants container,
 * PH7_VmRegisterConstant() allows both global and local declarations.
Since this commit, there are 3 kinds of constants:
 1) global
 2) local (in loop, closure, method)
 3) class members.
Actually there is no way to declare a global constant except the built-in constants.
2019-05-04 13:45:32 +02:00
Rafal Kupiec 90b2da7c56
Unify constant length.
The build was successful. Details
2019-05-03 12:40:47 +02:00
Rafal Kupiec 03fc167be1
Proper implementation of so hated 'goto' statement.
The build was successful. Details
2019-05-03 10:35:54 +02:00
Rafal Kupiec 798fd7d3b2
Remove unused and useless VM instruction.
The build was successful. Details
2019-05-01 12:33:51 +02:00
Rafal Kupiec 70676cb0d5
Correct comment.
The build was successful. Details
2019-05-01 12:27:40 +02:00