OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/crankshaft/mips64/lithium-codegen-mips64.h" | 5 #include "src/crankshaft/mips64/lithium-codegen-mips64.h" |
6 | 6 |
7 #include "src/code-factory.h" | 7 #include "src/code-factory.h" |
8 #include "src/code-stubs.h" | 8 #include "src/code-stubs.h" |
9 #include "src/crankshaft/hydrogen-osr.h" | 9 #include "src/crankshaft/hydrogen-osr.h" |
10 #include "src/crankshaft/mips64/lithium-gap-resolver-mips64.h" | 10 #include "src/crankshaft/mips64/lithium-gap-resolver-mips64.h" |
(...skipping 4343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4354 } else { | 4354 } else { |
4355 // We should never get here at runtime because there is a smi check on | 4355 // We should never get here at runtime because there is a smi check on |
4356 // the key before this point. | 4356 // the key before this point. |
4357 __ stop("expected smi"); | 4357 __ stop("expected smi"); |
4358 } | 4358 } |
4359 } else { | 4359 } else { |
4360 __ mov(a3, ToRegister(key)); | 4360 __ mov(a3, ToRegister(key)); |
4361 __ SmiTag(a3); | 4361 __ SmiTag(a3); |
4362 } | 4362 } |
4363 | 4363 |
4364 GrowArrayElementsStub stub(isolate(), instr->hydrogen()->is_js_array(), | 4364 GrowArrayElementsStub stub(isolate(), instr->hydrogen()->kind()); |
4365 instr->hydrogen()->kind()); | |
4366 __ mov(a0, result); | 4365 __ mov(a0, result); |
4367 __ CallStub(&stub); | 4366 __ CallStub(&stub); |
4368 RecordSafepointWithLazyDeopt( | 4367 RecordSafepointWithLazyDeopt( |
4369 instr, RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS); | 4368 instr, RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS); |
4370 __ StoreToSafepointRegisterSlot(result, result); | 4369 __ StoreToSafepointRegisterSlot(result, result); |
4371 } | 4370 } |
4372 | 4371 |
4373 // Deopt on smi, which means the elements array changed to dictionary mode. | 4372 // Deopt on smi, which means the elements array changed to dictionary mode. |
4374 __ SmiTst(result, at); | 4373 __ SmiTst(result, at); |
4375 DeoptimizeIf(eq, instr, DeoptimizeReason::kSmi, at, Operand(zero_reg)); | 4374 DeoptimizeIf(eq, instr, DeoptimizeReason::kSmi, at, Operand(zero_reg)); |
(...skipping 1370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5746 __ ld(result, FieldMemOperand(scratch, | 5745 __ ld(result, FieldMemOperand(scratch, |
5747 FixedArray::kHeaderSize - kPointerSize)); | 5746 FixedArray::kHeaderSize - kPointerSize)); |
5748 __ bind(deferred->exit()); | 5747 __ bind(deferred->exit()); |
5749 __ bind(&done); | 5748 __ bind(&done); |
5750 } | 5749 } |
5751 | 5750 |
5752 #undef __ | 5751 #undef __ |
5753 | 5752 |
5754 } // namespace internal | 5753 } // namespace internal |
5755 } // namespace v8 | 5754 } // namespace v8 |
OLD | NEW |