pike.git
/
src
/
operators.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/operators.c:1:
/* || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information.
-
|| $Id: operators.c,v 1.
242
2008/08/
26
20
:
33
:
14
nilsson
Exp $
+
|| $Id: operators.c,v 1.
243
2008/08/
28
15
:
15
:
42
grubba
Exp $
*/ #include "global.h" #include <math.h> #include "interpret.h" #include "svalue.h" #include "multiset.h" #include "mapping.h" #include "array.h" #include "stralloc.h"
pike.git/src/operators.c:1795:
else if(first_arg[0]->type && second_arg[0]->type && pike_types_le(first_arg[0]->type, int_type_string) && pike_types_le(second_arg[0]->type, int_type_string)) { emit0(F_ADD_INTS); } else { emit0(F_ADD); }
+
modify_stack_depth(-1);
return 1; case 3: first_arg = my_get_arg(&_CDR(n), 0); second_arg = my_get_arg(&_CDR(n), 1); third_arg = my_get_arg(&_CDR(n), 2); if(first_arg[0]->type == float_type_string && second_arg[0]->type == float_type_string) { do_docode(*first_arg, 0); do_docode(*second_arg, 0); emit0(F_ADD_FLOATS);
-
+
modify_stack_depth(-1);
if (third_arg[0]->type == float_type_string) { do_docode(*third_arg, 0); emit0(F_ADD_FLOATS);
-
+
modify_stack_depth(-1);
return 1; } } else if(first_arg[0]->type && second_arg[0]->type && pike_types_le(first_arg[0]->type, int_type_string) && pike_types_le(second_arg[0]->type, int_type_string)) { do_docode(*first_arg, 0); do_docode(*second_arg, 0); emit0(F_ADD_INTS);
-
+
modify_stack_depth(-1);
if (third_arg[0]->type && pike_types_le(third_arg[0]->type, int_type_string)) { do_docode(*third_arg, 0); emit0(F_ADD_INTS);
-
+
modify_stack_depth(-1);
return 1; } } else { return 0; } do_docode(*third_arg, 0); emit0(F_ADD);
-
+
modify_stack_depth(-1);
return 1; default: return 0; } } static node *optimize_eq(node *n) {