Chromium Code Reviews| Index: src/code-stub-assembler.cc |
| diff --git a/src/code-stub-assembler.cc b/src/code-stub-assembler.cc |
| index d0c891158b1e3ef6637ff2a06525b13054a5db9e..d325c7f8c517ab4f788d8261fcb63b64a4a2f684 100644 |
| --- a/src/code-stub-assembler.cc |
| +++ b/src/code-stub-assembler.cc |
| @@ -1111,11 +1111,14 @@ Node* CodeStubAssembler::LoadMapConstructor(Node* map) { |
| } |
| Node* CodeStubAssembler::IsSpecialReceiverMap(Node* map) { |
| + Node* is_special = IsSpecialReceiverInstanceType(LoadMapInstanceType(map)); |
| Node* bit_field = LoadMapBitField(map); |
| - Node* mask = Int32Constant(1 << Map::kHasNamedInterceptor | |
| - 1 << Map::kIsAccessCheckNeeded); |
| - Assert(Word32Equal(Word32And(bit_field, mask), Int32Constant(0))); |
| - return IsSpecialReceiverInstanceType(LoadMapInstanceType(map)); |
| + uint32_t mask = |
| + 1 << Map::kHasNamedInterceptor | 1 << Map::kIsAccessCheckNeeded; |
| + // Interceptors or access checks imply special receiver. |
| + CSA_ASSERT( |
| + Select(IsSetWord32(bit_field, mask), is_special, Int32Constant(1))); |
| + return is_special; |
| } |
| Node* CodeStubAssembler::IsSpecialReceiverInstanceType(Node* instance_type) { |
| @@ -6915,7 +6918,7 @@ void CodeStubAssembler::BranchIfNumericRelationalComparison( |
| Bind(&if_rhsisnotsmi); |
| { |
| - Assert(WordEqual(LoadMap(rhs), HeapNumberMapConstant())); |
| + CSA_ASSERT(WordEqual(LoadMap(rhs), HeapNumberMapConstant())); |
| // Convert the {lhs} and {rhs} to floating point values, and |
| // perform a floating point comparison. |
| var_fcmp_lhs.Bind(SmiToFloat64(lhs)); |
| @@ -6926,7 +6929,7 @@ void CodeStubAssembler::BranchIfNumericRelationalComparison( |
| Bind(&if_lhsisnotsmi); |
| { |
| - Assert(WordEqual(LoadMap(lhs), HeapNumberMapConstant())); |
| + CSA_ASSERT(WordEqual(LoadMap(lhs), HeapNumberMapConstant())); |
| // Check if {rhs} is a Smi or a HeapObject. |
| Label if_rhsissmi(this), if_rhsisnotsmi(this); |
| @@ -6943,7 +6946,7 @@ void CodeStubAssembler::BranchIfNumericRelationalComparison( |
| Bind(&if_rhsisnotsmi); |
| { |
| - Assert(WordEqual(LoadMap(rhs), HeapNumberMapConstant())); |
| + CSA_ASSERT(WordEqual(LoadMap(rhs), HeapNumberMapConstant())); |
| // Convert the {lhs} and {rhs} to floating point values, and |
| // perform a floating point comparison. |
| @@ -8360,7 +8363,7 @@ compiler::Node* CodeStubAssembler::NumberInc(compiler::Node* value) { |
| Bind(&if_isnotsmi); |
| { |
| // Check if the value is a HeapNumber. |
| - Assert(IsHeapNumberMap(LoadMap(value))); |
| + CSA_ASSERT(IsHeapNumberMap(LoadMap(value))); |
| // Load the HeapNumber value. |
| var_finc_value.Bind(LoadHeapNumberValue(value)); |
| @@ -8414,8 +8417,8 @@ compiler::Node* CodeStubAssembler::CreateArrayIterator( |
| (Context::GENERIC_ARRAY_KEY_VALUE_ITERATOR_MAP_INDEX - |
| Context::UINT8_ARRAY_KEY_VALUE_ITERATOR_MAP_INDEX)); |
| - // Assert: Type(array) is Object |
| - Assert(IsJSReceiverInstanceType(array_type)); |
| + // CSA_ASSERT: Type(array) is Object |
|
Jakob Kummerow
2016/10/25 19:51:37
nit: I'd undo this edit. Comments are for humans,
|
| + CSA_ASSERT(IsJSReceiverInstanceType(array_type)); |
| Variable var_result(this, MachineRepresentation::kTagged); |
| Variable var_map_index(this, MachineType::PointerRepresentation()); |
| @@ -8474,9 +8477,9 @@ compiler::Node* CodeStubAssembler::CreateArrayIterator( |
| Node* map_index = |
| IntPtrAdd(IntPtrConstant(kBaseMapIndex + kFastIteratorOffset), |
| LoadMapElementsKind(array_map)); |
| - Assert(IntPtrGreaterThanOrEqual( |
| + CSA_ASSERT(IntPtrGreaterThanOrEqual( |
| map_index, IntPtrConstant(kBaseMapIndex + kFastIteratorOffset))); |
| - Assert(IntPtrLessThan( |
| + CSA_ASSERT(IntPtrLessThan( |
| map_index, IntPtrConstant(kBaseMapIndex + kSlowIteratorOffset))); |
| var_map_index.Bind(map_index); |
| @@ -8499,9 +8502,9 @@ compiler::Node* CodeStubAssembler::CreateArrayIterator( |
| Node* map_index = |
| IntPtrAdd(IntPtrConstant(kBaseMapIndex - UINT8_ELEMENTS), |
| LoadMapElementsKind(array_map)); |
| - Assert(IntPtrLessThan( |
| + CSA_ASSERT(IntPtrLessThan( |
| map_index, IntPtrConstant(kBaseMapIndex + kFastIteratorOffset))); |
| - Assert( |
| + CSA_ASSERT( |
| IntPtrGreaterThanOrEqual(map_index, IntPtrConstant(kBaseMapIndex))); |
| var_map_index.Bind(map_index); |
| var_array_map.Bind(UndefinedConstant()); |