Permalink
Switch branches/tags
Nothing to show
Commits on Dec 8, 2012
  1. Make Translator sizes configurable

    sgolemon committed Dec 8, 2012
    Eval {
      JitASize = 512 << 20 # 512MB
      JitAStubsSize = 512 << 20 # 512MB
      JitGlobalDataSize = JitASize >> 2 # 128MB
    }
  2. Fix changes to job_queue.h for hphpc

    jdelong committed with sgolemon Dec 7, 2012
    An if (hhvm) was left out.
  3. Delete unused continuation-related IR opcodes

    oyamauchi committed with sgolemon Dec 7, 2012
    This happened as a byproduct of my work to reimplement continuation support in
    the IR. I'm putting it up as a separate diff to keep the others simple.
  4. Add an environment variable to disassemble with AT&T syntax

    swtaarrs committed with sgolemon Dec 7, 2012
    Setting HHVM_ATT_DISAS before running hhvm or tc-print will
    result in any disassembled instructions being printed with AT&T
    syntax. The default is still Intel.
  5. One less instruction for virtual calls

    edwinsmith committed with sgolemon Dec 7, 2012
    When doing a virtual call using a vtable, use call offset[vtbl_ptr],
    which saves one instruction.
Commits on Dec 7, 2012
  1. Don't emit metainfo for Iter(Init|Next)* instructions

    swtaarrs committed with sgolemon Dec 6, 2012
    These are the only instructions that take two HA immediates
    and the emitter is not set up to handle that. In the IterInit* case,
    it was causing failed ASSERTs in the translator due to misnumbered
    metainfo.
  2. Use appendWithRef instead of nvAppendWithRef

    edwinsmith committed with sgolemon Dec 6, 2012
    The dedicated function for HphpArray doesn't pay for itself
    so replace it with a call to ArrayData::appendWithRef instead.
    If this path were hot enough, a dedicated HphpArray constructor
    would be best.
  3. Cleanup: Use decRefStr instead of the manually inlined equivalent

    edwinsmith committed with sgolemon Dec 6, 2012
    This just factors the common pattern of decref & release of a StringData
    into a helper function.
  4. Make callUnaryStub not trash r10 if it doesn't need to

    jdelong committed with sgolemon Dec 7, 2012
    When calling a stub that is also inside a/astubs, we
    shouldn't need to load the address into r10 first.  Also modifies
    Stats::emitInc to preserve rScratch.  This should fix TRACE=stats:1.
  5. Remove unused Variant::getDebugDump

    jdelong committed with sgolemon Dec 7, 2012
    This doesn't do much and we can use TypedValue::pretty()
    instead.
  6. Don't include Nopped instructions in the stream after a failed IR tra…

    swtaarrs committed with sgolemon Dec 6, 2012
    …nslation
    
    I missed this use of RuntimeOption::EvalJitIR
  7. Add some assembler unit tests

    jdelong committed with sgolemon Nov 30, 2012
    Tries assembling a bunch of things and makes sure we get the
    expected string back from disassembling it with objdump.
  8. Move asm-x64.h to util/

    jdelong committed with sgolemon Nov 30, 2012
    I want to write a unit test for codgen, and this file doesn't
    really depend on anything VM-specific.
  9. Make make -j -C src/util work.

    jdelong committed with sgolemon Nov 29, 2012
    This makes it possible to do make -j -C src/util if you just
    want to build util.
  10. Remove SA_INC_GEN from build process

    jdelong committed with sgolemon Nov 29, 2012
    We don't need this anymore because there are no longer
    extensions that add smart allocator types.  This also makes it
    possible to make -C src/compiler again.
  11. Make src/util/parser not depend on src/runtime

    jdelong committed with sgolemon Nov 29, 2012
    The parser only needed string_md5 from zend, which also
    requires a few other things.  I pulled a few related zend functions to
    util/zend (ideally we'd pull everything that doesn't use runtime/, but
    no need to get carried away).  After this (and the other diffs), the
    only dependency from util to runtime is compiler_id.h.
  12. Move segfault handler out of src/util

    jdelong committed with sgolemon Nov 29, 2012
    StackTrace (and Logger via it) only depended on the world
    because of the seg fault handler code importing execution_context.
    Move this to runtime/base (it seems more logical to not have it part
    of the StackTrace lib anyway).
  13. Make util/job_queue.h not depend on bytecode.h

    jdelong committed with sgolemon Nov 29, 2012
    It would probably be cleaner if most of the drop-stack
    machinery was moved into a policy, but for now this just moves the
    part that is VM-specific out so we don't need to depend on bytecode.h.
    Only hooks up the servery ones to do a drop on the VM stack (I don't
    think the workers in the compiler should need this?).
  14. A few steps toward making src/util not depend on anything

    jdelong committed with sgolemon Nov 29, 2012
    It looks like the main pain if we want a libutil.a is Logger,
    which depends on StackTrace, which depends on execution context, which
    depends on everything.  JobQueue also needs to call VM::Stack::flush
    right now (separate diff), and the parser probably would need to be
    pulled out of util/.  This diff just does the remaining easier things:
    
      - put TypedValue::pretty outside of trace.cpp
      - ringbuffer/pathtrack didn't really need to include asm-x64.h
      - move stat_cache (uses VM::Transl and some other things) to runtime/base
      - move hardware_counter (VM::Transl and complex_types.h) to runtime/base
  15. Cleanup array_setm helper code

    edwinsmith committed with sgolemon Dec 4, 2012
    With nvSet(int,int) out of the way, we don't need as much templated
    code.
  16. Simplify nvAppend

    edwinsmith committed with sgolemon Dec 6, 2012
    HphpArray::nvAppend is semanticly equivalent to ArrayData::append.
    All call sites but one were passing copy=false with a guaranteed HphpArray,
    except one, which is cleaner as a call to ArrayData::append anyway.
