Permalink
Switch branches/tags
Nothing to show
Commits on Dec 18, 2012
  1. libxml2 2.9.0+ compat fix; xmlBuf changed to anonymous struct

    Define wrappers for accessing size/contents on older versions
    of libxml2 which match the function protos in 2.9.0 and later.
    
    Thanks to github/nareshv for finding the issue and providing a fix.
    sgolemon committed Dec 18, 2012
  2. Add a timeout to pagelet_server_task_result + fix return code

    The PHP master that calls into pagelet server currently needs to wait
    indefinitely on the worker. This adds an optional timeout parameter so that the
    PHP master can timeout after e.g. 10 seconds and log a descriptive message
    rather than dieing with the generic message of "the request timed out after 30
    seconds".
    
    There was also a bug with the return code for partial flushed responses.
    Sometimes the PHP master would receive a bogus return status like 65353. I
    traced this down to the fact that the return code was never set for partial
    responses, so it would be the initial value of `int rcode` on the stack.
    ide committed with sgolemon Nov 15, 2012
  3. Make hhvm not a hphpc-compiled script

    Separates hhvm from hphpc.  (This will mean we don't have to
    compile hphpc when iterating on VM changes, and will help for eventual
    hphpc-deprecation.)  Details:
    
       - Stubs for hphpc-externals symbols that can't yet be removed.
    
       - src/system now includes g_system_class_map, which is essentially
         what the hhvm class map contained (only system stuff, plus things
         from constants.php).
    
       - VM::ProcessInit was the only part of the runtime that depended on
         libext_hhvm---breaks that dependency using a function pointer for
         now so you can link hphp_runtime without linking ext_hhvm.
    
       - Remove dlsym usage to access compiler symbols, using function
         pointers for now too.
    jdelong committed with sgolemon Dec 14, 2012
  4. Refactor idl.php and remove some unused module features

    Crutch is long dead.
    idl/base.php hasn't supported DeclaredDynamic in some time.
    sgolemon committed Dec 17, 2012
  5. Make separate IR instructions for guard type checks

    LdLoc and LdStack, when provided a label, also do the type check, and
    that's how guards were being implemented.  Although that has the nice
    effect of hoisting the loads early in the trace, it's bad because the
    loads effectively end up as part of the guards and they execute
    redundantly when guards fail.
    
    This diff splits the checks into their own instructions, but also
    loads all the dependencies right after the guards to preserve the
    hoisting effect.
    ottoni committed with sgolemon Dec 14, 2012
