Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Commits on Jun 17, 2011
  1. Regenerate system

    root authored
Commits on Jun 16, 2011
  1. @evoloshchuk

    Add support for new PHP 5.3 datetime functions

    authored evoloshchuk committed
    This adds the implementation of a bunch of new datetime functions
    introduced with PHP 5.3.
  2. @evoloshchuk

    Update timelib to the version in PHP 5.3.5

    authored evoloshchuk committed
  3. @evoloshchuk

    Allow logging using syslog

    authored evoloshchuk committed
    This adds an option to enable logging using syslog. In order to pass
    the correct priority to syslog, the log level is now passed across the
    various log functions.
  4. @evoloshchuk

    Add missing check for NULL in VariableTable::getVariablePrefix

    authored evoloshchuk committed
    The last 'if' in the method didn't check for 'sym' being set.
  5. @evoloshchuk

    Work-around GCC compiler bug

    authored evoloshchuk committed
    The same problem described in a previous patch
    3610aa4 has been observed in the new
    ObjectAllocatorInitSetup<T> function and how it calls
    set<...>.insert(). Like in the previous case, there are situations
    where the caller thinks the insert() function has been applied the
    return value optimization, and so it passes as the first parameter the
    address of where it wants the return value to be stored. The function
    itself is instead not expecting any additional return value parameter,
    and thus uses all the parameters incorrectly causing seg faults or
    incorrect behaviors. See the description of the other patch for some
    more information.
    
    This patch moves the insert function call outside of the function
    template, which seems effective at working around the problem.
  6. @evoloshchuk

    Fix PID file race condition

    authored evoloshchuk committed
    There is a slight race condition regarding the creation/removal of the
    PID file when a new hiphop instance is started using the takeover
    functionality. In particular in certain cases it's possible that the
    old instance removes the PID file after the new instance has already
    created the new PID file. In this case the old instance will actually
    remove the PID file of the new instance, resulting in a situation where
    Hiphop is running but there's no PID file on the file system.
    
    This fixes the problem by removing the PID file synchronously before
    the new instance creates the new PID file.
  7. @evoloshchuk

    Don't remove blank text elements in the soap extension

    authored evoloshchuk committed
    The soap extension assumes that text elements containing only
    whitespaces in the response are insignificant and removes them before
    converting the xml into a php representation. This assumption is not
    correct in general, for example in case a cryptographic signature must
    be generated based on the content of the text elements.
    
    In general situations where blank text elements are indeed
    insignificant can be specified in the wsdl by using xsd:token instead
    of xsd:string for the type of the text element. These cases are already
    correctly handled in the extension and the whitespace is trimmed later
    on in the flow.
    
    This patch adds a parameter in the functions used to load an xml
    document inside the soap extension to specify whether to remove blank
    text elements or not. Removal of these elements is then disabled for
    general soap requests/response parsing, but left enabled for
    wsdl/schema parsing because of other code relying on it.
  8. @evoloshchuk

    Decode single quote html entity

    authored evoloshchuk committed
    The single quote entity &#39; is never decoded if the charset is
    latin-1 or some other variants. This fixes the problem. The parameter
    $quote_style is left unsupported and it always behaves as if ENT_QUOTES
    had been specified.
  9. @evoloshchuk

    Use better escaping for identifiers.

    authored evoloshchuk committed
    There are currently a few different implementations of string escaping
    with the purpose of generating valid C++ identifiers, which are used in
    different places. Some of them don't correctly escape all the
    characters which are invalid in identifiers, and can also generate the
    same identifier out of different original strings, which could result
    in collisions. For example these problems affect the compiled templates
    generated by Smarty, which use characters like % or ^ in the filenames.
    
    The best implementation for identifier escaping seems to be
    CodeGenerator::formatLabel. This patch extracts that function to Util
    and removes the other implementations. To improve readability, some
    shorter escape codes have also been introduced for common characters
    (for example "." -> "$_"). The patch also removes the LabelEscape
    option for simplicity and correctness, since guaranteeing that no
    collisions are possible becomes more complicated if the escaping string
    is not fixed in advance.
  10. @evoloshchuk

    Fix array_keys($array, null) to make it equivalent to PHP.

    authored evoloshchuk committed
    Currently in Hiphop "array_keys($data)" and "array_keys($data, null)"
    are equivalent, as the optional second parameter has a default value of
    null. In PHP instead they are different, with the second one in
    particular returning only the keys from $data where the corresponding
    value is null.
    
    The following patch adds a special "not_given_variant" global variable
    which can be used to distinguish the case where a parameter is provided
    with the value null from the case where no parameter is provided at
    all.
  11. @scottmac

    Fix compile error when class includes method called Dummy

    scottmac authored
    Summary:
    Not sure if we should rename our functions but this work saround the issue.
    
    Prefixing the class name rather than relying on inheritance.
    
    Test Plan:
    fast_tests
    slow_tests
    
    Compiled
    <?php
    
    class Foo {
      public function Dummy() {}
    }
    
    Reviewed By: myang
    Reviewers: mwilliams, myang
    CC: ps, mwilliams, myang
    Revert Plan:
    Ok
    
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 267381
  12. @stephentu @scottmac

    [Perf] o_realProp for objects now uses static strings in the jump tables

    stephentu authored scottmac committed
    Summary:
    Dynamic object property lookup now benefits from static
    strings in hash table lookups.
    
    Test Plan:
    slow_tests
    
    Reviewed By: myang
    Reviewers: myang, qigao
    CC: ps, mwilliams, stephentu, myang
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 268076
  13. @mxw @scottmac

    Added toString() and getStringData() to VRefParam for tainting support

    mxw authored scottmac committed
    Summary:
    - see title; the switchover from Variants to VRefParams dropped those two
      functions on which tainting depended
    
    Test Plan:
    - compiles; fast_tests, slow_tests
    - nothing calls these methods but tainting and tainting works again
    
    Reviewed By: myang
    Reviewers: mwilliams, myang
    Commenters: amenghra, mwilliams
    CC: srenfro, amenghra, ps, mwilliams, mwang, myang
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 267750
  14. @paroski @scottmac

    Fix bug in hphp_get_iterator

    paroski authored scottmac committed
    Summary:
    hphp_get_iterator() was returning null when its parameter was something
    other than an array or an object. This had the unfortunate consequence
    of causing a fatal to be thrown if user code tried to call next() on the
    value returned by hphp_get_iterator(). Example:
    
      for ($__foreach__1 = hphp_get_iterator($foo);
           $__foreach__1->valid();
           $__foreach__1->next()) {
        // ...
      }
    
    This is causing problems for yield generators. A normal "foreach" loop
    in the body of a yield generator gets transformed into something like the
    loop given in the example above, and it will improperly fatal if the value
    being iterated over is not an array or object.
    
    This diff fixes the issue and adds a new test to test_code_run.cpp.
    
    Test Plan:
    make fast_tests
    
    Reviewed By: je
    Reviewers: je, myang, qigao
    CC: ps, mwilliams, je, andrewparoski
    Differential Revision: 267864
  15. @scottmac

    [Fix] Remove invalid assertion

    myang authored scottmac committed
    Summary:
    I removed an invalid assertion that can fail when buildling www.
    
    Test Plan:
    make fast_tests
    
    Reviewed By: qigao
    Reviewers: qigao, stephentu
    CC: hphp-diffs@lists, ps, mwilliams, qigao
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 267795
  16. @scottmac

    [Fix] Removing extra leading slashes in Transport::getServerObject

    myang authored scottmac committed
    Summary:
    For a request with leading slashes, HPHP does not trim the extra leading
    slashes. This caused problem when sending back the redirection as the
    extra leading slashes were kept which can be misinterpreted by the client.
    For example, //help/bar is an absolute URI with an implicit scheme to host
    'help' and path '/bar', not a relative URI to path '//help/bar'. However,
    HPHP meant to send back a relative URI /help/bar.
    
    Fixed by removing extra leading slashes and leave only one.
    
    Test Plan:
    make fast_tests
    
    Reviewed By: qigao
    Reviewers: qigao
    Commenters: srenfro
    CC: hphp-diffs@lists, ps, mwilliams, myang, srenfro, qigao
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 267449
  17. @stephentu @scottmac

    Revert "[Perf] Improve code generated for runtime type-casting"

    stephentu authored scottmac committed
    This reverts commit d8a62fb55dbf82fea08d5c17682f2096fdbc65fd.
  18. @paroski @scottmac

    Reduce dependencies on generated files

    paroski authored scottmac committed
    Summary:
    This revision continues to make progress in removing dependencies on the
    generated files from the HPHP runtime.
    
    Some classes defined in runtime/ext (DOMException, PDOException, SoapFault)
    were deriving from c_Exception, which is defined in the generated files. To
    get rid of this dependency, these classes were moved to system/classes.
    
    Along the way, I was able to update the SoapFault class to more closely
    match Zend. Before, the fields in SoapFault were not visible to user code.
    After this change, these fields are now visible and accessible as in Zend.
    
    Test Plan:
    fast_tests
    slow_tests
    
    Reviewed By: je
    Reviewers: je, kma, mwilliams, qigao, myang
    CC: ps, mwilliams, andrewparoski, je
    Differential Revision: 266060
  19. @stephentu @scottmac

    [Perf] Improve code generated for runtime type-casting

    stephentu authored scottmac committed
    Summary:
    This commit attempts to improve the code generated for type casting in
    two ways.
    
    First, it cleans up the ambiguous use of expected type in
    Expression.cpp- if the type is set, then the type of the expression must
    be converted (if necessary) to that type (which is same as the old
    meaning). However, if the type is set, it now means that no type
    conversion is necessary, where before the meaning was either (1) actual
    type and expected type are the same, or (2) no type conversion is
    necessary. Doing so allows us to distinguish when we can safely omit a
    cast.
    
    Second, it adds a full set of "fast cast" methods to variant, and
    adds the necessary code generation to take advantage of the
    fast casting method wherever possible.
    
    Reviewed By: myang
    Reviewers: mwilliams, myang, qigao
    Commenters: mwilliams
    CC: ps, mwilliams, stephentu, myang
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 265917
  20. @scottmac

    fix typo in ElmIndTombstone

    aravind authored scottmac committed
    Summary:
    ElmIndOfTombstone -> ElmIndTombstone
    
    Reviewers: kma, je, andrewparoski, oyamauchi
    
    Revert: OK
  21. @scottmac

    Fix HphpArray copy bug

    aravind authored scottmac committed
    Summary:
    When KindOfIndirect elements are deleted from an HphpArray, the
    element entry itself is not removed from the array, instead its data
    is decRefed and the data is marked as KindOfUninit.
    
    Later, when this HphpArray is copied, we do not copy the "stale"
    KindOfIndirect elements. Instead we create KindOfTombstone elements
    in the target array. This had a bug in that the target HphpArray
    hash table is copied verbatim from the source, and its hash index
    was not being updated to denote that the element is now
    KindOfTombstone.
    
    This was causing an assert failure for home.php when we try
    to set the array element.
    
    Reviewed By: andrewparoski
    Reviewers: kma, je, andrewparoski, oyamauchi
    CC: tnovak, ps, mwilliams, andrewparoski, aravind
    Revert Plan:
    OK
    
    Differential Revision: 267294
  22. @pgriess @scottmac

    Create and expose fb_curl_getopt() API.

    pgriess authored scottmac committed
    Summary:
    - Track map of option IDs to Variant values in CurlResource::ToFree
      whenever something changes via setOption(); add
      CurlResource::getOption() to access these.
    - Add and expose fb_curl_getopt() API to PHP runtime.
    
    Test Plan:
    - Ran 'hphpi --mode debug' and verified expected behavior in the
      following scenarios: fb_curl_getopt() with 0 params, 1 param of
      correct and incorrect types and 2 params. Ran with empty and non-empty
      CURL handles.
    - Wrote test script to curl_init(), set a bunch of options, curl_exec()
      and then curl_getopt(). Verify that RSS footprint is constant over the
      lifetime of 10k reqs.
    
    Reviewed By: macvicar
    Reviewers: ps, macvicar
    CC: doug, ps, mwilliams, macvicar
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 265856
  23. @scottmac

    [Fix] Fix xbox wrong return type bug

    myang authored scottmac committed
    Summary:
    Xbox uses rpc request handler as the mechanism to call a function. The return
    value is serialized using json_encode and unserialized with json_decode.
    When the return value is an array, json_encode turns the array into an object.
    For example:
    [] cat j.php
    <?php
    $arr = array('squared' => 16, 'doubled' => 8);
    var_dump($arr);
    $respnose = json_encode($arr);
    $var = json_decode($respnose);
    var_dump($var);
    [] php j.php
    array(2) {
      ["squared"]=>
      int(16)
      ["doubled"]=>
      int(8)
    }
    object(stdClass)#1 (2) {
      ["squared"]=>
      int(16)
      ["doubled"]=>
      int(8)
    }
    
    I made a change so that for xbox, we use serialize/unserialize instead of
    json_encode/json_decode, this is done so that it will not affect current RPC
    processing if there is any dependency on the usage of json_encode/json_decode.
    
    Test Plan:
    make fast_tests
    
    [] cat t1.php
    <?php
    function bar($p) {
      $squared = $p * $p;
      $doubled = 2 * $p;
    
      return compact("squared", "doubled");
    }
    
    [] cat t.php
    <?php
    
    function local_bar($p) {
      $squared = $p * $p;
      $doubled = 2 * $p;
    
      return compact("squared", "doubled");
    }
    
    function foo() {
    $handle = fb_call_user_func_async("bar", 4); while (true) { $r =
    fb_check_user_func_async($handle);
    if ($r === true) {
    break;
    }
    echo "waiting\n";
    sleep(1);
    }
    $r = fb_end_user_func_async($handle);
    var_dump($r);
    var_dump(local_bar(4));
    var_dump(call_user_func('local_bar',4));
    }
    foo();
    
    [] hphpi/hphpi --file t.php -v Xbox.ServerInfo.ThreadCount=30 -v
    Xbox.ProcessMessageFunc=fb_xbox_call_proxy -v Server.SourceRoot=`pwd` -v
    Xbox.ServerInfo.RequestInitDocument=t1.php
    xbox server started
    waiting
    creating new RPC request handler
    array(2) {
      ["squared"]=>
      int(16)
      ["doubled"]=>
      int(8)
    }
    array(2) {
      ["squared"]=>
      int(16)
      ["doubled"]=>
      int(8)
    }
    array(2) {
      ["squared"]=>
      int(16)
      ["doubled"]=>
      int(8)
    }
    
    Reviewed By: qigao
    Reviewers: qigao
    CC: hphp-diffs@lists, ps, mwilliams, qigao
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 267091
  24. @stephentu @scottmac

    [Perf] Improve object construction by using object constructors

    stephentu authored scottmac committed
    Summary:
    Previous, code gen was not using a class's constructor to do any
    initialization, but instead handling it via a separate init() method.
    This commit uses the class's constructors to initialize both Variant
    members to null, and primitive members. For classes which do not
    require an init() method, no such init() method is defined, reducing
    code size.
    
    Furthermore, for classes which do not define constructors, do not
    inherit from any other class, and do not require any initialization
    in an init() method, create() is not called on the class to reduce
    construction time.
    
    A simple microbenchmark shows an improvement for this approach:
    
    Code:
      <?php
    
      class X {
        private $x, $y = null;
        public function f() {}
      }
    
      for ($i = 0; $i < 10000000; $i++) {
        $x = new X;
        $x->f();
        unset($x);
      }
    
    Old:
      $ time ./program
    
      real    0m0.915s
      user    0m0.882s
      sys     0m0.035s
    
    New:
      $ time ./program
    
      real    0m0.700s
      user    0m0.670s
      sys     0m0.031s
    
    Test Plan:
    slow_tests
    
    Reviewed By: myang
    Reviewers: myang, qigao
    Commenters: qigao
    CC: cbueno, ps, mwilliams, stephentu, qigao, myang
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 266699
Commits on Jun 15, 2011
  1. @scottmac

    [Perf] array_create improvement

    myang authored scottmac committed
    Summary:
    I made changes wrap params to toVPOD in VarNR where appropriate. For example
    v_a = Array(array_createvs(1, toSPOD(NAMSTR(s_ssf733da8f, "foo")),
    toVPOD(VarNR(v_b))));
    I tried to use ArrayData::Create instead of array_createvi or array_createvs
    when there is only a single element, but my micro benchmark showed the latter
    is still about 4~5% faster.
    
    Test Plan:
    make fast_tests
    make slow_tests
    micro benchmark (about 2~3% faster using VarNR to avoid the Variant destructor)
    <?php
    function foo($p) {
      $b = $p . $p;
      for ($i = 0; $i < 1000000; $i++) {
        $a = array('foo' => $b);
      }
      return $a;
    }
    foo('foo');
    
    Reviewed By: qigao
    Reviewers: qigao, mwilliams
    CC: hphp-diffs@lists, ps, mwilliams, qigao
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 266528
  2. @scottmac

    [Fix] Fix wrong file and line number in warning message

    myang authored scottmac committed
    Summary:
    The HPHPi parser can raise a warning message which shows wrong file and
    line number. I added Parser::warning and put a ParserFrameInjection to
    set the correct file and line number.
    I also made a change to let HPHPi match PHP behavior.
    
    Test Plan:
    make fast_tests
    
    cat /tmp/b.php
    <?php
    function foo() {
      $numargs = func_num_args();
      echo "Number of arguments: $numargs\n";
      $arg_list = func_get_args();
      for ($i = 0; $i < $numargs; $i++) {
        echo "Argument $i is: " . $arg_list[$i] . "\n";
      }
    }
    
    $a = func_get_arg(0); //should raise warning
    var_dump($a);
    $a = func_num_args(); //should raise warning
    var_dump($a);
    $a = func_get_args(); //should raise warning
    var_dump($a);
    foo(1, 2, 3); //should execute with no problems
    [] cat /tmp/b1.php
    <?php
    function bar() {
      include_once('b.php');
    }
    bar();
    [] hphpi/hphpi /tmp/b.php
    HipHop Warning:  func_get_arg called from the global scope, no function context
    in /tmp/b.php on line 11
    HipHop Warning:  func_num_args called from the global scope, no function
    context in /tmp/b.php on line 13
    HipHop Warning:  func_get_args called from the global scope, no function
    context in /tmp/b.php on line 15
    bool(false)
    int(-1)
    bool(false)
    Number of arguments: 3
    Argument 0 is: 1
    Argument 1 is: 2
    Argument 2 is: 3
    [] hphpi/hphpi -f /tmp/b.php
    HipHop Warning:  func_get_arg called from the global scope, no function context
    in /tmp/b.php on line 11
    HipHop Warning:  func_num_args called from the global scope, no function
    context in /tmp/b.php on line 13
    HipHop Warning:  func_get_args called from the global scope, no function
    context in /tmp/b.php on line 15
    bool(false)
    int(-1)
    bool(false)
    Number of arguments: 3
    Argument 0 is: 1
    Argument 1 is: 2
    Argument 2 is: 3
    [] hphpi/hphpi /tmp/b1.php
    HipHop Warning:  func_get_arg called from the global scope, no function context
    in /tmp/b.php on line 11
    HipHop Warning:  func_num_args called from the global scope, no function
    context in /tmp/b.php on line 13
    HipHop Warning:  func_get_args called from the global scope, no function
    context in /tmp/b.php on line 15
    bool(false)
    int(0)
    array(0) {
    }
    Number of arguments: 3
    Argument 0 is: 1
    Argument 1 is: 2
    Argument 2 is: 3
    [] hphpi/hphpi -f /tmp/b1.php
    HipHop Warning:  func_get_arg called from the global scope, no function context
    in /tmp/b.php on line 11
    HipHop Warning:  func_num_args called from the global scope, no function
    context in /tmp/b.php on line 13
    HipHop Warning:  func_get_args called from the global scope, no function
    context in /tmp/b.php on line 15
    bool(false)
    int(0)
    array(0) {
    }
    Number of arguments: 3
    Argument 0 is: 1
    Argument 1 is: 2
    Argument 2 is: 3
    
    Reviewed By: qigao
    Reviewers: qigao, mwilliams
    CC: hphp-diffs@lists, ps, mwilliams, qigao
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 266841
  3. @scottmac

    [Perf] Remove unused parameter from ArrayInit constructor

    myang authored scottmac committed
    Summary:
    The isVector parameter might be used at one point but it is no longer
    used. I removed it to cut some argument passing cost and also reduce
    the code size slightly.
    
    Test Plan:
    make fast_tests
    make slow_tests
    
    Reviewed By: qigao
    Reviewers: qigao, mwilliams
    CC: hphp-diffs@lists, mpal, ps, mwilliams, myang, qigao
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 266127
Commits on Jun 13, 2011
  1. @paroski @scottmac

    Add logging to RpcRequestHandler

    paroski authored scottmac committed
    Summary:
    This revision changes RpcRequestHandler to write log messages to the same
    log as HttpRequestHandler.
    
    Test Plan:
    make fast_tests
    test/test TestServer
    
    Reviewed By: mwilliams
    Reviewers: hzhao, mwilliams, myang, qigao
    CC: ps, mwilliams, andrewparoski
    Differential Revision: 264902
  2. @markw65 @scottmac

    [Perf] Fixes for live-range

    markw65 authored scottmac committed
    Summary:
    Live range analysis didnt take account of closure variables. Also fix some
    issues where inPseudoMain was checked before testing for a hidden variable,
    disabling some optimizations that should have happened. And fix some of the
    rules for deleting variables.
    
    Test Plan:
    fast_tests slow_tests
    
    Reviewed By: myang
    Reviewers: myang, qigao, stephentu
    CC: ps, mwilliams, myang
    Revert Plan:
    Tags:
    
    Differential Revision: 265657
  3. @scottmac

    [Feature] Better debugger message

    myang authored scottmac committed
    Summary:
    Hphpd needs better error message for functions that fail because you need to
    be connected to a host
    
    Test Plan:
    make fast_tests
    look at the message in hphpd
    
    Reviewed By: qigao
    Reviewers: qigao, mwilliams
    CC: hphp-diffs@lists, ps, mwilliams, myang, qigao
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 265559
  4. @scottmac

    Better REGEXERR debug message

    myang authored scottmac committed
    Summary:
    Added the name of the pcre error code to make it easier to see what does the
    error mean.
    
    Test Plan:
    make fast_tests
    see the better error message
    
    Reviewed By: andrewparoski
    Reviewers: andrewparoski
    CC: hphp-diffs@lists, ps, mwilliams, andrewparoski
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 265570
  5. @markw65 @scottmac

    [Fix] Misc fixes for higher levels of optimization

    markw65 authored scottmac committed
    Summary:
    - inlining could result in uncompilable code due to const references being used
    where non-const references were needed
     - the control flow graph wasnt quite right for foreach loops with no
    fallthrough to the tail of the loop
     - copy propagation could set some canonPtrs that would then confuse cse, and
    crash hphp.
    
    Test Plan:
    fast_tests slow_tests
    
    Reviewed By: stephentu
    Reviewers: qigao, myang, stephentu
    CC: ps, mwilliams, stephentu
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 265012
  6. @scottmac

    [Fix] hphpd doesn't step when all breakpoints are cleared

    qigao authored scottmac committed
    Summary:
    having breakpoints or signal was the precondition to check
    interrupt, adding flow control to that condition.
    
    Test Plan:
    use hphpd to execute debug a file, break on a line, remove the
    breakpoint, and step
    
    Reviewed By: myang
    Reviewers: myang, mwilliams
    Commenters: mwilliams
    CC: achao, ps, mwilliams, myang, qigao
    Revert Plan:
    Tags:
    
    - begin *PUBLIC* platform impact section -
    Bugzilla: #
    - end platform impact -
    
    Differential Revision: 264362
Something went wrong with that request. Please try again.