Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(207)

Side by Side Diff: src/mips/simulator-mips.cc

Issue 1195783002: MIPS: Added data tracing to simulator (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/mips/simulator-mips.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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> 5 #include <limits.h>
6 #include <stdarg.h> 6 #include <stdarg.h>
7 #include <stdlib.h> 7 #include <stdlib.h>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "src/v8.h" 10 #include "src/v8.h"
(...skipping 1602 matching lines...) Expand 10 before | Expand all | Expand 10 after
1613 1613
1614 1614
1615 // The MIPS cannot do unaligned reads and writes. On some MIPS platforms an 1615 // The MIPS cannot do unaligned reads and writes. On some MIPS platforms an
1616 // interrupt is caused. On others it does a funky rotation thing. For now we 1616 // interrupt is caused. On others it does a funky rotation thing. For now we
1617 // simply disallow unaligned reads, but at some point we may want to move to 1617 // simply disallow unaligned reads, but at some point we may want to move to
1618 // emulating the rotate behaviour. Note that simulator runs have the runtime 1618 // emulating the rotate behaviour. Note that simulator runs have the runtime
1619 // system running directly on the host system and only generated code is 1619 // system running directly on the host system and only generated code is
1620 // executed in the simulator. Since the host is typically IA32 we will not 1620 // executed in the simulator. Since the host is typically IA32 we will not
1621 // get the correct MIPS-like behaviour on unaligned accesses. 1621 // get the correct MIPS-like behaviour on unaligned accesses.
1622 1622
1623 void Simulator::TraceRegWr(int32_t value) {
1624 if (::v8::internal::FLAG_trace_sim) {
1625 SNPrintF(trace_buf_, "%08x", value);
1626 }
1627 }
1628
1629
1630 // TODO(plind): consider making icount_ printing a flag option.
1631 void Simulator::TraceMemRd(int32_t addr, int32_t value) {
1632 if (::v8::internal::FLAG_trace_sim) {
1633 SNPrintF(trace_buf_, "%08x <-- [%08x] (%d)", value, addr, icount_);
1634 }
1635 }
1636
1637
1638 void Simulator::TraceMemWr(int32_t addr, int32_t value, TraceType t) {
1639 if (::v8::internal::FLAG_trace_sim) {
1640 switch (t) {
1641 case BYTE:
1642 SNPrintF(trace_buf_, " %02x --> [%08x]",
1643 static_cast<int8_t>(value), addr);
1644 break;
1645 case HALF:
1646 SNPrintF(trace_buf_, " %04x --> [%08x]", static_cast<int16_t>(value),
1647 addr);
1648 break;
1649 case WORD:
1650 SNPrintF(trace_buf_, "%08x --> [%08x]", value, addr);
1651 break;
1652 }
1653 }
1654 }
1655
1656
1623 int Simulator::ReadW(int32_t addr, Instruction* instr) { 1657 int Simulator::ReadW(int32_t addr, Instruction* instr) {
1624 if (addr >=0 && addr < 0x400) { 1658 if (addr >=0 && addr < 0x400) {
1625 // This has to be a NULL-dereference, drop into debugger. 1659 // This has to be a NULL-dereference, drop into debugger.
1626 PrintF("Memory read from bad address: 0x%08x, pc=0x%08x\n", 1660 PrintF("Memory read from bad address: 0x%08x, pc=0x%08x\n",
1627 addr, reinterpret_cast<intptr_t>(instr)); 1661 addr, reinterpret_cast<intptr_t>(instr));
1628 MipsDebugger dbg(this); 1662 MipsDebugger dbg(this);
1629 dbg.Debug(); 1663 dbg.Debug();
1630 } 1664 }
1631 if ((addr & kPointerAlignmentMask) == 0) { 1665 if ((addr & kPointerAlignmentMask) == 0) {
1632 intptr_t* ptr = reinterpret_cast<intptr_t*>(addr); 1666 intptr_t* ptr = reinterpret_cast<intptr_t*>(addr);
1667 TraceMemRd(addr, static_cast<int32_t>(*ptr));
1633 return *ptr; 1668 return *ptr;
1634 } 1669 }
1635 PrintF("Unaligned read at 0x%08x, pc=0x%08" V8PRIxPTR "\n", 1670 PrintF("Unaligned read at 0x%08x, pc=0x%08" V8PRIxPTR "\n",
1636 addr, 1671 addr,
1637 reinterpret_cast<intptr_t>(instr)); 1672 reinterpret_cast<intptr_t>(instr));
1638 MipsDebugger dbg(this); 1673 MipsDebugger dbg(this);
1639 dbg.Debug(); 1674 dbg.Debug();
1640 return 0; 1675 return 0;
1641 } 1676 }
1642 1677
1643 1678
1644 void Simulator::WriteW(int32_t addr, int value, Instruction* instr) { 1679 void Simulator::WriteW(int32_t addr, int value, Instruction* instr) {
1645 if (addr >= 0 && addr < 0x400) { 1680 if (addr >= 0 && addr < 0x400) {
1646 // This has to be a NULL-dereference, drop into debugger. 1681 // This has to be a NULL-dereference, drop into debugger.
1647 PrintF("Memory write to bad address: 0x%08x, pc=0x%08x\n", 1682 PrintF("Memory write to bad address: 0x%08x, pc=0x%08x\n",
1648 addr, reinterpret_cast<intptr_t>(instr)); 1683 addr, reinterpret_cast<intptr_t>(instr));
1649 MipsDebugger dbg(this); 1684 MipsDebugger dbg(this);
1650 dbg.Debug(); 1685 dbg.Debug();
1651 } 1686 }
1652 if ((addr & kPointerAlignmentMask) == 0) { 1687 if ((addr & kPointerAlignmentMask) == 0) {
1653 intptr_t* ptr = reinterpret_cast<intptr_t*>(addr); 1688 intptr_t* ptr = reinterpret_cast<intptr_t*>(addr);
1689 TraceMemWr(addr, value, WORD);
1654 *ptr = value; 1690 *ptr = value;
1655 return; 1691 return;
1656 } 1692 }
1657 PrintF("Unaligned write at 0x%08x, pc=0x%08" V8PRIxPTR "\n", 1693 PrintF("Unaligned write at 0x%08x, pc=0x%08" V8PRIxPTR "\n",
1658 addr, 1694 addr,
1659 reinterpret_cast<intptr_t>(instr)); 1695 reinterpret_cast<intptr_t>(instr));
1660 MipsDebugger dbg(this); 1696 MipsDebugger dbg(this);
1661 dbg.Debug(); 1697 dbg.Debug();
1662 } 1698 }
1663 1699
(...skipping 20 matching lines...) Expand all
1684 PrintF("Unaligned (double) write at 0x%08x, pc=0x%08" V8PRIxPTR "\n", 1720 PrintF("Unaligned (double) write at 0x%08x, pc=0x%08" V8PRIxPTR "\n",
1685 addr, 1721 addr,
1686 reinterpret_cast<intptr_t>(instr)); 1722 reinterpret_cast<intptr_t>(instr));
1687 base::OS::Abort(); 1723 base::OS::Abort();
1688 } 1724 }
1689 1725
1690 1726
1691 uint16_t Simulator::ReadHU(int32_t addr, Instruction* instr) { 1727 uint16_t Simulator::ReadHU(int32_t addr, Instruction* instr) {
1692 if ((addr & 1) == 0) { 1728 if ((addr & 1) == 0) {
1693 uint16_t* ptr = reinterpret_cast<uint16_t*>(addr); 1729 uint16_t* ptr = reinterpret_cast<uint16_t*>(addr);
1730 TraceMemRd(addr, static_cast<int32_t>(*ptr));
1694 return *ptr; 1731 return *ptr;
1695 } 1732 }
1696 PrintF("Unaligned unsigned halfword read at 0x%08x, pc=0x%08" V8PRIxPTR "\n", 1733 PrintF("Unaligned unsigned halfword read at 0x%08x, pc=0x%08" V8PRIxPTR "\n",
1697 addr, 1734 addr,
1698 reinterpret_cast<intptr_t>(instr)); 1735 reinterpret_cast<intptr_t>(instr));
1699 base::OS::Abort(); 1736 base::OS::Abort();
1700 return 0; 1737 return 0;
1701 } 1738 }
1702 1739
1703 1740
1704 int16_t Simulator::ReadH(int32_t addr, Instruction* instr) { 1741 int16_t Simulator::ReadH(int32_t addr, Instruction* instr) {
1705 if ((addr & 1) == 0) { 1742 if ((addr & 1) == 0) {
1706 int16_t* ptr = reinterpret_cast<int16_t*>(addr); 1743 int16_t* ptr = reinterpret_cast<int16_t*>(addr);
1744 TraceMemRd(addr, static_cast<int32_t>(*ptr));
1707 return *ptr; 1745 return *ptr;
1708 } 1746 }
1709 PrintF("Unaligned signed halfword read at 0x%08x, pc=0x%08" V8PRIxPTR "\n", 1747 PrintF("Unaligned signed halfword read at 0x%08x, pc=0x%08" V8PRIxPTR "\n",
1710 addr, 1748 addr,
1711 reinterpret_cast<intptr_t>(instr)); 1749 reinterpret_cast<intptr_t>(instr));
1712 base::OS::Abort(); 1750 base::OS::Abort();
1713 return 0; 1751 return 0;
1714 } 1752 }
1715 1753
1716 1754
1717 void Simulator::WriteH(int32_t addr, uint16_t value, Instruction* instr) { 1755 void Simulator::WriteH(int32_t addr, uint16_t value, Instruction* instr) {
1718 if ((addr & 1) == 0) { 1756 if ((addr & 1) == 0) {
1719 uint16_t* ptr = reinterpret_cast<uint16_t*>(addr); 1757 uint16_t* ptr = reinterpret_cast<uint16_t*>(addr);
1758 TraceMemWr(addr, value, HALF);
1720 *ptr = value; 1759 *ptr = value;
1721 return; 1760 return;
1722 } 1761 }
1723 PrintF("Unaligned unsigned halfword write at 0x%08x, pc=0x%08" V8PRIxPTR "\n", 1762 PrintF("Unaligned unsigned halfword write at 0x%08x, pc=0x%08" V8PRIxPTR "\n",
1724 addr, 1763 addr,
1725 reinterpret_cast<intptr_t>(instr)); 1764 reinterpret_cast<intptr_t>(instr));
1726 base::OS::Abort(); 1765 base::OS::Abort();
1727 } 1766 }
1728 1767
1729 1768
1730 void Simulator::WriteH(int32_t addr, int16_t value, Instruction* instr) { 1769 void Simulator::WriteH(int32_t addr, int16_t value, Instruction* instr) {
1731 if ((addr & 1) == 0) { 1770 if ((addr & 1) == 0) {
1732 int16_t* ptr = reinterpret_cast<int16_t*>(addr); 1771 int16_t* ptr = reinterpret_cast<int16_t*>(addr);
1772 TraceMemWr(addr, value, HALF);
1733 *ptr = value; 1773 *ptr = value;
1734 return; 1774 return;
1735 } 1775 }
1736 PrintF("Unaligned halfword write at 0x%08x, pc=0x%08" V8PRIxPTR "\n", 1776 PrintF("Unaligned halfword write at 0x%08x, pc=0x%08" V8PRIxPTR "\n",
1737 addr, 1777 addr,
1738 reinterpret_cast<intptr_t>(instr)); 1778 reinterpret_cast<intptr_t>(instr));
1739 base::OS::Abort(); 1779 base::OS::Abort();
1740 } 1780 }
1741 1781
1742 1782
1743 uint32_t Simulator::ReadBU(int32_t addr) { 1783 uint32_t Simulator::ReadBU(int32_t addr) {
1744 uint8_t* ptr = reinterpret_cast<uint8_t*>(addr); 1784 uint8_t* ptr = reinterpret_cast<uint8_t*>(addr);
1785 TraceMemRd(addr, static_cast<int32_t>(*ptr));
1745 return *ptr & 0xff; 1786 return *ptr & 0xff;
1746 } 1787 }
1747 1788
1748 1789
1749 int32_t Simulator::ReadB(int32_t addr) { 1790 int32_t Simulator::ReadB(int32_t addr) {
1750 int8_t* ptr = reinterpret_cast<int8_t*>(addr); 1791 int8_t* ptr = reinterpret_cast<int8_t*>(addr);
1792 TraceMemRd(addr, static_cast<int32_t>(*ptr));
1751 return *ptr; 1793 return *ptr;
1752 } 1794 }
1753 1795
1754 1796
1755 void Simulator::WriteB(int32_t addr, uint8_t value) { 1797 void Simulator::WriteB(int32_t addr, uint8_t value) {
1756 uint8_t* ptr = reinterpret_cast<uint8_t*>(addr); 1798 uint8_t* ptr = reinterpret_cast<uint8_t*>(addr);
1799 TraceMemWr(addr, value, BYTE);
1757 *ptr = value; 1800 *ptr = value;
1758 } 1801 }
1759 1802
1760 1803
1761 void Simulator::WriteB(int32_t addr, int8_t value) { 1804 void Simulator::WriteB(int32_t addr, int8_t value) {
1762 int8_t* ptr = reinterpret_cast<int8_t*>(addr); 1805 int8_t* ptr = reinterpret_cast<int8_t*>(addr);
1806 TraceMemWr(addr, value, BYTE);
1763 *ptr = value; 1807 *ptr = value;
1764 } 1808 }
1765 1809
1766 1810
1767 // Returns the limit of the stack area to enable checking for stack overflows. 1811 // Returns the limit of the stack area to enable checking for stack overflows.
1768 uintptr_t Simulator::StackLimit() const { 1812 uintptr_t Simulator::StackLimit() const {
1769 // Leave a safety margin of 1024 bytes to prevent overrunning the stack when 1813 // Leave a safety margin of 1024 bytes to prevent overrunning the stack when
1770 // pushing values. 1814 // pushing values.
1771 return reinterpret_cast<uintptr_t>(stack_) + 1024; 1815 return reinterpret_cast<uintptr_t>(stack_) + 1024;
1772 } 1816 }
(...skipping 1933 matching lines...) Expand 10 before | Expand all | Expand 10 after
3706 case TLT: 3750 case TLT:
3707 case TLTU: 3751 case TLTU:
3708 case TEQ: 3752 case TEQ:
3709 case TNE: 3753 case TNE:
3710 if (do_interrupt) { 3754 if (do_interrupt) {
3711 SoftwareInterrupt(instr); 3755 SoftwareInterrupt(instr);
3712 } 3756 }
3713 break; 3757 break;
3714 // Conditional moves. 3758 // Conditional moves.
3715 case MOVN: 3759 case MOVN:
3716 if (rt) set_register(rd_reg, rs); 3760 if (rt) {
3761 set_register(rd_reg, rs);
3762 TraceRegWr(rs);
3763 }
3717 break; 3764 break;
3718 case MOVCI: { 3765 case MOVCI: {
3719 uint32_t cc = instr->FBccValue(); 3766 uint32_t cc = instr->FBccValue();
3720 uint32_t fcsr_cc = get_fcsr_condition_bit(cc); 3767 uint32_t fcsr_cc = get_fcsr_condition_bit(cc);
3721 if (instr->Bit(16)) { // Read Tf bit. 3768 if (instr->Bit(16)) { // Read Tf bit.
3722 if (test_fcsr_bit(fcsr_cc)) set_register(rd_reg, rs); 3769 if (test_fcsr_bit(fcsr_cc)) set_register(rd_reg, rs);
3723 } else { 3770 } else {
3724 if (!test_fcsr_bit(fcsr_cc)) set_register(rd_reg, rs); 3771 if (!test_fcsr_bit(fcsr_cc)) set_register(rd_reg, rs);
3725 } 3772 }
3726 break; 3773 break;
3727 } 3774 }
3728 case MOVZ: 3775 case MOVZ:
3729 if (!rt) set_register(rd_reg, rs); 3776 if (!rt) {
3777 set_register(rd_reg, rs);
3778 TraceRegWr(rs);
3779 }
3730 break; 3780 break;
3731 default: // For other special opcodes we do the default operation. 3781 default: // For other special opcodes we do the default operation.
3732 set_register(rd_reg, alu_out); 3782 set_register(rd_reg, alu_out);
3783 TraceRegWr(alu_out);
3733 } 3784 }
3734 } 3785 }
3735 3786
3736 3787
3737 void Simulator::DecodeTypeRegisterSPECIAL2(Instruction* instr, 3788 void Simulator::DecodeTypeRegisterSPECIAL2(Instruction* instr,
3738 const int32_t& rd_reg, 3789 const int32_t& rd_reg,
3739 int32_t& alu_out) { 3790 int32_t& alu_out) {
3740 switch (instr->FunctionFieldRaw()) { 3791 switch (instr->FunctionFieldRaw()) {
3741 case MUL: 3792 case MUL:
3742 set_register(rd_reg, alu_out); 3793 set_register(rd_reg, alu_out);
3794 TraceRegWr(alu_out);
3743 // HI and LO are UNPREDICTABLE after the operation. 3795 // HI and LO are UNPREDICTABLE after the operation.
3744 set_register(LO, Unpredictable); 3796 set_register(LO, Unpredictable);
3745 set_register(HI, Unpredictable); 3797 set_register(HI, Unpredictable);
3746 break; 3798 break;
3747 default: // For other special2 opcodes we do the default operation. 3799 default: // For other special2 opcodes we do the default operation.
3748 set_register(rd_reg, alu_out); 3800 set_register(rd_reg, alu_out);
3801 TraceRegWr(alu_out);
3749 } 3802 }
3750 } 3803 }
3751 3804
3752 3805
3753 void Simulator::DecodeTypeRegisterSPECIAL3(Instruction* instr, 3806 void Simulator::DecodeTypeRegisterSPECIAL3(Instruction* instr,
3754 const int32_t& rt_reg, 3807 const int32_t& rt_reg,
3755 const int32_t& rd_reg, 3808 const int32_t& rd_reg,
3756 int32_t& alu_out) { 3809 int32_t& alu_out) {
3757 switch (instr->FunctionFieldRaw()) { 3810 switch (instr->FunctionFieldRaw()) {
3758 case INS: 3811 case INS:
3759 // Ins instr leaves result in Rt, rather than Rd. 3812 // Ins instr leaves result in Rt, rather than Rd.
3760 set_register(rt_reg, alu_out); 3813 set_register(rt_reg, alu_out);
3814 TraceRegWr(alu_out);
3761 break; 3815 break;
3762 case EXT: 3816 case EXT:
3763 // Ext instr leaves result in Rt, rather than Rd. 3817 // Ext instr leaves result in Rt, rather than Rd.
3764 set_register(rt_reg, alu_out); 3818 set_register(rt_reg, alu_out);
3819 TraceRegWr(alu_out);
3765 break; 3820 break;
3766 case BITSWAP: 3821 case BITSWAP:
3767 set_register(rd_reg, alu_out); 3822 set_register(rd_reg, alu_out);
3823 TraceRegWr(alu_out);
3768 break; 3824 break;
3769 default: 3825 default:
3770 UNREACHABLE(); 3826 UNREACHABLE();
3771 } 3827 }
3772 } 3828 }
3773 3829
3774 3830
3775 void Simulator::DecodeTypeRegister(Instruction* instr) { 3831 void Simulator::DecodeTypeRegister(Instruction* instr) {
3776 // Instruction fields. 3832 // Instruction fields.
3777 const Opcode op = instr->OpcodeFieldRaw(); 3833 const Opcode op = instr->OpcodeFieldRaw();
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
4122 // ------------- Arithmetic instructions. 4178 // ------------- Arithmetic instructions.
4123 case ADDI: 4179 case ADDI:
4124 case ADDIU: 4180 case ADDIU:
4125 case SLTI: 4181 case SLTI:
4126 case SLTIU: 4182 case SLTIU:
4127 case ANDI: 4183 case ANDI:
4128 case ORI: 4184 case ORI:
4129 case XORI: 4185 case XORI:
4130 case LUI: 4186 case LUI:
4131 set_register(rt_reg, alu_out); 4187 set_register(rt_reg, alu_out);
4188 TraceRegWr(alu_out);
4132 break; 4189 break;
4133 // ------------- Memory instructions. 4190 // ------------- Memory instructions.
4134 case LB: 4191 case LB:
4135 case LH: 4192 case LH:
4136 case LWL: 4193 case LWL:
4137 case LW: 4194 case LW:
4138 case LBU: 4195 case LBU:
4139 case LHU: 4196 case LHU:
4140 case LWR: 4197 case LWR:
4141 set_register(rt_reg, alu_out); 4198 set_register(rt_reg, alu_out);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
4216 pc_modified_ = true; 4273 pc_modified_ = true;
4217 } 4274 }
4218 4275
4219 4276
4220 // Executes the current instruction. 4277 // Executes the current instruction.
4221 void Simulator::InstructionDecode(Instruction* instr) { 4278 void Simulator::InstructionDecode(Instruction* instr) {
4222 if (v8::internal::FLAG_check_icache) { 4279 if (v8::internal::FLAG_check_icache) {
4223 CheckICache(isolate_->simulator_i_cache(), instr); 4280 CheckICache(isolate_->simulator_i_cache(), instr);
4224 } 4281 }
4225 pc_modified_ = false; 4282 pc_modified_ = false;
4283 v8::internal::EmbeddedVector<char, 256> buffer;
4226 if (::v8::internal::FLAG_trace_sim) { 4284 if (::v8::internal::FLAG_trace_sim) {
4285 SNPrintF(trace_buf_, "%s", "");
4227 disasm::NameConverter converter; 4286 disasm::NameConverter converter;
4228 disasm::Disassembler dasm(converter); 4287 disasm::Disassembler dasm(converter);
4229 // Use a reasonably large buffer.
4230 v8::internal::EmbeddedVector<char, 256> buffer;
4231 dasm.InstructionDecode(buffer, reinterpret_cast<byte*>(instr)); 4288 dasm.InstructionDecode(buffer, reinterpret_cast<byte*>(instr));
4232 PrintF(" 0x%08x %s\n", reinterpret_cast<intptr_t>(instr),
4233 buffer.start());
4234 } 4289 }
4235 4290
4236 switch (instr->InstructionType()) { 4291 switch (instr->InstructionType()) {
4237 case Instruction::kRegisterType: 4292 case Instruction::kRegisterType:
4238 DecodeTypeRegister(instr); 4293 DecodeTypeRegister(instr);
4239 break; 4294 break;
4240 case Instruction::kImmediateType: 4295 case Instruction::kImmediateType:
4241 DecodeTypeImmediate(instr); 4296 DecodeTypeImmediate(instr);
4242 break; 4297 break;
4243 case Instruction::kJumpType: 4298 case Instruction::kJumpType:
4244 DecodeTypeJump(instr); 4299 DecodeTypeJump(instr);
4245 break; 4300 break;
4246 default: 4301 default:
4247 UNSUPPORTED(); 4302 UNSUPPORTED();
4248 } 4303 }
4304 if (::v8::internal::FLAG_trace_sim) {
4305 PrintF(" 0x%08x %-44s %s\n", reinterpret_cast<intptr_t>(instr),
4306 buffer.start(), trace_buf_.start());
4307 }
4249 if (!pc_modified_) { 4308 if (!pc_modified_) {
4250 set_register(pc, reinterpret_cast<int32_t>(instr) + 4309 set_register(pc, reinterpret_cast<int32_t>(instr) +
4251 Instruction::kInstrSize); 4310 Instruction::kInstrSize);
4252 } 4311 }
4253 } 4312 }
4254 4313
4255 4314
4256 4315
4257 void Simulator::Execute() { 4316 void Simulator::Execute() {
4258 // Get the PC to simulate. Cannot use the accessor here as we need the 4317 // Get the PC to simulate. Cannot use the accessor here as we need the
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
4431 4490
4432 4491
4433 #undef UNSUPPORTED 4492 #undef UNSUPPORTED
4434 4493
4435 } // namespace internal 4494 } // namespace internal
4436 } // namespace v8 4495 } // namespace v8
4437 4496
4438 #endif // USE_SIMULATOR 4497 #endif // USE_SIMULATOR
4439 4498
4440 #endif // V8_TARGET_ARCH_MIPS 4499 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/mips/simulator-mips.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698