Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(273)

Side by Side Diff: test/cctest/interpreter/test-bytecode-generator.cc

Issue 1375373002: [Interpreter] Fix cctest/test-bytecode-generator/IfConditions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/compiler.h" 7 #include "src/compiler.h"
8 #include "src/interpreter/bytecode-array-iterator.h" 8 #include "src/interpreter/bytecode-array-iterator.h"
9 #include "src/interpreter/bytecode-generator.h" 9 #include "src/interpreter/bytecode-generator.h"
10 #include "src/interpreter/interpreter.h" 10 #include "src/interpreter/interpreter.h"
(...skipping 771 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 B(Return), // 782 B(Return), //
783 B(LdaUndefined), // 783 B(LdaUndefined), //
784 B(Return)}, // 784 B(Return)}, //
785 0, 785 0,
786 {unused, unused, unused, unused}}, 786 {unused, unused, unused, unused}},
787 {"function f(a) { if (a <= 0) { return 200; } else { return -200; } }" 787 {"function f(a) { if (a <= 0) { return 200; } else { return -200; } }"
788 "f(99);", 788 "f(99);",
789 kPointerSize, 789 kPointerSize,
790 2, 790 2,
791 19, 791 19,
792 {B(Ldar), R(-5), // 792 {B(Ldar), R(helper.kLastParamIndex), //
793 B(Star), R(0), // 793 B(Star), R(0), //
794 B(LdaZero), // 794 B(LdaZero), //
795 B(TestLessThanOrEqual), R(0), // 795 B(TestLessThanOrEqual), R(0), //
796 B(JumpIfFalse), U8(7), // 796 B(JumpIfFalse), U8(7), //
797 B(LdaConstant), U8(0), // 797 B(LdaConstant), U8(0), //
798 B(Return), // 798 B(Return), //
799 B(Jump), U8(5), // TODO(oth): Unreachable jump after return 799 B(Jump), U8(5), // TODO(oth): Unreachable jump after return
800 B(LdaConstant), U8(1), // 800 B(LdaConstant), U8(1), //
801 B(Return), // 801 B(Return), //
802 B(LdaUndefined), // 802 B(LdaUndefined), //
803 B(Return)}, // 803 B(Return)}, //
804 2, 804 2,
805 {helper.factory()->NewNumberFromInt(200), 805 {helper.factory()->NewNumberFromInt(200),
806 helper.factory()->NewNumberFromInt(-200), unused, unused}}, 806 helper.factory()->NewNumberFromInt(-200), unused, unused}},
807 {"function f(a, b) { if (a in b) { return 200; } }" 807 {"function f(a, b) { if (a in b) { return 200; } }"
808 "f('prop', { prop: 'yes'});", 808 "f('prop', { prop: 'yes'});",
809 kPointerSize, 809 kPointerSize,
810 3, 810 3,
811 17, 811 17,
812 {B(Ldar), R(-6), // 812 {B(Ldar), R(helper.kLastParamIndex - 1), //
813 B(Star), R(0), // 813 B(Star), R(0), //
814 B(Ldar), R(-5), // 814 B(Ldar), R(helper.kLastParamIndex), //
815 B(TestIn), R(0), // 815 B(TestIn), R(0), //
816 B(JumpIfFalse), U8(7), // 816 B(JumpIfFalse), U8(7), //
817 B(LdaConstant), U8(0), // 817 B(LdaConstant), U8(0), //
818 B(Return), // 818 B(Return), //
819 B(Jump), U8(2), // TODO(oth): Unreachable jump after return 819 B(Jump), U8(2), // TODO(oth): Unreachable jump after return
820 B(LdaUndefined), // 820 B(LdaUndefined), //
821 B(Return)}, // 821 B(Return)}, //
822 1, 822 1,
823 {helper.factory()->NewNumberFromInt(200), unused, unused, unused}}, 823 {helper.factory()->NewNumberFromInt(200), unused, unused, unused}},
824 {"function f(z) { var a = 0; var b = 0; if (a === 0.01) { " 824 {"function f(z) { var a = 0; var b = 0; if (a === 0.01) { "
825 #define X "b = a; a = b; " 825 #define X "b = a; a = b; "
826 X X X X X X X X X X X X X X X X X X X X X X X X 826 X X X X X X X X X X X X X X X X X X X X X X X X
827 #undef X 827 #undef X
828 " return 200; } else { return -200; } } f(0.001)", 828 " return 200; } else { return -200; } } f(0.001)",
829 3 * kPointerSize, 829 3 * kPointerSize,
830 2, 830 2,
831 218, 831 218,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
864 " if (a in b) { return 1; }\n" 864 " if (a in b) { return 1; }\n"
865 " if (a instanceof b) { return 1; }\n" 865 " if (a instanceof b) { return 1; }\n"
866 " /* if (a != b) { return 1; } */" // TODO(oth) Ast visitor yields 866 " /* if (a != b) { return 1; } */" // TODO(oth) Ast visitor yields
867 " /* if (a !== b) { return 1; } */" // UNARY NOT, rather than !=/!==. 867 " /* if (a !== b) { return 1; } */" // UNARY NOT, rather than !=/!==.
868 " return 0;\n" 868 " return 0;\n"
869 "} f(1, 1);", 869 "} f(1, 1);",
870 kPointerSize, 870 kPointerSize,
871 3, 871 3,
872 122, 872 122,
873 { 873 {
874 #define IF_CONDITION_RETURN(condition) \ 874 #define IF_CONDITION_RETURN(condition) \
875 B(Ldar), R(-6), \ 875 B(Ldar), R(helper.kLastParamIndex - 1), \
876 B(Star), R(0), \ 876 B(Star), R(0), \
877 B(Ldar), R(-5), \ 877 B(Ldar), R(helper.kLastParamIndex), \
878 B(condition), R(0), \ 878 B(condition), R(0), \
879 B(JumpIfFalse), U8(7), \ 879 B(JumpIfFalse), U8(7), \
880 B(LdaSmi8), U8(1), \ 880 B(LdaSmi8), U8(1), \
881 B(Return), \ 881 B(Return), \
882 B(Jump), U8(2), 882 B(Jump), U8(2),
883 IF_CONDITION_RETURN(TestEqual) // 883 IF_CONDITION_RETURN(TestEqual) //
884 IF_CONDITION_RETURN(TestEqualStrict) // 884 IF_CONDITION_RETURN(TestEqualStrict) //
885 IF_CONDITION_RETURN(TestLessThan) // 885 IF_CONDITION_RETURN(TestLessThan) //
886 IF_CONDITION_RETURN(TestGreaterThan) // 886 IF_CONDITION_RETURN(TestGreaterThan) //
887 IF_CONDITION_RETURN(TestLessThanOrEqual) // 887 IF_CONDITION_RETURN(TestLessThanOrEqual) //
888 IF_CONDITION_RETURN(TestGreaterThanOrEqual) // 888 IF_CONDITION_RETURN(TestGreaterThanOrEqual) //
889 IF_CONDITION_RETURN(TestIn) // 889 IF_CONDITION_RETURN(TestIn) //
890 IF_CONDITION_RETURN(TestInstanceOf) // 890 IF_CONDITION_RETURN(TestInstanceOf) //
891 #undef IF_CONDITION_RETURN 891 #undef IF_CONDITION_RETURN
892 B(LdaZero), // 892 B(LdaZero), //
893 B(Return)}, // 893 B(Return)}, //
894 0, 894 0,
895 {unused, unused, unused, unused}}, 895 {unused, unused, unused, unused}},
896 }; 896 };
897 897
898 for (size_t i = 0; i < arraysize(snippets); i++) { 898 for (size_t i = 0; i < arraysize(snippets); i++) {
899 Handle<BytecodeArray> bytecode_array = 899 Handle<BytecodeArray> bytecode_array =
900 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); 900 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName);
901 CheckBytecodeArrayEqual(snippets[i], bytecode_array); 901 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
902 } 902 }
903 } 903 }
904 904
905 905
906 } // namespace interpreter 906 } // namespace interpreter
907 } // namespace internal 907 } // namespace internal
908 } // namespace v8 908 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698