OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // | 2 // |
3 // Redistribution and use in source and binary forms, with or without | 3 // Redistribution and use in source and binary forms, with or without |
4 // modification, are permitted provided that the following conditions are | 4 // modification, are permitted provided that the following conditions are |
5 // met: | 5 // met: |
6 // | 6 // |
7 // * Redistributions of source code must retain the above copyright | 7 // * Redistributions of source code must retain the above copyright |
8 // notice, this list of conditions and the following disclaimer. | 8 // notice, this list of conditions and the following disclaimer. |
9 // * Redistributions in binary form must reproduce the above | 9 // * Redistributions in binary form must reproduce the above |
10 // copyright notice, this list of conditions and the following | 10 // copyright notice, this list of conditions and the following |
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
609 // It is still worth asserting the marker is complete. | 609 // It is still worth asserting the marker is complete. |
610 // 4: blr xzr | 610 // 4: blr xzr |
611 ASSERT(!result || (instr->following()->IsBranchAndLinkToRegister() && | 611 ASSERT(!result || (instr->following()->IsBranchAndLinkToRegister() && |
612 instr->following()->Rn() == xzr.code())); | 612 instr->following()->Rn() == xzr.code())); |
613 | 613 |
614 return result; | 614 return result; |
615 } | 615 } |
616 | 616 |
617 | 617 |
618 int Assembler::ConstantPoolSizeAt(Instruction* instr) { | 618 int Assembler::ConstantPoolSizeAt(Instruction* instr) { |
| 619 #ifdef USE_SIMULATOR |
| 620 // Assembler::debug() embeds constants directly into the instruction stream. |
| 621 // Although this is not a genuine constant pool, treat it like one to avoid |
| 622 // disassembling the constants. |
| 623 if ((instr->Mask(ExceptionMask) == HLT) && |
| 624 (instr->ImmException() == kImmExceptionIsDebug)) { |
| 625 const char* message = |
| 626 reinterpret_cast<const char*>( |
| 627 instr->InstructionAtOffset(kDebugMessageOffset)); |
| 628 int size = kDebugMessageOffset + strlen(message) + 1; |
| 629 return RoundUp(size, kInstructionSize) / kInstructionSize; |
| 630 } |
| 631 // Same for printf support, see MacroAssembler::CallPrintf(). |
| 632 if ((instr->Mask(ExceptionMask) == HLT) && |
| 633 (instr->ImmException() == kImmExceptionIsPrintf)) { |
| 634 return kPrintfLength / kInstructionSize; |
| 635 } |
| 636 #endif |
619 if (IsConstantPoolAt(instr)) { | 637 if (IsConstantPoolAt(instr)) { |
620 return instr->ImmLLiteral(); | 638 return instr->ImmLLiteral(); |
621 } else { | 639 } else { |
622 return -1; | 640 return -1; |
623 } | 641 } |
624 } | 642 } |
625 | 643 |
626 | 644 |
627 void Assembler::ConstantPoolMarker(uint32_t size) { | 645 void Assembler::ConstantPoolMarker(uint32_t size) { |
628 ASSERT(is_const_pool_blocked()); | 646 ASSERT(is_const_pool_blocked()); |
(...skipping 2143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2772 // code. | 2790 // code. |
2773 #ifdef ENABLE_DEBUGGER_SUPPORT | 2791 #ifdef ENABLE_DEBUGGER_SUPPORT |
2774 RecordRelocInfo(RelocInfo::CONST_POOL, static_cast<intptr_t>(size)); | 2792 RecordRelocInfo(RelocInfo::CONST_POOL, static_cast<intptr_t>(size)); |
2775 #endif | 2793 #endif |
2776 } | 2794 } |
2777 | 2795 |
2778 | 2796 |
2779 } } // namespace v8::internal | 2797 } } // namespace v8::internal |
2780 | 2798 |
2781 #endif // V8_TARGET_ARCH_A64 | 2799 #endif // V8_TARGET_ARCH_A64 |
OLD | NEW |