Commit Graph

81379 Commits

Author SHA1 Message Date
Nikita Popov
e4e42df4e6 Allow only simple variables with global keyword 2014-06-04 17:15:16 +02:00
Nikita Popov
f4a11b66cc Merge and rename to member_name 2014-05-31 21:00:11 +02:00
Nikita Popov
8d7f5a403a Remove duplication 2014-05-31 20:58:44 +02:00
Nikita Popov
8515b96e53 Handle FUNC_ARG fetches on temporaries 2014-05-31 20:15:55 +02:00
Nikita Popov
96b32ec532 Support isset() on temporaries 2014-05-31 20:05:03 +02:00
Nikita Popov
5c2120b6cf Forbid writing to temporary expressions 2014-05-31 19:41:39 +02:00
Nikita Popov
72b5e0cac0 Add another static member access test 2014-05-31 18:18:20 +02:00
Nikita Popov
f0ac7f7d7b Properly handle property read on const/tmp 2014-05-31 17:51:22 +02:00
Nikita Popov
c53a7ea4e5 Property handle calls on [] and '' consts/tmps 2014-05-31 17:37:30 +02:00
Nikita Popov
64e4c9eff1 Support directly calling closure 2014-05-31 17:18:37 +02:00
Nikita Popov
fd85f77857 Fix previous commit 2014-05-31 17:02:48 +02:00
Nikita Popov
64f80b3835 Introduce dereferencable_scalar to simplify future additions 2014-05-31 16:44:53 +02:00
Nikita Popov
4ec505f9b5 Add two initial tests 2014-05-31 16:33:52 +02:00
Nikita Popov
f48241f734 Generalize static access syntax 2014-05-31 16:27:03 +02:00
Nikita Popov
8a65c3b234 Remove now unnecessary code in begin_method_call 2014-05-31 16:08:38 +02:00
Nikita Popov
fcf42d817d Remove object_stack (mostly) 2014-05-31 15:59:54 +02:00
Nikita Popov
c29d3b6e3e Update another test 2014-05-31 00:48:06 +02:00
Nikita Popov
c5920af515 Update two tests with new semantics 2014-05-31 00:40:32 +02:00
Nikita Popov
ff475e9e76 Allow arrays + object access for new expressions 2014-05-31 00:37:03 +02:00
Nikita Popov
75c0db1119 Integrate combined scalar as dereferencable 2014-05-31 00:18:50 +02:00
Nikita Popov
46a2ca8324 Generalize expression dereferencing 2014-05-31 00:09:11 +02:00
Nikita Popov
5712f0e9bd Minor cleanup 2014-05-31 00:02:51 +02:00
Nikita Popov
87f8e758c8 Cleanup old grammar rules 2014-05-30 23:51:54 +02:00
Nikita Popov
295d07e373 Reintroduce new expression dereferencing 2014-05-30 23:44:30 +02:00
Nikita Popov
067fca0e89 Remove reference_variable indirection 2014-05-30 23:36:30 +02:00
Nikita Popov
e89958a634 Make function calls directly callable 2014-05-30 23:30:37 +02:00
Nikita Popov
667f8409c5 Recursive definition for object proprety fetches 2014-05-30 23:25:43 +02:00
Nikita Popov
a8c1595012 LTR static member access 2014-05-30 22:33:03 +02:00
Nikita Popov
b8b3b355be Use recursion for property fetches 2014-05-30 22:04:39 +02:00
Nikita Popov
46e35e3d5d Get rid of base_variable_with_function_calls 2014-05-30 21:14:18 +02:00
Nikita Popov
e2be2cee97 Temporarily disable complex variables in new expressions 2014-05-30 21:11:25 +02:00
Nikita Popov
95a3a12657 Change precedence of $ operator
$$foo['bar'] is now interpreted as ${$foo}['bar'] rather than
${$foo['bar']}.
2014-05-30 16:31:10 +02:00
Dmitry Stogov
032bdbba73 Improved conditions order 2014-05-30 14:40:19 +04:00
Dmitry Stogov
d2020cd91b Merge branch 'phpng' of git.php.net:php-src into phpng
* 'phpng' of git.php.net:php-src:
  typo
  Revert "Fix ArrayObject with immutable array"
  Fix ArrayObject with immutable array
2014-05-30 11:13:19 +04:00
Dmitry Stogov
984c8f87d2 Avoid useless duplication of immutable arrays 2014-05-30 11:12:24 +04:00
Dmitry Stogov
45d7ab1a4c Avoid in-place modification 2014-05-30 11:12:03 +04:00
Xinchen Hui
9f70b2f6fa typo 2014-05-30 14:56:50 +08:00
Nikita Popov
92c9f826c9 Revert "Fix ArrayObject with immutable array"
This reverts commit 9c85aa0489.
2014-05-29 21:49:54 +02:00
Nikita Popov
9c85aa0489 Fix ArrayObject with immutable array 2014-05-29 21:19:49 +02:00
Dmitry Stogov
b3b616cf7e Introduced immutable arrays. They don't need to be copyed and may be used directly from SHM. 2014-05-29 18:21:56 +04:00
Nikita Popov
bfff679d90 Fix length reset in JSON parser 2014-05-29 12:53:32 +02:00
Nikita Popov
ccd9dab4c6 Fix $http_response_header creation 2014-05-29 12:51:03 +02:00
Nikita Popov
d1ae74a1a5 Improve gdb ht and zval dumps 2014-05-29 12:47:40 +02:00
Nikita Popov
47e85b1b35 Improve class constant fetch fix
Dereference the cached constant for Test::TEST as well (and not just
self::TEST).

Also improve the phpt file to test this case as well - previously
this only manifested with opcache enabled, due to literal sharing.

Additionally the Z_TYPE_P != IS_REFERENCE assertion is now moved
into the TMP_VAR fetching code (as it applies to more than just
property assignments.)
2014-05-29 11:17:33 +02:00
Nikita Popov
d9a35c7e97 Fix class constant fetching
If a class is extended after the constant fetch has been cached
the cached value will be turned into a reference. On the next
fetch the polymorphic cache will return this reference, which
will be directly returned. The object assignment code then
dereferences this result and performs a shallow copy, which is
invalid for references. This subsequently leads to the constant
value being prematurely freed.

This is fixed by dereferencing the value returned from the
polymorphic cache. Furthermore the incorrect dereference from
in the object assignment code is replaced with an assertion that
we're dealing with a non-reference, so ensure that this kind of
problem cannot go unnoticed in the future.
2014-05-29 00:15:50 +02:00
Nikita Popov
afd8a02160 A few more fixes and improvements for gdbinit 2014-05-29 00:15:50 +02:00
Nikita Popov
411a8757ad Initialize GC_TYPE_INFO for EG(symbol_table) 2014-05-29 00:15:50 +02:00
Dmitry Stogov
8334f38615 Fixed conversion to phpng mistakes 2014-05-28 23:04:50 +04:00
Nikita Popov
9e2bc83fdb Use zend_long_to_str in wddx 2014-05-28 18:55:51 +02:00
Nikita Popov
3831b39302 Use zval_get_string in implode
Also get rid of separate case for IS_OBJECT - this is already
handled by the default branch.
2014-05-28 18:45:00 +02:00