OLD | NEW |
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
2 // All Rights Reserved. | 2 // All Rights Reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
6 // met: | 6 // met: |
7 // | 7 // |
8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
10 // | 10 // |
(...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
717 rinfo_.pc_ = code->instruction_start(); | 717 rinfo_.pc_ = code->instruction_start(); |
718 rinfo_.data_ = 0; | 718 rinfo_.data_ = 0; |
719 // Relocation info is read backwards. | 719 // Relocation info is read backwards. |
720 pos_ = code->relocation_start() + code->relocation_size(); | 720 pos_ = code->relocation_start() + code->relocation_size(); |
721 end_ = code->relocation_start(); | 721 end_ = code->relocation_start(); |
722 done_ = false; | 722 done_ = false; |
723 mode_mask_ = mode_mask; | 723 mode_mask_ = mode_mask; |
724 last_id_ = 0; | 724 last_id_ = 0; |
725 last_position_ = 0; | 725 last_position_ = 0; |
726 byte* sequence = code->FindCodeAgeSequence(); | 726 byte* sequence = code->FindCodeAgeSequence(); |
727 if (sequence != NULL && !Code::IsYoungSequence(sequence)) { | 727 // We get the isolate from the map, because at serialization time |
| 728 // the code pointer has been cloned and isn't really in heap space. |
| 729 Isolate* isolate = code->map()->GetIsolate(); |
| 730 if (sequence != NULL && !Code::IsYoungSequence(isolate, sequence)) { |
728 code_age_sequence_ = sequence; | 731 code_age_sequence_ = sequence; |
729 } else { | 732 } else { |
730 code_age_sequence_ = NULL; | 733 code_age_sequence_ = NULL; |
731 } | 734 } |
732 if (mode_mask_ == 0) pos_ = end_; | 735 if (mode_mask_ == 0) pos_ = end_; |
733 next(); | 736 next(); |
734 } | 737 } |
735 | 738 |
736 | 739 |
737 RelocIterator::RelocIterator(const CodeDesc& desc, int mode_mask) { | 740 RelocIterator::RelocIterator(const CodeDesc& desc, int mode_mask) { |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
849 PrintF(out, " (deoptimization bailout %d)", id); | 852 PrintF(out, " (deoptimization bailout %d)", id); |
850 } | 853 } |
851 } | 854 } |
852 | 855 |
853 PrintF(out, "\n"); | 856 PrintF(out, "\n"); |
854 } | 857 } |
855 #endif // ENABLE_DISASSEMBLER | 858 #endif // ENABLE_DISASSEMBLER |
856 | 859 |
857 | 860 |
858 #ifdef VERIFY_HEAP | 861 #ifdef VERIFY_HEAP |
859 void RelocInfo::Verify() { | 862 void RelocInfo::Verify(Isolate* isolate) { |
860 switch (rmode_) { | 863 switch (rmode_) { |
861 case EMBEDDED_OBJECT: | 864 case EMBEDDED_OBJECT: |
862 Object::VerifyPointer(target_object()); | 865 Object::VerifyPointer(target_object()); |
863 break; | 866 break; |
864 case CELL: | 867 case CELL: |
865 Object::VerifyPointer(target_cell()); | 868 Object::VerifyPointer(target_cell()); |
866 break; | 869 break; |
867 case DEBUG_BREAK: | 870 case DEBUG_BREAK: |
868 case CONSTRUCT_CALL: | 871 case CONSTRUCT_CALL: |
869 case CODE_TARGET_WITH_ID: | 872 case CODE_TARGET_WITH_ID: |
870 case CODE_TARGET: { | 873 case CODE_TARGET: { |
871 // convert inline target address to code object | 874 // convert inline target address to code object |
872 Address addr = target_address(); | 875 Address addr = target_address(); |
873 CHECK(addr != NULL); | 876 CHECK(addr != NULL); |
874 // Check that we can find the right code object. | 877 // Check that we can find the right code object. |
875 Code* code = Code::GetCodeFromTargetAddress(addr); | 878 Code* code = Code::GetCodeFromTargetAddress(addr); |
876 Object* found = code->GetIsolate()->FindCodeObject(addr); | 879 Object* found = isolate->FindCodeObject(addr); |
877 CHECK(found->IsCode()); | 880 CHECK(found->IsCode()); |
878 CHECK(code->address() == HeapObject::cast(found)->address()); | 881 CHECK(code->address() == HeapObject::cast(found)->address()); |
879 break; | 882 break; |
880 } | 883 } |
881 case RUNTIME_ENTRY: | 884 case RUNTIME_ENTRY: |
882 case JS_RETURN: | 885 case JS_RETURN: |
883 case COMMENT: | 886 case COMMENT: |
884 case POSITION: | 887 case POSITION: |
885 case STATEMENT_POSITION: | 888 case STATEMENT_POSITION: |
886 case EXTERNAL_REFERENCE: | 889 case EXTERNAL_REFERENCE: |
887 case INTERNAL_REFERENCE: | 890 case INTERNAL_REFERENCE: |
888 case CONST_POOL: | 891 case CONST_POOL: |
889 case VENEER_POOL: | 892 case VENEER_POOL: |
890 case DEBUG_BREAK_SLOT: | 893 case DEBUG_BREAK_SLOT: |
891 case NONE32: | 894 case NONE32: |
892 case NONE64: | 895 case NONE64: |
893 break; | 896 break; |
894 case NUMBER_OF_MODES: | 897 case NUMBER_OF_MODES: |
895 UNREACHABLE(); | 898 UNREACHABLE(); |
896 break; | 899 break; |
897 case CODE_AGE_SEQUENCE: | 900 case CODE_AGE_SEQUENCE: |
898 ASSERT(Code::IsYoungSequence(pc_) || code_age_stub()->IsCode()); | 901 ASSERT(Code::IsYoungSequence(isolate, pc_) || code_age_stub()->IsCode()); |
899 break; | 902 break; |
900 } | 903 } |
901 } | 904 } |
902 #endif // VERIFY_HEAP | 905 #endif // VERIFY_HEAP |
903 | 906 |
904 | 907 |
905 // ----------------------------------------------------------------------------- | 908 // ----------------------------------------------------------------------------- |
906 // Implementation of ExternalReference | 909 // Implementation of ExternalReference |
907 | 910 |
908 void ExternalReference::SetUp() { | 911 void ExternalReference::SetUp() { |
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1639 r2 = r2 - ad; | 1642 r2 = r2 - ad; |
1640 } | 1643 } |
1641 delta = ad - r2; | 1644 delta = ad - r2; |
1642 } while (q1 < delta || (q1 == delta && r1 == 0)); | 1645 } while (q1 < delta || (q1 == delta && r1 == 0)); |
1643 int32_t mul = static_cast<int32_t>(q2 + 1); | 1646 int32_t mul = static_cast<int32_t>(q2 + 1); |
1644 multiplier_ = (d < 0) ? -mul : mul; | 1647 multiplier_ = (d < 0) ? -mul : mul; |
1645 shift_ = p - 32; | 1648 shift_ = p - 32; |
1646 } | 1649 } |
1647 | 1650 |
1648 } } // namespace v8::internal | 1651 } } // namespace v8::internal |
OLD | NEW |