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 <limits.h> // For LONG_MIN, LONG_MAX. | 5 #include <limits.h> // For LONG_MIN, LONG_MAX. |
6 | 6 |
7 #if V8_TARGET_ARCH_MIPS | 7 #if V8_TARGET_ARCH_MIPS |
8 | 8 |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/base/division-by-constant.h" | 10 #include "src/base/division-by-constant.h" |
(...skipping 5551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5562 void MacroAssembler::Prologue(bool code_pre_aging) { | 5562 void MacroAssembler::Prologue(bool code_pre_aging) { |
5563 PredictableCodeSizeScope predictible_code_size_scope( | 5563 PredictableCodeSizeScope predictible_code_size_scope( |
5564 this, kNoCodeAgeSequenceLength); | 5564 this, kNoCodeAgeSequenceLength); |
5565 // The following three instructions must remain together and unmodified | 5565 // The following three instructions must remain together and unmodified |
5566 // for code aging to work properly. | 5566 // for code aging to work properly. |
5567 if (code_pre_aging) { | 5567 if (code_pre_aging) { |
5568 // Pre-age the code. | 5568 // Pre-age the code. |
5569 Code* stub = Code::GetPreAgedCodeAgeStub(isolate()); | 5569 Code* stub = Code::GetPreAgedCodeAgeStub(isolate()); |
5570 nop(Assembler::CODE_AGE_MARKER_NOP); | 5570 nop(Assembler::CODE_AGE_MARKER_NOP); |
5571 // Load the stub address to t9 and call it, | 5571 // Load the stub address to t9 and call it, |
5572 // GetCodeAgeAndParity() extracts the stub address from this instruction. | 5572 // GetCodeAge() extracts the stub address from this instruction. |
5573 li(t9, | 5573 li(t9, |
5574 Operand(reinterpret_cast<uint32_t>(stub->instruction_start())), | 5574 Operand(reinterpret_cast<uint32_t>(stub->instruction_start())), |
5575 CONSTANT_SIZE); | 5575 CONSTANT_SIZE); |
5576 nop(); // Prevent jalr to jal optimization. | 5576 nop(); // Prevent jalr to jal optimization. |
5577 jalr(t9, a0); | 5577 jalr(t9, a0); |
5578 nop(); // Branch delay slot nop. | 5578 nop(); // Branch delay slot nop. |
5579 nop(); // Pad the empty space. | 5579 nop(); // Pad the empty space. |
5580 } else { | 5580 } else { |
5581 PushStandardFrame(a1); | 5581 PushStandardFrame(a1); |
5582 nop(Assembler::CODE_AGE_SEQUENCE_NOP); | 5582 nop(Assembler::CODE_AGE_SEQUENCE_NOP); |
(...skipping 1026 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6609 if (mag.shift > 0) sra(result, result, mag.shift); | 6609 if (mag.shift > 0) sra(result, result, mag.shift); |
6610 srl(at, dividend, 31); | 6610 srl(at, dividend, 31); |
6611 Addu(result, result, Operand(at)); | 6611 Addu(result, result, Operand(at)); |
6612 } | 6612 } |
6613 | 6613 |
6614 | 6614 |
6615 } // namespace internal | 6615 } // namespace internal |
6616 } // namespace v8 | 6616 } // namespace v8 |
6617 | 6617 |
6618 #endif // V8_TARGET_ARCH_MIPS | 6618 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |