--- parser3/src/main/execute.C 2002/09/17 16:46:25 1.272 +++ parser3/src/main/execute.C 2002/09/18 13:15:43 1.274 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_EXECUTE_C="$Date: 2002/09/17 16:46:25 $"; +static const char* IDENT_EXECUTE_C="$Date: 2002/09/18 13:15:43 $"; #include "pa_opcode.h" #include "pa_array.h" @@ -628,10 +628,28 @@ void Request::execute(const Array& ops) PUSH(value); break; } + case OP_BIN_SL: + { + b=POP(); a=POP(); + value=NEW VInt(pool(), + a->as_int() << + b->as_int()); + PUSH(value); + break; + } + case OP_BIN_SR: + { + b=POP(); a=POP(); + value=NEW VInt(pool(), + a->as_int() >> + b->as_int()); + PUSH(value); + break; + } case OP_BIN_AND: { b=POP(); a=POP(); - value=NEW VDouble(pool(), + value=NEW VInt(pool(), a->as_int() & b->as_int()); PUSH(value); @@ -640,7 +658,7 @@ void Request::execute(const Array& ops) case OP_BIN_OR: { b=POP(); a=POP(); - value=NEW VDouble(pool(), + value=NEW VInt(pool(), a->as_int() | b->as_int()); PUSH(value); @@ -649,7 +667,7 @@ void Request::execute(const Array& ops) case OP_BIN_XOR: { b=POP(); a=POP(); - value=NEW VDouble(pool(), + value=NEW VInt(pool(), a->as_int() ^ b->as_int()); PUSH(value); @@ -806,10 +824,7 @@ Value *Request::get_element(const String if(Method* method=OP.get_method(name)) { // looking operator of that name FIRST // as if that method were in self and we have normal dynamic method here Junction& junction=*NEW Junction(pool(), - *(method->native_code? - static_cast(method_frame) /*for ^process*/: - static_cast(main_class) /*for others*/), - method, 0,0,0,0); + *method_frame, method, 0,0,0,0); value=NEW VJunction(junction); } }