diff --git a/core/src/avm1/activation.rs b/core/src/avm1/activation.rs index 24361505b..c661586c2 100644 --- a/core/src/avm1/activation.rs +++ b/core/src/avm1/activation.rs @@ -709,8 +709,8 @@ impl<'a, 'gc, 'gc_context> Activation<'a, 'gc, 'gc_context> { } fn action_bit_and(&mut self) -> Result, Error<'gc>> { - let a = self.context.avm1.pop().coerce_to_u32(self)?; - let b = self.context.avm1.pop().coerce_to_u32(self)?; + let a = self.context.avm1.pop().coerce_to_i32(self)?; + let b = self.context.avm1.pop().coerce_to_i32(self)?; let result = a & b; self.context.avm1.push(result); Ok(FrameControl::Continue) @@ -725,8 +725,8 @@ impl<'a, 'gc, 'gc_context> Activation<'a, 'gc, 'gc_context> { } fn action_bit_or(&mut self) -> Result, Error<'gc>> { - let a = self.context.avm1.pop().coerce_to_u32(self)?; - let b = self.context.avm1.pop().coerce_to_u32(self)?; + let a = self.context.avm1.pop().coerce_to_i32(self)?; + let b = self.context.avm1.pop().coerce_to_i32(self)?; let result = a | b; self.context.avm1.push(result); Ok(FrameControl::Continue) @@ -749,8 +749,8 @@ impl<'a, 'gc, 'gc_context> Activation<'a, 'gc, 'gc_context> { } fn action_bit_xor(&mut self) -> Result, Error<'gc>> { - let a = self.context.avm1.pop().coerce_to_u32(self)?; - let b = self.context.avm1.pop().coerce_to_u32(self)?; + let a = self.context.avm1.pop().coerce_to_i32(self)?; + let b = self.context.avm1.pop().coerce_to_i32(self)?; let result = b ^ a; self.context.avm1.push(result); Ok(FrameControl::Continue) diff --git a/core/tests/regression_tests.rs b/core/tests/regression_tests.rs index 2257ae101..10fdee274 100644 --- a/core/tests/regression_tests.rs +++ b/core/tests/regression_tests.rs @@ -86,6 +86,9 @@ swf_tests! { (as_broadcaster, "avm1/as_broadcaster", 1), (as_broadcaster_initialize, "avm1/as_broadcaster_initialize", 1), (attach_movie, "avm1/attach_movie", 1), + (as2_bitor, "avm1/bitor", 1), + (as2_bitand, "avm1/bitand", 1), + (as2_bitxor, "avm1/bitxor", 1), (function_base_clip, "avm1/function_base_clip", 2), (call, "avm1/call", 2), (color, "avm1/color", 1), @@ -400,8 +403,10 @@ swf_tests! { (target_path, "avm1/target_path", 1), (remove_movie_clip, "avm1/remove_movie_clip", 2), (as3_add, "avm2/add", 1), + (as3_bitor, "avm2/bitor", 1), (as3_bitand, "avm2/bitand", 1), (as3_bitnot, "avm2/bitnot", 1), + (as3_bitxor, "avm2/bitxor", 1), (as3_declocal, "avm2/declocal", 1), (as3_declocal_i, "avm2/declocal_i", 1), (as3_decrement, "avm2/decrement", 1), diff --git a/core/tests/swfs/avm1/bitand/output.txt b/core/tests/swfs/avm1/bitand/output.txt new file mode 100644 index 000000000..9d03062e4 --- /dev/null +++ b/core/tests/swfs/avm1/bitand/output.txt @@ -0,0 +1,1058 @@ +//true & true +1 +//false & true +0 +//null & true +0 +//undefined & true +0 +//"" & true +0 +//"str" & true +0 +//"true" & true +0 +//"false" & true +0 +//0.0 & true +0 +//NaN & true +0 +//-0.0 & true +0 +//Infinity & true +0 +//1.0 & true +1 +//-1.0 & true +1 +//0xFF1306 & true +0 +//new Object() & true +0 +//"0.0" & true +0 +//"NaN" & true +0 +//"-0.0" & true +0 +//"Infinity" & true +0 +//"1.0" & true +1 +//"-1.0" & true +1 +//"0xFF1306" & true +0 +//true & false +0 +//false & false +0 +//null & false +0 +//undefined & false +0 +//"" & false +0 +//"str" & false +0 +//"true" & false +0 +//"false" & false +0 +//0.0 & false +0 +//NaN & false +0 +//-0.0 & false +0 +//Infinity & false +0 +//1.0 & false +0 +//-1.0 & false +0 +//0xFF1306 & false +0 +//new Object() & false +0 +//"0.0" & false +0 +//"NaN" & false +0 +//"-0.0" & false +0 +//"Infinity" & false +0 +//"1.0" & false +0 +//"-1.0" & false +0 +//"0xFF1306" & false +0 +//true & null +0 +//false & null +0 +//null & null +0 +//undefined & null +0 +//"" & null +0 +//"str" & null +0 +//"true" & null +0 +//"false" & null +0 +//0.0 & null +0 +//NaN & null +0 +//-0.0 & null +0 +//Infinity & null +0 +//1.0 & null +0 +//-1.0 & null +0 +//0xFF1306 & null +0 +//new Object() & null +0 +//"0.0" & null +0 +//"NaN" & null +0 +//"-0.0" & null +0 +//"Infinity" & null +0 +//"1.0" & null +0 +//"-1.0" & null +0 +//"0xFF1306" & null +0 +//true & undefined +0 +//false & undefined +0 +//null & undefined +0 +//undefined & undefined +0 +//"" & undefined +0 +//"str" & undefined +0 +//"true" & undefined +0 +//"false" & undefined +0 +//0.0 & undefined +0 +//NaN & undefined +0 +//-0.0 & undefined +0 +//Infinity & undefined +0 +//1.0 & undefined +0 +//-1.0 & undefined +0 +//0xFF1306 & undefined +0 +//new Object() & undefined +0 +//"0.0" & undefined +0 +//"NaN" & undefined +0 +//"-0.0" & undefined +0 +//"Infinity" & undefined +0 +//"1.0" & undefined +0 +//"-1.0" & undefined +0 +//"0xFF1306" & undefined +0 +//true & "" +0 +//false & "" +0 +//null & "" +0 +//undefined & "" +0 +//"" & "" +0 +//"str" & "" +0 +//"true" & "" +0 +//"false" & "" +0 +//0.0 & "" +0 +//NaN & "" +0 +//-0.0 & "" +0 +//Infinity & "" +0 +//1.0 & "" +0 +//-1.0 & "" +0 +//0xFF1306 & "" +0 +//new Object() & "" +0 +//"0.0" & "" +0 +//"NaN" & "" +0 +//"-0.0" & "" +0 +//"Infinity" & "" +0 +//"1.0" & "" +0 +//"-1.0" & "" +0 +//"0xFF1306" & "" +0 +//true & "str" +0 +//false & "str" +0 +//null & "str" +0 +//undefined & "str" +0 +//"" & "str" +0 +//"str" & "str" +0 +//"true" & "str" +0 +//"false" & "str" +0 +//0.0 & "str" +0 +//NaN & "str" +0 +//-0.0 & "str" +0 +//Infinity & "str" +0 +//1.0 & "str" +0 +//-1.0 & "str" +0 +//0xFF1306 & "str" +0 +//new Object() & "str" +0 +//"0.0" & "str" +0 +//"NaN" & "str" +0 +//"-0.0" & "str" +0 +//"Infinity" & "str" +0 +//"1.0" & "str" +0 +//"-1.0" & "str" +0 +//"0xFF1306" & "str" +0 +//true & "true" +0 +//false & "true" +0 +//null & "true" +0 +//undefined & "true" +0 +//"" & "true" +0 +//"str" & "true" +0 +//"true" & "true" +0 +//"false" & "true" +0 +//0.0 & "true" +0 +//NaN & "true" +0 +//-0.0 & "true" +0 +//Infinity & "true" +0 +//1.0 & "true" +0 +//-1.0 & "true" +0 +//0xFF1306 & "true" +0 +//new Object() & "true" +0 +//"0.0" & "true" +0 +//"NaN" & "true" +0 +//"-0.0" & "true" +0 +//"Infinity" & "true" +0 +//"1.0" & "true" +0 +//"-1.0" & "true" +0 +//"0xFF1306" & "true" +0 +//true & "false" +0 +//false & "false" +0 +//null & "false" +0 +//undefined & "false" +0 +//"" & "false" +0 +//"str" & "false" +0 +//"true" & "false" +0 +//"false" & "false" +0 +//0.0 & "false" +0 +//NaN & "false" +0 +//-0.0 & "false" +0 +//Infinity & "false" +0 +//1.0 & "false" +0 +//-1.0 & "false" +0 +//0xFF1306 & "false" +0 +//new Object() & "false" +0 +//"0.0" & "false" +0 +//"NaN" & "false" +0 +//"-0.0" & "false" +0 +//"Infinity" & "false" +0 +//"1.0" & "false" +0 +//"-1.0" & "false" +0 +//"0xFF1306" & "false" +0 +//true & 0.0 +0 +//false & 0.0 +0 +//null & 0.0 +0 +//undefined & 0.0 +0 +//"" & 0.0 +0 +//"str" & 0.0 +0 +//"true" & 0.0 +0 +//"false" & 0.0 +0 +//0.0 & 0.0 +0 +//NaN & 0.0 +0 +//-0.0 & 0.0 +0 +//Infinity & 0.0 +0 +//1.0 & 0.0 +0 +//-1.0 & 0.0 +0 +//0xFF1306 & 0.0 +0 +//new Object() & 0.0 +0 +//"0.0" & 0.0 +0 +//"NaN" & 0.0 +0 +//"-0.0" & 0.0 +0 +//"Infinity" & 0.0 +0 +//"1.0" & 0.0 +0 +//"-1.0" & 0.0 +0 +//"0xFF1306" & 0.0 +0 +//true & NaN +0 +//false & NaN +0 +//null & NaN +0 +//undefined & NaN +0 +//"" & NaN +0 +//"str" & NaN +0 +//"true" & NaN +0 +//"false" & NaN +0 +//0.0 & NaN +0 +//NaN & NaN +0 +//-0.0 & NaN +0 +//Infinity & NaN +0 +//1.0 & NaN +0 +//-1.0 & NaN +0 +//0xFF1306 & NaN +0 +//new Object() & NaN +0 +//"0.0" & NaN +0 +//"NaN" & NaN +0 +//"-0.0" & NaN +0 +//"Infinity" & NaN +0 +//"1.0" & NaN +0 +//"-1.0" & NaN +0 +//"0xFF1306" & NaN +0 +//true & -0.0 +0 +//false & -0.0 +0 +//null & -0.0 +0 +//undefined & -0.0 +0 +//"" & -0.0 +0 +//"str" & -0.0 +0 +//"true" & -0.0 +0 +//"false" & -0.0 +0 +//0.0 & -0.0 +0 +//NaN & -0.0 +0 +//-0.0 & -0.0 +0 +//Infinity & -0.0 +0 +//1.0 & -0.0 +0 +//-1.0 & -0.0 +0 +//0xFF1306 & -0.0 +0 +//new Object() & -0.0 +0 +//"0.0" & -0.0 +0 +//"NaN" & -0.0 +0 +//"-0.0" & -0.0 +0 +//"Infinity" & -0.0 +0 +//"1.0" & -0.0 +0 +//"-1.0" & -0.0 +0 +//"0xFF1306" & -0.0 +0 +//true & Infinity +0 +//false & Infinity +0 +//null & Infinity +0 +//undefined & Infinity +0 +//"" & Infinity +0 +//"str" & Infinity +0 +//"true" & Infinity +0 +//"false" & Infinity +0 +//0.0 & Infinity +0 +//NaN & Infinity +0 +//-0.0 & Infinity +0 +//Infinity & Infinity +0 +//1.0 & Infinity +0 +//-1.0 & Infinity +0 +//0xFF1306 & Infinity +0 +//new Object() & Infinity +0 +//"0.0" & Infinity +0 +//"NaN" & Infinity +0 +//"-0.0" & Infinity +0 +//"Infinity" & Infinity +0 +//"1.0" & Infinity +0 +//"-1.0" & Infinity +0 +//"0xFF1306" & Infinity +0 +//true & 1.0 +1 +//false & 1.0 +0 +//null & 1.0 +0 +//undefined & 1.0 +0 +//"" & 1.0 +0 +//"str" & 1.0 +0 +//"true" & 1.0 +0 +//"false" & 1.0 +0 +//0.0 & 1.0 +0 +//NaN & 1.0 +0 +//-0.0 & 1.0 +0 +//Infinity & 1.0 +0 +//1.0 & 1.0 +1 +//-1.0 & 1.0 +1 +//0xFF1306 & 1.0 +0 +//new Object() & 1.0 +0 +//"0.0" & 1.0 +0 +//"NaN" & 1.0 +0 +//"-0.0" & 1.0 +0 +//"Infinity" & 1.0 +0 +//"1.0" & 1.0 +1 +//"-1.0" & 1.0 +1 +//"0xFF1306" & 1.0 +0 +//true & -1.0 +1 +//false & -1.0 +0 +//null & -1.0 +0 +//undefined & -1.0 +0 +//"" & -1.0 +0 +//"str" & -1.0 +0 +//"true" & -1.0 +0 +//"false" & -1.0 +0 +//0.0 & -1.0 +0 +//NaN & -1.0 +0 +//-0.0 & -1.0 +0 +//Infinity & -1.0 +0 +//1.0 & -1.0 +1 +//-1.0 & -1.0 +-1 +//0xFF1306 & -1.0 +16716550 +//new Object() & -1.0 +0 +//"0.0" & -1.0 +0 +//"NaN" & -1.0 +0 +//"-0.0" & -1.0 +0 +//"Infinity" & -1.0 +0 +//"1.0" & -1.0 +1 +//"-1.0" & -1.0 +-1 +//"0xFF1306" & -1.0 +16716550 +//true & 0xFF1306 +0 +//false & 0xFF1306 +0 +//null & 0xFF1306 +0 +//undefined & 0xFF1306 +0 +//"" & 0xFF1306 +0 +//"str" & 0xFF1306 +0 +//"true" & 0xFF1306 +0 +//"false" & 0xFF1306 +0 +//0.0 & 0xFF1306 +0 +//NaN & 0xFF1306 +0 +//-0.0 & 0xFF1306 +0 +//Infinity & 0xFF1306 +0 +//1.0 & 0xFF1306 +0 +//-1.0 & 0xFF1306 +16716550 +//0xFF1306 & 0xFF1306 +16716550 +//new Object() & 0xFF1306 +0 +//"0.0" & 0xFF1306 +0 +//"NaN" & 0xFF1306 +0 +//"-0.0" & 0xFF1306 +0 +//"Infinity" & 0xFF1306 +0 +//"1.0" & 0xFF1306 +0 +//"-1.0" & 0xFF1306 +16716550 +//"0xFF1306" & 0xFF1306 +16716550 +//true & new Object() +0 +//false & new Object() +0 +//null & new Object() +0 +//undefined & new Object() +0 +//"" & new Object() +0 +//"str" & new Object() +0 +//"true" & new Object() +0 +//"false" & new Object() +0 +//0.0 & new Object() +0 +//NaN & new Object() +0 +//-0.0 & new Object() +0 +//Infinity & new Object() +0 +//1.0 & new Object() +0 +//-1.0 & new Object() +0 +//0xFF1306 & new Object() +0 +//new Object() & new Object() +0 +//"0.0" & new Object() +0 +//"NaN" & new Object() +0 +//"-0.0" & new Object() +0 +//"Infinity" & new Object() +0 +//"1.0" & new Object() +0 +//"-1.0" & new Object() +0 +//"0xFF1306" & new Object() +0 +//true & "0.0" +0 +//false & "0.0" +0 +//null & "0.0" +0 +//undefined & "0.0" +0 +//"" & "0.0" +0 +//"str" & "0.0" +0 +//"true" & "0.0" +0 +//"false" & "0.0" +0 +//0.0 & "0.0" +0 +//NaN & "0.0" +0 +//-0.0 & "0.0" +0 +//Infinity & "0.0" +0 +//1.0 & "0.0" +0 +//-1.0 & "0.0" +0 +//0xFF1306 & "0.0" +0 +//new Object() & "0.0" +0 +//"0.0" & "0.0" +0 +//"NaN" & "0.0" +0 +//"-0.0" & "0.0" +0 +//"Infinity" & "0.0" +0 +//"1.0" & "0.0" +0 +//"-1.0" & "0.0" +0 +//"0xFF1306" & "0.0" +0 +//true & "NaN" +0 +//false & "NaN" +0 +//null & "NaN" +0 +//undefined & "NaN" +0 +//"" & "NaN" +0 +//"str" & "NaN" +0 +//"true" & "NaN" +0 +//"false" & "NaN" +0 +//0.0 & "NaN" +0 +//NaN & "NaN" +0 +//-0.0 & "NaN" +0 +//Infinity & "NaN" +0 +//1.0 & "NaN" +0 +//-1.0 & "NaN" +0 +//0xFF1306 & "NaN" +0 +//new Object() & "NaN" +0 +//"0.0" & "NaN" +0 +//"NaN" & "NaN" +0 +//"-0.0" & "NaN" +0 +//"Infinity" & "NaN" +0 +//"1.0" & "NaN" +0 +//"-1.0" & "NaN" +0 +//"0xFF1306" & "NaN" +0 +//true & "-0.0" +0 +//false & "-0.0" +0 +//null & "-0.0" +0 +//undefined & "-0.0" +0 +//"" & "-0.0" +0 +//"str" & "-0.0" +0 +//"true" & "-0.0" +0 +//"false" & "-0.0" +0 +//0.0 & "-0.0" +0 +//NaN & "-0.0" +0 +//-0.0 & "-0.0" +0 +//Infinity & "-0.0" +0 +//1.0 & "-0.0" +0 +//-1.0 & "-0.0" +0 +//0xFF1306 & "-0.0" +0 +//new Object() & "-0.0" +0 +//"0.0" & "-0.0" +0 +//"NaN" & "-0.0" +0 +//"-0.0" & "-0.0" +0 +//"Infinity" & "-0.0" +0 +//"1.0" & "-0.0" +0 +//"-1.0" & "-0.0" +0 +//"0xFF1306" & "-0.0" +0 +//true & "Infinity" +0 +//false & "Infinity" +0 +//null & "Infinity" +0 +//undefined & "Infinity" +0 +//"" & "Infinity" +0 +//"str" & "Infinity" +0 +//"true" & "Infinity" +0 +//"false" & "Infinity" +0 +//0.0 & "Infinity" +0 +//NaN & "Infinity" +0 +//-0.0 & "Infinity" +0 +//Infinity & "Infinity" +0 +//1.0 & "Infinity" +0 +//-1.0 & "Infinity" +0 +//0xFF1306 & "Infinity" +0 +//new Object() & "Infinity" +0 +//"0.0" & "Infinity" +0 +//"NaN" & "Infinity" +0 +//"-0.0" & "Infinity" +0 +//"Infinity" & "Infinity" +0 +//"1.0" & "Infinity" +0 +//"-1.0" & "Infinity" +0 +//"0xFF1306" & "Infinity" +0 +//true & "1.0" +1 +//false & "1.0" +0 +//null & "1.0" +0 +//undefined & "1.0" +0 +//"" & "1.0" +0 +//"str" & "1.0" +0 +//"true" & "1.0" +0 +//"false" & "1.0" +0 +//0.0 & "1.0" +0 +//NaN & "1.0" +0 +//-0.0 & "1.0" +0 +//Infinity & "1.0" +0 +//1.0 & "1.0" +1 +//-1.0 & "1.0" +1 +//0xFF1306 & "1.0" +0 +//new Object() & "1.0" +0 +//"0.0" & "1.0" +0 +//"NaN" & "1.0" +0 +//"-0.0" & "1.0" +0 +//"Infinity" & "1.0" +0 +//"1.0" & "1.0" +1 +//"-1.0" & "1.0" +1 +//"0xFF1306" & "1.0" +0 +//true & "-1.0" +1 +//false & "-1.0" +0 +//null & "-1.0" +0 +//undefined & "-1.0" +0 +//"" & "-1.0" +0 +//"str" & "-1.0" +0 +//"true" & "-1.0" +0 +//"false" & "-1.0" +0 +//0.0 & "-1.0" +0 +//NaN & "-1.0" +0 +//-0.0 & "-1.0" +0 +//Infinity & "-1.0" +0 +//1.0 & "-1.0" +1 +//-1.0 & "-1.0" +-1 +//0xFF1306 & "-1.0" +16716550 +//new Object() & "-1.0" +0 +//"0.0" & "-1.0" +0 +//"NaN" & "-1.0" +0 +//"-0.0" & "-1.0" +0 +//"Infinity" & "-1.0" +0 +//"1.0" & "-1.0" +1 +//"-1.0" & "-1.0" +-1 +//"0xFF1306" & "-1.0" +16716550 +//true & "0xFF1306" +0 +//false & "0xFF1306" +0 +//null & "0xFF1306" +0 +//undefined & "0xFF1306" +0 +//"" & "0xFF1306" +0 +//"str" & "0xFF1306" +0 +//"true" & "0xFF1306" +0 +//"false" & "0xFF1306" +0 +//0.0 & "0xFF1306" +0 +//NaN & "0xFF1306" +0 +//-0.0 & "0xFF1306" +0 +//Infinity & "0xFF1306" +0 +//1.0 & "0xFF1306" +0 +//-1.0 & "0xFF1306" +16716550 +//0xFF1306 & "0xFF1306" +16716550 +//new Object() & "0xFF1306" +0 +//"0.0" & "0xFF1306" +0 +//"NaN" & "0xFF1306" +0 +//"-0.0" & "0xFF1306" +0 +//"Infinity" & "0xFF1306" +0 +//"1.0" & "0xFF1306" +0 +//"-1.0" & "0xFF1306" +16716550 +//"0xFF1306" & "0xFF1306" +16716550 diff --git a/core/tests/swfs/avm1/bitand/test.fla b/core/tests/swfs/avm1/bitand/test.fla new file mode 100644 index 000000000..089cbd39a Binary files /dev/null and b/core/tests/swfs/avm1/bitand/test.fla differ diff --git a/core/tests/swfs/avm1/bitand/test.swf b/core/tests/swfs/avm1/bitand/test.swf new file mode 100644 index 000000000..558a758c9 Binary files /dev/null and b/core/tests/swfs/avm1/bitand/test.swf differ diff --git a/core/tests/swfs/avm1/bitor/output.txt b/core/tests/swfs/avm1/bitor/output.txt new file mode 100644 index 000000000..24af86a84 --- /dev/null +++ b/core/tests/swfs/avm1/bitor/output.txt @@ -0,0 +1,1058 @@ +//true | true +1 +//false | true +1 +//null | true +1 +//undefined | true +1 +//"" | true +1 +//"str" | true +1 +//"true" | true +1 +//"false" | true +1 +//0.0 | true +1 +//NaN | true +1 +//-0.0 | true +1 +//Infinity | true +1 +//1.0 | true +1 +//-1.0 | true +-1 +//0xFF1306 | true +16716551 +//new Object() | true +1 +//"0.0" | true +1 +//"NaN" | true +1 +//"-0.0" | true +1 +//"Infinity" | true +1 +//"1.0" | true +1 +//"-1.0" | true +-1 +//"0xFF1306" | true +16716551 +//true | false +1 +//false | false +0 +//null | false +0 +//undefined | false +0 +//"" | false +0 +//"str" | false +0 +//"true" | false +0 +//"false" | false +0 +//0.0 | false +0 +//NaN | false +0 +//-0.0 | false +0 +//Infinity | false +0 +//1.0 | false +1 +//-1.0 | false +-1 +//0xFF1306 | false +16716550 +//new Object() | false +0 +//"0.0" | false +0 +//"NaN" | false +0 +//"-0.0" | false +0 +//"Infinity" | false +0 +//"1.0" | false +1 +//"-1.0" | false +-1 +//"0xFF1306" | false +16716550 +//true | null +1 +//false | null +0 +//null | null +0 +//undefined | null +0 +//"" | null +0 +//"str" | null +0 +//"true" | null +0 +//"false" | null +0 +//0.0 | null +0 +//NaN | null +0 +//-0.0 | null +0 +//Infinity | null +0 +//1.0 | null +1 +//-1.0 | null +-1 +//0xFF1306 | null +16716550 +//new Object() | null +0 +//"0.0" | null +0 +//"NaN" | null +0 +//"-0.0" | null +0 +//"Infinity" | null +0 +//"1.0" | null +1 +//"-1.0" | null +-1 +//"0xFF1306" | null +16716550 +//true | undefined +1 +//false | undefined +0 +//null | undefined +0 +//undefined | undefined +0 +//"" | undefined +0 +//"str" | undefined +0 +//"true" | undefined +0 +//"false" | undefined +0 +//0.0 | undefined +0 +//NaN | undefined +0 +//-0.0 | undefined +0 +//Infinity | undefined +0 +//1.0 | undefined +1 +//-1.0 | undefined +-1 +//0xFF1306 | undefined +16716550 +//new Object() | undefined +0 +//"0.0" | undefined +0 +//"NaN" | undefined +0 +//"-0.0" | undefined +0 +//"Infinity" | undefined +0 +//"1.0" | undefined +1 +//"-1.0" | undefined +-1 +//"0xFF1306" | undefined +16716550 +//true | "" +1 +//false | "" +0 +//null | "" +0 +//undefined | "" +0 +//"" | "" +0 +//"str" | "" +0 +//"true" | "" +0 +//"false" | "" +0 +//0.0 | "" +0 +//NaN | "" +0 +//-0.0 | "" +0 +//Infinity | "" +0 +//1.0 | "" +1 +//-1.0 | "" +-1 +//0xFF1306 | "" +16716550 +//new Object() | "" +0 +//"0.0" | "" +0 +//"NaN" | "" +0 +//"-0.0" | "" +0 +//"Infinity" | "" +0 +//"1.0" | "" +1 +//"-1.0" | "" +-1 +//"0xFF1306" | "" +16716550 +//true | "str" +1 +//false | "str" +0 +//null | "str" +0 +//undefined | "str" +0 +//"" | "str" +0 +//"str" | "str" +0 +//"true" | "str" +0 +//"false" | "str" +0 +//0.0 | "str" +0 +//NaN | "str" +0 +//-0.0 | "str" +0 +//Infinity | "str" +0 +//1.0 | "str" +1 +//-1.0 | "str" +-1 +//0xFF1306 | "str" +16716550 +//new Object() | "str" +0 +//"0.0" | "str" +0 +//"NaN" | "str" +0 +//"-0.0" | "str" +0 +//"Infinity" | "str" +0 +//"1.0" | "str" +1 +//"-1.0" | "str" +-1 +//"0xFF1306" | "str" +16716550 +//true | "true" +1 +//false | "true" +0 +//null | "true" +0 +//undefined | "true" +0 +//"" | "true" +0 +//"str" | "true" +0 +//"true" | "true" +0 +//"false" | "true" +0 +//0.0 | "true" +0 +//NaN | "true" +0 +//-0.0 | "true" +0 +//Infinity | "true" +0 +//1.0 | "true" +1 +//-1.0 | "true" +-1 +//0xFF1306 | "true" +16716550 +//new Object() | "true" +0 +//"0.0" | "true" +0 +//"NaN" | "true" +0 +//"-0.0" | "true" +0 +//"Infinity" | "true" +0 +//"1.0" | "true" +1 +//"-1.0" | "true" +-1 +//"0xFF1306" | "true" +16716550 +//true | "false" +1 +//false | "false" +0 +//null | "false" +0 +//undefined | "false" +0 +//"" | "false" +0 +//"str" | "false" +0 +//"true" | "false" +0 +//"false" | "false" +0 +//0.0 | "false" +0 +//NaN | "false" +0 +//-0.0 | "false" +0 +//Infinity | "false" +0 +//1.0 | "false" +1 +//-1.0 | "false" +-1 +//0xFF1306 | "false" +16716550 +//new Object() | "false" +0 +//"0.0" | "false" +0 +//"NaN" | "false" +0 +//"-0.0" | "false" +0 +//"Infinity" | "false" +0 +//"1.0" | "false" +1 +//"-1.0" | "false" +-1 +//"0xFF1306" | "false" +16716550 +//true | 0.0 +1 +//false | 0.0 +0 +//null | 0.0 +0 +//undefined | 0.0 +0 +//"" | 0.0 +0 +//"str" | 0.0 +0 +//"true" | 0.0 +0 +//"false" | 0.0 +0 +//0.0 | 0.0 +0 +//NaN | 0.0 +0 +//-0.0 | 0.0 +0 +//Infinity | 0.0 +0 +//1.0 | 0.0 +1 +//-1.0 | 0.0 +-1 +//0xFF1306 | 0.0 +16716550 +//new Object() | 0.0 +0 +//"0.0" | 0.0 +0 +//"NaN" | 0.0 +0 +//"-0.0" | 0.0 +0 +//"Infinity" | 0.0 +0 +//"1.0" | 0.0 +1 +//"-1.0" | 0.0 +-1 +//"0xFF1306" | 0.0 +16716550 +//true | NaN +1 +//false | NaN +0 +//null | NaN +0 +//undefined | NaN +0 +//"" | NaN +0 +//"str" | NaN +0 +//"true" | NaN +0 +//"false" | NaN +0 +//0.0 | NaN +0 +//NaN | NaN +0 +//-0.0 | NaN +0 +//Infinity | NaN +0 +//1.0 | NaN +1 +//-1.0 | NaN +-1 +//0xFF1306 | NaN +16716550 +//new Object() | NaN +0 +//"0.0" | NaN +0 +//"NaN" | NaN +0 +//"-0.0" | NaN +0 +//"Infinity" | NaN +0 +//"1.0" | NaN +1 +//"-1.0" | NaN +-1 +//"0xFF1306" | NaN +16716550 +//true | -0.0 +1 +//false | -0.0 +0 +//null | -0.0 +0 +//undefined | -0.0 +0 +//"" | -0.0 +0 +//"str" | -0.0 +0 +//"true" | -0.0 +0 +//"false" | -0.0 +0 +//0.0 | -0.0 +0 +//NaN | -0.0 +0 +//-0.0 | -0.0 +0 +//Infinity | -0.0 +0 +//1.0 | -0.0 +1 +//-1.0 | -0.0 +-1 +//0xFF1306 | -0.0 +16716550 +//new Object() | -0.0 +0 +//"0.0" | -0.0 +0 +//"NaN" | -0.0 +0 +//"-0.0" | -0.0 +0 +//"Infinity" | -0.0 +0 +//"1.0" | -0.0 +1 +//"-1.0" | -0.0 +-1 +//"0xFF1306" | -0.0 +16716550 +//true | Infinity +1 +//false | Infinity +0 +//null | Infinity +0 +//undefined | Infinity +0 +//"" | Infinity +0 +//"str" | Infinity +0 +//"true" | Infinity +0 +//"false" | Infinity +0 +//0.0 | Infinity +0 +//NaN | Infinity +0 +//-0.0 | Infinity +0 +//Infinity | Infinity +0 +//1.0 | Infinity +1 +//-1.0 | Infinity +-1 +//0xFF1306 | Infinity +16716550 +//new Object() | Infinity +0 +//"0.0" | Infinity +0 +//"NaN" | Infinity +0 +//"-0.0" | Infinity +0 +//"Infinity" | Infinity +0 +//"1.0" | Infinity +1 +//"-1.0" | Infinity +-1 +//"0xFF1306" | Infinity +16716550 +//true | 1.0 +1 +//false | 1.0 +1 +//null | 1.0 +1 +//undefined | 1.0 +1 +//"" | 1.0 +1 +//"str" | 1.0 +1 +//"true" | 1.0 +1 +//"false" | 1.0 +1 +//0.0 | 1.0 +1 +//NaN | 1.0 +1 +//-0.0 | 1.0 +1 +//Infinity | 1.0 +1 +//1.0 | 1.0 +1 +//-1.0 | 1.0 +-1 +//0xFF1306 | 1.0 +16716551 +//new Object() | 1.0 +1 +//"0.0" | 1.0 +1 +//"NaN" | 1.0 +1 +//"-0.0" | 1.0 +1 +//"Infinity" | 1.0 +1 +//"1.0" | 1.0 +1 +//"-1.0" | 1.0 +-1 +//"0xFF1306" | 1.0 +16716551 +//true | -1.0 +-1 +//false | -1.0 +-1 +//null | -1.0 +-1 +//undefined | -1.0 +-1 +//"" | -1.0 +-1 +//"str" | -1.0 +-1 +//"true" | -1.0 +-1 +//"false" | -1.0 +-1 +//0.0 | -1.0 +-1 +//NaN | -1.0 +-1 +//-0.0 | -1.0 +-1 +//Infinity | -1.0 +-1 +//1.0 | -1.0 +-1 +//-1.0 | -1.0 +-1 +//0xFF1306 | -1.0 +-1 +//new Object() | -1.0 +-1 +//"0.0" | -1.0 +-1 +//"NaN" | -1.0 +-1 +//"-0.0" | -1.0 +-1 +//"Infinity" | -1.0 +-1 +//"1.0" | -1.0 +-1 +//"-1.0" | -1.0 +-1 +//"0xFF1306" | -1.0 +-1 +//true | 0xFF1306 +16716551 +//false | 0xFF1306 +16716550 +//null | 0xFF1306 +16716550 +//undefined | 0xFF1306 +16716550 +//"" | 0xFF1306 +16716550 +//"str" | 0xFF1306 +16716550 +//"true" | 0xFF1306 +16716550 +//"false" | 0xFF1306 +16716550 +//0.0 | 0xFF1306 +16716550 +//NaN | 0xFF1306 +16716550 +//-0.0 | 0xFF1306 +16716550 +//Infinity | 0xFF1306 +16716550 +//1.0 | 0xFF1306 +16716551 +//-1.0 | 0xFF1306 +-1 +//0xFF1306 | 0xFF1306 +16716550 +//new Object() | 0xFF1306 +16716550 +//"0.0" | 0xFF1306 +16716550 +//"NaN" | 0xFF1306 +16716550 +//"-0.0" | 0xFF1306 +16716550 +//"Infinity" | 0xFF1306 +16716550 +//"1.0" | 0xFF1306 +16716551 +//"-1.0" | 0xFF1306 +-1 +//"0xFF1306" | 0xFF1306 +16716550 +//true | new Object() +1 +//false | new Object() +0 +//null | new Object() +0 +//undefined | new Object() +0 +//"" | new Object() +0 +//"str" | new Object() +0 +//"true" | new Object() +0 +//"false" | new Object() +0 +//0.0 | new Object() +0 +//NaN | new Object() +0 +//-0.0 | new Object() +0 +//Infinity | new Object() +0 +//1.0 | new Object() +1 +//-1.0 | new Object() +-1 +//0xFF1306 | new Object() +16716550 +//new Object() | new Object() +0 +//"0.0" | new Object() +0 +//"NaN" | new Object() +0 +//"-0.0" | new Object() +0 +//"Infinity" | new Object() +0 +//"1.0" | new Object() +1 +//"-1.0" | new Object() +-1 +//"0xFF1306" | new Object() +16716550 +//true | "0.0" +1 +//false | "0.0" +0 +//null | "0.0" +0 +//undefined | "0.0" +0 +//"" | "0.0" +0 +//"str" | "0.0" +0 +//"true" | "0.0" +0 +//"false" | "0.0" +0 +//0.0 | "0.0" +0 +//NaN | "0.0" +0 +//-0.0 | "0.0" +0 +//Infinity | "0.0" +0 +//1.0 | "0.0" +1 +//-1.0 | "0.0" +-1 +//0xFF1306 | "0.0" +16716550 +//new Object() | "0.0" +0 +//"0.0" | "0.0" +0 +//"NaN" | "0.0" +0 +//"-0.0" | "0.0" +0 +//"Infinity" | "0.0" +0 +//"1.0" | "0.0" +1 +//"-1.0" | "0.0" +-1 +//"0xFF1306" | "0.0" +16716550 +//true | "NaN" +1 +//false | "NaN" +0 +//null | "NaN" +0 +//undefined | "NaN" +0 +//"" | "NaN" +0 +//"str" | "NaN" +0 +//"true" | "NaN" +0 +//"false" | "NaN" +0 +//0.0 | "NaN" +0 +//NaN | "NaN" +0 +//-0.0 | "NaN" +0 +//Infinity | "NaN" +0 +//1.0 | "NaN" +1 +//-1.0 | "NaN" +-1 +//0xFF1306 | "NaN" +16716550 +//new Object() | "NaN" +0 +//"0.0" | "NaN" +0 +//"NaN" | "NaN" +0 +//"-0.0" | "NaN" +0 +//"Infinity" | "NaN" +0 +//"1.0" | "NaN" +1 +//"-1.0" | "NaN" +-1 +//"0xFF1306" | "NaN" +16716550 +//true | "-0.0" +1 +//false | "-0.0" +0 +//null | "-0.0" +0 +//undefined | "-0.0" +0 +//"" | "-0.0" +0 +//"str" | "-0.0" +0 +//"true" | "-0.0" +0 +//"false" | "-0.0" +0 +//0.0 | "-0.0" +0 +//NaN | "-0.0" +0 +//-0.0 | "-0.0" +0 +//Infinity | "-0.0" +0 +//1.0 | "-0.0" +1 +//-1.0 | "-0.0" +-1 +//0xFF1306 | "-0.0" +16716550 +//new Object() | "-0.0" +0 +//"0.0" | "-0.0" +0 +//"NaN" | "-0.0" +0 +//"-0.0" | "-0.0" +0 +//"Infinity" | "-0.0" +0 +//"1.0" | "-0.0" +1 +//"-1.0" | "-0.0" +-1 +//"0xFF1306" | "-0.0" +16716550 +//true | "Infinity" +1 +//false | "Infinity" +0 +//null | "Infinity" +0 +//undefined | "Infinity" +0 +//"" | "Infinity" +0 +//"str" | "Infinity" +0 +//"true" | "Infinity" +0 +//"false" | "Infinity" +0 +//0.0 | "Infinity" +0 +//NaN | "Infinity" +0 +//-0.0 | "Infinity" +0 +//Infinity | "Infinity" +0 +//1.0 | "Infinity" +1 +//-1.0 | "Infinity" +-1 +//0xFF1306 | "Infinity" +16716550 +//new Object() | "Infinity" +0 +//"0.0" | "Infinity" +0 +//"NaN" | "Infinity" +0 +//"-0.0" | "Infinity" +0 +//"Infinity" | "Infinity" +0 +//"1.0" | "Infinity" +1 +//"-1.0" | "Infinity" +-1 +//"0xFF1306" | "Infinity" +16716550 +//true | "1.0" +1 +//false | "1.0" +1 +//null | "1.0" +1 +//undefined | "1.0" +1 +//"" | "1.0" +1 +//"str" | "1.0" +1 +//"true" | "1.0" +1 +//"false" | "1.0" +1 +//0.0 | "1.0" +1 +//NaN | "1.0" +1 +//-0.0 | "1.0" +1 +//Infinity | "1.0" +1 +//1.0 | "1.0" +1 +//-1.0 | "1.0" +-1 +//0xFF1306 | "1.0" +16716551 +//new Object() | "1.0" +1 +//"0.0" | "1.0" +1 +//"NaN" | "1.0" +1 +//"-0.0" | "1.0" +1 +//"Infinity" | "1.0" +1 +//"1.0" | "1.0" +1 +//"-1.0" | "1.0" +-1 +//"0xFF1306" | "1.0" +16716551 +//true | "-1.0" +-1 +//false | "-1.0" +-1 +//null | "-1.0" +-1 +//undefined | "-1.0" +-1 +//"" | "-1.0" +-1 +//"str" | "-1.0" +-1 +//"true" | "-1.0" +-1 +//"false" | "-1.0" +-1 +//0.0 | "-1.0" +-1 +//NaN | "-1.0" +-1 +//-0.0 | "-1.0" +-1 +//Infinity | "-1.0" +-1 +//1.0 | "-1.0" +-1 +//-1.0 | "-1.0" +-1 +//0xFF1306 | "-1.0" +-1 +//new Object() | "-1.0" +-1 +//"0.0" | "-1.0" +-1 +//"NaN" | "-1.0" +-1 +//"-0.0" | "-1.0" +-1 +//"Infinity" | "-1.0" +-1 +//"1.0" | "-1.0" +-1 +//"-1.0" | "-1.0" +-1 +//"0xFF1306" | "-1.0" +-1 +//true | "0xFF1306" +16716551 +//false | "0xFF1306" +16716550 +//null | "0xFF1306" +16716550 +//undefined | "0xFF1306" +16716550 +//"" | "0xFF1306" +16716550 +//"str" | "0xFF1306" +16716550 +//"true" | "0xFF1306" +16716550 +//"false" | "0xFF1306" +16716550 +//0.0 | "0xFF1306" +16716550 +//NaN | "0xFF1306" +16716550 +//-0.0 | "0xFF1306" +16716550 +//Infinity | "0xFF1306" +16716550 +//1.0 | "0xFF1306" +16716551 +//-1.0 | "0xFF1306" +-1 +//0xFF1306 | "0xFF1306" +16716550 +//new Object() | "0xFF1306" +16716550 +//"0.0" | "0xFF1306" +16716550 +//"NaN" | "0xFF1306" +16716550 +//"-0.0" | "0xFF1306" +16716550 +//"Infinity" | "0xFF1306" +16716550 +//"1.0" | "0xFF1306" +16716551 +//"-1.0" | "0xFF1306" +-1 +//"0xFF1306" | "0xFF1306" +16716550 diff --git a/core/tests/swfs/avm1/bitor/test.fla b/core/tests/swfs/avm1/bitor/test.fla new file mode 100644 index 000000000..eaac449f7 Binary files /dev/null and b/core/tests/swfs/avm1/bitor/test.fla differ diff --git a/core/tests/swfs/avm1/bitor/test.swf b/core/tests/swfs/avm1/bitor/test.swf new file mode 100644 index 000000000..41f51e128 Binary files /dev/null and b/core/tests/swfs/avm1/bitor/test.swf differ diff --git a/core/tests/swfs/avm1/bitxor/output.txt b/core/tests/swfs/avm1/bitxor/output.txt new file mode 100644 index 000000000..78d8580e5 --- /dev/null +++ b/core/tests/swfs/avm1/bitxor/output.txt @@ -0,0 +1,1058 @@ +//true ^ true +0 +//false ^ true +1 +//null ^ true +1 +//undefined ^ true +1 +//"" ^ true +1 +//"str" ^ true +1 +//"true" ^ true +1 +//"false" ^ true +1 +//0.0 ^ true +1 +//NaN ^ true +1 +//-0.0 ^ true +1 +//Infinity ^ true +1 +//1.0 ^ true +0 +//-1.0 ^ true +-2 +//0xFF1306 ^ true +16716551 +//new Object() ^ true +1 +//"0.0" ^ true +1 +//"NaN" ^ true +1 +//"-0.0" ^ true +1 +//"Infinity" ^ true +1 +//"1.0" ^ true +0 +//"-1.0" ^ true +-2 +//"0xFF1306" ^ true +16716551 +//true ^ false +1 +//false ^ false +0 +//null ^ false +0 +//undefined ^ false +0 +//"" ^ false +0 +//"str" ^ false +0 +//"true" ^ false +0 +//"false" ^ false +0 +//0.0 ^ false +0 +//NaN ^ false +0 +//-0.0 ^ false +0 +//Infinity ^ false +0 +//1.0 ^ false +1 +//-1.0 ^ false +-1 +//0xFF1306 ^ false +16716550 +//new Object() ^ false +0 +//"0.0" ^ false +0 +//"NaN" ^ false +0 +//"-0.0" ^ false +0 +//"Infinity" ^ false +0 +//"1.0" ^ false +1 +//"-1.0" ^ false +-1 +//"0xFF1306" ^ false +16716550 +//true ^ null +1 +//false ^ null +0 +//null ^ null +0 +//undefined ^ null +0 +//"" ^ null +0 +//"str" ^ null +0 +//"true" ^ null +0 +//"false" ^ null +0 +//0.0 ^ null +0 +//NaN ^ null +0 +//-0.0 ^ null +0 +//Infinity ^ null +0 +//1.0 ^ null +1 +//-1.0 ^ null +-1 +//0xFF1306 ^ null +16716550 +//new Object() ^ null +0 +//"0.0" ^ null +0 +//"NaN" ^ null +0 +//"-0.0" ^ null +0 +//"Infinity" ^ null +0 +//"1.0" ^ null +1 +//"-1.0" ^ null +-1 +//"0xFF1306" ^ null +16716550 +//true ^ undefined +1 +//false ^ undefined +0 +//null ^ undefined +0 +//undefined ^ undefined +0 +//"" ^ undefined +0 +//"str" ^ undefined +0 +//"true" ^ undefined +0 +//"false" ^ undefined +0 +//0.0 ^ undefined +0 +//NaN ^ undefined +0 +//-0.0 ^ undefined +0 +//Infinity ^ undefined +0 +//1.0 ^ undefined +1 +//-1.0 ^ undefined +-1 +//0xFF1306 ^ undefined +16716550 +//new Object() ^ undefined +0 +//"0.0" ^ undefined +0 +//"NaN" ^ undefined +0 +//"-0.0" ^ undefined +0 +//"Infinity" ^ undefined +0 +//"1.0" ^ undefined +1 +//"-1.0" ^ undefined +-1 +//"0xFF1306" ^ undefined +16716550 +//true ^ "" +1 +//false ^ "" +0 +//null ^ "" +0 +//undefined ^ "" +0 +//"" ^ "" +0 +//"str" ^ "" +0 +//"true" ^ "" +0 +//"false" ^ "" +0 +//0.0 ^ "" +0 +//NaN ^ "" +0 +//-0.0 ^ "" +0 +//Infinity ^ "" +0 +//1.0 ^ "" +1 +//-1.0 ^ "" +-1 +//0xFF1306 ^ "" +16716550 +//new Object() ^ "" +0 +//"0.0" ^ "" +0 +//"NaN" ^ "" +0 +//"-0.0" ^ "" +0 +//"Infinity" ^ "" +0 +//"1.0" ^ "" +1 +//"-1.0" ^ "" +-1 +//"0xFF1306" ^ "" +16716550 +//true ^ "str" +1 +//false ^ "str" +0 +//null ^ "str" +0 +//undefined ^ "str" +0 +//"" ^ "str" +0 +//"str" ^ "str" +0 +//"true" ^ "str" +0 +//"false" ^ "str" +0 +//0.0 ^ "str" +0 +//NaN ^ "str" +0 +//-0.0 ^ "str" +0 +//Infinity ^ "str" +0 +//1.0 ^ "str" +1 +//-1.0 ^ "str" +-1 +//0xFF1306 ^ "str" +16716550 +//new Object() ^ "str" +0 +//"0.0" ^ "str" +0 +//"NaN" ^ "str" +0 +//"-0.0" ^ "str" +0 +//"Infinity" ^ "str" +0 +//"1.0" ^ "str" +1 +//"-1.0" ^ "str" +-1 +//"0xFF1306" ^ "str" +16716550 +//true ^ "true" +1 +//false ^ "true" +0 +//null ^ "true" +0 +//undefined ^ "true" +0 +//"" ^ "true" +0 +//"str" ^ "true" +0 +//"true" ^ "true" +0 +//"false" ^ "true" +0 +//0.0 ^ "true" +0 +//NaN ^ "true" +0 +//-0.0 ^ "true" +0 +//Infinity ^ "true" +0 +//1.0 ^ "true" +1 +//-1.0 ^ "true" +-1 +//0xFF1306 ^ "true" +16716550 +//new Object() ^ "true" +0 +//"0.0" ^ "true" +0 +//"NaN" ^ "true" +0 +//"-0.0" ^ "true" +0 +//"Infinity" ^ "true" +0 +//"1.0" ^ "true" +1 +//"-1.0" ^ "true" +-1 +//"0xFF1306" ^ "true" +16716550 +//true ^ "false" +1 +//false ^ "false" +0 +//null ^ "false" +0 +//undefined ^ "false" +0 +//"" ^ "false" +0 +//"str" ^ "false" +0 +//"true" ^ "false" +0 +//"false" ^ "false" +0 +//0.0 ^ "false" +0 +//NaN ^ "false" +0 +//-0.0 ^ "false" +0 +//Infinity ^ "false" +0 +//1.0 ^ "false" +1 +//-1.0 ^ "false" +-1 +//0xFF1306 ^ "false" +16716550 +//new Object() ^ "false" +0 +//"0.0" ^ "false" +0 +//"NaN" ^ "false" +0 +//"-0.0" ^ "false" +0 +//"Infinity" ^ "false" +0 +//"1.0" ^ "false" +1 +//"-1.0" ^ "false" +-1 +//"0xFF1306" ^ "false" +16716550 +//true ^ 0.0 +1 +//false ^ 0.0 +0 +//null ^ 0.0 +0 +//undefined ^ 0.0 +0 +//"" ^ 0.0 +0 +//"str" ^ 0.0 +0 +//"true" ^ 0.0 +0 +//"false" ^ 0.0 +0 +//0.0 ^ 0.0 +0 +//NaN ^ 0.0 +0 +//-0.0 ^ 0.0 +0 +//Infinity ^ 0.0 +0 +//1.0 ^ 0.0 +1 +//-1.0 ^ 0.0 +-1 +//0xFF1306 ^ 0.0 +16716550 +//new Object() ^ 0.0 +0 +//"0.0" ^ 0.0 +0 +//"NaN" ^ 0.0 +0 +//"-0.0" ^ 0.0 +0 +//"Infinity" ^ 0.0 +0 +//"1.0" ^ 0.0 +1 +//"-1.0" ^ 0.0 +-1 +//"0xFF1306" ^ 0.0 +16716550 +//true ^ NaN +1 +//false ^ NaN +0 +//null ^ NaN +0 +//undefined ^ NaN +0 +//"" ^ NaN +0 +//"str" ^ NaN +0 +//"true" ^ NaN +0 +//"false" ^ NaN +0 +//0.0 ^ NaN +0 +//NaN ^ NaN +0 +//-0.0 ^ NaN +0 +//Infinity ^ NaN +0 +//1.0 ^ NaN +1 +//-1.0 ^ NaN +-1 +//0xFF1306 ^ NaN +16716550 +//new Object() ^ NaN +0 +//"0.0" ^ NaN +0 +//"NaN" ^ NaN +0 +//"-0.0" ^ NaN +0 +//"Infinity" ^ NaN +0 +//"1.0" ^ NaN +1 +//"-1.0" ^ NaN +-1 +//"0xFF1306" ^ NaN +16716550 +//true ^ -0.0 +1 +//false ^ -0.0 +0 +//null ^ -0.0 +0 +//undefined ^ -0.0 +0 +//"" ^ -0.0 +0 +//"str" ^ -0.0 +0 +//"true" ^ -0.0 +0 +//"false" ^ -0.0 +0 +//0.0 ^ -0.0 +0 +//NaN ^ -0.0 +0 +//-0.0 ^ -0.0 +0 +//Infinity ^ -0.0 +0 +//1.0 ^ -0.0 +1 +//-1.0 ^ -0.0 +-1 +//0xFF1306 ^ -0.0 +16716550 +//new Object() ^ -0.0 +0 +//"0.0" ^ -0.0 +0 +//"NaN" ^ -0.0 +0 +//"-0.0" ^ -0.0 +0 +//"Infinity" ^ -0.0 +0 +//"1.0" ^ -0.0 +1 +//"-1.0" ^ -0.0 +-1 +//"0xFF1306" ^ -0.0 +16716550 +//true ^ Infinity +1 +//false ^ Infinity +0 +//null ^ Infinity +0 +//undefined ^ Infinity +0 +//"" ^ Infinity +0 +//"str" ^ Infinity +0 +//"true" ^ Infinity +0 +//"false" ^ Infinity +0 +//0.0 ^ Infinity +0 +//NaN ^ Infinity +0 +//-0.0 ^ Infinity +0 +//Infinity ^ Infinity +0 +//1.0 ^ Infinity +1 +//-1.0 ^ Infinity +-1 +//0xFF1306 ^ Infinity +16716550 +//new Object() ^ Infinity +0 +//"0.0" ^ Infinity +0 +//"NaN" ^ Infinity +0 +//"-0.0" ^ Infinity +0 +//"Infinity" ^ Infinity +0 +//"1.0" ^ Infinity +1 +//"-1.0" ^ Infinity +-1 +//"0xFF1306" ^ Infinity +16716550 +//true ^ 1.0 +0 +//false ^ 1.0 +1 +//null ^ 1.0 +1 +//undefined ^ 1.0 +1 +//"" ^ 1.0 +1 +//"str" ^ 1.0 +1 +//"true" ^ 1.0 +1 +//"false" ^ 1.0 +1 +//0.0 ^ 1.0 +1 +//NaN ^ 1.0 +1 +//-0.0 ^ 1.0 +1 +//Infinity ^ 1.0 +1 +//1.0 ^ 1.0 +0 +//-1.0 ^ 1.0 +-2 +//0xFF1306 ^ 1.0 +16716551 +//new Object() ^ 1.0 +1 +//"0.0" ^ 1.0 +1 +//"NaN" ^ 1.0 +1 +//"-0.0" ^ 1.0 +1 +//"Infinity" ^ 1.0 +1 +//"1.0" ^ 1.0 +0 +//"-1.0" ^ 1.0 +-2 +//"0xFF1306" ^ 1.0 +16716551 +//true ^ -1.0 +-2 +//false ^ -1.0 +-1 +//null ^ -1.0 +-1 +//undefined ^ -1.0 +-1 +//"" ^ -1.0 +-1 +//"str" ^ -1.0 +-1 +//"true" ^ -1.0 +-1 +//"false" ^ -1.0 +-1 +//0.0 ^ -1.0 +-1 +//NaN ^ -1.0 +-1 +//-0.0 ^ -1.0 +-1 +//Infinity ^ -1.0 +-1 +//1.0 ^ -1.0 +-2 +//-1.0 ^ -1.0 +0 +//0xFF1306 ^ -1.0 +-16716551 +//new Object() ^ -1.0 +-1 +//"0.0" ^ -1.0 +-1 +//"NaN" ^ -1.0 +-1 +//"-0.0" ^ -1.0 +-1 +//"Infinity" ^ -1.0 +-1 +//"1.0" ^ -1.0 +-2 +//"-1.0" ^ -1.0 +0 +//"0xFF1306" ^ -1.0 +-16716551 +//true ^ 0xFF1306 +16716551 +//false ^ 0xFF1306 +16716550 +//null ^ 0xFF1306 +16716550 +//undefined ^ 0xFF1306 +16716550 +//"" ^ 0xFF1306 +16716550 +//"str" ^ 0xFF1306 +16716550 +//"true" ^ 0xFF1306 +16716550 +//"false" ^ 0xFF1306 +16716550 +//0.0 ^ 0xFF1306 +16716550 +//NaN ^ 0xFF1306 +16716550 +//-0.0 ^ 0xFF1306 +16716550 +//Infinity ^ 0xFF1306 +16716550 +//1.0 ^ 0xFF1306 +16716551 +//-1.0 ^ 0xFF1306 +-16716551 +//0xFF1306 ^ 0xFF1306 +0 +//new Object() ^ 0xFF1306 +16716550 +//"0.0" ^ 0xFF1306 +16716550 +//"NaN" ^ 0xFF1306 +16716550 +//"-0.0" ^ 0xFF1306 +16716550 +//"Infinity" ^ 0xFF1306 +16716550 +//"1.0" ^ 0xFF1306 +16716551 +//"-1.0" ^ 0xFF1306 +-16716551 +//"0xFF1306" ^ 0xFF1306 +0 +//true ^ new Object() +1 +//false ^ new Object() +0 +//null ^ new Object() +0 +//undefined ^ new Object() +0 +//"" ^ new Object() +0 +//"str" ^ new Object() +0 +//"true" ^ new Object() +0 +//"false" ^ new Object() +0 +//0.0 ^ new Object() +0 +//NaN ^ new Object() +0 +//-0.0 ^ new Object() +0 +//Infinity ^ new Object() +0 +//1.0 ^ new Object() +1 +//-1.0 ^ new Object() +-1 +//0xFF1306 ^ new Object() +16716550 +//new Object() ^ new Object() +0 +//"0.0" ^ new Object() +0 +//"NaN" ^ new Object() +0 +//"-0.0" ^ new Object() +0 +//"Infinity" ^ new Object() +0 +//"1.0" ^ new Object() +1 +//"-1.0" ^ new Object() +-1 +//"0xFF1306" ^ new Object() +16716550 +//true ^ "0.0" +1 +//false ^ "0.0" +0 +//null ^ "0.0" +0 +//undefined ^ "0.0" +0 +//"" ^ "0.0" +0 +//"str" ^ "0.0" +0 +//"true" ^ "0.0" +0 +//"false" ^ "0.0" +0 +//0.0 ^ "0.0" +0 +//NaN ^ "0.0" +0 +//-0.0 ^ "0.0" +0 +//Infinity ^ "0.0" +0 +//1.0 ^ "0.0" +1 +//-1.0 ^ "0.0" +-1 +//0xFF1306 ^ "0.0" +16716550 +//new Object() ^ "0.0" +0 +//"0.0" ^ "0.0" +0 +//"NaN" ^ "0.0" +0 +//"-0.0" ^ "0.0" +0 +//"Infinity" ^ "0.0" +0 +//"1.0" ^ "0.0" +1 +//"-1.0" ^ "0.0" +-1 +//"0xFF1306" ^ "0.0" +16716550 +//true ^ "NaN" +1 +//false ^ "NaN" +0 +//null ^ "NaN" +0 +//undefined ^ "NaN" +0 +//"" ^ "NaN" +0 +//"str" ^ "NaN" +0 +//"true" ^ "NaN" +0 +//"false" ^ "NaN" +0 +//0.0 ^ "NaN" +0 +//NaN ^ "NaN" +0 +//-0.0 ^ "NaN" +0 +//Infinity ^ "NaN" +0 +//1.0 ^ "NaN" +1 +//-1.0 ^ "NaN" +-1 +//0xFF1306 ^ "NaN" +16716550 +//new Object() ^ "NaN" +0 +//"0.0" ^ "NaN" +0 +//"NaN" ^ "NaN" +0 +//"-0.0" ^ "NaN" +0 +//"Infinity" ^ "NaN" +0 +//"1.0" ^ "NaN" +1 +//"-1.0" ^ "NaN" +-1 +//"0xFF1306" ^ "NaN" +16716550 +//true ^ "-0.0" +1 +//false ^ "-0.0" +0 +//null ^ "-0.0" +0 +//undefined ^ "-0.0" +0 +//"" ^ "-0.0" +0 +//"str" ^ "-0.0" +0 +//"true" ^ "-0.0" +0 +//"false" ^ "-0.0" +0 +//0.0 ^ "-0.0" +0 +//NaN ^ "-0.0" +0 +//-0.0 ^ "-0.0" +0 +//Infinity ^ "-0.0" +0 +//1.0 ^ "-0.0" +1 +//-1.0 ^ "-0.0" +-1 +//0xFF1306 ^ "-0.0" +16716550 +//new Object() ^ "-0.0" +0 +//"0.0" ^ "-0.0" +0 +//"NaN" ^ "-0.0" +0 +//"-0.0" ^ "-0.0" +0 +//"Infinity" ^ "-0.0" +0 +//"1.0" ^ "-0.0" +1 +//"-1.0" ^ "-0.0" +-1 +//"0xFF1306" ^ "-0.0" +16716550 +//true ^ "Infinity" +1 +//false ^ "Infinity" +0 +//null ^ "Infinity" +0 +//undefined ^ "Infinity" +0 +//"" ^ "Infinity" +0 +//"str" ^ "Infinity" +0 +//"true" ^ "Infinity" +0 +//"false" ^ "Infinity" +0 +//0.0 ^ "Infinity" +0 +//NaN ^ "Infinity" +0 +//-0.0 ^ "Infinity" +0 +//Infinity ^ "Infinity" +0 +//1.0 ^ "Infinity" +1 +//-1.0 ^ "Infinity" +-1 +//0xFF1306 ^ "Infinity" +16716550 +//new Object() ^ "Infinity" +0 +//"0.0" ^ "Infinity" +0 +//"NaN" ^ "Infinity" +0 +//"-0.0" ^ "Infinity" +0 +//"Infinity" ^ "Infinity" +0 +//"1.0" ^ "Infinity" +1 +//"-1.0" ^ "Infinity" +-1 +//"0xFF1306" ^ "Infinity" +16716550 +//true ^ "1.0" +0 +//false ^ "1.0" +1 +//null ^ "1.0" +1 +//undefined ^ "1.0" +1 +//"" ^ "1.0" +1 +//"str" ^ "1.0" +1 +//"true" ^ "1.0" +1 +//"false" ^ "1.0" +1 +//0.0 ^ "1.0" +1 +//NaN ^ "1.0" +1 +//-0.0 ^ "1.0" +1 +//Infinity ^ "1.0" +1 +//1.0 ^ "1.0" +0 +//-1.0 ^ "1.0" +-2 +//0xFF1306 ^ "1.0" +16716551 +//new Object() ^ "1.0" +1 +//"0.0" ^ "1.0" +1 +//"NaN" ^ "1.0" +1 +//"-0.0" ^ "1.0" +1 +//"Infinity" ^ "1.0" +1 +//"1.0" ^ "1.0" +0 +//"-1.0" ^ "1.0" +-2 +//"0xFF1306" ^ "1.0" +16716551 +//true ^ "-1.0" +-2 +//false ^ "-1.0" +-1 +//null ^ "-1.0" +-1 +//undefined ^ "-1.0" +-1 +//"" ^ "-1.0" +-1 +//"str" ^ "-1.0" +-1 +//"true" ^ "-1.0" +-1 +//"false" ^ "-1.0" +-1 +//0.0 ^ "-1.0" +-1 +//NaN ^ "-1.0" +-1 +//-0.0 ^ "-1.0" +-1 +//Infinity ^ "-1.0" +-1 +//1.0 ^ "-1.0" +-2 +//-1.0 ^ "-1.0" +0 +//0xFF1306 ^ "-1.0" +-16716551 +//new Object() ^ "-1.0" +-1 +//"0.0" ^ "-1.0" +-1 +//"NaN" ^ "-1.0" +-1 +//"-0.0" ^ "-1.0" +-1 +//"Infinity" ^ "-1.0" +-1 +//"1.0" ^ "-1.0" +-2 +//"-1.0" ^ "-1.0" +0 +//"0xFF1306" ^ "-1.0" +-16716551 +//true ^ "0xFF1306" +16716551 +//false ^ "0xFF1306" +16716550 +//null ^ "0xFF1306" +16716550 +//undefined ^ "0xFF1306" +16716550 +//"" ^ "0xFF1306" +16716550 +//"str" ^ "0xFF1306" +16716550 +//"true" ^ "0xFF1306" +16716550 +//"false" ^ "0xFF1306" +16716550 +//0.0 ^ "0xFF1306" +16716550 +//NaN ^ "0xFF1306" +16716550 +//-0.0 ^ "0xFF1306" +16716550 +//Infinity ^ "0xFF1306" +16716550 +//1.0 ^ "0xFF1306" +16716551 +//-1.0 ^ "0xFF1306" +-16716551 +//0xFF1306 ^ "0xFF1306" +0 +//new Object() ^ "0xFF1306" +16716550 +//"0.0" ^ "0xFF1306" +16716550 +//"NaN" ^ "0xFF1306" +16716550 +//"-0.0" ^ "0xFF1306" +16716550 +//"Infinity" ^ "0xFF1306" +16716550 +//"1.0" ^ "0xFF1306" +16716551 +//"-1.0" ^ "0xFF1306" +-16716551 +//"0xFF1306" ^ "0xFF1306" +0 diff --git a/core/tests/swfs/avm1/bitxor/test.fla b/core/tests/swfs/avm1/bitxor/test.fla new file mode 100644 index 000000000..3ce083205 Binary files /dev/null and b/core/tests/swfs/avm1/bitxor/test.fla differ diff --git a/core/tests/swfs/avm1/bitxor/test.swf b/core/tests/swfs/avm1/bitxor/test.swf new file mode 100644 index 000000000..c5baccd8b Binary files /dev/null and b/core/tests/swfs/avm1/bitxor/test.swf differ