| Index: src/mips64/full-codegen-mips64.cc
|
| diff --git a/src/mips64/full-codegen-mips64.cc b/src/mips64/full-codegen-mips64.cc
|
| index efdcdfb33c509189fe9675ea451b5e1bd9a9f051..c69ceccec7aa2aee2b542d4e0fb3df0335c552ca 100644
|
| --- a/src/mips64/full-codegen-mips64.cc
|
| +++ b/src/mips64/full-codegen-mips64.cc
|
| @@ -50,13 +50,13 @@ class JumpPatchSite BASE_EMBEDDED {
|
| }
|
|
|
| ~JumpPatchSite() {
|
| - ASSERT(patch_site_.is_bound() == info_emitted_);
|
| + DCHECK(patch_site_.is_bound() == info_emitted_);
|
| }
|
|
|
| // When initially emitting this ensure that a jump is always generated to skip
|
| // the inlined smi code.
|
| void EmitJumpIfNotSmi(Register reg, Label* target) {
|
| - ASSERT(!patch_site_.is_bound() && !info_emitted_);
|
| + DCHECK(!patch_site_.is_bound() && !info_emitted_);
|
| Assembler::BlockTrampolinePoolScope block_trampoline_pool(masm_);
|
| __ bind(&patch_site_);
|
| __ andi(at, reg, 0);
|
| @@ -68,7 +68,7 @@ class JumpPatchSite BASE_EMBEDDED {
|
| // the inlined smi code.
|
| void EmitJumpIfSmi(Register reg, Label* target) {
|
| Assembler::BlockTrampolinePoolScope block_trampoline_pool(masm_);
|
| - ASSERT(!patch_site_.is_bound() && !info_emitted_);
|
| + DCHECK(!patch_site_.is_bound() && !info_emitted_);
|
| __ bind(&patch_site_);
|
| __ andi(at, reg, 0);
|
| // Never taken before patched.
|
| @@ -157,7 +157,7 @@ void FullCodeGenerator::Generate() {
|
| { Comment cmnt(masm_, "[ Allocate locals");
|
| int locals_count = info->scope()->num_stack_slots();
|
| // Generators allocate locals, if any, in context slots.
|
| - ASSERT(!info->function()->is_generator() || locals_count == 0);
|
| + DCHECK(!info->function()->is_generator() || locals_count == 0);
|
| if (locals_count > 0) {
|
| if (locals_count >= 128) {
|
| Label ok;
|
| @@ -296,9 +296,9 @@ void FullCodeGenerator::Generate() {
|
| // constant.
|
| if (scope()->is_function_scope() && scope()->function() != NULL) {
|
| VariableDeclaration* function = scope()->function();
|
| - ASSERT(function->proxy()->var()->mode() == CONST ||
|
| + DCHECK(function->proxy()->var()->mode() == CONST ||
|
| function->proxy()->var()->mode() == CONST_LEGACY);
|
| - ASSERT(function->proxy()->var()->location() != Variable::UNALLOCATED);
|
| + DCHECK(function->proxy()->var()->location() != Variable::UNALLOCATED);
|
| VisitVariableDeclaration(function);
|
| }
|
| VisitDeclarations(scope()->declarations());
|
| @@ -316,11 +316,11 @@ void FullCodeGenerator::Generate() {
|
| }
|
|
|
| { Comment cmnt(masm_, "[ Body");
|
| - ASSERT(loop_depth() == 0);
|
| + DCHECK(loop_depth() == 0);
|
|
|
| VisitStatements(function()->body());
|
|
|
| - ASSERT(loop_depth() == 0);
|
| + DCHECK(loop_depth() == 0);
|
| }
|
| }
|
|
|
| @@ -334,7 +334,7 @@ void FullCodeGenerator::Generate() {
|
|
|
|
|
| void FullCodeGenerator::ClearAccumulator() {
|
| - ASSERT(Smi::FromInt(0) == 0);
|
| + DCHECK(Smi::FromInt(0) == 0);
|
| __ mov(v0, zero_reg);
|
| }
|
|
|
| @@ -369,7 +369,7 @@ void FullCodeGenerator::EmitBackEdgeBookkeeping(IterationStatement* stmt,
|
| Assembler::BlockTrampolinePoolScope block_trampoline_pool(masm_);
|
| Comment cmnt(masm_, "[ Back edge bookkeeping");
|
| Label ok;
|
| - ASSERT(back_edge_target->is_bound());
|
| + DCHECK(back_edge_target->is_bound());
|
| int distance = masm_->SizeOfCodeGeneratedSince(back_edge_target);
|
| int weight = Min(kMaxBackEdgeWeight,
|
| Max(1, distance / kCodeSizeMultiplier));
|
| @@ -448,7 +448,7 @@ void FullCodeGenerator::EmitReturnSequence() {
|
| #ifdef DEBUG
|
| // Check that the size of the code used for returning is large enough
|
| // for the debugger's requirements.
|
| - ASSERT(Assembler::kJSReturnSequenceInstructions <=
|
| + DCHECK(Assembler::kJSReturnSequenceInstructions <=
|
| masm_->InstructionsGeneratedSince(&check_exit_codesize));
|
| #endif
|
| }
|
| @@ -456,18 +456,18 @@ void FullCodeGenerator::EmitReturnSequence() {
|
|
|
|
|
| void FullCodeGenerator::EffectContext::Plug(Variable* var) const {
|
| - ASSERT(var->IsStackAllocated() || var->IsContextSlot());
|
| + DCHECK(var->IsStackAllocated() || var->IsContextSlot());
|
| }
|
|
|
|
|
| void FullCodeGenerator::AccumulatorValueContext::Plug(Variable* var) const {
|
| - ASSERT(var->IsStackAllocated() || var->IsContextSlot());
|
| + DCHECK(var->IsStackAllocated() || var->IsContextSlot());
|
| codegen()->GetVar(result_register(), var);
|
| }
|
|
|
|
|
| void FullCodeGenerator::StackValueContext::Plug(Variable* var) const {
|
| - ASSERT(var->IsStackAllocated() || var->IsContextSlot());
|
| + DCHECK(var->IsStackAllocated() || var->IsContextSlot());
|
| codegen()->GetVar(result_register(), var);
|
| __ push(result_register());
|
| }
|
| @@ -538,7 +538,7 @@ void FullCodeGenerator::TestContext::Plug(Handle<Object> lit) const {
|
| true,
|
| true_label_,
|
| false_label_);
|
| - ASSERT(!lit->IsUndetectableObject()); // There are no undetectable literals.
|
| + DCHECK(!lit->IsUndetectableObject()); // There are no undetectable literals.
|
| if (lit->IsUndefined() || lit->IsNull() || lit->IsFalse()) {
|
| if (false_label_ != fall_through_) __ Branch(false_label_);
|
| } else if (lit->IsTrue() || lit->IsJSObject()) {
|
| @@ -565,7 +565,7 @@ void FullCodeGenerator::TestContext::Plug(Handle<Object> lit) const {
|
|
|
| void FullCodeGenerator::EffectContext::DropAndPlug(int count,
|
| Register reg) const {
|
| - ASSERT(count > 0);
|
| + DCHECK(count > 0);
|
| __ Drop(count);
|
| }
|
|
|
| @@ -573,7 +573,7 @@ void FullCodeGenerator::EffectContext::DropAndPlug(int count,
|
| void FullCodeGenerator::AccumulatorValueContext::DropAndPlug(
|
| int count,
|
| Register reg) const {
|
| - ASSERT(count > 0);
|
| + DCHECK(count > 0);
|
| __ Drop(count);
|
| __ Move(result_register(), reg);
|
| }
|
| @@ -581,7 +581,7 @@ void FullCodeGenerator::AccumulatorValueContext::DropAndPlug(
|
|
|
| void FullCodeGenerator::StackValueContext::DropAndPlug(int count,
|
| Register reg) const {
|
| - ASSERT(count > 0);
|
| + DCHECK(count > 0);
|
| if (count > 1) __ Drop(count - 1);
|
| __ sd(reg, MemOperand(sp, 0));
|
| }
|
| @@ -589,7 +589,7 @@ void FullCodeGenerator::StackValueContext::DropAndPlug(int count,
|
|
|
| void FullCodeGenerator::TestContext::DropAndPlug(int count,
|
| Register reg) const {
|
| - ASSERT(count > 0);
|
| + DCHECK(count > 0);
|
| // For simplicity we always test the accumulator register.
|
| __ Drop(count);
|
| __ Move(result_register(), reg);
|
| @@ -600,7 +600,7 @@ void FullCodeGenerator::TestContext::DropAndPlug(int count,
|
|
|
| void FullCodeGenerator::EffectContext::Plug(Label* materialize_true,
|
| Label* materialize_false) const {
|
| - ASSERT(materialize_true == materialize_false);
|
| + DCHECK(materialize_true == materialize_false);
|
| __ bind(materialize_true);
|
| }
|
|
|
| @@ -636,8 +636,8 @@ void FullCodeGenerator::StackValueContext::Plug(
|
|
|
| void FullCodeGenerator::TestContext::Plug(Label* materialize_true,
|
| Label* materialize_false) const {
|
| - ASSERT(materialize_true == true_label_);
|
| - ASSERT(materialize_false == false_label_);
|
| + DCHECK(materialize_true == true_label_);
|
| + DCHECK(materialize_false == false_label_);
|
| }
|
|
|
|
|
| @@ -703,7 +703,7 @@ void FullCodeGenerator::Split(Condition cc,
|
|
|
|
|
| MemOperand FullCodeGenerator::StackOperand(Variable* var) {
|
| - ASSERT(var->IsStackAllocated());
|
| + DCHECK(var->IsStackAllocated());
|
| // Offset is negative because higher indexes are at lower addresses.
|
| int offset = -var->index() * kPointerSize;
|
| // Adjust by a (parameter or local) base offset.
|
| @@ -717,7 +717,7 @@ MemOperand FullCodeGenerator::StackOperand(Variable* var) {
|
|
|
|
|
| MemOperand FullCodeGenerator::VarOperand(Variable* var, Register scratch) {
|
| - ASSERT(var->IsContextSlot() || var->IsStackAllocated());
|
| + DCHECK(var->IsContextSlot() || var->IsStackAllocated());
|
| if (var->IsContextSlot()) {
|
| int context_chain_length = scope()->ContextChainLength(var->scope());
|
| __ LoadContext(scratch, context_chain_length);
|
| @@ -739,10 +739,10 @@ void FullCodeGenerator::SetVar(Variable* var,
|
| Register src,
|
| Register scratch0,
|
| Register scratch1) {
|
| - ASSERT(var->IsContextSlot() || var->IsStackAllocated());
|
| - ASSERT(!scratch0.is(src));
|
| - ASSERT(!scratch0.is(scratch1));
|
| - ASSERT(!scratch1.is(src));
|
| + DCHECK(var->IsContextSlot() || var->IsStackAllocated());
|
| + DCHECK(!scratch0.is(src));
|
| + DCHECK(!scratch0.is(scratch1));
|
| + DCHECK(!scratch1.is(src));
|
| MemOperand location = VarOperand(var, scratch0);
|
| __ sd(src, location);
|
| // Emit the write barrier code if the location is in the heap.
|
| @@ -780,7 +780,7 @@ void FullCodeGenerator::PrepareForBailoutBeforeSplit(Expression* expr,
|
| void FullCodeGenerator::EmitDebugCheckDeclarationContext(Variable* variable) {
|
| // The variable in the declaration always resides in the current function
|
| // context.
|
| - ASSERT_EQ(0, scope()->ContextChainLength(variable->scope()));
|
| + DCHECK_EQ(0, scope()->ContextChainLength(variable->scope()));
|
| if (generate_debug_code_) {
|
| // Check that we're not inside a with or catch context.
|
| __ ld(a1, FieldMemOperand(cp, HeapObject::kMapOffset));
|
| @@ -836,7 +836,7 @@ void FullCodeGenerator::VisitVariableDeclaration(
|
| Comment cmnt(masm_, "[ VariableDeclaration");
|
| __ li(a2, Operand(variable->name()));
|
| // Declaration nodes are always introduced in one of four modes.
|
| - ASSERT(IsDeclaredVariableMode(mode));
|
| + DCHECK(IsDeclaredVariableMode(mode));
|
| PropertyAttributes attr =
|
| IsImmutableVariableMode(mode) ? READ_ONLY : NONE;
|
| __ li(a1, Operand(Smi::FromInt(attr)));
|
| @@ -848,7 +848,7 @@ void FullCodeGenerator::VisitVariableDeclaration(
|
| __ LoadRoot(a0, Heap::kTheHoleValueRootIndex);
|
| __ Push(cp, a2, a1, a0);
|
| } else {
|
| - ASSERT(Smi::FromInt(0) == 0);
|
| + DCHECK(Smi::FromInt(0) == 0);
|
| __ mov(a0, zero_reg); // Smi::FromInt(0) indicates no initial value.
|
| __ Push(cp, a2, a1, a0);
|
| }
|
| @@ -917,8 +917,8 @@ void FullCodeGenerator::VisitFunctionDeclaration(
|
|
|
| void FullCodeGenerator::VisitModuleDeclaration(ModuleDeclaration* declaration) {
|
| Variable* variable = declaration->proxy()->var();
|
| - ASSERT(variable->location() == Variable::CONTEXT);
|
| - ASSERT(variable->interface()->IsFrozen());
|
| + DCHECK(variable->location() == Variable::CONTEXT);
|
| + DCHECK(variable->interface()->IsFrozen());
|
| Comment cmnt(masm_, "[ ModuleDeclaration");
|
| EmitDebugCheckDeclarationContext(variable);
|
|
|
| @@ -1216,7 +1216,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
|
|
| // For proxies, no filtering is done.
|
| // TODO(rossberg): What if only a prototype is a proxy? Not specified yet.
|
| - ASSERT_EQ(Smi::FromInt(0), 0);
|
| + DCHECK_EQ(Smi::FromInt(0), 0);
|
| __ Branch(&update_each, eq, a2, Operand(zero_reg));
|
|
|
| // Convert the entry to a string or (smi) 0 if it isn't a property
|
| @@ -1398,7 +1398,7 @@ void FullCodeGenerator::EmitLoadGlobalCheckExtensions(VariableProxy* proxy,
|
|
|
| MemOperand FullCodeGenerator::ContextSlotOperandCheckExtensions(Variable* var,
|
| Label* slow) {
|
| - ASSERT(var->IsContextSlot());
|
| + DCHECK(var->IsContextSlot());
|
| Register context = cp;
|
| Register next = a3;
|
| Register temp = a4;
|
| @@ -1495,7 +1495,7 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
| // always looked up dynamically, i.e. in that case
|
| // var->location() == LOOKUP.
|
| // always holds.
|
| - ASSERT(var->scope() != NULL);
|
| + DCHECK(var->scope() != NULL);
|
|
|
| // Check if the binding really needs an initialization check. The check
|
| // can be skipped in the following situation: we have a LET or CONST
|
| @@ -1518,8 +1518,8 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
| skip_init_check = false;
|
| } else {
|
| // Check that we always have valid source position.
|
| - ASSERT(var->initializer_position() != RelocInfo::kNoPosition);
|
| - ASSERT(proxy->position() != RelocInfo::kNoPosition);
|
| + DCHECK(var->initializer_position() != RelocInfo::kNoPosition);
|
| + DCHECK(proxy->position() != RelocInfo::kNoPosition);
|
| skip_init_check = var->mode() != CONST_LEGACY &&
|
| var->initializer_position() < proxy->position();
|
| }
|
| @@ -1540,7 +1540,7 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
| __ bind(&done);
|
| } else {
|
| // Uninitalized const bindings outside of harmony mode are unholed.
|
| - ASSERT(var->mode() == CONST_LEGACY);
|
| + DCHECK(var->mode() == CONST_LEGACY);
|
| __ LoadRoot(a0, Heap::kUndefinedValueRootIndex);
|
| __ Movz(v0, a0, at); // Conditional move: Undefined if TheHole.
|
| }
|
| @@ -1680,14 +1680,14 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
|
| case ObjectLiteral::Property::CONSTANT:
|
| UNREACHABLE();
|
| case ObjectLiteral::Property::MATERIALIZED_LITERAL:
|
| - ASSERT(!CompileTimeValue::IsCompileTimeValue(property->value()));
|
| + DCHECK(!CompileTimeValue::IsCompileTimeValue(property->value()));
|
| // Fall through.
|
| case ObjectLiteral::Property::COMPUTED:
|
| if (key->value()->IsInternalizedString()) {
|
| if (property->emit_store()) {
|
| VisitForAccumulatorValue(value);
|
| __ mov(StoreIC::ValueRegister(), result_register());
|
| - ASSERT(StoreIC::ValueRegister().is(a0));
|
| + DCHECK(StoreIC::ValueRegister().is(a0));
|
| __ li(StoreIC::NameRegister(), Operand(key->value()));
|
| __ ld(StoreIC::ReceiverRegister(), MemOperand(sp));
|
| CallStoreIC(key->LiteralFeedbackId());
|
| @@ -1746,7 +1746,7 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
|
| }
|
|
|
| if (expr->has_function()) {
|
| - ASSERT(result_saved);
|
| + DCHECK(result_saved);
|
| __ ld(a0, MemOperand(sp));
|
| __ push(a0);
|
| __ CallRuntime(Runtime::kToFastProperties, 1);
|
| @@ -1772,7 +1772,7 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) {
|
| int length = subexprs->length();
|
|
|
| Handle<FixedArray> constant_elements = expr->constant_elements();
|
| - ASSERT_EQ(2, constant_elements->length());
|
| + DCHECK_EQ(2, constant_elements->length());
|
| ElementsKind constant_elements_kind =
|
| static_cast<ElementsKind>(Smi::cast(constant_elements->get(0))->value());
|
| bool has_fast_elements =
|
| @@ -1847,7 +1847,7 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) {
|
|
|
|
|
| void FullCodeGenerator::VisitAssignment(Assignment* expr) {
|
| - ASSERT(expr->target()->IsValidReferenceExpression());
|
| + DCHECK(expr->target()->IsValidReferenceExpression());
|
|
|
| Comment cmnt(masm_, "[ Assignment");
|
|
|
| @@ -1978,7 +1978,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
|
|
| __ bind(&suspend);
|
| VisitForAccumulatorValue(expr->generator_object());
|
| - ASSERT(continuation.pos() > 0 && Smi::IsValid(continuation.pos()));
|
| + DCHECK(continuation.pos() > 0 && Smi::IsValid(continuation.pos()));
|
| __ li(a1, Operand(Smi::FromInt(continuation.pos())));
|
| __ sd(a1, FieldMemOperand(v0, JSGeneratorObject::kContinuationOffset));
|
| __ sd(cp, FieldMemOperand(v0, JSGeneratorObject::kContextOffset));
|
| @@ -2051,7 +2051,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
| const int generator_object_depth = kPointerSize + handler_size;
|
| __ ld(a0, MemOperand(sp, generator_object_depth));
|
| __ push(a0); // g
|
| - ASSERT(l_continuation.pos() > 0 && Smi::IsValid(l_continuation.pos()));
|
| + DCHECK(l_continuation.pos() > 0 && Smi::IsValid(l_continuation.pos()));
|
| __ li(a1, Operand(Smi::FromInt(l_continuation.pos())));
|
| __ sd(a1, FieldMemOperand(a0, JSGeneratorObject::kContinuationOffset));
|
| __ sd(cp, FieldMemOperand(a0, JSGeneratorObject::kContextOffset));
|
| @@ -2206,7 +2206,7 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
| __ push(a2);
|
| __ Branch(&push_operand_holes);
|
| __ bind(&call_resume);
|
| - ASSERT(!result_register().is(a1));
|
| + DCHECK(!result_register().is(a1));
|
| __ Push(a1, result_register());
|
| __ Push(Smi::FromInt(resume_mode));
|
| __ CallRuntime(Runtime::kResumeJSGeneratorObject, 3);
|
| @@ -2258,7 +2258,7 @@ void FullCodeGenerator::EmitCreateIteratorResult(bool done) {
|
| __ pop(a2);
|
| __ li(a3, Operand(isolate()->factory()->ToBoolean(done)));
|
| __ li(a4, Operand(isolate()->factory()->empty_fixed_array()));
|
| - ASSERT_EQ(map->instance_size(), 5 * kPointerSize);
|
| + DCHECK_EQ(map->instance_size(), 5 * kPointerSize);
|
| __ sd(a1, FieldMemOperand(v0, HeapObject::kMapOffset));
|
| __ sd(a4, FieldMemOperand(v0, JSObject::kPropertiesOffset));
|
| __ sd(a4, FieldMemOperand(v0, JSObject::kElementsOffset));
|
| @@ -2372,7 +2372,7 @@ void FullCodeGenerator::EmitInlineSmiBinaryOp(BinaryOperation* expr,
|
| __ Branch(USE_DELAY_SLOT, &done, ne, v0, Operand(zero_reg));
|
| __ Daddu(scratch2, right, left);
|
| __ Branch(&stub_call, lt, scratch2, Operand(zero_reg));
|
| - ASSERT(Smi::FromInt(0) == 0);
|
| + DCHECK(Smi::FromInt(0) == 0);
|
| __ mov(v0, zero_reg);
|
| break;
|
| }
|
| @@ -2408,7 +2408,7 @@ void FullCodeGenerator::EmitBinaryOp(BinaryOperation* expr,
|
|
|
|
|
| void FullCodeGenerator::EmitAssignment(Expression* expr) {
|
| - ASSERT(expr->IsValidReferenceExpression());
|
| + DCHECK(expr->IsValidReferenceExpression());
|
|
|
| // Left-hand side can only be a property, a global or a (parameter or local)
|
| // slot.
|
| @@ -2477,13 +2477,13 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var, Token::Value op) {
|
| CallStoreIC();
|
| } else if (op == Token::INIT_CONST_LEGACY) {
|
| // Const initializers need a write barrier.
|
| - ASSERT(!var->IsParameter()); // No const parameters.
|
| + DCHECK(!var->IsParameter()); // No const parameters.
|
| if (var->IsLookupSlot()) {
|
| __ li(a0, Operand(var->name()));
|
| __ Push(v0, cp, a0); // Context and name.
|
| __ CallRuntime(Runtime::kInitializeLegacyConstLookupSlot, 3);
|
| } else {
|
| - ASSERT(var->IsStackAllocated() || var->IsContextSlot());
|
| + DCHECK(var->IsStackAllocated() || var->IsContextSlot());
|
| Label skip;
|
| MemOperand location = VarOperand(var, a1);
|
| __ ld(a2, location);
|
| @@ -2495,8 +2495,8 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var, Token::Value op) {
|
|
|
| } else if (var->mode() == LET && op != Token::INIT_LET) {
|
| // Non-initializing assignment to let variable needs a write barrier.
|
| - ASSERT(!var->IsLookupSlot());
|
| - ASSERT(var->IsStackAllocated() || var->IsContextSlot());
|
| + DCHECK(!var->IsLookupSlot());
|
| + DCHECK(var->IsStackAllocated() || var->IsContextSlot());
|
| Label assign;
|
| MemOperand location = VarOperand(var, a1);
|
| __ ld(a3, location);
|
| @@ -2523,7 +2523,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var, Token::Value op) {
|
| } else {
|
| // Assignment to var or initializing assignment to let/const in harmony
|
| // mode.
|
| - ASSERT((var->IsStackAllocated() || var->IsContextSlot()));
|
| + DCHECK((var->IsStackAllocated() || var->IsContextSlot()));
|
| MemOperand location = VarOperand(var, a1);
|
| if (generate_debug_code_ && op == Token::INIT_LET) {
|
| // Check for an uninitialized let binding.
|
| @@ -2541,8 +2541,8 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var, Token::Value op) {
|
| void FullCodeGenerator::EmitNamedPropertyAssignment(Assignment* expr) {
|
| // Assignment to a property, using a named store IC.
|
| Property* prop = expr->target()->AsProperty();
|
| - ASSERT(prop != NULL);
|
| - ASSERT(prop->key()->IsLiteral());
|
| + DCHECK(prop != NULL);
|
| + DCHECK(prop->key()->IsLiteral());
|
|
|
| // Record source code position before IC call.
|
| SetSourcePosition(expr->position());
|
| @@ -2568,7 +2568,7 @@ void FullCodeGenerator::EmitKeyedPropertyAssignment(Assignment* expr) {
|
| // - a2 is the receiver.
|
| __ mov(KeyedStoreIC::ValueRegister(), result_register());
|
| __ Pop(KeyedStoreIC::ReceiverRegister(), KeyedStoreIC::NameRegister());
|
| - ASSERT(KeyedStoreIC::ValueRegister().is(a0));
|
| + DCHECK(KeyedStoreIC::ValueRegister().is(a0));
|
|
|
| Handle<Code> ic = strict_mode() == SLOPPY
|
| ? isolate()->builtins()->KeyedStoreIC_Initialize()
|
| @@ -2627,7 +2627,7 @@ void FullCodeGenerator::EmitCallWithLoadIC(Call* expr) {
|
| __ Push(isolate()->factory()->undefined_value());
|
| } else {
|
| // Load the function from the receiver.
|
| - ASSERT(callee->IsProperty());
|
| + DCHECK(callee->IsProperty());
|
| __ ld(LoadIC::ReceiverRegister(), MemOperand(sp, 0));
|
| EmitNamedPropertyLoad(callee->AsProperty());
|
| PrepareForBailoutForId(callee->AsProperty()->LoadId(), TOS_REG);
|
| @@ -2650,7 +2650,7 @@ void FullCodeGenerator::EmitKeyedCallWithLoadIC(Call* expr,
|
| Expression* callee = expr->expression();
|
|
|
| // Load the function from the receiver.
|
| - ASSERT(callee->IsProperty());
|
| + DCHECK(callee->IsProperty());
|
| __ ld(LoadIC::ReceiverRegister(), MemOperand(sp, 0));
|
| __ Move(LoadIC::NameRegister(), v0);
|
| EmitKeyedPropertyLoad(callee->AsProperty());
|
| @@ -2780,7 +2780,7 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
| __ bind(&slow);
|
| // Call the runtime to find the function to call (returned in v0)
|
| // and the object holding it (returned in v1).
|
| - ASSERT(!context_register().is(a2));
|
| + DCHECK(!context_register().is(a2));
|
| __ li(a2, Operand(proxy->name()));
|
| __ Push(context_register(), a2);
|
| __ CallRuntime(Runtime::kLoadLookupSlot, 2);
|
| @@ -2816,7 +2816,7 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
| EmitKeyedCallWithLoadIC(expr, property->key());
|
| }
|
| } else {
|
| - ASSERT(call_type == Call::OTHER_CALL);
|
| + DCHECK(call_type == Call::OTHER_CALL);
|
| // Call to an arbitrary expression not handled specially above.
|
| { PreservePositionScope scope(masm()->positions_recorder());
|
| VisitForStackValue(callee);
|
| @@ -2829,7 +2829,7 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
|
|
| #ifdef DEBUG
|
| // RecordJSReturnSite should have been called.
|
| - ASSERT(expr->return_is_recorded_);
|
| + DCHECK(expr->return_is_recorded_);
|
| #endif
|
| }
|
|
|
| @@ -2862,7 +2862,7 @@ void FullCodeGenerator::VisitCallNew(CallNew* expr) {
|
| // Record call targets in unoptimized code.
|
| if (FLAG_pretenuring_call_new) {
|
| EnsureSlotContainsAllocationSite(expr->AllocationSiteFeedbackSlot());
|
| - ASSERT(expr->AllocationSiteFeedbackSlot() ==
|
| + DCHECK(expr->AllocationSiteFeedbackSlot() ==
|
| expr->CallNewFeedbackSlot() + 1);
|
| }
|
|
|
| @@ -2878,7 +2878,7 @@ void FullCodeGenerator::VisitCallNew(CallNew* expr) {
|
|
|
| void FullCodeGenerator::EmitIsSmi(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
|
|
| VisitForAccumulatorValue(args->at(0));
|
|
|
| @@ -2899,7 +2899,7 @@ void FullCodeGenerator::EmitIsSmi(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitIsNonNegativeSmi(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
|
|
| VisitForAccumulatorValue(args->at(0));
|
|
|
| @@ -2920,7 +2920,7 @@ void FullCodeGenerator::EmitIsNonNegativeSmi(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitIsObject(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
|
|
| VisitForAccumulatorValue(args->at(0));
|
|
|
| @@ -2951,7 +2951,7 @@ void FullCodeGenerator::EmitIsObject(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitIsSpecObject(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
|
|
| VisitForAccumulatorValue(args->at(0));
|
|
|
| @@ -2974,7 +2974,7 @@ void FullCodeGenerator::EmitIsSpecObject(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitIsUndetectableObject(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
|
|
| VisitForAccumulatorValue(args->at(0));
|
|
|
| @@ -2999,7 +2999,7 @@ void FullCodeGenerator::EmitIsUndetectableObject(CallRuntime* expr) {
|
| void FullCodeGenerator::EmitIsStringWrapperSafeForDefaultValueOf(
|
| CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
|
|
| VisitForAccumulatorValue(args->at(0));
|
|
|
| @@ -3087,7 +3087,7 @@ void FullCodeGenerator::EmitIsStringWrapperSafeForDefaultValueOf(
|
|
|
| void FullCodeGenerator::EmitIsFunction(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
|
|
| VisitForAccumulatorValue(args->at(0));
|
|
|
| @@ -3110,7 +3110,7 @@ void FullCodeGenerator::EmitIsFunction(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitIsMinusZero(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
|
|
| VisitForAccumulatorValue(args->at(0));
|
|
|
| @@ -3140,7 +3140,7 @@ void FullCodeGenerator::EmitIsMinusZero(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitIsArray(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
|
|
| VisitForAccumulatorValue(args->at(0));
|
|
|
| @@ -3163,7 +3163,7 @@ void FullCodeGenerator::EmitIsArray(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitIsRegExp(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
|
|
| VisitForAccumulatorValue(args->at(0));
|
|
|
| @@ -3184,7 +3184,7 @@ void FullCodeGenerator::EmitIsRegExp(CallRuntime* expr) {
|
|
|
|
|
| void FullCodeGenerator::EmitIsConstructCall(CallRuntime* expr) {
|
| - ASSERT(expr->arguments()->length() == 0);
|
| + DCHECK(expr->arguments()->length() == 0);
|
|
|
| Label materialize_true, materialize_false;
|
| Label* if_true = NULL;
|
| @@ -3216,7 +3216,7 @@ void FullCodeGenerator::EmitIsConstructCall(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitObjectEquals(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 2);
|
| + DCHECK(args->length() == 2);
|
|
|
| // Load the two objects into registers and perform the comparison.
|
| VisitForStackValue(args->at(0));
|
| @@ -3239,7 +3239,7 @@ void FullCodeGenerator::EmitObjectEquals(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitArguments(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
|
|
| // ArgumentsAccessStub expects the key in a1 and the formal
|
| // parameter count in a0.
|
| @@ -3253,7 +3253,7 @@ void FullCodeGenerator::EmitArguments(CallRuntime* expr) {
|
|
|
|
|
| void FullCodeGenerator::EmitArgumentsLength(CallRuntime* expr) {
|
| - ASSERT(expr->arguments()->length() == 0);
|
| + DCHECK(expr->arguments()->length() == 0);
|
| Label exit;
|
| // Get the number of formal parameters.
|
| __ li(v0, Operand(Smi::FromInt(info_->scope()->num_parameters())));
|
| @@ -3275,7 +3275,7 @@ void FullCodeGenerator::EmitArgumentsLength(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitClassOf(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
| Label done, null, function, non_function_constructor;
|
|
|
| VisitForAccumulatorValue(args->at(0));
|
| @@ -3337,7 +3337,7 @@ void FullCodeGenerator::EmitSubString(CallRuntime* expr) {
|
| // Load the arguments on the stack and call the stub.
|
| SubStringStub stub(isolate());
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 3);
|
| + DCHECK(args->length() == 3);
|
| VisitForStackValue(args->at(0));
|
| VisitForStackValue(args->at(1));
|
| VisitForStackValue(args->at(2));
|
| @@ -3350,7 +3350,7 @@ void FullCodeGenerator::EmitRegExpExec(CallRuntime* expr) {
|
| // Load the arguments on the stack and call the stub.
|
| RegExpExecStub stub(isolate());
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 4);
|
| + DCHECK(args->length() == 4);
|
| VisitForStackValue(args->at(0));
|
| VisitForStackValue(args->at(1));
|
| VisitForStackValue(args->at(2));
|
| @@ -3362,7 +3362,7 @@ void FullCodeGenerator::EmitRegExpExec(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitValueOf(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
|
|
| VisitForAccumulatorValue(args->at(0)); // Load the object.
|
|
|
| @@ -3382,8 +3382,8 @@ void FullCodeGenerator::EmitValueOf(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitDateField(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 2);
|
| - ASSERT_NE(NULL, args->at(1)->AsLiteral());
|
| + DCHECK(args->length() == 2);
|
| + DCHECK_NE(NULL, args->at(1)->AsLiteral());
|
| Smi* index = Smi::cast(*(args->at(1)->AsLiteral()->value()));
|
|
|
| VisitForAccumulatorValue(args->at(0)); // Load the object.
|
| @@ -3429,7 +3429,7 @@ void FullCodeGenerator::EmitDateField(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitOneByteSeqStringSetChar(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT_EQ(3, args->length());
|
| + DCHECK_EQ(3, args->length());
|
|
|
| Register string = v0;
|
| Register index = a1;
|
| @@ -3466,7 +3466,7 @@ void FullCodeGenerator::EmitOneByteSeqStringSetChar(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitTwoByteSeqStringSetChar(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT_EQ(3, args->length());
|
| + DCHECK_EQ(3, args->length());
|
|
|
| Register string = v0;
|
| Register index = a1;
|
| @@ -3505,7 +3505,7 @@ void FullCodeGenerator::EmitTwoByteSeqStringSetChar(CallRuntime* expr) {
|
| void FullCodeGenerator::EmitMathPow(CallRuntime* expr) {
|
| // Load the arguments on the stack and call the runtime function.
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 2);
|
| + DCHECK(args->length() == 2);
|
| VisitForStackValue(args->at(0));
|
| VisitForStackValue(args->at(1));
|
| MathPowStub stub(isolate(), MathPowStub::ON_STACK);
|
| @@ -3516,7 +3516,7 @@ void FullCodeGenerator::EmitMathPow(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitSetValueOf(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 2);
|
| + DCHECK(args->length() == 2);
|
|
|
| VisitForStackValue(args->at(0)); // Load the object.
|
| VisitForAccumulatorValue(args->at(1)); // Load the value.
|
| @@ -3545,7 +3545,7 @@ void FullCodeGenerator::EmitSetValueOf(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitNumberToString(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT_EQ(args->length(), 1);
|
| + DCHECK_EQ(args->length(), 1);
|
|
|
| // Load the argument into a0 and call the stub.
|
| VisitForAccumulatorValue(args->at(0));
|
| @@ -3559,7 +3559,7 @@ void FullCodeGenerator::EmitNumberToString(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitStringCharFromCode(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
|
|
| VisitForAccumulatorValue(args->at(0));
|
|
|
| @@ -3578,7 +3578,7 @@ void FullCodeGenerator::EmitStringCharFromCode(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitStringCharCodeAt(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 2);
|
| + DCHECK(args->length() == 2);
|
|
|
| VisitForStackValue(args->at(0));
|
| VisitForAccumulatorValue(args->at(1));
|
| @@ -3625,7 +3625,7 @@ void FullCodeGenerator::EmitStringCharCodeAt(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitStringCharAt(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 2);
|
| + DCHECK(args->length() == 2);
|
|
|
| VisitForStackValue(args->at(0));
|
| VisitForAccumulatorValue(args->at(1));
|
| @@ -3674,7 +3674,7 @@ void FullCodeGenerator::EmitStringCharAt(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitStringAdd(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT_EQ(2, args->length());
|
| + DCHECK_EQ(2, args->length());
|
| VisitForStackValue(args->at(0));
|
| VisitForAccumulatorValue(args->at(1));
|
|
|
| @@ -3688,7 +3688,7 @@ void FullCodeGenerator::EmitStringAdd(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitStringCompare(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT_EQ(2, args->length());
|
| + DCHECK_EQ(2, args->length());
|
|
|
| VisitForStackValue(args->at(0));
|
| VisitForStackValue(args->at(1));
|
| @@ -3701,7 +3701,7 @@ void FullCodeGenerator::EmitStringCompare(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitCallFunction(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() >= 2);
|
| + DCHECK(args->length() >= 2);
|
|
|
| int arg_count = args->length() - 2; // 2 ~ receiver and function.
|
| for (int i = 0; i < arg_count + 1; i++) {
|
| @@ -3734,7 +3734,7 @@ void FullCodeGenerator::EmitCallFunction(CallRuntime* expr) {
|
| void FullCodeGenerator::EmitRegExpConstructResult(CallRuntime* expr) {
|
| RegExpConstructResultStub stub(isolate());
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 3);
|
| + DCHECK(args->length() == 3);
|
| VisitForStackValue(args->at(0));
|
| VisitForStackValue(args->at(1));
|
| VisitForAccumulatorValue(args->at(2));
|
| @@ -3748,9 +3748,9 @@ void FullCodeGenerator::EmitRegExpConstructResult(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitGetFromCache(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT_EQ(2, args->length());
|
| + DCHECK_EQ(2, args->length());
|
|
|
| - ASSERT_NE(NULL, args->at(0)->AsLiteral());
|
| + DCHECK_NE(NULL, args->at(0)->AsLiteral());
|
| int cache_id = Smi::cast(*(args->at(0)->AsLiteral()->value()))->value();
|
|
|
| Handle<FixedArray> jsfunction_result_caches(
|
| @@ -3823,7 +3823,7 @@ void FullCodeGenerator::EmitHasCachedArrayIndex(CallRuntime* expr) {
|
|
|
| void FullCodeGenerator::EmitGetCachedArrayIndex(CallRuntime* expr) {
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 1);
|
| + DCHECK(args->length() == 1);
|
| VisitForAccumulatorValue(args->at(0));
|
|
|
| __ AssertString(v0);
|
| @@ -3841,7 +3841,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
| empty_separator_loop, one_char_separator_loop,
|
| one_char_separator_loop_entry, long_separator_loop;
|
| ZoneList<Expression*>* args = expr->arguments();
|
| - ASSERT(args->length() == 2);
|
| + DCHECK(args->length() == 2);
|
| VisitForStackValue(args->at(1));
|
| VisitForAccumulatorValue(args->at(0));
|
|
|
| @@ -4000,7 +4000,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
| __ CopyBytes(string, result_pos, string_length, scratch1);
|
| // End while (element < elements_end).
|
| __ Branch(&empty_separator_loop, lt, element, Operand(elements_end));
|
| - ASSERT(result.is(v0));
|
| + DCHECK(result.is(v0));
|
| __ Branch(&done);
|
|
|
| // One-character separator case.
|
| @@ -4032,7 +4032,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
| __ CopyBytes(string, result_pos, string_length, scratch1);
|
| // End while (element < elements_end).
|
| __ Branch(&one_char_separator_loop, lt, element, Operand(elements_end));
|
| - ASSERT(result.is(v0));
|
| + DCHECK(result.is(v0));
|
| __ Branch(&done);
|
|
|
| // Long separator case (separator is more than one character). Entry is at the
|
| @@ -4061,7 +4061,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
| __ CopyBytes(string, result_pos, string_length, scratch1);
|
| // End while (element < elements_end).
|
| __ Branch(&long_separator_loop, lt, element, Operand(elements_end));
|
| - ASSERT(result.is(v0));
|
| + DCHECK(result.is(v0));
|
| __ Branch(&done);
|
|
|
| __ bind(&bailout);
|
| @@ -4072,7 +4072,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
|
|
|
|
| void FullCodeGenerator::EmitDebugIsActive(CallRuntime* expr) {
|
| - ASSERT(expr->arguments()->length() == 0);
|
| + DCHECK(expr->arguments()->length() == 0);
|
| ExternalReference debug_is_active =
|
| ExternalReference::debug_is_active_address(isolate());
|
| __ li(at, Operand(debug_is_active));
|
| @@ -4163,7 +4163,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
| Variable* var = proxy->var();
|
| // Delete of an unqualified identifier is disallowed in strict mode
|
| // but "delete this" is allowed.
|
| - ASSERT(strict_mode() == SLOPPY || var->is_this());
|
| + DCHECK(strict_mode() == SLOPPY || var->is_this());
|
| if (var->IsUnallocated()) {
|
| __ ld(a2, GlobalObjectOperand());
|
| __ li(a1, Operand(var->name()));
|
| @@ -4178,7 +4178,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
| } else {
|
| // Non-global variable. Call the runtime to try to delete from the
|
| // context where the variable was introduced.
|
| - ASSERT(!context_register().is(a2));
|
| + DCHECK(!context_register().is(a2));
|
| __ li(a2, Operand(var->name()));
|
| __ Push(context_register(), a2);
|
| __ CallRuntime(Runtime::kDeleteLookupSlot, 2);
|
| @@ -4219,7 +4219,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
| // for control and plugging the control flow into the context,
|
| // because we need to prepare a pair of extra administrative AST ids
|
| // for the optimizing compiler.
|
| - ASSERT(context()->IsAccumulatorValue() || context()->IsStackValue());
|
| + DCHECK(context()->IsAccumulatorValue() || context()->IsStackValue());
|
| Label materialize_true, materialize_false, done;
|
| VisitForControl(expr->expression(),
|
| &materialize_false,
|
| @@ -4256,7 +4256,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
|
|
|
|
| void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
| - ASSERT(expr->expression()->IsValidReferenceExpression());
|
| + DCHECK(expr->expression()->IsValidReferenceExpression());
|
|
|
| Comment cmnt(masm_, "[ CountOperation");
|
| SetSourcePosition(expr->position());
|
| @@ -4275,7 +4275,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
|
|
| // Evaluate expression and get value.
|
| if (assign_type == VARIABLE) {
|
| - ASSERT(expr->expression()->AsVariableProxy()->var() != NULL);
|
| + DCHECK(expr->expression()->AsVariableProxy()->var() != NULL);
|
| AccumulatorValueContext context(this);
|
| EmitVariableLoad(expr->expression()->AsVariableProxy());
|
| } else {
|
| @@ -4441,8 +4441,8 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
|
|
|
|
| void FullCodeGenerator::VisitForTypeofValue(Expression* expr) {
|
| - ASSERT(!context()->IsEffect());
|
| - ASSERT(!context()->IsTest());
|
| + DCHECK(!context()->IsEffect());
|
| + DCHECK(!context()->IsTest());
|
| VariableProxy* proxy = expr->AsVariableProxy();
|
| if (proxy != NULL && proxy->var()->IsUnallocated()) {
|
| Comment cmnt(masm_, "[ Global variable");
|
| @@ -4668,8 +4668,8 @@ Register FullCodeGenerator::context_register() {
|
|
|
|
|
| void FullCodeGenerator::StoreToFrameField(int frame_offset, Register value) {
|
| - // ASSERT_EQ(POINTER_SIZE_ALIGN(frame_offset), frame_offset);
|
| - ASSERT(IsAligned(frame_offset, kPointerSize));
|
| + // DCHECK_EQ(POINTER_SIZE_ALIGN(frame_offset), frame_offset);
|
| + DCHECK(IsAligned(frame_offset, kPointerSize));
|
| // __ sw(value, MemOperand(fp, frame_offset));
|
| __ sd(value, MemOperand(fp, frame_offset));
|
| }
|
| @@ -4695,7 +4695,7 @@ void FullCodeGenerator::PushFunctionArgumentForContextAllocation() {
|
| // code. Fetch it from the context.
|
| __ ld(at, ContextOperand(cp, Context::CLOSURE_INDEX));
|
| } else {
|
| - ASSERT(declaration_scope->is_function_scope());
|
| + DCHECK(declaration_scope->is_function_scope());
|
| __ ld(at, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
|
| }
|
| __ push(at);
|
| @@ -4706,7 +4706,7 @@ void FullCodeGenerator::PushFunctionArgumentForContextAllocation() {
|
| // Non-local control flow support.
|
|
|
| void FullCodeGenerator::EnterFinallyBlock() {
|
| - ASSERT(!result_register().is(a1));
|
| + DCHECK(!result_register().is(a1));
|
| // Store result register while executing finally block.
|
| __ push(result_register());
|
| // Cook return address in link register to stack (smi encoded Code* delta).
|
| @@ -4739,7 +4739,7 @@ void FullCodeGenerator::EnterFinallyBlock() {
|
|
|
|
|
| void FullCodeGenerator::ExitFinallyBlock() {
|
| - ASSERT(!result_register().is(a1));
|
| + DCHECK(!result_register().is(a1));
|
| // Restore pending message from stack.
|
| __ pop(a1);
|
| ExternalReference pending_message_script =
|
| @@ -4857,16 +4857,16 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
| Address branch_address = pc - 8 * kInstrSize;
|
| Address pc_immediate_load_address = pc - 6 * kInstrSize;
|
|
|
| - ASSERT(Assembler::IsBeq(Assembler::instr_at(pc - 7 * kInstrSize)));
|
| + DCHECK(Assembler::IsBeq(Assembler::instr_at(pc - 7 * kInstrSize)));
|
| if (!Assembler::IsAddImmediate(Assembler::instr_at(branch_address))) {
|
| - ASSERT(reinterpret_cast<uint64_t>(
|
| + DCHECK(reinterpret_cast<uint64_t>(
|
| Assembler::target_address_at(pc_immediate_load_address)) ==
|
| reinterpret_cast<uint64_t>(
|
| isolate->builtins()->InterruptCheck()->entry()));
|
| return INTERRUPT;
|
| }
|
|
|
| - ASSERT(Assembler::IsAddImmediate(Assembler::instr_at(branch_address)));
|
| + DCHECK(Assembler::IsAddImmediate(Assembler::instr_at(branch_address)));
|
|
|
| if (reinterpret_cast<uint64_t>(
|
| Assembler::target_address_at(pc_immediate_load_address)) ==
|
| @@ -4875,7 +4875,7 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
| return ON_STACK_REPLACEMENT;
|
| }
|
|
|
| - ASSERT(reinterpret_cast<uint64_t>(
|
| + DCHECK(reinterpret_cast<uint64_t>(
|
| Assembler::target_address_at(pc_immediate_load_address)) ==
|
| reinterpret_cast<uint64_t>(
|
| isolate->builtins()->OsrAfterStackCheck()->entry()));
|
|
|