on master help sign in
javascript: adjust jsFOREIGN
commit90a092860d8042100f6dc4d8971b81e79c4c4457 authorraichoo <raichoo@googlemail.com> dateTue 24 Jun 2014, 10:11 (12 years ago) parent503b055
2 files changed+24−10
jsrts/Runtime-common.js−4 src/IRTS/CodegenJavaScript.hs+24−6
jsrts/Runtime-common.js−4
@@ -62,7 +62,3 @@ var __IDRRT__fromCharCode = function(chr) {
6262 else
6363 return String.fromCharCode(chr);
6464}
65−
66−var isNull = function(v) {
67− return v == null;
68−}
src/IRTS/CodegenJavaScript.hs+24−6
@@ -577,12 +577,30 @@ jsTAILCALL _ n =
577577 ) [JSIdent (translateName n), JSArray [jsOLDBASE]]
578578
579579jsFOREIGN :: CompileInfo -> Reg -> String -> [(FType, Reg)] -> JS
580−jsFOREIGN _ reg n args =
581− JSAssign (
582− translateReg reg
583− ) (
584− JSApp (JSIdent n) (map (translateReg . snd) args)
585− )
580+jsFOREIGN _ reg n args
581+ | n == "putStr"
582+ , [(FString, arg)] <- args =
583+ JSAssign (
584+ translateReg reg
585+ ) (
586+ JSApp (JSIdent n) [translateReg arg]
587+ )
588+
589+ | n == "isNull"
590+ , [(FPtr, arg)] <- args =
591+ JSAssign (
592+ translateReg reg
593+ ) (
594+ JSBinOp "==" (translateReg arg) JSNull
595+ )
596+
597+ | n == "idris_eqPtr"
598+ , [(_, lhs),(_, rhs)] <- args =
599+ JSAssign (
600+ translateReg reg
601+ ) (
602+ JSBinOp "==" (translateReg lhs) (translateReg rhs)
603+ )
586604
587605jsREBASE :: CompileInfo -> JS
588606jsREBASE _ = JSAssign jsSTACKBASE jsOLDBASE