- public override int Run(InterpretedFrame frame) {
- object l = frame.Data[frame.StackIndex - 2];
- object r = frame.Data[frame.StackIndex - 1];
- frame.Data[frame.StackIndex - 2] = (Boolean)((Boolean)l & (Boolean)r);
- frame.StackIndex--;
- return 1;
+ protected override object Calculate (object l, object r)
+ {
+ return (Boolean)((Boolean)l & (Boolean)r);
+ }
+ }
+
+ internal sealed class AndInt32Lifted : AndInstruction {
+ protected override object Calculate (object l, object r)
+ {
+ return (Int32?)((Int32?)l & (Int32?)r);
+ }
+ }
+
+ internal sealed class AndInt16Lifted : AndInstruction {
+ protected override object Calculate (object l, object r)
+ {
+ return (Int16?)((Int16?)l & (Int16?)r);
+ }
+ }
+
+ internal sealed class AndInt64Lifted : AndInstruction {
+ protected override object Calculate (object l, object r)
+ {
+ return (Int64?)((Int64?)l & (Int64?)r);
+ }
+ }
+
+ internal sealed class AndUInt16Lifted : AndInstruction {
+ protected override object Calculate (object l, object r)
+ {
+ return (UInt16?)((UInt16?)l & (UInt16?)r);
+ }
+ }
+
+ internal sealed class AndUInt32Lifted : AndInstruction {
+ protected override object Calculate (object l, object r)
+ {
+ return (UInt32?)((UInt32?)l & (UInt32?)r);
+ }
+ }
+
+ internal sealed class AndUInt64Lifted : AndInstruction {
+ protected override object Calculate (object l, object r)
+ {
+ return (UInt64?)((UInt64?)l & (UInt64?)r);
+ }
+ }
+
+ internal sealed class AndBooleanLifted : AndInstruction {
+ protected override object Calculate (object l, object r)
+ {
+ return ((Boolean?)l & (Boolean?)r);