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

Side by Side Diff: test/unittests/compiler/js-operator-unittest.cc

Issue 1102923002: [strong] Disallow implicit conversions for bitwise ops, shifts (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: more test formatting Created 5 years, 8 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
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/compiler/js-operator.h" 5 #include "src/compiler/js-operator.h"
6 #include "src/compiler/opcodes.h" 6 #include "src/compiler/opcodes.h"
7 #include "src/compiler/operator.h" 7 #include "src/compiler/operator.h"
8 #include "src/compiler/operator-properties.h" 8 #include "src/compiler/operator-properties.h"
9 #include "test/unittests/test-utils.h" 9 #include "test/unittests/test-utils.h"
10 10
(...skipping 18 matching lines...) Expand all
29 int value_input_count; 29 int value_input_count;
30 int frame_state_input_count; 30 int frame_state_input_count;
31 int effect_input_count; 31 int effect_input_count;
32 int control_input_count; 32 int control_input_count;
33 int value_output_count; 33 int value_output_count;
34 int effect_output_count; 34 int effect_output_count;
35 int control_output_count; 35 int control_output_count;
36 }; 36 };
37 37
38 38
39 const SharedOperator<no_params_t> kSharedOperators[] = {
40 #define SHARED(Name, properties, value_input_count, frame_state_input_count, \ 39 #define SHARED(Name, properties, value_input_count, frame_state_input_count, \
41 effect_input_count, control_input_count, value_output_count, \ 40 effect_input_count, control_input_count, value_output_count, \
42 effect_output_count, control_output_count) \ 41 effect_output_count, control_output_count) \
43 { \ 42 { \
44 &JSOperatorBuilder::Name, IrOpcode::kJS##Name, properties, \ 43 &JSOperatorBuilder::Name, IrOpcode::kJS##Name, properties, \
45 value_input_count, frame_state_input_count, effect_input_count, \ 44 value_input_count, frame_state_input_count, effect_input_count, \
46 control_input_count, value_output_count, effect_output_count, \ 45 control_input_count, value_output_count, effect_output_count, \
47 control_output_count \ 46 control_output_count \
48 } 47 }
48
49
50 const SharedOperator<no_params_t> kSharedOperators[] = {
49 SHARED(Equal, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2), 51 SHARED(Equal, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2),
50 SHARED(NotEqual, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2), 52 SHARED(NotEqual, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2),
51 SHARED(StrictEqual, Operator::kPure, 2, 0, 0, 0, 1, 0, 0), 53 SHARED(StrictEqual, Operator::kPure, 2, 0, 0, 0, 1, 0, 0),
52 SHARED(StrictNotEqual, Operator::kPure, 2, 0, 0, 0, 1, 0, 0), 54 SHARED(StrictNotEqual, Operator::kPure, 2, 0, 0, 0, 1, 0, 0),
53 SHARED(UnaryNot, Operator::kPure, 1, 0, 0, 0, 1, 0, 0), 55 SHARED(UnaryNot, Operator::kPure, 1, 0, 0, 0, 1, 0, 0),
54 SHARED(ToBoolean, Operator::kPure, 1, 0, 0, 0, 1, 0, 0), 56 SHARED(ToBoolean, Operator::kPure, 1, 0, 0, 0, 1, 0, 0),
55 SHARED(ToNumber, Operator::kNoProperties, 1, 1, 1, 1, 1, 1, 2), 57 SHARED(ToNumber, Operator::kNoProperties, 1, 1, 1, 1, 1, 1, 2),
56 SHARED(ToString, Operator::kNoProperties, 1, 0, 1, 1, 1, 1, 2), 58 SHARED(ToString, Operator::kNoProperties, 1, 0, 1, 1, 1, 1, 2),
57 SHARED(ToName, Operator::kNoProperties, 1, 1, 1, 1, 1, 1, 2), 59 SHARED(ToName, Operator::kNoProperties, 1, 1, 1, 1, 1, 1, 2),
58 SHARED(ToObject, Operator::kNoProperties, 1, 1, 1, 1, 1, 1, 2), 60 SHARED(ToObject, Operator::kNoProperties, 1, 1, 1, 1, 1, 1, 2),
59 SHARED(Yield, Operator::kNoProperties, 1, 0, 1, 1, 1, 1, 2), 61 SHARED(Yield, Operator::kNoProperties, 1, 0, 1, 1, 1, 1, 2),
60 SHARED(Create, Operator::kEliminatable, 0, 0, 1, 0, 1, 1, 0), 62 SHARED(Create, Operator::kEliminatable, 0, 0, 1, 0, 1, 1, 0),
61 SHARED(HasProperty, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2), 63 SHARED(HasProperty, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2),
62 SHARED(TypeOf, Operator::kPure, 1, 0, 0, 0, 1, 0, 0), 64 SHARED(TypeOf, Operator::kPure, 1, 0, 0, 0, 1, 0, 0),
63 SHARED(InstanceOf, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2), 65 SHARED(InstanceOf, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2),
64 SHARED(CreateFunctionContext, Operator::kNoProperties, 1, 0, 1, 1, 1, 1, 2), 66 SHARED(CreateFunctionContext, Operator::kNoProperties, 1, 0, 1, 1, 1, 1, 2),
65 SHARED(CreateWithContext, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2), 67 SHARED(CreateWithContext, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2),
66 SHARED(CreateBlockContext, Operator::kNoProperties, 2, 0, 1, 1, 1, 1, 2), 68 SHARED(CreateBlockContext, Operator::kNoProperties, 2, 0, 1, 1, 1, 1, 2),
67 SHARED(CreateModuleContext, Operator::kNoProperties, 2, 0, 1, 1, 1, 1, 2), 69 SHARED(CreateModuleContext, Operator::kNoProperties, 2, 0, 1, 1, 1, 1, 2),
68 SHARED(CreateScriptContext, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2) 70 SHARED(CreateScriptContext, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2)
69 #undef SHARED
70 }; 71 };
71 72
72 73
73 const SharedOperator<with_language_mode_t> 74 const SharedOperator<with_language_mode_t>
74 kSharedOperatorsWithlanguageMode[] = { 75 kSharedOperatorsWithlanguageMode[] = {
75 #define SHARED(Name, properties, value_input_count, frame_state_input_count, \
76 effect_input_count, control_input_count, value_output_count, \
77 effect_output_count, control_output_count) \
78 { \
79 &JSOperatorBuilder::Name, IrOpcode::kJS##Name, properties, \
80 value_input_count, frame_state_input_count, effect_input_count, \
81 control_input_count, value_output_count, effect_output_count, \
82 control_output_count \
83 }
84 SHARED(LessThan, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2), 76 SHARED(LessThan, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2),
85 SHARED(GreaterThan, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2), 77 SHARED(GreaterThan, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2),
86 SHARED(LessThanOrEqual, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2), 78 SHARED(LessThanOrEqual, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2),
87 SHARED(GreaterThanOrEqual, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2), 79 SHARED(GreaterThanOrEqual, Operator::kNoProperties, 2, 1, 1, 1, 1, 1, 2),
88 SHARED(BitwiseOr, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2), 80 SHARED(BitwiseOr, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2),
89 SHARED(BitwiseXor, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2), 81 SHARED(BitwiseXor, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2),
90 SHARED(BitwiseAnd, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2), 82 SHARED(BitwiseAnd, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2),
91 SHARED(ShiftLeft, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2), 83 SHARED(ShiftLeft, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2),
92 SHARED(ShiftRight, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2), 84 SHARED(ShiftRight, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2),
93 SHARED(ShiftRightLogical, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2), 85 SHARED(ShiftRightLogical, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2),
94 SHARED(Add, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2), 86 SHARED(Add, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2),
95 SHARED(Subtract, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2), 87 SHARED(Subtract, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2),
96 SHARED(Multiply, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2), 88 SHARED(Multiply, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2),
97 SHARED(Divide, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2), 89 SHARED(Divide, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2),
98 SHARED(Modulus, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2), 90 SHARED(Modulus, Operator::kNoProperties, 2, 2, 1, 1, 1, 1, 2),
91 };
99 #undef SHARED 92 #undef SHARED
100 };
101 93
102 94
103 template <typename T> 95 template <typename T>
104 void testNumberOfInputsAndOutputs(const SharedOperator<T>& sop, 96 void testNumberOfInputsAndOutputs(const SharedOperator<T>& sop,
105 const Operator* op) { 97 const Operator* op) {
106 const int context_input_count = 1; 98 const int context_input_count = 1;
107 EXPECT_EQ(sop.value_input_count, op->ValueInputCount()); 99 EXPECT_EQ(sop.value_input_count, op->ValueInputCount());
108 EXPECT_EQ(context_input_count, OperatorProperties::GetContextInputCount(op)); 100 EXPECT_EQ(context_input_count, OperatorProperties::GetContextInputCount(op));
109 EXPECT_EQ(sop.frame_state_input_count, 101 EXPECT_EQ(sop.frame_state_input_count,
110 OperatorProperties::GetFrameStateInputCount(op)); 102 OperatorProperties::GetFrameStateInputCount(op));
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 EXPECT_EQ(Operator::kNoProperties, op->properties()); 289 EXPECT_EQ(Operator::kNoProperties, op->properties());
298 } 290 }
299 291
300 292
301 INSTANTIATE_TEST_CASE_P(JSOperatorTest, JSStorePropertyOperatorTest, 293 INSTANTIATE_TEST_CASE_P(JSOperatorTest, JSStorePropertyOperatorTest,
302 ::testing::Values(SLOPPY, STRICT)); 294 ::testing::Values(SLOPPY, STRICT));
303 295
304 } // namespace compiler 296 } // namespace compiler
305 } // namespace internal 297 } // namespace internal
306 } // namespace v8 298 } // namespace v8
OLDNEW
« test/mjsunit/strong/implicit-conversions.js ('K') | « test/mjsunit/strong/implicit-conversions.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698