`set` and `vec` performance enhancements

Description

On the master branch (and in all previous versions of ClojureScript I've seen), the version of `set` and `vec` in core.cljs do not do an instance check before creating a new set or vector. That is, `set` does not check (as in the Clojure 1.8 version) whether the input is already a set before creating a brand-new one, and `vec` does not check (as in the Clojure 1.8 version) whether the input is already a vector before creating a brand-new one. In addition, `set` appears not to support reducibles (`vec` does not share this defect).

The enhancement is short and simple: the addition of one `instance?` check per function.

Relates to, but does not duplicate, CLJS-1784.

Environment

None

Assignee

Mike Fikes

Reporter

import

Labels

None

Approval

Accepted

Patch

Code and Test

Priority

Minor
Configure