Commits on Dec 17, 2012
  1. IR, stat counters for IR code

    Report dynamic counts for execution of IR translations
    mpal committed with sgolemon Dec 14, 2012
  2. Pass to the IR statically inferred types for tracelet-produced values

    Values produced by the tracelet which had their values inferred by
    static analysis were not being passed to the IR.  This was not only
    bad for performance, but it was only causing correctness issues (see
    new test, which used to fail in repo-authoritative mode).
    ottoni committed with sgolemon Dec 15, 2012
  3. class_implements should use autoload if specified

    aravind committed with sgolemon Dec 15, 2012
  4. Add fb_autoload_map

    fb_autoload_map($map, $root) specifies a mapping
    from classes, functions and constants to the files
    that define them. The map has the form:
    
      array('class'    => array('cls' => 'cls_file.php', ...),
            'function' => array('fun' => 'fun_file.php', ...),
            'constant' => array('con' => 'con_file.php', ...),
            'failure' => callable);
    
    If $root is non empty, it is prepended to every filename
    (so will typically need to end with '/').
    
    If the 'failure' element exists, it will be called if the
    lookup in the map fails, or the file cant be included. It
    takes a kind ('class', 'function' or 'constant') and the
    name of the entity we're trying to autoload.
    
    You can supply the autoload map to hphpc at compile time.
    Currently, this is just used to augment hphpc's parseOnDemand
    feature. It will use the map it to find more files to add to
    the build based on class/function and constant names used.
    This becomes necessary when all the requires are removed.
    markw65 committed with sgolemon Dec 3, 2012
  5. Trace through jumps that don't break tracelets

    This ability was added to Tx64, but not to the IR.
    It was causing the IR to end a trace prematurely.
    ottoni committed with sgolemon Dec 15, 2012
  6. Don't free VM stack for RCPRequestHandler

    For RPCRequestHandler threads, the ExecutionContext can stay alive
    across requests, and hold references to the VM stack. Make
    sure we don't free the stack from under the ExecutionContext.
    aravind committed with sgolemon Dec 14, 2012
  7. Fix order of evaluation for locals in ArrayPairExpression

    $a = 'foo';
    $a = array($a => $x[$a = 'bar']);
    
    should be equivalent to
    
    $a = array('bar' => $x['bar']);
    
    but hhvm was treating it as
    
    $a = array('foo' => $x['bar']);
    
    In production mode, some code transformations resulted in code similar to
    the above example, which hhvm then mis-interpreted.
    markw65 committed with sgolemon Dec 14, 2012
  8. Add another test for optional types

    andrewparoski committed with sgolemon Dec 14, 2012
  9. Kill CGetM_GE

    swtaarrs committed with sgolemon Dec 14, 2012
  10. Remove a couple big macros from translator-x64-vector.cpp

    Equivalent functionality is achieved with tables of member
    function pointers. This should make debugging much nicer.
    swtaarrs committed with sgolemon Dec 14, 2012
  11. Call a helper for decref'ing popped stack values (PopR/V/C)

    Call a generic decref helper for PopR/V/C. Added an additional
    helper entry point for the case where we are decref'ing TOS, which happens
    for PopR.
    ottoni committed with sgolemon Dec 14, 2012
  12. Set parent when inserting instruction into a trace

    ir.h contained an outdated and unused declaration for
    eleminateDeadCode. It has been removed.
    opt.cpp has a bug whereby an instruction is inserted into a trace, but
    the backedge (IRInstruction's m_parent) is not being correctly set to
    the trace. This has been fixed.
    Gownta committed with sgolemon Dec 14, 2012
  13. Parser/lexer refactorage

    This diff cleans up some issues in the lexer and parser with XHP tags
    and other stuff.
    andrewparoski committed with sgolemon Nov 10, 2012
  14. Emit default values for FCallBuiltin

    Add support for default values in FCallBuiltin.
    aravind committed with sgolemon Nov 30, 2012
  15. FCallBuiltin for reference return types

    Add support for builtins with return by reference.
    aravind committed with sgolemon Nov 26, 2012
  16. Clean up uses of printf without arguments.

    Gets rid of a lot of warnings in the cmake build,
    and allows us to set -Werror=format-security to catch
    potentially broken calls.  Mostly codemod changes.
    sgolemon committed Dec 13, 2012
  17. Inlined calls to native builtins in the IR.

    Inlined calls to native builtins in the IR.
    alia committed with sgolemon Dec 13, 2012
Commits on Dec 13, 2012
  1. Move prologue redispatch code to 'a'

    This code is hot, so put it in 'a' instead of 'astubs'.
    ottoni committed with sgolemon Dec 13, 2012
  2. Enable the AdminServer in config-server.hdf

    Now that the admin server isn't enabled by default, we have
    to turn it on in the config for TestServer. Also fixed up
    test_server.cpp so individual tests can be run.
    swtaarrs committed with sgolemon Dec 12, 2012
  3. Implemented call-ret support in IR.

    Implemented suport for using the ret instruction in the IR.
    alia committed with sgolemon Dec 13, 2012
  4. Changed CG_PUNT macro to print its argument.

    Change the CG_PUNT macro in codegen.cpp so that it prints its argument
    instead of its function. This allows us to get much more precise reasons
    for why codegen punted.
    alia committed with sgolemon Dec 12, 2012
  5. Add support to FPushObjMethodD for fast method lookup using known class

    FPushObjMethodD implementation in HHIR was lacking a fast-path
    implemented in TranslatorX64, namely when the base class is known.
    ottoni committed with sgolemon Dec 12, 2012
  6. Supported BareThis, IncStat, and SetOpL in the IR.

    Added HHIR support for 3 bytecodes, IncStat, SetOpL, and BareThis.
    These showed up among the top reasons the IR punts in a sandbox run.
    alia committed with sgolemon Dec 11, 2012
  7. NewTuple IR implementation

    Add support for NewTuple.  The new_tuple helper function needs
    the count and values passed to it on the stack, which is like
    a call instruction but unlike most other IR instructions.
    edwinsmith committed with sgolemon Dec 10, 2012
  8. Turn on CGetM type prediction.

    This diff enables the dormant CGetM type prediction code.
    This affects tracelet geometry, sometimes making the trace guards explode.
    To compensate, I appear to need two new heuristics:
    1. give up on type prediction if we're in a polymorphic trace
    2. don't inline returns in polymorphic traces.
    
    These two heuristics use different tracelet depths to kick in;
    an exhaustive search of an 8x8 matrix of parameters suggests (2,6)
    is the right setting for now.
    kma committed with sgolemon Dec 6, 2012
  9. Some refactoring to get rid of bogus KindOf*.

    Let's try to keep internal bits out of DataType. This
    was an easy first step; I'll go after the other TypeCheck ones in
    a follow-on diff.
    kma committed with sgolemon Dec 10, 2012