pike.git
/
src
/
operators.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/operators.c:6015:
tSetvar(4, tMapping), tVar(4)))), OPT_TRY_OPTIMIZE,optimize_binary,generate_and); ADD_EFUN2("`|", f_or, LOG_TYPE(LOW_LOG_TYPE(tOrInt)), OPT_TRY_OPTIMIZE, optimize_binary, generate_or); ADD_EFUN2("`^", f_xor, LOG_TYPE(LOW_LOG_TYPE(tXorInt)), OPT_TRY_OPTIMIZE, optimize_binary, generate_xor);
-
#define SHIFT_TYPE
\
-
tOr3
(
tIfnot
(
tFuncV
(
tNone
,
tNot
(
tObj
),
tMix
),
\
-
tOr(
tFunc(tMix
tObj
,
tMix
),
\
-
tFunc
(
tObj
tMix
,
tMix
))),
\
+
#define SHIFT_TYPE
(LFUN)
\
+
tOr4
(
tFuncArg
(
tSetvar
(
0
,
tObj),
tFindLFun
(
tVar(0
),
LFUN
)
)
, \
+
tFunc(
tSetvar(0,
tMix
)
tSetvar(1,
tObj), \
+
tGetReturn(tApply(tFindLFun(tVar(1),
"`"LFUN),
tVar
(
0
)))
)
, \
tOr3(tFunc(tInt1Plus tIntPos, tIntPos), \
-
tFunc(tInt0 tIntPos, tInt0),
\
+
tFunc(
tOr(
tInt0
,tZero)
tIntPos, tInt0), \
tFunc(tIntMinus tIntPos, tIntNeg)), \
-
tIfnot(tFuncV(tNot(tFloat), tNot(tIntPos), tMix), \
-
tFunc(
tAnd(
tFloat
,
tNot(tInt0))
tIntPos, tFloat))
)
+
tFunc(tFloat tIntPos, tFloat))
-
ADD_EFUN2("`<<", f_lsh, SHIFT_TYPE, OPT_TRY_OPTIMIZE,
+
ADD_EFUN2("`<<", f_lsh, SHIFT_TYPE
("`<<")
, OPT_TRY_OPTIMIZE,
may_have_side_effects, generate_lsh);
-
ADD_EFUN2("`>>", f_rsh, SHIFT_TYPE, OPT_TRY_OPTIMIZE,
+
ADD_EFUN2("`>>", f_rsh, SHIFT_TYPE
("`>>")
, OPT_TRY_OPTIMIZE,
may_have_side_effects, generate_rsh); /* !function(!object...:mixed)&function(mixed...:mixed)|" "function(array(array(1=mixed)),array(1=mixed):array(1))|" "function(int...:int)|" "!function(int...:mixed)&function(float|int...:float)|" "function(string*,string:string)|" "function(array(0=mixed),int:array(0))|" "function(array(0=mixed),float:array(0))|" "function(string,int:string)