Dmitry Stogov
2bf8f29d16
Converted most object handlers fatal errors into EngineExceptions
2015-04-01 00:37:59 +03:00
Dmitry Stogov
685ab95add
Convert fatal errors on improper access to static properties into EngineExceptions
2015-03-31 16:35:27 +03:00
Dmitry Stogov
550b07ae1b
cleanup
2015-03-25 01:57:05 +03:00
Dmitry Stogov
23c33b1483
Optimized strings concatenation.
...
ZEND_ADD_STRING/VAR/CHAR are replaced with ZEND_ROPE_INTI, ZEND_ROPE_ADD, ZEND_ROPE_END.
Instead of reallocation and copying string on each ZEND_ADD_STRING/VAR/CAHR, collect all the strings and then allocate and construct the resulting string once.
2015-03-24 22:47:21 +03:00
Nikita Popov
d659ee24ab
Fix VERIFY_RETURN separation
...
a) The SAME_FAKE_TYPE check should always occur on the dereferenced
value, otherwise we'll end up separating large referenced arrays.
b) For by-val return with an rc=1 reference, the SEPARATE_ZVAL
wouldn't do anything. Add a ZVAL_UNREF for this case.
I don't like this fix - there must be some better way to express
this.
2015-03-24 10:51:28 +01:00
Dmitry Stogov
e1ab2cfe1c
Introduce ZEND_ASSUME() macro to help optimizing code.
...
Reuse ZEND_ASSERT() conditions for optimization.
2015-03-24 12:21:06 +03:00
Dmitry Stogov
1f408af03c
Fixed in-place modification of IS_CONST operand
2015-03-21 00:22:25 +03:00
Dmitry Stogov
35f9b90bb8
ZPP changed to lazely check for "strict/weak" only if it's really necessary.
...
Cleanup.
2015-03-20 23:18:52 +03:00
Dmitry Stogov
1cfa4db338
Fixed return type hint handling for constants
2015-03-20 18:36:43 +03:00
Dmitry Stogov
5935612666
Improved type hinting:
...
EX_PREV_USES_STRICT_TYPES() and family changed/renamed to fit with other macros
Optimized zend_verify_internal_arg_type() and family (they don't need "strict" argument anymore)
Standerd ZPP is called from VM only for weak type check or strict exception (int -> double)
Fixed ZEND_RECV_VARIADIC
Fixed ZEND_STRLEN
TODO: should we accept IS_NULL for non-nullable arguments?
2015-03-20 16:04:04 +03:00
Dmitry Stogov
44669e8f41
Fixed white spaces
2015-03-20 11:10:29 +03:00
Anthony Ferrara
2e4401512f
Reduce the number of times that the zval needs to be separated in return type checking to those that are necessary
2015-03-19 17:47:43 -04:00
Anthony Ferrara
7044f9c6df
Refactor as to not use call info, but add the flag to the op_array.
2015-03-19 13:30:11 -04:00
Anthony Ferrara
0ef80ac351
Fix severity issues with callbacks, start work porting ZEND_STRLEN opcode to work with strict mode, more refactoring to come
2015-03-19 12:26:34 -04:00
Anthony Ferrara
427ecdc5eb
Fix return type separation with references. It now includes a check in the opcode handler and properly separates the value in both cases
2015-03-18 18:10:08 -04:00
Anthony Ferrara
0529eeb4a6
Fix executor issue with ignoring strict types, which cleans up a bunch of errors. Additionally fix the expected error of 2 unrelated tests that was caused by a change to the core error messages
2015-03-18 15:22:21 -04:00
Anthony Ferrara
d22bfb8aa6
Merge in master, fix merge conflicts and update patch to support exceptions everywhere
2015-03-18 10:50:11 -04:00
Xinchen Hui
5c6db3b0f2
Better make this be consistent with DO_ICALL/DO_CALL
...
Revert "Use more specific op type"
This reverts commit 9b07ed6dcc
.
2015-03-18 22:09:57 +08:00
Xinchen Hui
9b07ed6dcc
Use more specific op type
2015-03-18 20:56:28 +08:00
Dmitry Stogov
4e11095438
Reimplemented special constant handling. Now __HALT_COMPILER_OFFSET__ is resolved at compile-time. __CLASS__ retrived using separate ZEND_FETCH_CLASS_NAME opcode.
2015-03-18 15:33:56 +03:00
Nikita Popov
5c230baf75
Implement Generator::getReturn()
...
Conflicts:
Zend/zend_vm_execute.h
2015-03-17 21:51:53 +01:00
Dmitry Stogov
4d4a5336f1
Embed "fast" operator functions (add, sub, increment, etc) into executor with additional optimizations
2015-03-17 18:53:19 +03:00
Dmitry Stogov
5c68836b0b
improved timeout handling on windows
2015-03-16 17:49:43 +01:00
Dmitry Stogov
0a6ab089cd
Use memcmp() instead of strncmp()
2015-03-16 15:53:54 +03:00
Dmitry Stogov
db10b72523
Use fastcall calling convention for most critical ZE subsystems.
2015-03-13 21:10:09 +03:00
Dmitry Stogov
2b42d71908
Changed HashTable layout:
...
Removed HashTable->arHash (reduced memory consumption). Now hash slots may be accessed using HT_HASH() macro.
Hash slotas are allocated together with Buckets (before them) and lay in reverse order from HashTable->arData base address (see comments in Zend/zend_types.h)
Indexes in hash table and conflict resolution chains (Z_NEXT) may be stored as indeces or offsets in bytes, depending on system (32 or 64-bit).
HashTable data filelds are reordered to keep the most useful for zend_hash_find() data in the same CPU cache line.
2015-03-13 17:13:19 +03:00
Dmitry Stogov
ae26a51f0f
Added API function to call VM opcode handler in a portable way
2015-03-13 11:29:43 +03:00
Dmitry Stogov
249c2323f4
Allow CALL executor to keep few very often used vaiables in CPU registers.
...
This is disabled by default yet, but may be enabled compiling zend_execute.c with -DHAVE_GCC_GLOBAL_REGS.
Only tested on Linux x86 and x86_64 with GCC 4.9.2.
2015-03-13 03:28:21 +03:00
Dmitry Stogov
6289f7e52f
Executor cleanup: fix GOTO and SWITCH VMs, remove aility to build additional PHP-5.0 compatible VM, hide executor implementation details.
2015-03-12 20:39:04 +03:00
Xinchen Hui
80274290b7
Comment out for now
2015-03-11 16:54:51 +08:00
Xinchen Hui
37901aa467
Fixed memleak
2015-03-11 13:42:39 +08:00
Xinchen Hui
75c0f63739
Fixed memory leak
2015-03-11 10:33:43 +08:00
Dmitry Stogov
ed9c8a23ba
More accurate reference counting on closures
2015-03-10 23:04:41 +03:00
Nikita Popov
00985a975d
Merge branch 'PHP-5.6'
...
Conflicts:
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
2015-03-10 18:26:09 +01:00
Nikita Popov
49bd45a2c1
Merge branch 'PHP-5.5' into PHP-5.6
2015-03-10 18:19:27 +01:00
Nikita Popov
bc9f2fb8df
Fixed bug #69212
2015-03-10 18:17:56 +01:00
Anatol Belski
61406a527f
C89 compat
2015-03-10 12:11:52 +01:00
Dmitry Stogov
fad8fe94a8
Fixed access on uninitialized data in Zend/tests/closure_019.phpt
2015-03-10 14:05:14 +03:00
Xinchen Hui
0714e027d0
Merge branch 'PHP-5.6'
2015-03-10 17:24:29 +08:00
Xinchen Hui
25050e3b00
Merge branch 'PHP-5.5' into PHP-5.6
2015-03-10 17:18:47 +08:00
Xinchen Hui
f074870f4e
Typo
2015-03-10 17:18:39 +08:00
Xinchen Hui
d4c1dca98c
Merge branch 'master' of https://git.php.net/repository/php-src
2015-03-10 17:09:41 +08:00
Xinchen Hui
a5317e9d41
Merge branch 'PHP-5.6'
...
Conflicts:
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
2015-03-10 15:49:02 +08:00
Xinchen Hui
abb09693ac
Merge branch 'PHP-5.5' into PHP-5.6
2015-03-10 15:37:14 +08:00
Xinchen Hui
6a6c273893
Fixed bug #66609 (php crashes with __get() and ++ operator in some cases)
2015-03-10 15:36:42 +08:00
Dmitry Stogov
a30d328671
Errors converted to exceptions are not "recoverable" anymore.
2015-03-10 10:31:55 +03:00
Dmitry Stogov
1c94ff0595
Implement engine exceptions
...
RFC: https://wiki.php.net/rfc/engine_exceptions_for_php7
Pending changes regarding naming of BaseException and whether it
should be an interface.
2015-03-09 14:01:32 +01:00
Xinchen Hui
5aebdc98de
Fixed bug #69201 (Memory leak using iterator and get by reference on PHP 7)
2015-03-08 20:22:02 +08:00
Xinchen Hui
c16dcd3a8e
Fixed segfault
2015-03-04 17:17:48 +08:00
Dmitry Stogov
2fa8d67a5c
Use zend_string* instead of char* for opened_patch handling. Avoid reallocations and improve string reuse.
2015-03-04 02:05:28 +03:00