Skip to content
Commits on Aug 25, 2012
  1. @nikic

    Remove implementation stubs for yield delegation

    nikic committed Aug 25, 2012
    I decided to leave out yield delegation for an initial proposal, so remove
    the stubs for it too.
Commits on Aug 24, 2012
  1. @nikic

    Add dedicated opcode for returns from a generator

    nikic committed Aug 24, 2012
    Generators don't have a return value, so it doesn't make sense to have
    a shared implementation here.
Commits on Aug 13, 2012
  1. @nikic

    Merge remote-tracking branch 'php-src/master' into addGeneratorsSupport

    nikic committed Aug 13, 2012
    This is just an intial merge. It does not yet make generators and finally
    work together.
    
    Conflicts:
    	Zend/zend_language_scanner.c
    	Zend/zend_language_scanner_defs.h
    	Zend/zend_vm_def.h
    	Zend/zend_vm_execute.h
    	Zend/zend_vm_execute.skl
    	Zend/zend_vm_opcodes.h
  2. @laruence

    Implemented 'finally' keywords for php

    laruence committed Aug 13, 2012
    RFC: https://wiki.php.net/rfc/finally
    FR: https://bugs.php.net/bug.php?id=32100
    and I have got some improvment ideas(performance), will implemented
    later. thanks
Commits on Jul 20, 2012
  1. @nikic

    Remove asterix modifier (*) for generators

    nikic committed Jul 20, 2012
    Generators are now automatically detected by the presence of a `yield`
    expression in their body.
    
    This removes the ZEND_SUSPEND_AND_RETURN_GENERATOR opcode. Instead
    additional checks for ZEND_ACC_GENERATOR are added to the fcall_common
    helper and zend_call_function.
    
    This also adds a new function zend_generator_create_zval, which handles
    the actual creation of the generator zval from an op array.
    
    I feel like I should deglobalize the zend_create_execute_data_from_op_array
    code a bit. It currently changes EG(current_execute_data) and
    EG(opline_ptr) which is somewhat confusing (given the name).
Commits on Jun 18, 2012
  1. @nikic

    Add sceleton for yield* expression

    nikic committed Jun 11, 2012
    This does not yet actually implement any delegation.
Commits on May 26, 2012
  1. @nikic

    Add YIELD opcode implementation

    nikic committed May 26, 2012
Commits on May 19, 2012
  1. @nikic

    Add ZEND_SUSPEND_AND_RETURN_GENERATOR opcode

    nikic committed May 19, 2012
    If the function is a generator this opcode will be invoked right after
    receiving the function arguments.
    
    The current implementation is just a dummy.
Commits on Jan 1, 2012
  1. @felipensp

    - Year++

    felipensp committed Jan 1, 2012
Commits on Oct 18, 2011
  1. @arnaud-lb
Commits on Jul 10, 2011
  1. @felipensp

    - Year++

    felipensp committed Jul 10, 2011
Commits on Mar 16, 2011
  1. @smalyshev

    fix UMR when variable name is an object and __toString is used

    smalyshev committed Mar 16, 2011
    # zend_call_function checks IS_REF on This
Commits on Jan 1, 2011
  1. @felipensp

    - Year++

    felipensp committed Jan 1, 2011
Commits on Aug 25, 2010
  1. Fixed bug #52614 (Memory leak when writing on uninitialized variable …

    Dmitry Stogov committed Aug 25, 2010
    …returned from method call)
