@@ -577,12 +577,30 @@ jsTAILCALL _ n =
577 ) [JSIdent (translateName n), JSArray [jsOLDBASE]]
577 ) [JSIdent (translateName n), JSArray [jsOLDBASE]]
579jsFOREIGN :: CompileInfo -> Reg -> String -> [(FType, Reg)] -> JS
579jsFOREIGN :: CompileInfo -> Reg -> String -> [(FType, Reg)] -> JS
580−jsFOREIGN _ reg n args =
580+jsFOREIGN _ reg n args
582+ , [(FString, arg)] <- args =
581− JSAssign (
583+ JSAssign (
582− translateReg reg
584+ translateReg reg
586+ JSApp (JSIdent n) [translateReg arg]
590+ , [(FPtr, arg)] <- args =
584− JSApp (JSIdent n) (map (translateReg . snd) args)
592+ translateReg reg
594+ JSBinOp "==" (translateReg arg) JSNull
597+ | n == "idris_eqPtr"
598+ , [(_, lhs),(_, rhs)] <- args =
602+ JSBinOp "==" (translateReg lhs) (translateReg rhs)
587jsREBASE :: CompileInfo -> JS
605jsREBASE :: CompileInfo -> JS
588jsREBASE _ = JSAssign jsSTACKBASE jsOLDBASE
606jsREBASE _ = JSAssign jsSTACKBASE jsOLDBASE