@@ -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