Commits on Apr 22, 2010
  1. Implemented Traits for PHP as proposed in the RFC [TRAITS]

    Stefan Marr committed Apr 22, 2010
    # RFC http://wiki.php.net/rfc/horizontalreuse#traits_-_reuse_of_behavior
    # Ok, here we go, I guess that will result in more discussion, which is fine
    # by me. But now, the patch is here, and properly archived.
    # 
    # See below a list of notes to the patch, it also includes a list of
    # points which should be fixed
    # 
    # Internals of the Traits Patch
    # -----------------------------
    # 
    # Open TODOs
    # """"""""""
    # 
    # - Reflection API
    # - support for traits for internal classes
    #   - currently destroy_zend_class does not handle that case 
    # 
    # Introduced Structures
    # """""""""""""""""""""
    # 
    # Data structures to encode the composition information specified in the
    # source:
    #  - zend_trait_method_reference
    #  - zend_trait_precedence
    #  - zend_trait_alias
    # 
    # Changes
    # """""""
    # 
    # zend_class_entry
    #  - uses NULL terminated lists of pointers for
    #    - trait_aliases
    #    - trait_precedences
    #    - do you prefer an explicit counter?
    #    - the information is only necessary during class composition
    #      but might be interesting for reflection
    #    - did not want to blow up class further with not really necessary length counters
    # 
    # added keywords
    #   - trait
    #   - insteadof
    # 
    # Added opcodes
    #  ZEND_ADD_TRAIT
    #    - similar to ZEND_ADD_INTERFACE
    #    - adds the trait to the list of traits of a class, no actual composition done
    #  ZEND_BIND_TRAITS
    #    - emitted in zend_do_end_class_declaration
    #    - concludes the class definition and will initiate the trait composition
    #      when the class definition is encountered during runtime
    # 
    # Added Flags
    #   ZEND_ACC_TRAIT = 0x120
    #   ZEND_ACC_IMPLEMENT_TRAITS = 0x400000
    #   ZEND_FETCH_CLASS_TRAIT = 14
    # 
    # zend_vm_execute.h
    #  - not sure whether the handler initialization (ZEND_ADD_TRAIT_SPEC_HANDLER,
    #    ZEND_BIND_TRAITS_SPEC_HANDLER) is correct, maybe it should be more selective
    # 
    # zend_compile.c
    #  - refactored do_inherit_method_check
    #    split into do_inherit_method_check and do_inheritance_check_on_method
    #  - added helper functions use a '_' as prefix and are not mentioned in the
    #    headers
    #  - _copy_functions
    #    prepare hash-maps of functions which should be merged into a class
    #    here the aliases are handled
    #  - _merge_functions
    #    builds a hash-table of the methods which need to be added to a class
    #    does the conflict detection
    #  - reused php_runkit_function_copy_ctor
    #    - it is not identical with the original code anymore, needed to update it
    #      think I fixed some bugs, not sure whether all have been reported back to runkit
    #    - has to be renamed, left the name for the moment, to make its origin obvious
    #    - here might be optimization potential
    #    - not sure whether everything needs to be copied
    #      - copying the literals might be broken
    #        - added it since the literals array is freed by efree and gave problems
    #          with doubled frees
    #      - all immutable parts of the zend_op array should not be copied
    #        - am not sure which parts are immutable
    #        - and not sure how to avoid doubled frees on the same arrays on shutdown
    #  - _merge_functions_to_class
    #    does the final merging with the target class to handle inherited
    #    and overridden methods
    #  - small helper for NULL terminated lists
    #    zend_init_list, zend_add_to_list
    # 
    # zend_language_parser.y
    #  - reused class definition for traits
    #    - there should be something with regard to properties
    #      - if they get explicitly defined, it might be worthwhile to
    #        check that there are no collisions with other traits in a composition
    #        (however, I would not introduce elaborate language features to control that
    #         but a notice for such conflicts might be nice to the developers)
  2. ZEND_RETURN is splitted into two new instructions ZEND_RETURN and ZEN…

    Dmitry Stogov committed Apr 22, 2010
    …D_RETURN_BY_REF
Commits on Jan 5, 2010
  1. @sebastianbergmann
Commits on Dec 31, 2008
  1. @sebastianbergmann
Commits on Jul 14, 2008
  1. Added support for lambda functions and closures

    Dmitry Stogov committed Jul 14, 2008
Commits on Mar 28, 2008
  1. @felipensp
Commits on Mar 18, 2008
  1. Implemented concept of "delayed early binding" that allows opcode cac…

    Dmitry Stogov committed Mar 18, 2008
    …hes to perform class declaration (early and/or run-time binding) in exactly the same order as vanila php.
    
    The following pseudo-code explains how it should be used in opcode cache.
    
    function cache_compile_file($filename) {
            if (!is_cached($filename)) {
                    ...
                    orig_compiler_options = CG(compiler_optins);
                    CG(compiler_options) |= ZEND_COMPILE_IGNORE_INTERNAL_CLASSES |
                                            ZEND_COMPILE_DELAYED_BINDING;
                    $op_array = orig_compile_file($filename);
                    CG(compiler_options) = orig_copiler_options;
                    ...
            } else {
                    $op_array = restore_from_cache($filename);
            }
            zend_do_delayed_early_binding($op_array);
    }
Commits on Dec 31, 2007
  1. @sebastianbergmann
Commits on Nov 22, 2007
  1. Speed-up of ZEND_DO_FCALL and ZEND_INIT_FCALL_BY_NAME by lowercasing …

    Dmitry Stogov committed Nov 22, 2007
    …and calculating hash values at compile time.
Commits on Nov 21, 2007
  1. @johannes
Commits on Sep 28, 2007
  1. Namespaces

    Dmitry Stogov committed Sep 28, 2007
Commits on Jan 1, 2007
  1. @sebastianbergmann

    MFH: Bump year.

    sebastianbergmann committed Jan 1, 2007
Commits on Jan 4, 2006
  1. @andigutmans
Commits on Oct 28, 2005
  1. $id:$ tatgs are removed from generated files to avoid committing of Z…

    Dmitry Stogov committed Oct 28, 2005
    …end/zend_vm_opcodes.h without real changes.
Commits on Jun 16, 2005
Commits on Jun 10, 2005
  1. Fix so that extensions like xdebug, can overload opcodes in all execu…

    Dmitry Stogov committed Jun 10, 2005
    …tion modes including goto/switch
  2. Merge three opcodes (ZEND_NEW, ZEND_JMP_NO_CTOR, ZEND_INIT_CTOR) into…

    Dmitry Stogov committed Jun 10, 2005
    … one (ZEND_NEW). There was no real reason for this anymore and API should be changed before 5.1
Commits on Jan 10, 2005
  1. - Added missing header sections.

    foobar committed Jan 10, 2005
Commits on Oct 27, 2004
  1. @andigutmans

    - Oops missed this one

    andigutmans committed Oct 27, 2004
Something went wrong with that request. Please try again.