on master help sign in
javascript: add LReadStr primitive to node backend
commitb26d401a04621cc51334ee1cd6ac3d2aa8db2db1 authorraichoo <raichoo@googlemail.com> dateWed 12 Aug 2015, 02:08 (11 years ago) parentf7d9706
2 files changed+22−2
jsrts/Runtime-node.js+19 src/IRTS/CodegenJavaScript.hs+3−2
jsrts/Runtime-node.js+19
@@ -5,6 +5,25 @@ var i$putStr = (function() {
55 };
66})();
77
8+var i$getLine = (function() {
9+ var fs = require( "fs" )
10+
11+ return function() {
12+ var ret = "";
13+
14+ while(true) {
15+ var b = new Buffer(1);
16+ fs.readSync(0, b, 0, 1 )
17+ if (b[0] == 10)
18+ break;
19+ else
20+ ret += String.fromCharCode(b[0]);
21+ }
22+
23+ return ret;
24+ };
25+})();
26+
827var i$systemInfo = function(index) {
928 var os = require('os')
1029 switch(index) {
src/IRTS/CodegenJavaScript.hs+3−2
@@ -675,8 +675,9 @@ jsOP _ reg op args = JSAssign (translateReg reg) jsOP'
675675 | LNoOp <- op = translateReg (last args)
676676
677677 | LWriteStr <- op,
678− (_:str:_) <- args = JSAssign (translateReg reg)
679− (JSApp (JSIdent "i$putStr") [translateReg str])
678+ (_:str:_) <- args = JSApp (JSIdent "i$putStr") [translateReg str]
679+
680+ | LReadStr <- op = JSApp (JSIdent "i$getLine") []
680681
681682 | (LZExt (ITFixed IT8) ITNative) <- op = jsUnPackBits $ translateReg (last args)
682683 | (LZExt (ITFixed IT16) ITNative) <- op = jsUnPackBits $ translateReg (last args)