OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 796 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
807 virtual void VisitRuntimeEntry(RelocInfo* rinfo) { | 807 virtual void VisitRuntimeEntry(RelocInfo* rinfo) { |
808 Address target = rinfo->target_address(); | 808 Address target = rinfo->target_address(); |
809 uint32_t encoding = reference_encoder_->Encode(target); | 809 uint32_t encoding = reference_encoder_->Encode(target); |
810 CHECK(target == NULL ? encoding == 0 : encoding != 0); | 810 CHECK(target == NULL ? encoding == 0 : encoding != 0); |
811 offsets_.Add(rinfo->target_address_address() - obj_address_); | 811 offsets_.Add(rinfo->target_address_address() - obj_address_); |
812 addresses_.Add(reinterpret_cast<Address>(encoding)); | 812 addresses_.Add(reinterpret_cast<Address>(encoding)); |
813 } | 813 } |
814 | 814 |
815 void Update(Address start_address) { | 815 void Update(Address start_address) { |
816 for (int i = 0; i < offsets_.length(); i++) { | 816 for (int i = 0; i < offsets_.length(); i++) { |
817 Address* p = reinterpret_cast<Address*>(start_address + offsets_[i]); | 817 memcpy(start_address + offsets_[i], &addresses_[i], sizeof(Address)); |
818 *p = addresses_[i]; | |
819 } | 818 } |
820 } | 819 } |
821 | 820 |
822 private: | 821 private: |
823 Address obj_address_; | 822 Address obj_address_; |
824 Serializer* serializer_; | 823 Serializer* serializer_; |
825 ExternalReferenceEncoder* reference_encoder_; | 824 ExternalReferenceEncoder* reference_encoder_; |
826 List<int> offsets_; | 825 List<int> offsets_; |
827 List<Address> addresses_; | 826 List<Address> addresses_; |
828 }; | 827 }; |
(...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1519 ASSERT(index < large_objects_.length()); | 1518 ASSERT(index < large_objects_.length()); |
1520 } | 1519 } |
1521 return large_objects_[index]; // s.page_offset() is ignored. | 1520 return large_objects_[index]; // s.page_offset() is ignored. |
1522 } | 1521 } |
1523 UNREACHABLE(); | 1522 UNREACHABLE(); |
1524 return NULL; | 1523 return NULL; |
1525 } | 1524 } |
1526 | 1525 |
1527 | 1526 |
1528 } } // namespace v8::internal | 1527 } } // namespace v8::internal |
OLD | NEW |