Marcus Boerger
b7a8297bc1
- Boost up __autoload() calls by caching the lookup
2004-08-23 20:57:40 +00:00
Andi Gutmans
57ba9b8ccf
- Second wave of garbage removal.
2004-08-19 20:29:04 +00:00
Marcus Boerger
5f0433db83
MFB: Enforce protocol on magic methods/functions
2004-08-02 08:27:57 +00:00
Andi Gutmans
d7c839d54f
- More ptr_stack optimizations and cleanups
2004-07-30 21:00:37 +00:00
Marcus Boerger
0cd2da0309
- Execute destructors earlier (Florian Schaper, fschaper at intux org)
2004-07-25 07:14:49 +00:00
Wez Furlong
af9c0b84cd
No point allocating 0 bytes
2004-07-18 09:55:02 +00:00
Wez Furlong
d80297b251
Fix bug #28438 : win32 build fails in non-zts mode
2004-05-18 20:14:54 +00:00
Dmitry Stogov
09d1d232fc
fix of fix related to __autoload. (ext/standard/tests/network/bug20134.phpt passes again)
2004-03-28 09:37:30 +00:00
Andi Gutmans
d6d52f6f2e
/* The compiler is not-reentrant. Make sure we __autoload() only during run-time
...
* (doesn't impact fuctionality of __autoload()
*/
2004-03-25 11:30:02 +00:00
Dmitry Stogov
2bbba73606
Using ALLOC_HASHTABLE/FREE_HASHTABLE instead of emalloc/free.
2004-03-25 08:14:33 +00:00
Dmitry Stogov
55cf45abf5
New autoload protection schema was implemented (Using HashTable instead of boolean flag)
2004-03-24 14:30:59 +00:00
Marcus Boerger
cbaa43ff12
Fix SEGV in certain conditions while calling static methods
2004-03-16 21:29:22 +00:00
Marcus Boerger
6e8c176a9d
TSRM fix
2004-03-16 18:04:25 +00:00
Derick Rethans
b0dbd2abcc
- Spaces to tabs
2004-03-16 14:59:06 +00:00
Andi Gutmans
833b97d4c2
- If the called method is static then don't define $this
2004-03-16 14:49:52 +00:00
Andi Gutmans
0041aff953
- Error out if get_method() isn't defined.
...
- Use calling scope of internal function callee when calling a method
using static syntax (array("A", "func"));
2004-03-16 14:39:07 +00:00
Marcus Boerger
09e76476ef
Improve error message
2004-03-16 10:14:57 +00:00
Andi Gutmans
1aedb9615a
- Fix windows build
2004-03-14 18:00:40 +00:00
Andi Gutmans
37d713ea49
- Fix for bug #27504
2004-03-14 17:52:58 +00:00
Marcus Boerger
50ee116f08
Clearify the different method/class flags (as discussed with Andi).
2004-03-09 16:38:37 +00:00
Marcus Boerger
c3b06ea21e
Check count.
2004-03-08 16:52:59 +00:00
Andi Gutmans
7c72f6ff61
- Fix crash in exception handling (zend_exception_error(...) and
...
zend_eval_string_ex() were buggy (Dmitry, Andi)
2004-03-01 13:29:45 +00:00
Zeev Suraski
eb6fd52e21
- Rename compatiblity mode to zend.ze2_compatibility_mode (it doesn't only affect auto-clone).
...
- Perform implementation checks even with simple inheritance (off when
compatibility mode is enabled).
- Restore default arguments in interfaces and handle it correctly.
- Move registration of internal classes later in the startup sequence
in order to have INI options available.
2004-02-25 10:57:10 +00:00
Zeev Suraski
00ed3bad29
Centralize exceptions code in zend_exceptions.[ch].
...
Remove zend_default_classes.h (use zend_exceptions.h instead)
NOTE: This currently breaks the build, fixes to php-src and pecl coming
soon
2004-02-12 10:38:14 +00:00
Zeev Suraski
d9630a595b
Exceptions updates:
...
- Enforce exceptions to be derived from class Exception. This allows
users to perform catch-all. It's not yet complete, so don't get
comfortable with it just yet :) Updates are coming soon.
- Implement zend_throw_exception() using zend_throw_exception_ex()
2004-02-12 10:24:40 +00:00
Andi Gutmans
559b14611d
- Add API function to throw exception by using an object
2004-02-12 09:50:08 +00:00
Zeev Suraski
75390796be
Fix bug #25038
2004-02-11 13:01:39 +00:00
Zeev Suraski
6b6fe2f76e
Fix exceptions thrown without a stack frame
...
Always enable set_exception_handler()
2004-02-11 12:31:18 +00:00
Zeev Suraski
73a6bcf5cf
Complete the fix for handling of exceptions happening during the
...
argument passing phase of function calls (fixes bug #26866 )
2004-02-11 09:42:58 +00:00
Zeev Suraski
4b632eba46
whitespace
2004-02-11 09:42:10 +00:00
Zeev Suraski
da36a7c249
Fix bug #26869
2004-02-10 15:30:32 +00:00
Zeev Suraski
e28ab687d2
Fix exceptions happening inside internal functions called through
...
zend_user_function()
2004-02-04 23:48:39 +00:00
Zeev Suraski
14ac17fa95
Remove double initialization
2004-02-04 23:28:40 +00:00
Zeev Suraski
c5d842279c
Reinstate early-binding for classes.
...
Note that this is available for downwards compatibility only - and it doesn't
work if you use new features (namely, interfaces). Generally, people should
declare their classes before using them, but we just didn't want hell to break
loose (c)
2004-02-04 16:30:15 +00:00
Zeev Suraski
f5f7d569a0
Change destructor implementation (details will follow on internals@)
2004-02-04 09:56:20 +00:00
Zeev Suraski
c5a7b668cd
- Clean garbage (delete was nuked a long time ago)
2004-02-03 15:37:37 +00:00
Zeev Suraski
9e60cb553f
Rewrote exception support. Fixes a few limitations and bugs in the old
...
implementation, and allows exceptions to 'fire' much earlier than before.
Instructions on how to use the new mechanism will follow on internals@
shortly...
Note - this (most probably) breaks the current implementation of
set_exception_handler()
2004-02-03 12:17:09 +00:00
Zeev Suraski
c15d4ddb2b
Forward-port fix for timeouts under Windows
2004-01-28 09:07:02 +00:00
Marcus Boerger
3ca44539a1
Switch from ZEND_ACC_DYNAMIC to ZEND_ACC_ALLOW_STATIC and disallow calling
...
internal non-static methods statically.
# As discussed with Zeev:
# - For BC standard userspace methods allow this with an E_STRICT message.
# - If you want to implement an internal method taht can be called both
# statically and non-statically then use flag ZEND_ACC_ALLOW_STATIC.
# - Magic user space methods __*() cannot and __construct, __destruct,
# __clone can never be called statically.
2004-01-24 16:59:24 +00:00
Sebastian Bergmann
1e902b696d
Change message as proposed by Jon.
2004-01-24 04:59:47 +00:00
Marcus Boerger
6020ffd007
Simplify detection of methods that must be called dynamic (with object)
2004-01-23 22:04:42 +00:00
Marcus Boerger
79e7145cc7
Disallow calling __clone/__construct/__destruct static
...
Send an E_STRICT when calling a non static method static
2004-01-23 20:58:23 +00:00
Marcus Boerger
3df0288490
Improove debug capabilities
2004-01-18 23:47:10 +00:00
Zeev Suraski
a72c1ab93b
Added error mask to set_error_handler()
...
Patch by Christian Schneider <cschneid@cschneid.com>
2004-01-10 11:43:42 +00:00
foobar
ccfc46b0aa
- Happy new year and PHP 5 for rest of the files too..
...
# Should the LICENSE and Zend/LICENSE dates be updated too?
2004-01-08 17:33:29 +00:00
Marcus Boerger
03e039b19d
Fix __autoload() with derived classes
2003-12-29 12:35:44 +00:00
Marcus Boerger
c6cb00fe59
Fixed bug #26697 (calling class_exists on a nonexistent class in __autoload
...
results in segfault).
2003-12-23 10:45:10 +00:00
Dmitry Stogov
ae4a09b239
*** empty log message ***
2003-12-17 15:08:13 +00:00
Dmitry Stogov
20f73cd267
Access to globals/autoglobals from class __destructor was fixed.
...
(see "tests/lang/bug24908.phpt" and "tests/classes/destructor_and_globals.phpt")
2003-12-17 14:25:12 +00:00
Dmitry Stogov
2d9281352b
Memory corruptions were fixed in zend_str_tolower_copy()
2003-12-15 07:17:27 +00:00
Marcus Boerger
39544e1c7f
Bugfix: #26591 [NEW]: "__autoload threw an exception" during an uncaught
...
Exception
2003-12-11 18:18:52 +00:00
Marcus Boerger
310d6c567a
Do not double copy the string
2003-12-10 10:24:35 +00:00
Andi Gutmans
d344648b07
- Fix __autoload() to preserve class case.
...
- Heads up, this patch might break stuff so please let me know if you
- bump into any problems.
2003-11-24 18:13:29 +00:00
Marcus Boerger
f3d385a587
Make __autoload() faster
2003-11-07 11:47:50 +00:00
Marcus Boerger
b28db6a2d3
Revert accidental commit
2003-10-24 18:42:00 +00:00
Marcus Boerger
071eaf8576
Zend/ZEND_CHANGES
2003-10-24 18:24:28 +00:00
Stanislav Malyshev
6a71c1d33f
The freed one is a hashtable - may matter if Hashtables are allocated
...
differently
2003-10-14 14:36:23 +00:00
Stanislav Malyshev
b163778fee
ws
2003-09-11 17:06:53 +00:00
Stanislav Malyshev
406ff728f1
Use scope from method, not from object
2003-09-11 17:04:26 +00:00
Marcus Boerger
1257b407a6
WS
2003-09-01 13:04:55 +00:00
Marcus Boerger
19ec7a09fc
- Provide appropriate way to destroy internal zval's.
...
- Allow internal zval's of type string and disallow complex types.
- Define the default string for extensions at class level instead of ctor.
2003-08-24 17:32:47 +00:00
Marcus Boerger
d3473d1f58
- Provide a unified way to display uncaught exceptions, which shows
...
file/line/message info if possible.
- Add zend_eval_string_ex() to be able to handle exceptions in eval'd code.
- Use above function to fix memleaks in CLI.
2003-08-24 13:10:03 +00:00
Zeev Suraski
5b312b571e
Clarify use of original_function_state_ptr
2003-08-07 07:37:19 +00:00
Marcus Boerger
e9a4c91ca4
- Fix warnings
...
- Fix code
2003-08-07 07:17:34 +00:00
Zeev Suraski
0a83ebfd56
clarify :)
2003-08-06 07:38:56 +00:00
foobar
cc011660e7
Fix the build
2003-08-05 23:50:59 +00:00
Zeev Suraski
92b4013e8d
Try to put an end to the endless number of call_user_function variants.
...
zend_call_function() now takes a structure that should contain all of the
necessary information. If further information is necessary in the future,
then we'll be able to add it without having to introduce a new function.
As for caching - the 2nd, optional argument is a struct that can hold all
of the information that's necessary to invoke the function, including its
handler, scope and object it operates on (if any). Note that you may only
use a cache if the arguments you provide to zend_call_function() are
identical to the ones of the last call, except for the argument and return
value information.
The recently introduced fast_call_user_function() was removed
I fixed most of the places that used fast_call_user_function() to use caching
but there are still some that need to be fixed (XML and reflection)
2003-08-05 10:24:40 +00:00
Stanislav Malyshev
f572897dea
remove stack clean - it makes trouble
2003-08-05 07:56:49 +00:00
Marcus Boerger
65557ef672
Nuke unused variables
2003-08-04 19:56:12 +00:00
Ilia Alshanetsky
1007b0a826
Fixed bug #23104 (hash position of static arrays not being reset)
2003-08-04 17:10:52 +00:00
Stanislav Malyshev
2884e8a715
oops. forgot function
2003-08-04 11:03:38 +00:00
Stanislav Malyshev
7cb1730293
fix crash #24842
2003-08-04 11:02:53 +00:00
Zeev Suraski
f8bbafd604
ntroduce infrastructure for supplying information about arguments,
...
including:
- Whether or not to pass by ref (replaces the old arg_types, with arg_info)
- Argument name (for future use, maybe introspection)
- Class/Interface name (for type hints)
- If a class/interface name is available, whether to allow a null instance
Both user and builtin functions share the same data structures.
To declare a builtin function that expects its first arg to be an instance
of class 'Person', its second argument as a regular arg, and its third by
reference, use:
ZEND_BEGIN_ARG_INFO(my_func_arg_info, 0)
ZEND_ARG_OBJ_INFO(0, someone, Person, 1)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO();
and use my_func_arg_info as the arg_info parameter to the ZEND_FE() family
of macros.
The first arg to each ZEND_ARG_*() macro is whether or not to pass by ref.
The boolean arg to ZEND_BEGIN_ARG_INFO() tells the engine whether to treat
the arguments for which there's no explicit information as pass by reference
or not.
The boolean argument to ZEND_ARG_OBJ_INFO() (4th arg) is whether or not to allownull values.
2003-08-03 17:40:44 +00:00
Zeev Suraski
9d7122fb53
Generalize fetch_class
2003-08-03 08:21:08 +00:00
Stanislav Malyshev
47fef22bc5
change shutdown order so that dtors would coexist with object error handlers
2003-07-27 15:59:37 +00:00
Stanislav Malyshev
5bfd386bc3
make shutdown more granular so in case some dtor goes ape we still
...
can shut down cleanly
2003-07-27 13:47:58 +00:00
Stanislav Malyshev
5a7b07701b
Fix bug #19859 - allow fast_call_user_function to support __call
2003-07-03 09:18:41 +00:00
Sterling Hughes
92e9e0ca7e
optimize the case where the object is really a class name, as we don't need
...
to set EX(object) here.
2003-07-02 14:44:41 +00:00
Sterling Hughes
3fc83023b6
Timm Friebe points out that object detection should be done regardless of
...
the function pointer
2003-07-02 14:33:41 +00:00
Marcus Boerger
bef4696d3e
small bugfix
2003-07-01 22:47:41 +00:00
Andi Gutmans
288dacca0c
- ZE coding style requires if ( instead of if(
2003-06-30 20:22:35 +00:00
Stanislav Malyshev
fe1ef91e77
No need to duplicate code - zend_get_constant() knows to
...
handle class constants now
2003-06-15 14:46:15 +00:00
Stanislav Malyshev
95a936becc
Fix bug #18872 - Improper handling of class constants used as default
...
function argument values
2003-06-15 14:42:39 +00:00
Stanislav Malyshev
efafae1427
Fix bug #21800 - initialize opcode handlers in interactive mode
2003-06-15 11:44:30 +00:00
James Cox
f68c7ff249
updating license information in the headers.
2003-06-10 20:04:29 +00:00
Wez Furlong
7959b2d7b0
Fix for Bug #23951
2003-06-09 17:02:32 +00:00
Stanislav Malyshev
565985acfc
Support 'self' and 'parent' in call_user_func()
2003-06-09 10:55:37 +00:00
Stanislav Malyshev
f7f5a5ea6b
MEGA-patch: namespaces are R.I.P.
2003-06-02 12:13:11 +00:00
Marcus Boerger
7af8eadd57
Make zend_str_tolower_copy() a copy function (like stccpy).
...
Supply a dup version (like estrdup).
Fix tolower() handling.
# Havin copy and dup allows to use the faster version even with
# memory not allocated by emalloc.
2003-05-21 21:59:40 +00:00
Sterling Hughes
ca6ca5e2a6
optimize the lookups by avoiding a copy and then another pass
...
Naked Dancing Girls should be given to: Myself, Zeev, Marcus,
and George Schlossnagle (in no particular order)
2003-05-20 18:28:14 +00:00
Sterling Hughes
909eafc2b0
add fast_call_user_function()
2003-05-20 16:44:42 +00:00
Marcus Boerger
fe47a383e3
One function call is enough
2003-05-12 18:54:05 +00:00
Stanislav Malyshev
52ac291c54
Check name before '::' so that it would be a namespace in zend_lookup_ns_class
2003-04-20 14:40:38 +00:00
Andrei Zmievski
3b47a64269
Add zend_lookup_ns_class() function.
2003-04-08 17:10:01 +00:00
Sebastian Bergmann
3fc852824f
Eliminate TSRMLS_FETCH() calls in destroy_op_array() and zend_get_class_entry().
2003-03-26 07:44:11 +00:00
Zeev Suraski
36eae0b771
Fix destructors some more
2003-03-02 15:24:04 +00:00
Sebastian Bergmann
6d300baf84
ZTS fixes
2003-02-16 11:34:49 +00:00
Stanislav Malyshev
a4c3b2ce80
Namespace patch. Big changes:
...
1. Nested classes are gone.
2. New syntax for namespaces:
namespace foo {
class X { ... }
function bar { ... }
var x = 1;
const ZZ = 2;
}
3. Namespaced symbol access: $x = new foo::X; - etc.
For now, namespaces are case insensitive, just like classes.
Also, there can be no global class and namespace with the same name
(to avoid ambiguities in :: resolution).
2003-02-16 11:12:43 +00:00
Thies C. Arntzen
e62f37c804
init current_execute_data befor we start executing
2003-02-14 12:25:09 +00:00
Zeev Suraski
dbb73d8f1e
Add ability to reference self:: and parent:: in constant initializers
...
(bug #21849 )
2003-02-10 09:45:27 +00:00
foobar
333406bdc2
- Added some missing CVS $Id$ tags, headers and footers.
2003-02-01 01:49:15 +00:00
Ilia Alshanetsky
62db0b4854
Fix ZTS build.
2003-01-30 00:44:56 +00:00
Stanislav Malyshev
03f88ac2b2
Add additional stage to post-session cleanup.
...
We need separate cleanup stage because of the following problem:
Suppose we destroy class X, which destroys function table,
and in function table we have function foo() that has static $bar. Now if
object of class X was assigned to $bar, its destructor will be called and will
fail since X's function table is in mid-destruction.
So we want first of all to clean up all data and then move to tables
destruction.
Note that only run-time accessed data need to be cleaned up, pre-defined
data can not contain objects and thus are not probelmatic.
# Looks like we are having a lots of pain in the various parts of the body
# because of the destructors...
2003-01-29 17:54:48 +00:00
Stanislav Malyshev
f73def91ed
Fix object destructors:
...
zend_objects_store_call_destructors is not used anymore, we rely on
symbol tables cleaners to destroy all objects.
2003-01-29 14:33:18 +00:00
foobar
7a93625e4c
Fixed bug: #14542 , register_shutdown_function() timeout problem
2003-01-23 05:15:42 +00:00
Zeev Suraski
424e98f4e2
Implemented compatibility mode
...
To enable - zend2.implicit_clone = on in php.ini or using ini_set()
2003-01-12 12:39:06 +00:00
Derick Rethans
2c44fab3a0
- Ported the zend_execute_internal hook to ZendEngine2.
2003-01-11 16:12:44 +00:00
Sebastian Bergmann
2c5d4b8c23
Bump year.
2002-12-31 15:59:15 +00:00
Andrei Zmievski
4f8c44b091
Adjust the error message.
2002-12-30 18:30:50 +00:00
Andi Gutmans
671fff2fde
h WHitespace
2002-11-30 11:20:25 +00:00
Zeev Suraski
4be862b02c
MFZE1 - error_reporting fix
2002-11-19 17:51:30 +00:00
Andi Gutmans
c92758c89e
- Fix bug introduced with type change of free_op1/2
2002-11-05 19:06:40 +00:00
Ilia Alshanetsky
e842ef9f4b
MFZE1 (floats & locale issue)
2002-10-12 21:15:35 +00:00
Ilia Alshanetsky
d3617c51b8
MFZE1 zend_str_tolower issue.
2002-10-09 14:21:40 +00:00
Ilia Alshanetsky
ee7b8f906d
MFZE1
2002-09-26 18:56:11 +00:00
Zeev Suraski
bd115087e3
MFZE1 - connection_status() fix
2002-09-19 15:58:01 +00:00
Andrei Zmievski
a35c61af3c
MFZE1
2002-09-16 01:36:48 +00:00
Andi Gutmans
43139dc755
- WS - Always use "if (" and not "if("
2002-09-15 07:45:26 +00:00
Andi Gutmans
fcc0ce7eec
- WS
2002-09-15 07:41:23 +00:00
Stanislav Malyshev
7fe216e27b
MFZE1
2002-09-10 08:37:18 +00:00
Stanislav Malyshev
ca6717e348
MFZE1
2002-09-10 08:35:50 +00:00
Thies C. Arntzen
eef3e66f1f
debug_backtrace()
...
- make args passed to functions called vy call_user_function available again.
2002-08-28 15:05:15 +00:00
Thies C. Arntzen
7ed2d363c8
- debug_backtrace:
...
added "type" ('->' or '::') for object calls.
made calls done thru call_user_func show-up correct in backtraces.
andi,
does this look correct to you?
2002-08-23 13:50:42 +00:00
Stig Bakken
04788f9503
@- Added set_exception_handler() function for registering a global,
...
@ catch-all exception handling function (Stig)
- Added set_exception_handler() function for registering a global,
catch-all exception handling function (Stig)
2002-08-16 00:41:37 +00:00
Andi Gutmans
17d1c75b8b
- Fix crash when exception is raised in __autoload function
2002-08-13 16:46:40 +00:00
Andi Gutmans
b476ddf183
- Make sure classes are first looked for in the current scope.
...
- Make sure that during inheritance the global scope is searched if the
- current one doesn't work.
2002-07-27 15:53:14 +00:00
Andi Gutmans
401c26fb5e
- Invalid -> Undefined
2002-06-29 16:01:40 +00:00
Andi Gutmans
ede84fa384
- Improve some error messages.
2002-06-29 15:30:27 +00:00
Andi Gutmans
737de1bd0c
- Autoloading support based on patch from Ivan Ristic.
...
- Again I hope this feature ends up working well because if it doesn't we
- might need to nuke it. This only works for global scoped classes and it
- will never work for sub-classes so don't even ask!!!!!
- Just define an __autoload() function in the global scope and it will be
- called with the class name as the parameter if it doesn't manage to find
- the class.
2002-06-26 15:13:14 +00:00
Andi Gutmans
690c85b406
- Fix bug in class constants
...
- Start centralizing main class lookups. This will help implement
- __autload()
2002-06-16 18:25:05 +00:00
Stanislav Malyshev
f75f3cff82
Generalize object storage and reference bookkeeping
2002-05-31 12:09:19 +00:00
Andi Gutmans
7e5ec2d761
Initial support for built-in backtracing.
...
There are still a few problems such as includes and calling other functions
from internal functions which aren't seen (will have to think if and how to
fix this).
Also the main scripts filename isn't available. Need to think about that.
2002-05-02 17:20:48 +00:00
Harald Radi
51e797f1e3
some type cleanup work
2002-04-23 18:06:54 +00:00
Zeev Suraski
579b9bff3d
MFZE1
2002-04-20 20:14:14 +00:00
Stanislav Malyshev
3af5b15f30
Fix call_user_function
2002-03-14 12:18:01 +00:00
Stanislav Malyshev
92dd5e611b
- make class tables contain class_entry *, not class_entry
...
- fix isset($this)
2002-03-12 10:08:47 +00:00
Andi Gutmans
90bd4539c7
- Remove use of C++ reserved words namespace/this
2002-03-01 14:27:26 +00:00
Stanislav Malyshev
6608f07322
Mega-commit: Enter the new object model
...
Note: only standard Zend objects are working now. This is definitely going to
break custom objects like COM, Java, etc. - this will be fixed later.
Also, this may break other things that access objects' internals directly.
2002-02-07 14:08:43 +00:00
Andi Gutmans
7309a6ed21
- First destructor hell fix. There was a situation where an object's
...
- destructor could be run after its class was already dead. Right now
- object destructors is the first thing whic happens during shutdown in
- order to prevent this problem. It's very likely that destructors will
- cause more grief and we'll have to outline exactly when you should use
- them and what kind of logic you're allowed to do inside of them.
- This bug was reported by sebastian.
2002-01-25 12:55:03 +00:00
Andi Gutmans
2131b019c7
- Improve performance of functions that use $GLOBALS[]
...
- Please check this and make sure it doesn't break anything.
2002-01-20 20:42:15 +00:00
Andi Gutmans
65f01545a8
- Fix crash bug in call_user_function_ex(). Thanks to Sebastian for the
...
- very nice and short reproducing script.
<?php
$array = array('foo', 'bar');
uasort($array, 'cmp');
function cmp($a, $b)
{
return (strcmp($a[1], $b[1]));
}
?>
2002-01-14 16:55:23 +00:00
Sebastian Bergmann
62dc854bb0
Happy New Year.
2002-01-06 15:21:36 +00:00
Andi Gutmans
a4248dd584
- Significantly improve the performance of method calls and $this->member
...
- lookups.
2002-01-05 15:18:30 +00:00
Andi Gutmans
5cb454a8ad
- Fix scoping issue. The following works now:
...
<?
class MyClass {
static $id = 0;
function MyClass()
{
$this->id = self::$id++;
}
function _clone()
{
$this->name = $clone->name;
$this->address = "New York";
$this->id = self::$id++;
}
}
$obj = new MyClass();
$obj->name = "Hello";
$obj->address = "Tel-Aviv";
print $obj->id;
print "\n";
$obj = $obj->_clone();
print $obj->id;
print "\n";
print $obj->name;
print "\n";
print $obj->address;
print "\n";
2001-12-26 20:17:34 +00:00
Andi Gutmans
9e7c0d67d0
- Add initial capability of defining nested classes as class foo::bar
2001-12-22 15:31:44 +00:00
Andi Gutmans
f4b832d277
- Fix crash bug in startup code.
...
- Start work on being able to reference global and local scope
2001-12-13 16:55:04 +00:00
Andi Gutmans
4cb97fa3b9
- Rename zend_class_entry.constants -> zend_class_entry.constants_table
2001-12-11 18:46:43 +00:00
Sebastian Bergmann
d863d52a5d
Update headers.
2001-12-11 15:16:21 +00:00
Andi Gutmans
42486196ad
- Initial work on changing namespace scope. Only methods & variables
...
- right now.
<?
$hey = "Global hey\n";
class foo {
static $hey = "Namespace hey\n";
function bar()
{
print "in foo::bar()\n";
}
}
function bar()
{
print "in bar()\n";
}
bar();
namespace foo;
bar();
namespace;
bar();
namespace foo;
$bar_indirect = "bar";
$bar_indirect();
namespace;
print $hey;
namespace foo;
print $hey;
$hey = "Namespace hey #2\n";
namespace;
print $hey;
$hey = "Global hey #2\n";
namespace foo;
print $hey;
?>
2001-12-06 17:47:04 +00:00
Andi Gutmans
fe94f59427
- Nuke the namespace work I did. It'll be redone differently.
2001-12-06 17:23:08 +00:00
Andi Gutmans
e858d27888
- Initial support for class constants. There are still a few semantic
...
- issues which need to be looked into but basically it seems to work.
- Example:
<?php
class foo
{
const hey = "hello";
}
print foo::hey;
?>
2001-11-30 16:29:47 +00:00
Andi Gutmans
89a0e85251
- Fix Zeev's MFZE1
2001-10-26 14:13:42 +00:00
Zeev Suraski
aecd5b89ee
MFZE1
2001-10-23 01:23:36 +00:00
Andi Gutmans
2eabb14dc7
- Merge the NAMESPACES_BRANCH. It wasn't a good idea to have a branch when
...
- the whole CVS tree is work in progress
2001-09-30 17:29:55 +00:00
Zeev Suraski
b06440bceb
MFZE1 (support return value in execute_scripts)
2001-09-10 00:07:32 +00:00
Andi Gutmans
29f5dbe10b
- Initial support for exceptions.
2001-08-30 15:26:30 +00:00
Zeev Suraski
4757104e45
MFZE1
2001-08-21 12:29:12 +00:00
Zeev Suraski
4f6c95d17a
Whitespace
2001-08-11 15:56:40 +00:00
Andi Gutmans
5af7770a81
- Sync Engine2 CVS with latest Engine CVS
2001-08-07 03:17:33 +00:00
Zeev Suraski
c14baeece3
Avoid going over huge lists of functions, classes and constants.
...
Special thanks to the guys from the MS lab for the profiling tools :)
2001-08-02 07:00:43 +00:00
Zeev Suraski
7deb44e36d
Some cleanup
2001-08-02 06:16:20 +00:00
Zeev Suraski
d76cf1da18
More TSRMLS_FETCH work
2001-07-31 04:53:54 +00:00
Zeev Suraski
4187439cff
More TSRMLS_FETCH work
2001-07-30 07:43:02 +00:00
Zeev Suraski
8ce8324e59
More TSRMLS_FETCH annihilation
2001-07-30 04:54:16 +00:00
Zeev Suraski
b57703825b
Avoid TSRMLS_FETCH()'s (still lots of work left)
2001-07-30 01:48:22 +00:00
Zeev Suraski
b4f3b9d3ce
Redesigned thread safety mechanism - nua nua
2001-07-28 10:51:54 +00:00
Zeev Suraski
2c254ba762
Get rid of ELS_*(), and use TSRMLS_*() instead.
...
This patch is *bound* to break some files, as I must have had typos somewhere.
If you use any uncommon extension, please try to build it...
2001-07-27 10:10:39 +00:00
Zeev Suraski
931ebe08d7
Improve bailout mechanism, supports nesting of bailouts a-la try..catch
2001-07-21 14:25:27 +00:00
Zeev Suraski
8084d27885
Implement a more granular shutdown mechanism for the executor -
...
prevent corruption of constants and missing destructions of resources
2001-07-20 14:20:34 +00:00
Zeev Suraski
fb532ba52b
Fix bug #10467
2001-07-16 11:41:06 +00:00
Zeev Suraski
9bd9862451
Fix bug #10257
2001-07-15 17:48:50 +00:00
Zeev Suraski
85b4df53c0
Improved interactive mode - it is now available in all builds, without any significant slowdown
2001-07-15 14:08:58 +00:00
Andi Gutmans
8cd70926c5
- Nuke dependency of all of PHP on zend_execute_locks.h.
2001-06-21 21:17:10 +00:00
Zeev Suraski
6cf6835a4d
Add missing check
2001-05-30 08:23:15 +00:00
Zeev Suraski
686eab894c
Hear hear, interactive mode is finally showing some progress:
...
- Support function calls
- Fix crash bug
2001-05-06 15:00:58 +00:00
Andi Gutmans
ce7d0ef090
- Fix crash bug in interactive mode
2001-04-30 04:50:34 +00:00
Andi Gutmans
0971ff99cb
- Whitespace changes to be standard like the rest of Zend
2001-04-27 18:51:56 +00:00
Andrei Zmievski
145a319f43
Do case-insensitive class name matching when parsing
...
array('Class', 'method') structure.
You guys can clean it up, if there is a better way.
2001-02-28 03:53:00 +00:00
Andi Gutmans
d2c9e8074c
- Update copyright year
2001-02-26 05:43:27 +00:00
Andi Gutmans
488d808748
- Fix whitespace.
2001-02-12 15:18:05 +00:00
Zeev Suraski
d854b26e43
Fix a bug that could cause corruption in case of an error during
...
get_zval_ptr()
2001-02-12 15:16:11 +00:00
Andrei Zmievski
98d8ba8cc4
Allow passing class name as well as an object instance to call methods.
2001-02-04 00:06:08 +00:00
Andrei Zmievski
088a4b7151
Set the correct function state during execution. This is mainly to have
...
get_active_function_name() to return proper value.
2001-02-03 07:21:35 +00:00
Zeev Suraski
cec94760fd
More aggressive protection in call_user_function_ex()
2000-12-24 00:29:14 +00:00
Zeev Suraski
f052eab681
Fix a possible crash bug in call_user_function_ex(), if the function is
...
in fact not a user function
2000-12-23 12:54:42 +00:00
Zeev Suraski
be895bcb96
Fix call_user_function() with objects - it could leak under certain circumstances
2000-12-13 22:50:10 +00:00
Zeev Suraski
dee2d85e77
Fix -a interactive mode (no idea how the previous commit got committed)
2000-10-11 18:51:52 +00:00
Zeev Suraski
5286b3971c
Make compile_string() accept a description of the code
2000-09-12 19:47:25 +00:00
Andi Gutmans
207814916d
- Fix bug report by Andrei when using a method as a sort user function
...
- parameter in usort() like functions
2000-08-22 18:35:42 +00:00
Zeev Suraski
c06692e9ec
The patch we promised - redesigned the compilation/execution API:
...
Advantages:
- Smaller memory footprint for the op arrays
- Slightly faster compilation times (due to saved erealloc() calls and faster zend_op
initialization)
- include_once() & require_once() share the same file list
- Consistency between include() and require() - this mostly means that return()
works inside require()'d files just as it does in include() files (it used to
be meaningless in require()'d files, most of the time (see below))
- Made require() consistent with itself. Before, if the argument was not a constant
string, require() took the include() behavior (with return()).
- Removed lots of duplicate code.
Bottom line - require() and include() are very similar now; require() is simply an include()
which isn't allowed to fail. Due to the erealloc() calls for large op arrays, require()
didn't end up being any faster than include() in the Zend engine.
2000-08-09 19:22:35 +00:00
Stanislav Malyshev
91130b6a00
Unblock SIGPROF signal when starting timer.
...
On Linux, this signal is blocked by default after first signal is run
2000-07-03 16:53:39 +00:00
Andi Gutmans
b72a2738dc
- Forgot ZEND_API
2000-07-02 15:39:54 +00:00
Zeev Suraski
fde2e61d54
error_reporting fix
2000-06-30 11:45:32 +00:00
Zeev Suraski
202b8100ab
Make max_execution_time work properly when set to 0 under Win32 (disable)
2000-06-26 15:17:36 +00:00
Zeev Suraski
34c2b0a07c
- Add restore_error_handler()
...
error_handler's are now stored in a stack
2000-06-17 18:04:58 +00:00
Zeev Suraski
3cda6a750e
Allow the symbol_table to be passed to call_user_function_ex()
2000-06-17 16:50:38 +00:00
Zeev Suraski
84eb48f0a1
Ok, this time here's some real Win32 system programming :)
...
Redesigned the timeout system using a single timeout thread and a single window,
and used a much quicker check.
2000-06-16 14:27:28 +00:00
Andi Gutmans
ae11748038
Fix UNIX build
2000-06-16 02:49:21 +00:00
Zeev Suraski
ef0bd3d102
- Move timeout code to Zend
...
- Implement timeouts in Win32
2000-06-16 01:54:56 +00:00
Sascha Schumann
df74f1dfab
Add optional support for C0x inline semantics.
...
These are enabled by specifying `--enable-c0x-inline' on the command
line. We might add an autoconf check for this particular feature
later.
2000-06-13 17:58:33 +00:00
Sascha Schumann
039551788b
Add a couple of casts
2000-06-08 06:07:38 +00:00
Zeev Suraski
1c36e3472f
Change shutdown order to sort out a crash when assigning a resource id to a static.
2000-06-04 22:09:16 +00:00
Zeev Suraski
5a35a6bafc
Improve call_user_function() to support array($obj, $method)
2000-06-03 03:28:08 +00:00
Zeev Suraski
13b67621cf
Fix a bug in static initializers/default values/class member variables that contained
...
array values
2000-05-31 19:07:09 +00:00
Andi Gutmans
dc704e26fe
- Make zend_eval_string() return SUCCESS/FAILURE
2000-05-06 18:49:46 +00:00
Zeev Suraski
fa7c418b79
Fix - forgot to split away if refcount>1
2000-04-26 22:10:06 +00:00
Zeev Suraski
67f6974373
Initial support for trapping errors (not complete and disabled; will be enabled only
...
post-PHP 4.0.0)
2000-04-19 15:08:06 +00:00
Zeev Suraski
4cb9a483d2
- Clean up resource lists namespace
...
- Prepare extended resource list destructor APIs (currently unused)
2000-04-15 13:02:22 +00:00
Andi Gutmans
804861c5ac
- Fix memory leak
2000-04-11 18:16:58 +00:00
Zeev Suraski
e663d856b3
Fix object overloading support
2000-04-10 20:21:13 +00:00
Andi Gutmans
7fd92b524d
- Stop zend_func_args() and co. from crashing
2000-03-26 18:40:24 +00:00
Zeev Suraski
5dba477467
- Some header dependencies cleanup
...
- Generalize zval_print() and zval_print_r()
2000-03-25 19:10:07 +00:00
Andi Gutmans
6db18997bb
- Nuke hash_*_ptr functions
2000-03-24 11:12:30 +00:00
Andi Gutmans
5951b166c8
- Quick way of supporting include_once().
...
Good enough for RC1.
2000-03-10 16:36:30 +00:00
Zeev Suraski
5e55e47f7f
It's official now...
2000-03-06 05:26:39 +00:00
Zeev Suraski
0ac9536d99
(c) patch
2000-02-19 22:46:42 +00:00
Zeev Suraski
f207b3623e
Pass the executor globals to internal functions
2000-02-05 15:40:05 +00:00
Zeev Suraski
9f51f154aa
- Stop passing list/plist to internal functions
...
- Add a typedef for the pCopyConstructor function pointer
- Minor hacks
2000-02-05 15:11:24 +00:00
Zeev Suraski
b6197bcf90
Maintain a state of whether we're compiling and/or executing
2000-02-04 14:45:58 +00:00
Zeev Suraski
485412ecb1
Improve dependencies
2000-02-01 22:04:52 +00:00
Andi Gutmans
131e3a06fb
- Get rid of remains of garbage.
...
- This should fix Thies' UMR
2000-02-01 16:02:38 +00:00
Thies C. Arntzen
11f53347c7
moved destroying of garbage before resource-list gets destroyed - (see my previous mail)
...
zeev, andi - please comment!
2000-02-01 11:41:15 +00:00
Zeev Suraski
f2d3ce4170
- Optimized garbage mechanism
...
- Fixed another buglet in the parser
2000-01-31 19:18:07 +00:00
Andi Gutmans
8b9765a917
- Keep objects as references.
2000-01-26 21:10:46 +00:00
Andi Gutmans
4585f7bf1f
- Allow is_ref to become 0 in case the refcount is back to 1.
2000-01-26 05:03:22 +00:00
Zeev Suraski
fafbf6d8da
- Implement declare() with declarables framework
...
- Implement ticks - Germany&Norway - 5 points!
2000-01-24 19:00:30 +00:00
Zeev Suraski
adec56938e
Fixes
2000-01-24 17:29:15 +00:00
Zeev Suraski
e6ba28b680
Fix an elusive bug
2000-01-22 17:02:48 +00:00
Zeev Suraski
62114c1806
Destructors no longer return ints, the low level problem it was intended to solve is long gone now...
2000-01-17 17:33:37 +00:00
Zeev Suraski
ee08b81aab
- Make zend_hash_apply() (and friends) reentrant and much, much quicker
...
- Introduce zend_hash_graceful_destroy(), which allows the destructor functions to
use zend_hash_apply() and/or zend_hash_graceful_destroy()
- Switch to zend_hash_graceful_destroy() in the resource list shutdowns
2000-01-16 20:59:03 +00:00
Zeev Suraski
caaeb9ff12
Fix a bug in call_user_function_ex()
2000-01-15 22:52:24 +00:00
Andi Gutmans
bdefd5da15
- Change IS_UNSET -> IS_NULL
2000-01-04 13:22:58 +00:00
Zeev Suraski
f2d703e916
- Nuke undefined_variable_string
...
- Introduce IS_UNSET
1999-12-31 13:56:59 +00:00
Zeev Suraski
b7a5b3c309
- Generalize the fast cache mechanism
...
- Add the HashTable struct to the fast cache mechanism
1999-12-27 19:07:33 +00:00
Zeev Suraski
235386b245
Change ALLOC_ZVAL() semantics
1999-12-26 21:21:33 +00:00
Andi Gutmans
62b2087a84
- Create two new macro's. ALLOC_ZVAL() and FREE_ZVAL(z) and make Zend use
...
them.
1999-12-24 15:22:11 +00:00
Andrei Zmievski
80bab9d939
We're using ZVAL's now.
1999-12-21 17:14:31 +00:00
Zeev Suraski
223c674c2a
- Made things work again (Thies, everybody - please check the latest CVS and see if you're
...
still getting any problems)
- Changed the interface of call_user_function_ex() to support returning of references
1999-12-19 18:54:40 +00:00
Andi Gutmans
213d0e2fb2
- More fixes related to the return references patch
...
- eval_string() and call_user_function_ex() still don't work.
- The libzend tree is untested and might not be stabl yet.
1999-12-19 06:39:17 +00:00
Zeev Suraski
ced9cee10c
- Implement return by reference:
...
- In function declaration instead of the return statement
- In the assignment phase
- Implement ability to turn off support for call-time pass by reference
1999-12-15 20:15:32 +00:00
Sascha Schumann
70df2d7478
Fix some warnings
1999-12-05 16:23:45 +00:00
Andi Gutmans
5463dd5b38
- Add use support (behaves like require, but will not use the same file twice)
...
- Add import support (behaves like include, but requires parentheses; will not
use the same file twice; Currently, it is not yet properly implemented, and
only behaves like include)
1999-11-30 20:15:04 +00:00
Zeev Suraski
6358c6631b
- Optimize class instanciation
...
- Fix constant instanciation for array elements inside objects
1999-11-21 18:11:10 +00:00
Andi Gutmans
3cd140cdef
- Weird that this compiled for me.
1999-11-16 20:31:29 +00:00
Andi Gutmans
1c0f136405
- Hooray. This might actually work. (I hope)
1999-10-03 20:06:21 +00:00
Andi Gutmans
86357a9c27
- Move is_ref back to being an unsigned char and not a bit field.
1999-10-01 23:31:39 +00:00
Andi Gutmans
4dd47ffbc1
- Remove locking support completely
1999-10-01 23:26:00 +00:00
Andi Gutmans
59d5462a6a
- Stop using the locking mechanism and start using refcount.
...
Now we know when we need to free but we still need to support it
1999-09-28 17:37:14 +00:00
Andi Gutmans
b56fd4602f
- First part of the patch which makes reads use ptr and not ptr_ptr.
1999-09-28 16:03:09 +00:00
Andi Gutmans
4fff0386ac
- Changed Ts{}.var to Ts{}.var.ptr_ptr.
1999-09-26 05:45:18 +00:00
Thies C. Arntzen
20ee106672
no // in the sources please
1999-09-17 12:16:21 +00:00
Zeev Suraski
023cb6474b
Fix a crash bug in case of aborted execution
1999-08-27 21:21:04 +00:00
Zeev Suraski
aa8b27ba1d
Better debug macros
1999-08-27 19:17:19 +00:00
Andi Gutmans
02822cbc33
- Damn. It wasn't a correct fix. This should do it.
...
When the zval ** are equal we don't want to assign_ref, in any other case
I can think of we do want to assign_ref.
1999-08-26 07:33:53 +00:00
Andi Gutmans
2c88f2950c
- Fix leak when global is used in the global scope.
1999-08-26 07:26:15 +00:00
Zeev Suraski
50bfff5502
Fix #2012
1999-08-17 22:31:45 +00:00
Zeev Suraski
720d32f581
Fix a few leaks
1999-08-07 23:04:01 +00:00
Zeev Suraski
0487650536
Fix a bug in call_user_func_ex()
1999-08-06 21:43:49 +00:00
Zeev Suraski
f95edc016b
Introduce call_user_func_ex()
1999-08-06 15:24:10 +00:00
Andi Gutmans
741ca16711
- Fixed various inheritance problems & Andrey's leak
1999-07-28 17:59:55 +00:00
Andi Gutmans
bf8c6dbd99
- Get rid of C++ comments
1999-07-20 13:01:30 +00:00
Zeev Suraski
8d1de13aef
0.91 update
1999-07-19 20:02:12 +00:00
Andi Gutmans
e3daad2d67
- Should fix the memory leak when returning from the main scope.
1999-07-18 17:33:51 +00:00
Zeev Suraski
b5b1117760
License update
1999-07-16 14:58:16 +00:00
Sascha Schumann
138dd94c8d
disable zend_handle_sigsegv
1999-07-15 12:17:34 +00:00
Zeev Suraski
dc933fc50b
Woops, fix.
1999-07-10 12:44:56 +00:00
Zeev Suraski
909590ba7b
Put the garbage in the garbage bin
1999-07-10 11:47:16 +00:00
Zeev Suraski
cccd2445ee
Get rid of AiCount completely
1999-07-10 11:45:23 +00:00
Zeev Suraski
2a6da7814c
Step 4:
...
Move to a 7-bit counter (not fully implemented yet)
1999-07-09 20:43:59 +00:00
Zeev Suraski
6ec1acbe32
Phase 3:
...
Use a single bit to mark IS_REF variables
1999-07-09 18:19:48 +00:00
Zeev Suraski
5f62c347c7
Step 2:
...
Rename is_ref to EA
1999-07-09 17:44:41 +00:00
Zeev Suraski
81d901b14d
Step 1 in nuking the garbage collector:
...
- Change the hash destructor to return int
- Don't kill the bucket on hash_destroy if the destructor returns 0
1999-07-09 17:24:47 +00:00
Zeev Suraski
81f5522210
Fix the mess in SIGSEGV handling, hopefully
1999-07-09 07:35:13 +00:00
Zeev Suraski
da9faa2c3a
* Make the output handling of variables much, much cooler.
...
Uses zend_make_printable_zval() instead of convert_to_string() now:
$foo = true;
print "\$foo is $foo";
will now print
$foo is true
(instead of "$foo is 1", earlier).
Also, with objects, it automatically tries to call __print() and use it as a printing
function.
For example:
class foo {
function __print() { return "Foo Object"; }
};
$foo = new foo;
print $foo;
will print "Foo Object".
1999-06-11 10:44:26 +00:00
Zeev Suraski
b484f40c31
* Fix foreach() that receives a non array argument
...
* Clean up some C++ comments
1999-06-09 21:02:59 +00:00
Zeev Suraski
cf757f7c89
Fix that GLOBALS leak. We were explicitly adding GLOBALS to the main symbol table,
...
but there's no reason to do it (INIT_GLOBALS takes care of it if necessary.)
1999-06-04 12:22:19 +00:00
Andi Gutmans
52ec64359c
Fixes
1999-05-31 18:33:12 +00:00
Sascha Schumann
88029643d0
* fix some casts
...
* introduce unary_op_type - cleaner than casting data voids to function ptrs
1999-05-30 13:28:56 +00:00
Zeev Suraski
cf4a2c3bfc
That got fucked up when we went back to using uninitialized_zval
1999-05-29 23:37:26 +00:00
Zeev Suraski
7068d4a201
*** empty log message ***
1999-05-29 11:02:37 +00:00
Zeev Suraski
741b816136
* Support getThis() for internal functions.
...
* Fix 'new object or die' and AiCount issue thoroughly (earlier fix didn't
work with the optimizer).
* Add new macros for standardized definition of classes.
* Only report AiCount problems if shutdown was not silent.
1999-05-28 12:06:59 +00:00
Zeev Suraski
033858e13d
Avoid crashing if an error occurs before we open the first file.
1999-05-25 22:55:13 +00:00
Zeev Suraski
1250c43a39
* Add struct name to all typedef's so that they can be debugged with MSVC
...
* Fix an AiCount bug - list(...) = $var was using $var multiple times, and thus
causing AiCount to be decreased multiple times even though it was increased only
once for $var. Mark all FETCH_DIM's so that they won't decrease AiCount, and only
decrease AiCount on the last FETCH_DIM.
* Fix a stupid bug - forgot to pass CLS_C to some compiler function. For some reason
MSVC doesn't report these :I
1999-05-22 16:10:51 +00:00
Zeev Suraski
080105f79f
Give more information and save log lines in memory leak reports
1999-05-22 11:20:56 +00:00
Zeev Suraski
2493f68018
* Fix debugger+interactive mode bug
...
* Recognize whether an extension is with debug information or not
1999-04-27 11:00:59 +00:00
Zeev Suraski
7a87fcbbda
Thread safety patch. We're still not quite there but it compiles again, and
...
more logic has been implemented.
1999-04-21 03:49:09 +00:00
Andi Gutmans
e1e2226b92
- Fix various memory leaks.
1999-04-13 19:28:03 +00:00
Andi Gutmans
3fcc6511f6
* Optimize argument_stack top lookup
...
* Fix a nasty bug in zend_ptr_stack_clean()
1999-04-13 17:03:10 +00:00
Zeev Suraski
533f135987
Remove unnecessary stack
1999-04-12 21:50:49 +00:00
Zeev Suraski
15be5f0b4a
Destroy the resource list after destroying the symbol table, otherwise the
...
auto-destructor for resources are run when the resource list is no longer valid
1999-04-12 18:40:18 +00:00
Zeev Suraski
39a7f4c306
This patch is a go. Not fully optimized yet, but working properly.
...
Prepatch tagged as BEFORE_STACK_PATCH.
1999-04-12 18:29:09 +00:00
Zeev Suraski
d1d96d04c6
Remove an unused variable
1999-04-07 23:09:09 +00:00
Andi Gutmans
573b46022c
Zend Library
1999-04-07 18:10:10 +00:00