on bf4e535 help sign in
Idris-dev/jsrts/Runtime-common.js
103 lines 2.1 kB history raw
1/** @constructor */
2var i$VM = function() {
3 this.valstack = [];
4 this.valstack_top = 0;
5 this.valstack_base = 0;
7 this.ret = null;
9 this.callstack = [];
12var i$vm;
13var i$valstack;
14var i$valstack_top;
15var i$valstack_base;
16var i$ret;
17var i$callstack;
19var i$Int = {};
20var i$String = {};
21var i$Integer = {};
22var i$Float = {};
23var i$Char = {};
24var i$Ptr = {};
25var i$Forgot = {};
27/** @constructor */
28var i$CON = function(tag,args,app,ev) {
29 this.tag = tag;
30 this.args = args;
31 this.app = app;
32 this.ev = ev;
35/** @constructor */
36var i$POINTER = function(addr) {
37 this.addr = addr;
40var i$SCHED = function(vm) {
41 i$vm = vm;
42 i$valstack = vm.valstack;
43 i$valstack_top = vm.valstack_top;
44 i$valstack_base = vm.valstack_base;
45 i$ret = vm.ret;
46 i$callstack = vm.callstack;
49var i$SLIDE = function(args) {
50 for (var i = 0; i < args; ++i)
51 i$valstack[i$valstack_base + i] = i$valstack[i$valstack_top + i];
54var i$PROJECT = function(val,loc,arity) {
55 for (var i = 0; i < arity; ++i)
56 i$valstack[i$valstack_base + i + loc] = val.args[i];
59var i$CALL = function(fun,args) {
60 i$callstack.push(args);
61 i$callstack.push(fun);
64var i$ffiWrap = function(fid,oldbase,myoldbase) {
65 return function() {
66 i$callstack = [];
68 var res = fid;
70 for(var i = 0; i < (arguments.length ? arguments.length : 1); ++i) {
71 i$valstack_top += 1;
72 i$valstack[i$valstack_top] = res;
73 i$valstack[i$valstack_top + 1] = arguments[i];
74 i$SLIDE(2);
75 i$valstack_top = i$valstack_base + 2;
76 i$CALL(_idris__123_APPLY0_125_,[oldbase])
77 while (i$callstack.length) {
78 var func = i$callstack.pop();
79 var args = i$callstack.pop();
80 func.apply(this,args);
81 }
82 res = i$ret;
83 }
85 i$callstack = i$vm.callstack;
87 return i$ret;
88 }
91var i$charCode = function(str) {
92 if (typeof str == "string")
93 return str.charCodeAt(0);
94 else
95 return str;
98var i$fromCharCode = function(chr) {
99 if (typeof chr == "string")
100 return chr;
101 else
102 return String.fromCharCode(chr);