| Index: src/code-stub-assembler.cc
|
| diff --git a/src/code-stub-assembler.cc b/src/code-stub-assembler.cc
|
| index a92daad4979715e5a27d6af92e7d70fba13b4434..978fb9a555e17e756d939071694a7e1585e4d992 100644
|
| --- a/src/code-stub-assembler.cc
|
| +++ b/src/code-stub-assembler.cc
|
| @@ -25,7 +25,7 @@ CodeStubAssembler::CodeStubAssembler(Isolate* isolate, Zone* zone,
|
| const char* name)
|
| : compiler::CodeAssembler(isolate, zone, parameter_count, flags, name) {}
|
|
|
| -void CodeStubAssembler::Assert(Node* condition, const char* message,
|
| +void CodeStubAssembler::Assert(ConditionBody codition_body, const char* message,
|
| const char* file, int line) {
|
| #if defined(DEBUG)
|
| Label ok(this);
|
| @@ -33,9 +33,10 @@ void CodeStubAssembler::Assert(Node* condition, const char* message,
|
| if (message != nullptr && FLAG_code_comments) {
|
| Comment("[ Assert: %s", message);
|
| } else {
|
| - Comment("[ Assert ");
|
| + Comment("[ Assert");
|
| }
|
| -
|
| + Node* condition = codition_body();
|
| + DCHECK_NOT_NULL(condition);
|
| Branch(condition, &ok, ¬_ok);
|
| Bind(¬_ok);
|
| if (message != nullptr) {
|
| @@ -57,6 +58,16 @@ void CodeStubAssembler::Assert(Node* condition, const char* message,
|
| #endif
|
| }
|
|
|
| +void CodeStubAssembler::SlowAssert(ConditionBody codition_body,
|
| + const char* message, const char* file,
|
| + int line) {
|
| +#ifdef ENABLE_SLOW_DCHECKS
|
| + if (FLAG_enable_slow_asserts) {
|
| + Assert(codition_body, message, file, line);
|
| + }
|
| +#endif
|
| +}
|
| +
|
| Node* CodeStubAssembler::NoContextConstant() { return NumberConstant(0); }
|
|
|
| #define HEAP_CONSTANT_ACCESSOR(rootName, name) \
|
| @@ -1630,6 +1641,7 @@ Node* CodeStubAssembler::AllocateRegExpResult(Node* context, Node* length,
|
| Node* const max_length =
|
| SmiConstant(Smi::FromInt(JSArray::kInitialMaxFastElementArray));
|
| CSA_ASSERT(SmiLessThanOrEqual(length, max_length));
|
| + USE(max_length);
|
|
|
| // Allocate the JSRegExpResult.
|
| // TODO(jgruber): Fold JSArray and FixedArray allocations, then remove
|
| @@ -2643,12 +2655,12 @@ Node* CodeStubAssembler::ThrowIfNotInstanceType(Node* context, Node* value,
|
|
|
| Node* CodeStubAssembler::IsSpecialReceiverMap(Node* map) {
|
| Node* is_special = IsSpecialReceiverInstanceType(LoadMapInstanceType(map));
|
| - Node* bit_field = LoadMapBitField(map);
|
| uint32_t mask =
|
| 1 << Map::kHasNamedInterceptor | 1 << Map::kIsAccessCheckNeeded;
|
| + USE(mask);
|
| // Interceptors or access checks imply special receiver.
|
| - CSA_ASSERT(
|
| - Select(IsSetWord32(bit_field, mask), is_special, Int32Constant(1)));
|
| + CSA_ASSERT(Select(IsSetWord32(LoadMapBitField(map), mask), is_special,
|
| + Int32Constant(1), MachineRepresentation::kWord32));
|
| return is_special;
|
| }
|
|
|
| @@ -4215,10 +4227,10 @@ void CodeStubAssembler::TryLookupProperty(
|
| Int32Constant(LAST_SPECIAL_RECEIVER_TYPE)),
|
| &if_objectisspecial);
|
|
|
| - Node* bit_field = LoadMapBitField(map);
|
| - Node* mask = Int32Constant(1 << Map::kHasNamedInterceptor |
|
| - 1 << Map::kIsAccessCheckNeeded);
|
| - CSA_ASSERT(Word32Equal(Word32And(bit_field, mask), Int32Constant(0)));
|
| + uint32_t mask =
|
| + 1 << Map::kHasNamedInterceptor | 1 << Map::kIsAccessCheckNeeded;
|
| + CSA_ASSERT(Word32BinaryNot(IsSetWord32(LoadMapBitField(map), mask)));
|
| + USE(mask);
|
|
|
| Node* bit_field3 = LoadMapBitField3(map);
|
| Label if_isfastmap(this), if_isslowmap(this);
|
|
|