Permalink
Commits on Apr 30, 2013
  1. infer tag information off the original form as well, needed to infer

    direct protocol invokes of the form `(-foo ^hint x y ...)`.
    
    now that we have `(satisfies Proto x false)` we can direct dispatch
    after the test - hint these as ^not-native.
    swannodette committed Apr 30, 2013
  2. move string? predicate up so core fns can use it. optimize the cases

    where we handle JS strings and array cases directly. Disable JS native
    hash table lookup where it makes sense. goog.getUid -> goog/getUid,
    goog.isArray -> goog/isArray so we emit direct JS calls.
    swannodette committed Apr 30, 2013
  3. change `satisfies?` so it takes a third parametr. passing false will

    disable JS native hash table lookup. this way if a protocol test
    fails, we don't pay when we're going to handle the natives cases
    directly anyway.
    swannodette committed Apr 30, 2013
Commits on Apr 29, 2013
  1. bump data.json dep

    swannodette committed Apr 29, 2013
  2. don't call `pr-str` from `missing-protocol`. add type string as

    property on ctor. remove pr-str calls from deftypes. Fix Subvec
    compare bug.
    swannodette committed Apr 29, 2013
  3. missing declares

    swannodette committed Apr 29, 2013
  4. don't extend string and array to ISeqable, change seq to deal with

    them if satisfies? ISeqable fails
    swannodette committed Apr 29, 2013
Commits on Apr 28, 2013
  1. don't extend IPrintWithWriter to natives, this defeats dead code

    elimination around printing.
    swannodette committed Apr 28, 2013
Commits on Apr 27, 2013
  1. inline (make-array size)

    swannodette committed Apr 27, 2013
  2. don't call `sorted-map` at runtime, this dead code eliminates all the

    sorted map related code if never used.
    swannodette committed Apr 27, 2013
  3. don't emit def's w/o init. this prevents declares from appearing in

    compiled code. we may want to revisit special handling for REPLs.
    
    for spectral norm benchmark code this results in ~500 fewer lines
    being emitted under pretty printed advanced compilation.
    swannodette committed Apr 27, 2013
  4. remove some more `js*` usage, add internal `js-arguments` macro,

    `js-delete` fn now relies on `js-delete` macro. change `regexp?` to
    use `instance?`
    swannodette committed Apr 27, 2013
Commits on Apr 26, 2013
  1. Optimize PAM symbol case. This is a good demonstration whether we'll

    see performance similar to the current keywords as JavaScript strings
    optimization if we switch to a real keyword type.
    
    Inline symbol? and instance? predicates.
    swannodette committed Apr 26, 2013
  2. `chunked-seq?` for now checks for concrete types `ChunkedCons` and

    `ChunkedSeq`. this is an optimization for `doseq` and `for`. calling
    `satisfies?` to check for chunked seqs is slow for the failing case -
    normal seqs.
    swannodette committed Apr 26, 2013
  3. CLJS-367: chunked seq support in for and doseq, comprehension benchmarks

    Copy & paste from Clojure with small tweaks (-nth instead of .nth on
    chunks, ClojureScript-specific type hints).
    
    doseq maintains the style of ClojureScript's doseq while using looping
    logic from Clojure.
    
    Also fixes a minor bug around argument format verification in for.
    michalmarczyk committed with swannodette Apr 6, 2013
  4. formatting

    swannodette committed Apr 26, 2013
Commits on Apr 25, 2013
  1. CLJS-496: better implementation of `char`

    Stop relying on `goog/isNumber?`, implement `number?` as an inlining
    macro in core.clj, use it in core.cljs. Change `char` implementation
    so that it uses `String.fromCharCode` if given a number. It simply
    returns strings of length 1. On any other type of input it throws an
    exception.
    swannodette committed Apr 25, 2013
Commits on Apr 18, 2013
  1. add test cases for CLJS-495

    swannodette committed Apr 18, 2013
  2. CLJS-495: add exists? macro

    `exists?` can be used to determined whether some value exists. In
    JavaScript this is traditionally accomplished with `typeof foo ==
    'undefined'`. This allows for feature detection across heterogenous JS
    clients.
    swannodette committed Apr 18, 2013
Commits on Apr 15, 2013