comparison cbackend.js @ 97:59a94f3ad56f

Added short-circuit && and || operators
author Mike Pavone <pavone@retrodev.com>
date Thu, 26 Jul 2012 23:40:56 -0700
parents 84b65ee8b78b
children 1a4446f573d3
comparison
equal deleted inserted replaced
96:84b65ee8b78b 97:59a94f3ad56f
11 } 11 }
12 return methodIds[methodName]; 12 return methodIds[methodName];
13 } 13 }
14 14
15 op.prototype.toC = function(isReceiver) { 15 op.prototype.toC = function(isReceiver) {
16 var optoMeth = {'+': 'ADD_', '-': 'SUB_', '*': 'MUL_', '/': 'DIV_', '%': 'MOD_', '=': 'EQ_', '!=': 'NEQ_', '<': 'LT_', '>': 'GT_', '>=': 'GEQ_', '<=': 'LEQ_', '.': 'CAT_'}; 16 var optoMeth = {'+': 'ADD_', '-': 'SUB_', '*': 'MUL_', '/': 'DIV_', '%': 'MOD_', '=': 'EQ_', '!=': 'NEQ_', '<': 'LT_', '>': 'GT_', '>=': 'GEQ_', '<=': 'LEQ_', '.': 'CAT_', '&&':'if', '||':'ifnot'};
17 var method = optoMeth[this.op]; 17 var method = optoMeth[this.op];
18 return 'mcall(' + getMethodId(method) + '/* ' + method + ' */, 2, (object *)' + this.left.toC() + ', ' + this.right.toC() + ')\n'; 18 return 'mcall(' + getMethodId(method) + '/* ' + method + ' */, 2, (object *)' + this.left.toC() + ', ' + this.right.toC() + ')\n';
19 }; 19 };
20 op.prototype.toCLLExpr = function(vars) { 20 op.prototype.toCLLExpr = function(vars) {
21 var opmap = {'=': '==', 'xor': '^'}; 21 var opmap = {'=': '==', 'xor': '^'};