mirror of
https://github.com/janet-lang/janet
synced 2025-02-03 18:59:09 +00:00
Replace for with forv in most places in boot.janet
Generates slightly better bytecode with current compiler (gets rid of a single extra move instruction per loop iteration).
This commit is contained in:
parent
2f5bb7774e
commit
647fc56d47
@ -764,7 +764,7 @@
|
|||||||
[a lo hi by]
|
[a lo hi by]
|
||||||
(def pivot (in a hi))
|
(def pivot (in a hi))
|
||||||
(var i lo)
|
(var i lo)
|
||||||
(for j lo hi
|
(forv j lo hi
|
||||||
(def aj (in a j))
|
(def aj (in a j))
|
||||||
(when (by aj pivot)
|
(when (by aj pivot)
|
||||||
(def ai (in a i))
|
(def ai (in a i))
|
||||||
@ -862,19 +862,19 @@
|
|||||||
(def ninds (length inds))
|
(def ninds (length inds))
|
||||||
(if (= 0 ninds) (error "expected at least 1 indexed collection"))
|
(if (= 0 ninds) (error "expected at least 1 indexed collection"))
|
||||||
(var limit (length (in inds 0)))
|
(var limit (length (in inds 0)))
|
||||||
(for i 0 ninds
|
(forv i 0 ninds
|
||||||
(def l (length (in inds i)))
|
(def l (length (in inds i)))
|
||||||
(if (< l limit) (set limit l)))
|
(if (< l limit) (set limit l)))
|
||||||
(def [i1 i2 i3 i4] inds)
|
(def [i1 i2 i3 i4] inds)
|
||||||
(def res (array/new limit))
|
(def res (array/new limit))
|
||||||
(case ninds
|
(case ninds
|
||||||
1 (for i 0 limit (set (res i) (f (in i1 i))))
|
1 (forv i 0 limit (set (res i) (f (in i1 i))))
|
||||||
2 (for i 0 limit (set (res i) (f (in i1 i) (in i2 i))))
|
2 (forv i 0 limit (set (res i) (f (in i1 i) (in i2 i))))
|
||||||
3 (for i 0 limit (set (res i) (f (in i1 i) (in i2 i) (in i3 i))))
|
3 (forv i 0 limit (set (res i) (f (in i1 i) (in i2 i) (in i3 i))))
|
||||||
4 (for i 0 limit (set (res i) (f (in i1 i) (in i2 i) (in i3 i) (in i4 i))))
|
4 (forv i 0 limit (set (res i) (f (in i1 i) (in i2 i) (in i3 i) (in i4 i))))
|
||||||
(for i 0 limit
|
(forv i 0 limit
|
||||||
(def args (array/new ninds))
|
(def args (array/new ninds))
|
||||||
(for j 0 ninds (set (args j) (in (in inds j) i)))
|
(forv j 0 ninds (set (args j) (in (in inds j) i)))
|
||||||
(set (res i) (f ;args))))
|
(set (res i) (f ;args))))
|
||||||
res)
|
res)
|
||||||
|
|
||||||
@ -926,12 +926,12 @@
|
|||||||
1 (do
|
1 (do
|
||||||
(def [n] args)
|
(def [n] args)
|
||||||
(def arr (array/new n))
|
(def arr (array/new n))
|
||||||
(for i 0 n (put arr i i))
|
(forv i 0 n (put arr i i))
|
||||||
arr)
|
arr)
|
||||||
2 (do
|
2 (do
|
||||||
(def [n m] args)
|
(def [n m] args)
|
||||||
(def arr (array/new (- m n)))
|
(def arr (array/new (- m n)))
|
||||||
(for i n m (put arr (- i n) i))
|
(forv i n m (put arr (- i n) i))
|
||||||
arr)
|
arr)
|
||||||
3 (do
|
3 (do
|
||||||
(def [n m s] args)
|
(def [n m s] args)
|
||||||
@ -1280,7 +1280,7 @@
|
|||||||
(var d ds)
|
(var d ds)
|
||||||
(def len-1 (- (length ks) 1))
|
(def len-1 (- (length ks) 1))
|
||||||
(if (< len-1 0) (error "expected at least 1 key in ks"))
|
(if (< len-1 0) (error "expected at least 1 key in ks"))
|
||||||
(for i 0 len-1
|
(forv i 0 len-1
|
||||||
(def k (get ks i))
|
(def k (get ks i))
|
||||||
(def v (get d k))
|
(def v (get d k))
|
||||||
(if (= nil v)
|
(if (= nil v)
|
||||||
@ -1302,7 +1302,7 @@
|
|||||||
(var d ds)
|
(var d ds)
|
||||||
(def len-1 (- (length ks) 1))
|
(def len-1 (- (length ks) 1))
|
||||||
(if (< len-1 0) (error "expected at least 1 key in ks"))
|
(if (< len-1 0) (error "expected at least 1 key in ks"))
|
||||||
(for i 0 len-1
|
(forv i 0 len-1
|
||||||
(def k (get ks i))
|
(def k (get ks i))
|
||||||
(def v (get d k))
|
(def v (get d k))
|
||||||
(if (= nil v)
|
(if (= nil v)
|
||||||
@ -2548,7 +2548,7 @@
|
|||||||
[&opt n]
|
[&opt n]
|
||||||
(def fun (.fn n))
|
(def fun (.fn n))
|
||||||
(def bytecode (.bytecode n))
|
(def bytecode (.bytecode n))
|
||||||
(for i 0 (length bytecode)
|
(forv i 0 (length bytecode)
|
||||||
(debug/fbreak fun i))
|
(debug/fbreak fun i))
|
||||||
(print "Set " (length bytecode) " breakpoints in " fun))
|
(print "Set " (length bytecode) " breakpoints in " fun))
|
||||||
|
|
||||||
@ -2557,7 +2557,7 @@
|
|||||||
[&opt n]
|
[&opt n]
|
||||||
(def fun (.fn n))
|
(def fun (.fn n))
|
||||||
(def bytecode (.bytecode n))
|
(def bytecode (.bytecode n))
|
||||||
(for i 0 (length bytecode)
|
(forv i 0 (length bytecode)
|
||||||
(debug/unfbreak fun i))
|
(debug/unfbreak fun i))
|
||||||
(print "Cleared " (length bytecode) " breakpoints in " fun))
|
(print "Cleared " (length bytecode) " breakpoints in " fun))
|
||||||
|
|
||||||
@ -2599,7 +2599,7 @@
|
|||||||
"Go to the next breakpoint."
|
"Go to the next breakpoint."
|
||||||
[&opt n]
|
[&opt n]
|
||||||
(var res nil)
|
(var res nil)
|
||||||
(for i 0 (or n 1)
|
(forv i 0 (or n 1)
|
||||||
(set res (resume (.fiber))))
|
(set res (resume (.fiber))))
|
||||||
res)
|
res)
|
||||||
|
|
||||||
@ -2613,7 +2613,7 @@
|
|||||||
"Execute the next n instructions."
|
"Execute the next n instructions."
|
||||||
[&opt n]
|
[&opt n]
|
||||||
(var res nil)
|
(var res nil)
|
||||||
(for i 0 (or n 1)
|
(forv i 0 (or n 1)
|
||||||
(set res (debug/step (.fiber))))
|
(set res (debug/step (.fiber))))
|
||||||
res)
|
res)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user