Index: test/unittests/compiler/js-typed-lowering-unittest.cc |
diff --git a/test/unittests/compiler/js-typed-lowering-unittest.cc b/test/unittests/compiler/js-typed-lowering-unittest.cc |
index 82c216283880ec536a54fc4a9c7e84ce6f3d8280..4e2cf084be24d17ef94c75c1b29ea381381963eb 100644 |
--- a/test/unittests/compiler/js-typed-lowering-unittest.cc |
+++ b/test/unittests/compiler/js-typed-lowering-unittest.cc |
@@ -67,6 +67,7 @@ Type* const kJSTypes[] = {Type::Undefined(), Type::Null(), Type::Boolean(), |
STATIC_ASSERT(LANGUAGE_END == 3); |
const LanguageMode kLanguageModes[] = {SLOPPY, STRICT, STRONG}; |
+const LanguageMode kLanguageModesForStrength[] = {SLOPPY, STRONG}; |
} // namespace |
@@ -651,33 +652,35 @@ TEST_F(JSTypedLoweringTest, JSLoadPropertyFromExternalTypedArray) { |
VectorSlotPair feedback(Handle<TypeFeedbackVector>::null(), |
FeedbackVectorICSlot::Invalid()); |
TRACED_FOREACH(ExternalArrayType, type, kExternalArrayTypes) { |
- Handle<JSTypedArray> array = |
- factory()->NewJSTypedArray(type, buffer, 0, kLength); |
- int const element_size = static_cast<int>(array->element_size()); |
- |
- Node* key = Parameter( |
- Type::Range(kMinInt / element_size, kMaxInt / element_size, zone())); |
- Node* base = HeapConstant(array); |
- Node* context = UndefinedConstant(); |
- Node* effect = graph()->start(); |
- Node* control = graph()->start(); |
- Reduction r = Reduce(graph()->NewNode(javascript()->LoadProperty(feedback), |
- base, key, context, EmptyFrameState(), |
- EmptyFrameState(), effect, control)); |
+ TRACED_FOREACH(LanguageMode, language_mode, kLanguageModesForStrength) { |
+ Handle<JSTypedArray> array = |
+ factory()->NewJSTypedArray(type, buffer, 0, kLength); |
+ int const element_size = static_cast<int>(array->element_size()); |
- Matcher<Node*> offset_matcher = |
- element_size == 1 |
- ? key |
- : IsWord32Shl(key, IsInt32Constant(WhichPowerOf2(element_size))); |
+ Node* key = Parameter( |
+ Type::Range(kMinInt / element_size, kMaxInt / element_size, zone())); |
+ Node* base = HeapConstant(array); |
+ Node* context = UndefinedConstant(); |
+ Node* effect = graph()->start(); |
+ Node* control = graph()->start(); |
+ Reduction r = Reduce(graph()->NewNode( |
+ javascript()->LoadProperty(feedback, language_mode), base, key, |
+ context, EmptyFrameState(), EmptyFrameState(), effect, control)); |
- ASSERT_TRUE(r.Changed()); |
- EXPECT_THAT( |
- r.replacement(), |
- IsLoadBuffer(BufferAccess(type), |
- IsIntPtrConstant(bit_cast<intptr_t>(&backing_store[0])), |
- offset_matcher, |
- IsNumberConstant(array->byte_length()->Number()), effect, |
- control)); |
+ Matcher<Node*> offset_matcher = |
+ element_size == 1 |
+ ? key |
+ : IsWord32Shl(key, IsInt32Constant(WhichPowerOf2(element_size))); |
+ |
+ ASSERT_TRUE(r.Changed()); |
+ EXPECT_THAT( |
+ r.replacement(), |
+ IsLoadBuffer(BufferAccess(type), |
+ IsIntPtrConstant(bit_cast<intptr_t>(&backing_store[0])), |
+ offset_matcher, |
+ IsNumberConstant(array->byte_length()->Number()), effect, |
+ control)); |
+ } |
} |
} |
@@ -690,28 +693,30 @@ TEST_F(JSTypedLoweringTest, JSLoadPropertyFromExternalTypedArrayWithSafeKey) { |
VectorSlotPair feedback(Handle<TypeFeedbackVector>::null(), |
FeedbackVectorICSlot::Invalid()); |
TRACED_FOREACH(ExternalArrayType, type, kExternalArrayTypes) { |
- Handle<JSTypedArray> array = |
- factory()->NewJSTypedArray(type, buffer, 0, kLength); |
- ElementAccess access = AccessBuilder::ForTypedArrayElement(type, true); |
- |
- int min = random_number_generator()->NextInt(static_cast<int>(kLength)); |
- int max = random_number_generator()->NextInt(static_cast<int>(kLength)); |
- if (min > max) std::swap(min, max); |
- Node* key = Parameter(Type::Range(min, max, zone())); |
- Node* base = HeapConstant(array); |
- Node* context = UndefinedConstant(); |
- Node* effect = graph()->start(); |
- Node* control = graph()->start(); |
- Reduction r = Reduce(graph()->NewNode(javascript()->LoadProperty(feedback), |
- base, key, context, EmptyFrameState(), |
- EmptyFrameState(), effect, control)); |
+ TRACED_FOREACH(LanguageMode, language_mode, kLanguageModesForStrength) { |
+ Handle<JSTypedArray> array = |
+ factory()->NewJSTypedArray(type, buffer, 0, kLength); |
+ ElementAccess access = AccessBuilder::ForTypedArrayElement(type, true); |
- ASSERT_TRUE(r.Changed()); |
- EXPECT_THAT( |
- r.replacement(), |
- IsLoadElement(access, |
- IsIntPtrConstant(bit_cast<intptr_t>(&backing_store[0])), |
- key, effect, control)); |
+ int min = random_number_generator()->NextInt(static_cast<int>(kLength)); |
+ int max = random_number_generator()->NextInt(static_cast<int>(kLength)); |
+ if (min > max) std::swap(min, max); |
+ Node* key = Parameter(Type::Range(min, max, zone())); |
+ Node* base = HeapConstant(array); |
+ Node* context = UndefinedConstant(); |
+ Node* effect = graph()->start(); |
+ Node* control = graph()->start(); |
+ Reduction r = Reduce(graph()->NewNode( |
+ javascript()->LoadProperty(feedback, language_mode), base, key, |
+ context, EmptyFrameState(), EmptyFrameState(), effect, control)); |
+ |
+ ASSERT_TRUE(r.Changed()); |
+ EXPECT_THAT( |
+ r.replacement(), |
+ IsLoadElement(access, |
+ IsIntPtrConstant(bit_cast<intptr_t>(&backing_store[0])), |
+ key, effect, control)); |
+ } |
} |
} |
@@ -885,14 +890,16 @@ TEST_F(JSTypedLoweringTest, JSLoadNamedGlobalConstants) { |
Node* effect = graph()->start(); |
Node* control = graph()->start(); |
- for (size_t i = 0; i < arraysize(names); i++) { |
- Unique<Name> name = Unique<Name>::CreateImmovable(names[i]); |
- Reduction r = Reduce(graph()->NewNode( |
- javascript()->LoadNamed(name, feedback), global, context, |
- EmptyFrameState(), EmptyFrameState(), effect, control)); |
+ TRACED_FOREACH(LanguageMode, language_mode, kLanguageModesForStrength) { |
+ for (size_t i = 0; i < arraysize(names); i++) { |
+ Unique<Name> name = Unique<Name>::CreateImmovable(names[i]); |
+ Reduction r = Reduce(graph()->NewNode( |
+ javascript()->LoadNamed(name, feedback, language_mode), global, |
+ context, EmptyFrameState(), EmptyFrameState(), effect, control)); |
- ASSERT_TRUE(r.Changed()); |
- EXPECT_THAT(r.replacement(), matches[i]); |
+ ASSERT_TRUE(r.Changed()); |
+ EXPECT_THAT(r.replacement(), matches[i]); |
+ } |
} |
} |