summaryrefslogtreecommitdiff
path: root/module/language
diff options
context:
space:
mode:
Diffstat (limited to 'module/language')
-rw-r--r--module/language/ecmascript/base.scm6
-rw-r--r--module/language/tree-il/cse.scm4
-rw-r--r--module/language/tree-il/primitives.scm3
3 files changed, 8 insertions, 5 deletions
diff --git a/module/language/ecmascript/base.scm b/module/language/ecmascript/base.scm
index b244bec01..6f5c65ba5 100644
--- a/module/language/ecmascript/base.scm
+++ b/module/language/ecmascript/base.scm
@@ -92,7 +92,7 @@
(pdel o (string->symbol p)))
(define-method (has-property? (o <js-object>) p)
- (if (hashq-get-handle (js-props o) v)
+ (if (hashq-get-handle (js-props o) p)
#t
(let ((proto (js-prototype o)))
(if proto
@@ -176,9 +176,9 @@
((boolean? x) (if x 1 0))
((null? x) 0)
((eq? x *undefined*) +nan.0)
- ((is-a? x <js-object>) (object->number x))
+ ((is-a? x <js-object>) (object->number x #t))
((string? x) (string->number x))
- (else (throw 'TypeError o '->number))))
+ (else (throw 'TypeError x '->number))))
(define (->integer x)
(let ((n (->number x)))
diff --git a/module/language/tree-il/cse.scm b/module/language/tree-il/cse.scm
index 1ac221eaa..40f6419e2 100644
--- a/module/language/tree-il/cse.scm
+++ b/module/language/tree-il/cse.scm
@@ -270,11 +270,11 @@
#f)))
(_
(cond
- ((find-dominating-expression exp effects #f db)
+ ((find-dominating-expression exp effects 'test db)
;; We have an EXP fact, so we infer #t.
(log 'inferring exp #t)
(make-const (tree-il-src exp) #t))
- ((find-dominating-expression (negate exp 'test) effects #f db)
+ ((find-dominating-expression (negate exp 'test) effects 'test db)
;; We have a (not EXP) fact, so we infer #f.
(log 'inferring exp #f)
(make-const (tree-il-src exp) #f))
diff --git a/module/language/tree-il/primitives.scm b/module/language/tree-il/primitives.scm
index a44bc1acc..18126863c 100644
--- a/module/language/tree-il/primitives.scm
+++ b/module/language/tree-il/primitives.scm
@@ -55,6 +55,8 @@
char<? char<=? char>=? char>?
+ integer->char char->integer number->string string->number
+
acons cons cons*
list vector
@@ -155,6 +157,7 @@
pair? null? list? symbol? vector? struct? string? number? char? nil
complex? real? rational? inf? nan? integer? exact? inexact? even? odd?
char<? char<=? char>=? char>?
+ integer->char char->integer number->string string->number
struct-vtable
string-length vector-length
;; These all should get expanded out by expand-primitives!.