Dmitry Stogov
460120c887
Fixed reference counting
2014-04-15 01:16:09 +04:00
Dmitry Stogov
5dc52e4880
Fixed interface constants inheritance.
...
Now we use IS_REFERENCE for inhereted class constants.
I might miss some edje cases.
2014-04-14 13:24:43 +04:00
Nikita Popov
4fc3d2d104
Copy varname before unset
...
Otherwise we get issues when the varname variable coincides with
the variable that is deleted.
2014-04-13 23:07:10 +02:00
Bob Weinand
ccf863c8ce
Merge branch 'PHP-5.6'
2014-04-11 19:35:11 +02:00
Bob Weinand
35b895fdf0
Removed useless void* parameter and replaced with zend_bool on zval_update_constant* functions
2014-04-11 19:18:58 +02:00
Bob Weinand
38ec4d20bf
Merge branch 'PHP-5.6'
2014-04-11 18:24:41 +02:00
Bob Weinand
ee2a7c7d41
Fixed disallowal of array usage in constants at run-time
...
Added at the same time the possibility of array dereferencing
to complete the set of features (useful application of arrays in constants)
2014-04-11 18:21:46 +02:00
Bob Weinand
53e71e47b9
Merge branch 'PHP-5.6'
2014-04-11 16:21:15 +02:00
Bob Weinand
ad05d3898e
Updated zend_vm_execute.h
2014-04-11 16:18:42 +02:00
Dmitry Stogov
e27eca90a5
for some reason gcc -O2 compiled the previous code in unexpected way
2014-04-11 18:16:03 +04:00
Dmitry Stogov
b6af031e52
Fixed support for references
2014-04-11 15:05:12 +04:00
Dmitry Stogov
ec4314f818
Fixed reference counting
2014-04-11 12:43:22 +04:00
Dmitry Stogov
aeb64f5447
Fixed support for references
2014-04-11 11:15:31 +04:00
Dmitry Stogov
abbb1c0f00
Unset CV before calling zval_ptr_dtor(), because its destructor may bailout and stay CV value in inconsistet state
2014-04-09 10:47:24 +04:00
Dmitry Stogov
0e7d30e8d3
Optimized ASSIGN_OP
2014-04-08 02:25:49 +04:00
Dmitry Stogov
f3c57716f7
Optimized ZEND_FETCH_R and family
2014-04-08 00:38:54 +04:00
Dmitry Stogov
3d17219cd8
Refactored zend_hash_* iteration API zend_hash_fove_forward_ex(ht, pos) and family require second argument to be real pointer.
...
&(ht)->nInternalPointer should be passed instead of NULL.
zend_hash_update_current_key() may work only with internal pointer.
2014-04-07 23:14:17 +04:00
Dmitry Stogov
bf35b22af5
Optimized ISSET_ISEMPTY_DIM_OBJ
2014-04-07 14:56:34 +04:00
Dmitry Stogov
8b2bb30137
Use macros
2014-04-07 10:57:58 +04:00
Dmitry Stogov
a94923d5cb
Avoid double zval copying in ZEND_SEND_VAL and zend_send_by_var_helper
2014-04-05 02:14:17 +04:00
Dmitry Stogov
a80e945835
Optimized ZEND_FETCH_DIM_*
2014-04-05 01:56:51 +04:00
Dmitry Stogov
c11dc75b4e
Refactored IS_INDIRECT IS_VAR passing between opcodes to avoid reference counting
2014-04-04 19:01:53 +04:00
Dmitry Stogov
cea26aa2eb
Tergets of ASSIGN and ASSIGN_REF don't have to be initialized
2014-04-04 15:22:41 +04:00
Dmitry Stogov
eaeb3c39b4
Optimized RECV_* opcodes
2014-04-04 14:36:34 +04:00
Dmitry Stogov
3bc8810b1e
Constant duplication optimization
...
Argument receiving optimization
2014-04-04 03:55:27 +04:00
Dmitry Stogov
58f0f2503c
Various VM optimizations
2014-04-04 02:52:53 +04:00
Dmitry Stogov
58871730c8
ASSIGN_REF optimization
2014-04-03 16:53:30 +04:00
Dmitry Stogov
76cc99fe60
Refactored ZVAL flags usage to simplify various checks (e.g. Z_REFCOUNTED(), candidate for GC, etc)
2014-04-03 15:26:23 +04:00
Dmitry Stogov
d8099d0468
Changed data layout to allow more efficient operations
2014-04-02 14:34:44 +04:00
Dmitry Stogov
5c912a805b
Use "fast" comparison function
2014-04-02 00:48:26 +04:00
Dmitry Stogov
ea85451b65
Refactored data structures to keep zend_object* instead of a whole zval in some places
2014-03-28 02:11:22 +04:00
Dmitry Stogov
68385716a4
Fixed support for references & cleanup
2014-03-27 18:14:57 +04:00
Dmitry Stogov
9a8fbdf2f4
Use CV variable offset instead of CV variable number
2014-03-27 16:00:25 +04:00
Dmitry Stogov
d83d34ba6d
Cleanup
2014-03-27 14:55:52 +04:00
Dmitry Stogov
c6cba55454
Use ZVAL_DEREF() macro
2014-03-27 13:39:09 +04:00
Dmitry Stogov
54d559d893
Replaced (Z_TYPE(x) == IS_REFERENCE) with (Z_ISREF(x))
2014-03-27 11:50:45 +04:00
Dmitry Stogov
92aef5279a
Fixed support for references
2014-03-27 00:05:06 +04:00
Dmitry Stogov
de6a76d16e
fixed support for references
2014-03-26 22:06:44 +04:00
Dmitry Stogov
887189ca31
Refactored IS_INDIRECT usage for CV and object properties to support HashTable resizing
2014-03-26 18:07:31 +04:00
Dmitry Stogov
c36294c4da
Cleanup
2014-03-21 21:48:38 +04:00
Dmitry Stogov
a3abf6f291
Fixed refcounting
2014-03-21 15:33:08 +04:00
Dmitry Stogov
d735434e47
Fixed refcounting
2014-03-21 12:07:27 +04:00
Dmitry Stogov
6186bc6dff
Fixed iterator dtor
2014-03-20 23:28:24 +04:00
Dmitry Stogov
3c0feb51bc
Fixed assignment of "new" by reference
2014-03-19 23:51:28 +04:00
Dmitry Stogov
b7938ab1bd
Refactored GC (incomplete)
2014-03-19 17:00:28 +04:00
Dmitry Stogov
aa5f55306b
Refactored EG(active_symbol_table) to be zend_array* instead of HashTable*
2014-03-17 23:15:22 +04:00
Dmitry Stogov
b8089696c4
Fixed support for references
2014-03-13 22:56:18 +04:00
Dmitry Stogov
c1236214fe
REFERENCE is always REFCOUNTED
2014-03-13 22:07:37 +04:00
Dmitry Stogov
25d55d16fc
Fixed foreach (now we store HashPointer in additional IS_TMP_VAR slot(s))
2014-03-13 17:01:28 +04:00
Dmitry Stogov
e0dd8a4f4b
Fixed IS_INDIRECT handling when assign array element by reference.
...
This might cause passing invalid pointer if the array could be resized before IS_INDIRECT usage.
Now we use IS_REFERENCE instead of IS_INDIRECT.
The following test crashed before:
<?php $a = array(0,1,2,3,4,5,6,7); $a[8] = &$a[7]; ?>
2014-03-13 00:30:53 +04:00