Permalink
Commits on Feb 2, 2018
  1. doc: nekovm.org link => web.archive

    rurban committed Feb 2, 2018
    thanks to @rofl0r
Commits on Feb 24, 2015
  1. Merge remote-tracking branch 'up/master' into p2

    Reini Urban
    Reini Urban committed Feb 24, 2015
  2. intov: check compiler versions: gcc 5, clang 3.4 only

    Reini Urban
    Reini Urban committed Feb 24, 2015
    icc not yet
  3. ChangeLog: for numcmp and x86cmp

    Reini Urban
    Reini Urban committed Feb 24, 2015
  4. x86 jit+vm: cmp is too large to be inlined

    Reini Urban
    Reini Urban committed Feb 24, 2015
    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. doc/types.md: add links

    Reini Urban
    Reini Urban committed Feb 23, 2015
  2. libuv rpath: expand prefix earlier

    Reini Urban
    Reini Urban committed Feb 23, 2015
    this caused failures on darwin
  3. bytecode QUICK_FWD oops

    Reini Urban
    Reini Urban committed Feb 23, 2015
  4. cmp bytecode: follow fwd ptrs on non-primitives

    Reini Urban
    Reini Urban committed Feb 23, 2015
  5. add doc/types.md: notes

    Reini Urban
    Reini Urban committed Feb 23, 2015
  6. x86 jit: cmp (eq+neq) rewrite

    Reini Urban
    Reini Urban committed Feb 23, 2015
    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. x86 jit: cmp (eq+neq)

    Reini Urban
    Reini Urban committed Feb 23, 2015
    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. Update ChangeLog

    Reini Urban
    Reini Urban committed Feb 17, 2015
  2. jit: promote int on bitshifts also (untested)

    Reini Urban
    Reini Urban committed Feb 17, 2015
  3. jit: promote int ops to double on overflow

    Reini Urban
    Reini Urban committed Feb 17, 2015
    Note: this does not need to check the result for > LONG_MAX
    as the calculation is already done <<1.
  4. bytecode: add underflow check also on integer ops

    Reini Urban
    Reini Urban committed Feb 17, 2015
Commits on Feb 8, 2015
  1. appveyor.yml: more defensive

    Reini Urban
    Reini Urban committed Feb 8, 2015
    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. appveyor.yml: cinst works

    Reini Urban
    Reini Urban committed Feb 8, 2015
    so they have Chocolatey.
    add a make config step
  3. appveyor.yml: try cinst make

    Reini Urban
    Reini Urban committed Feb 8, 2015
  4. appveyor.yml: mingw32-make

    Reini Urban
    Reini Urban committed Feb 8, 2015
    the long version would be:
    init:
      - mingw-get install mingw-developer-toolkit
      - mingw-get install msys-make
  5. appveyor.yml: 0.3., +x64, gmake => make

    Reini Urban
    Reini Urban committed Feb 8, 2015
  6. add appveyor.yml Windows CI

    Reini Urban
    Reini Urban committed Feb 8, 2015
Commits on Jan 9, 2015
  1. harden compiler: Assignment to illegal variable

    Reini Urban
    Reini Urban committed Jan 9, 2015
Commits on Jan 8, 2015
  1. more compiler hardening, better syntax error diagnose

    Reini Urban
    Reini Urban committed Jan 8, 2015
  2. potion_ptr_type added

    Reini Urban
    Reini Urban committed Jan 8, 2015
    when we did a PN_IS_PTR(v) check before, we do not need to
    use potion_type/PN_TYPE.
  3. eq: change to accept all types #77

    Reini Urban
    Reini Urban committed Jan 8, 2015
    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. harden compile: throw more syntax errors

    Reini Urban
    Reini Urban committed Jan 8, 2015
    on empty if AST bodies or clauses.
    Add the PNSource t to potion_syntax_error to print the
    error location.
  5. harden def_method, bytecode VM_MATH, VM_NUMCMP

    Reini Urban
    Reini Urban committed Jan 8, 2015
    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. labs/fabs

    Reini Urban
    Reini Urban committed Jan 7, 2015
  2. libuv: update .gitignore

    Reini Urban
    Reini Urban committed Jan 7, 2015
Commits on Jan 3, 2015
  1. refactor PN_BOOL, remove unneeded PN_TEST1

    Reini Urban
    Reini Urban committed Jan 3, 2015
    BOOL to be used for ops, like BOOL(a < b), and TEST for values
Commits on Dec 26, 2014
  1. Merge more potion type and method names

    Reini Urban
    Reini Urban committed Dec 26, 2014