Commits on Dec 6, 2012
  1. Use findForNewInsert in HphpArray::add, and other tweaks

    edwinsmith committed with sgolemon Nov 7, 2012
    Firstly, the ArrayData add() method is only legal when the key
    does not exist, so we can use the fast findForNewInsert method
    when adding strings to an array.  (We already assert on dups).
    
    Second, if we assume most find() operations on strings (for
    get access) find the string on the first probe, then it makes
    sense to do the string-equal check first, before the empty-pos
    check.
  2. Add support for BC mappings, translation counters, and add new kind f…

    ottoni committed with sgolemon Dec 4, 2012
    …or IR-based translations in TC dumps
Commits on Dec 5, 2012
  1. Smarten up type calculus of Cont* instructions

    oyamauchi committed with sgolemon Dec 4, 2012
    - We know the type of local 0 for all Cont* instructions inside generator
      bodies: it's an object. We don't need to guard on it. I removed the typehint
      (normally added by the parser) because it results in a useless VerifyParamType
      (which results in a tracelet guard). Theoretically we should be able to derive
      the information I added in MetaInfo from the typehint, but that's for another
      day.
    
    - PackCont and UnpackCont don't touch locals anymore.
  2. Re-analyze tracelets when IR translation fails

    swtaarrs committed with sgolemon Dec 4, 2012
    When Translator::analyze runs with the IR enabled, it skips
    most optimizations. This is what we want to keep the instruction
    stream clean for the IR, but if it has to pass the tracelet back to
    TranslatorX64 for translation, the resulting code will be missing all
    the optimizations that analyze would've done. Now we re-analyze the
    tracelet with m_useHHIR == false if the IR translation fails.
  3. Relax guards for CGetL, RetC, RetV

    ottoni committed with sgolemon Nov 12, 2012
    Use guard relaxation for CGetL, RetC, and RetV.
    
    This diff also changes the DataType numbers to give one bit for each
    type (with the exception of KindOfUninit, which is still 0).  This
    enables a more efficient check in some cases, such as "uncounted but
    not uninit", which is used for CGetL.
  4. Don't guard on KindOfClass.

    kma committed with sgolemon Dec 5, 2012
    The stack slots that hold a KindOfClass are a verifiable
    static property. Don't guard on them.
  5. Refactored LdRaw/StRaw to support 4-byte loads for Strlen and fixed a…

    alia committed with sgolemon Nov 28, 2012
    … Strlen bug.
    
    Changed LdRaw/StRaw to take an enum specifying the field accessed
    by the Ld/St instead of an offset. Introduced a new class, RawMemSlot that
    specifies the type, size, and offset of each field accessed by LdRaw/StRaw.
    Fixed a missing evaluation stack bug in Strlen. Fixed bug in encoding of int3
    in asm-x64.h. Fixed bug in rematerialization of LdLoc.
  6. Skip ActRec for builtins

    aravind committed with sgolemon Dec 3, 2012
    A number of builtins needs to access the ActRec of the calling
    function in order to get context information (this, context
    class, etc). Currently they do so by explicitly skipping over
    the builtin's ActRec. However, when calling builtins with
    FCallBuiltin, there is no builtin ActRec, and these builtins
    must be marked with the "NeedsActRec" flag.
    
    This diff eliminates the explicit skip step, and changes it so
    that the innermost ActRec is automatically skipped if it is
    the builtin's ActRec. With this change, fewer builtin's need to
    have the NeedsActRec flag.
  7. Fix TestDebugger-WebRequest

    markw65 committed with sgolemon Dec 4, 2012
    Fix the config file so it picks up the user name.