diff options
Diffstat (limited to 'module/language')
-rw-r--r-- | module/language/ecmascript/base.scm | 6 | ||||
-rw-r--r-- | module/language/tree-il/cse.scm | 4 | ||||
-rw-r--r-- | module/language/tree-il/primitives.scm | 3 |
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!. |