Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Commits on Mar 17, 2015
  1. @rurban
  2. @rurban
  3. @rurban
Commits on Feb 25, 2015
  1. @rurban
Commits on Feb 24, 2015
  1. @rurban
  2. @rurban
  3. @rurban

    x86 jit+vm: cmp is too large to be inlined

    rurban authored
    e.g. it goes over the 127 byte jump mark. so
    use a common method for bytecode and jit: potion_vm_{n}eq
Commits on Feb 23, 2015
  1. @rurban

    doc/types.md: add links

    rurban authored
  2. @rurban

    libuv rpath: expand prefix earlier

    rurban authored
    this caused failures on darwin
  3. @rurban

    bytecode QUICK_FWD oops

    rurban authored
  4. @rurban
  5. @rurban

    add doc/types.md: notes

    rurban authored
  6. @rurban

    x86 jit: cmp (eq+neq) rewrite

    rurban authored
    use better jump forward and back macros, short and wide.
    use fresh eq.c with preferred int case:
      if (__builtin_expect(PN_IS_DBL(a) && PN_IS_DBL(b), 0)) { ...
    pass op and negated op to x86_cmp, the wide variant is simply +0x10
  7. @rurban

    x86 jit: cmp (eq+neq)

    rurban authored
    WIP 64bit only. use seperate code to cmp two numbers or atoms.
    use simple potion_qptr_type for quick forward only.
    we need to check for ptr and dbl and use special xmm then,
    for ints and all others just compare the first word.
    
    created via tools/asm.c eq.c:
    
    PN eq(PN a, PN b) {
      //register PN a asm ("rdx");
      //register PN b asm ("rax");
      if (PN_IS_DBL(a) && PN_IS_DBL(b)) {
        return PN_BOOL(PN_DBL(a) == PN_DBL(b));
        union {
          long   l[2];
          double d;
        } x, y;
        x.d = PN_DBL(a);
        y.d = PN_DBL(b);
        return PN_BOOL(x.l[0] == y.l[0] && x.l[1] == x.l[1]);
      } else
       return PN_BOOL(a == b);
    }
    
    int main(int argc, char **argv)
    {
      int a = atoi(argv[1]);
      int b = atoi(argv[2]);
      printf("%d", eq(a, b));
    }
Commits on Feb 17, 2015
  1. @rurban

    Update ChangeLog

    rurban authored
  2. @rurban
  3. @rurban

    jit: promote int ops to double on overflow

    rurban authored
    Note: this does not need to check the result for > LONG_MAX
    as the calculation is already done <<1.
  4. @rurban
  5. @rurban
Commits on Feb 8, 2015
  1. @rurban

    appveyor.yml: more defensive

    rurban authored
    install mingw-developer-toolkit for libuv
    mkdir bin, because I believe we are under cmd.exe, not bash, no test -d
    try make -f config.mak
  2. @rurban

    appveyor.yml: cinst works

    rurban authored
    so they have Chocolatey.
    add a make config step
  3. @rurban

    appveyor.yml: try cinst make

    rurban authored
  4. @rurban

    appveyor.yml: mingw32-make

    rurban authored
    the long version would be:
    init:
      - mingw-get install mingw-developer-toolkit
      - mingw-get install msys-make
  5. @rurban
  6. @rurban

    add appveyor.yml Windows CI

    rurban authored
Commits on Jan 9, 2015
  1. @rurban
  2. @rurban
Commits on Jan 8, 2015
  1. @rurban
  2. @rurban

    potion_ptr_type added

    rurban authored
    when we did a PN_IS_PTR(v) check before, we do not need to
    use potion_type/PN_TYPE.
  3. @rurban

    eq: change to accept all types #77

    rurban authored
    eq and ne (== and !=) accept now all types, and
    compare just the atomic ptr value, similar to lisp eq.
    only when both ops are dbl, check the 2 dbl values.
    
    to deeply compare all other types use EQUAL instead.
    only implemented for bytecode yet, jit adjustment missing
  4. @rurban

    harden compile: throw more syntax errors

    rurban authored
    on empty if AST bodies or clauses.
    Add the PNSource t to potion_syntax_error to print the
    error location.
  5. @rurban
  6. @rurban

    harden def_method, bytecode VM_MATH, VM_NUMCMP

    rurban authored
    found several crashes with afl, the american fuzzy lop.
    we need to add more type checks unfortunately.
    
    declare op.code as enum (easier debugging)
    add missing -lpthread to -luv (when linked without the .la)
    
    see https://github.com/parrot/parrot/blob/HEAD/docs/dev/fuzzing.pod for
    a fuzzing how to.
    tested with AFL_HARDEN=1 AFL_NOT_OPTIMIZE=1 make static CC=afl-gcc DEBUG=1
Commits on Jan 7, 2015
  1. @rurban

    labs/fabs

    rurban authored
  2. @rurban

    libuv: update .gitignore

    rurban authored
Something went wrong with that request. Please try again.