pike.git/
src/
operators.c
Branch:
Tag:
Non-build tags
All tags
No tags
2016-12-30
2016-12-30 19:39:45 by Martin Nilsson <nilsson@fastmail.com>
2a8925e46fec541a485bbff2752862fd680cbb25 (
32
lines) (+
20
/-
12
)
[
Show
|
Annotate
]
Branch:
8.1
Converted all but unary uses of CALL_OPERATOR to call_lfun.
2312:
switch(TYPEOF(sp[-2])) { case T_OBJECT:
-
CALL
_
OPERATOR
(LFUN_SUBTRACT,2);
-
break
;
+
if(!call
_
lfun
(LFUN_SUBTRACT,
LFUN_RSUBTRACT))
+
bad_arg_error("`-", sp-
2
, 2, 2, get_name_of_type(TYPEOF(sp[-2]
)
),
+
sp-1, "Subtract on objects without subtract operator.\n")
;
+
return
;
case T_ARRAY: {
2355:
if(INT_TYPE_SUB_OVERFLOW(sp[-2].u.integer, sp[-1].u.integer)) { convert_stack_top_to_bignum();
-
f
_
minus
(
2
);
+
call
_
lfun
(
LFUN_SUBTRACT, LFUN_RSUBTRACT
);
return; } sp--;
2612:
switch(TYPEOF(sp[-2])) { case T_OBJECT:
-
CALL
_
OPERATOR
(LFUN_AND,
2
);
+
call
_
lfun
(LFUN_AND,
LFUN_RAND
);
break; case T_INT:
2900:
switch(TYPEOF(sp[-2])) { case T_OBJECT:
-
CALL
_
OPERATOR
(LFUN_OR,
2
);
+
call
_
lfun
(LFUN_OR,
LFUN_ROR
);
break; case T_INT:
3146:
switch(TYPEOF(sp[-2])) { case T_OBJECT:
-
CALL
_
OPERATOR
(LFUN_XOR,2);
+
if(!call
_
lfun
(LFUN_XOR,
LFUN_RXOR))
+
{
+
int args =
2
;
+
SIMPLE_ARG_TYPE_ERROR("`^", 1, "type"
);
+
}
break; case T_INT:
4052:
switch(TYPEOF(sp[-2])) { case T_OBJECT:
-
do_lfun_division:
-
CALL
_
OPERATOR
(LFUN_DIVIDE,
2
);
-
break
;
+
call
_
lfun
(LFUN_DIVIDE,
LFUN_RDIVIDE
);
+
return
;
case T_STRING: {
4094:
stack_swap(); convert_stack_top_to_bignum(); stack_swap();
-
goto do
_lfun_
division
;
+
call
_lfun
(LFUN
_
DIVIDE,LFUN_RDIVIDE)
;
+
return;
} else tmp = sp[-2].u.integer/sp[-1].u.integer;
4280:
switch(TYPEOF(sp[-2])) { case T_OBJECT:
-
CALL
_
OPERATOR
(LFUN_MOD,2);
-
break
;
+
if(!call
_
lfun
(LFUN_MOD,
LFUN_RMOD))
+
PIKE_ERROR("`%", "Modulo on different types.\n", sp,
2);
+
return
;
case T_FLOAT: {