Permalink
Switch branches/tags
Commits on Oct 17, 2018
  1. Merge pull request #984 from MoarVM/faster-Int-str

    zoffixznet committed Oct 17, 2018
    Make big Int stringification 1.58x as fast
Commits on Oct 16, 2018
  1. Clamp the value before we count its digits

    zoffixznet committed Oct 16, 2018
  2. Make big Int stringification 1.58x as fast

    zoffixznet committed Oct 16, 2018
    For Ints larger than 2⁶⁰ and only in base-10.
    
    We do it by reducing the value by largest 10**n number that
    fits into a single mp_digit and doing so until our remaining
    number fits into a single mp_digit, at which point we continue
    using the traditional algo.
    
    The reason we go for mp_digit-sized divisor is because we can use
    mp_div_d routine with it. I also tried using mp_div with an even
    larger divisor, but that made things a lot slower than original.
    
    The only modification to libtommath routine is the code inside
    unsure if this is a decent way to do this sort of thing.
    
    Perf measurements with this commit:
    
    Measured with `say now - ENTER now` using the mean of three samples for each measurement.
    
    |Number     | Old (s)      | New (s)      | Speedup
    |-----------|--------------|--------------|-------------------
    |10         | 1.4140471567 | 1.3842983    | noise (optimized codepath doesn't run for this case)
    |10**10     | 1.16266601   | 1.1660879367 | noise (optimized codepath doesn't run for this case)
    |2**64      | 5.0117614633 | 3.1652399633 | 1.58x as fast
    |10**1000   | 2.17431698   | 1.2189989967 | 1.78x as fast
    |10**100000 | 8.44483905   | 4.73683458   | 1.78x as fast
    |10**200000 | 34.10054     | 18.62298607  | 1.83x as fast (took only 1 sample of each measurement)
  3. [JIT] Make jit-bisect.pl work in the new world order (spesh log)

    bdw committed Oct 16, 2018
    I still want the jit sequence number for uniquely identifying frames,
    but it makes no sense to have them separate from the spesh sequence
    number. This also fixes jit-bisect.pl to use the spesh log.
Commits on Oct 15, 2018
  1. [JIT] Initialize sequence number early

    bdw committed Oct 15, 2018
    So that if we destroy the code early, we can use it correctly.
  2. [JIT] Be more silent about internal failures

    bdw committed Oct 15, 2018
    Loudly complaining about internal failures tends to upset some people.
Commits on Oct 6, 2018
  1. Remove exprjit shift operations for now

    jstuder-gh authored and bdw committed Oct 6, 2018
    See [Github Issue #981](#981)
Commits on Oct 3, 2018
  1. Merge remote-tracking branch 'jstuder/exprjit_shift_ops'

    bdw committed Oct 3, 2018
Commits on Oct 2, 2018
  1. [JIT] Do not skip adding labels to PHI nodes

    bdw committed Oct 2, 2018
    In some circumstances, apparently we can end up with PHI nodes with
    labels on them that are not at the start of the tree. These labels
    would be allocated but not emitted, which would (in this case) lead to
    incorrect exception handler bounds.
    
    DynASM reported this but this (exceptional and very wrong) condition
    was previously being logged only to the JIT log, where nobody ever saw
    it. When I changed it to stderr, reports came in, and now it's fixed.
  2. Fix compiler stub test in call optimization

    jnthn committed Oct 2, 2018
    So we bail out if we see one. Otherwise, we can end up with the high
    level code object being used with a fastinvoke, which expects a low
    level code object, and then explodes.
  3. Fix a leak in spesh plugin optimization

    jnthn committed Oct 2, 2018
Commits on Oct 1, 2018
  1. Merge pull request #978 from MoarVM/Unicode-11.0

    samcv committed Oct 1, 2018
    Update Unicode to 11.0 and update grapheme break rules
  2. Update Unicode Collation data to UCA 11.0

    samcv committed Oct 1, 2018
  3. Update Unicode to 11.0 and update grapheme break rules

    samcv committed Oct 1, 2018
    Update to the 11.0 version of the Unicode database. Get rid of multiple
    old rules using now obsolete Emoji rules/guidelines for favor of the new
    Extended_Pictographic property. We don't pass three of the Unicode
    grapheme break tests 11.0, though this is about where we were for the
    Unicode 10.0 tests and is acceptable enough to change versions.
Commits on Sep 30, 2018
  1. Update JIT docs to include new ops

    jstuder-gh committed Sep 30, 2018
    Adds the shift ops and scast/ucast. Reformats table as well.
  2. Fix some printf format type specifiers

    samcv committed Sep 30, 2018
    Fix two in main.c that were causing warnings on clang. Fix some others
    that were not giving warnings, but should have been specified as
    unsigned, though they should never become big enough for that to
    actually matter.
  3. Add exprjit templates using shift ops

    jstuder-gh committed Sep 30, 2018
    b{l,r}shift_i and abs_i
  4. Implement binary arithmetic shift ops in exprjit

    jstuder-gh committed Sep 30, 2018
    Implement binary arithmetic shift ops (left and right) for the exprjit
    (AMD64).
  5. [JIT] Dump bytecode in /tmp

    bdw committed Sep 27, 2018
    No need to specify the exact bytecode directory, if we can put it in a
    consistent place anyway.
  6. [JIT] Log expr tree before tile log

    bdw committed Sep 27, 2018
    This is easier for the developer because tile log and expression tree
    are close together.
  7. [JIT] Remove jit log file

    bdw committed Sep 27, 2018
    If MVM_JIT_DEBUG is enabled, JIT specific (structured) debugging
    information will be logged in the spesh log.
  8. [JIT] Log -> Dump

    bdw committed Sep 26, 2018
  9. [JIT] Remove jit log noise

    bdw committed Sep 26, 2018
    Now that we have most useful JIT information in the spesh log, we can
    remove the noise from the JIT log that just replicates that.
  10. [JIT] Remove unsupported varargs in C call spec

    bdw committed Sep 26, 2018
    We don't support it, don't need it (yet), so remove dead code
  11. [JIT] Make error reporting noisier

    bdw committed Sep 26, 2018
    DynASM not being able to link is a JIT compiler error. JIT unable
    to get rx pages is a configuration error (at the best of times). Both
    warrant some level of noise.
  12. [JIT] Remove devirtualization notes from JIT log

    bdw committed Sep 26, 2018
    No longer necessary in jit log now that spesh graph comments exist
  13. [JIT] Remove bail messages from JIT log

    bdw committed Sep 24, 2018
    No need to have a separate JIT log, if we can attach messages to the
    spesh debug log.
  14. [JIT] Implement a perf map file on linux

    bdw committed Sep 21, 2018
    So that we may profile (on linux) and have insight on the time spent
    on JIT-compiled frames.
    
    Not sure if it will give good results, because we don't always compile
    with -fno-omit-frame-pointer.
  15. also output comments on PHI nodes

    timo authored and bdw committed Sep 26, 2018
    which is almost exclusively "begin of exprjit"
    comments, but still.
  16. output "After" spesh log after jit, for comments

    timo authored and bdw committed Sep 26, 2018
    now comments can be added by the jit and still
    end up in the spesh log. Currently it outputs what
    instructions bail the jit, which end the exprjit
    compiler in the middle of a BB, what repr ops get
    devirtualized or not.
Commits on Sep 28, 2018
  1. Merge pull request #973 from patzim/cleanup

    lizmat committed Sep 28, 2018
    Remove som dead code.
  2. Remove som dead code.

    patzim committed Sep 28, 2018
Commits on Sep 27, 2018
  1. optimize_prof_allocated shouldn't try to mess with writers.

    timo committed Sep 27, 2018
  2. Correct "should we log parameters" check

    jnthn committed Sep 27, 2018
    Fixes a regression when the parameter logging was refactored recently.
    We can't use the standard way to check at this point, because we're
    doing it during invocation, and so haven't set everything up yet. All
    we really need to check is that there's a log to write into.