| OLD | NEW | 
|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 141 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 152   // String maps are all immortal immovable objects. | 152   // String maps are all immortal immovable objects. | 
| 153   reinterpret_cast<HeapObject*>(result)->set_map_no_write_barrier(map); | 153   reinterpret_cast<HeapObject*>(result)->set_map_no_write_barrier(map); | 
| 154   // Set length and hash fields of the allocated string. | 154   // Set length and hash fields of the allocated string. | 
| 155   String* answer = String::cast(result); | 155   String* answer = String::cast(result); | 
| 156   answer->set_length(str.length()); | 156   answer->set_length(str.length()); | 
| 157   answer->set_hash_field(hash_field); | 157   answer->set_hash_field(hash_field); | 
| 158 | 158 | 
| 159   ASSERT_EQ(size, answer->Size()); | 159   ASSERT_EQ(size, answer->Size()); | 
| 160 | 160 | 
| 161   // Fill in the characters. | 161   // Fill in the characters. | 
| 162   memcpy(answer->address() + SeqOneByteString::kHeaderSize, | 162   OS::MemCopy(answer->address() + SeqOneByteString::kHeaderSize, | 
| 163          str.start(), str.length()); | 163               str.start(), str.length()); | 
| 164 | 164 | 
| 165   return answer; | 165   return answer; | 
| 166 } | 166 } | 
| 167 | 167 | 
| 168 | 168 | 
| 169 MaybeObject* Heap::AllocateTwoByteInternalizedString(Vector<const uc16> str, | 169 MaybeObject* Heap::AllocateTwoByteInternalizedString(Vector<const uc16> str, | 
| 170                                                      uint32_t hash_field) { | 170                                                      uint32_t hash_field) { | 
| 171   if (str.length() > SeqTwoByteString::kMaxLength) { | 171   if (str.length() > SeqTwoByteString::kMaxLength) { | 
| 172     return Failure::OutOfMemoryException(0x3); | 172     return Failure::OutOfMemoryException(0x3); | 
| 173   } | 173   } | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
| 185 | 185 | 
| 186   reinterpret_cast<HeapObject*>(result)->set_map(map); | 186   reinterpret_cast<HeapObject*>(result)->set_map(map); | 
| 187   // Set length and hash fields of the allocated string. | 187   // Set length and hash fields of the allocated string. | 
| 188   String* answer = String::cast(result); | 188   String* answer = String::cast(result); | 
| 189   answer->set_length(str.length()); | 189   answer->set_length(str.length()); | 
| 190   answer->set_hash_field(hash_field); | 190   answer->set_hash_field(hash_field); | 
| 191 | 191 | 
| 192   ASSERT_EQ(size, answer->Size()); | 192   ASSERT_EQ(size, answer->Size()); | 
| 193 | 193 | 
| 194   // Fill in the characters. | 194   // Fill in the characters. | 
| 195   memcpy(answer->address() + SeqTwoByteString::kHeaderSize, | 195   OS::MemCopy(answer->address() + SeqTwoByteString::kHeaderSize, | 
| 196          str.start(), str.length() * kUC16Size); | 196               str.start(), str.length() * kUC16Size); | 
| 197 | 197 | 
| 198   return answer; | 198   return answer; | 
| 199 } | 199 } | 
| 200 | 200 | 
| 201 MaybeObject* Heap::CopyFixedArray(FixedArray* src) { | 201 MaybeObject* Heap::CopyFixedArray(FixedArray* src) { | 
| 202   return CopyFixedArrayWithMap(src, src->map()); | 202   return CopyFixedArrayWithMap(src, src->map()); | 
| 203 } | 203 } | 
| 204 | 204 | 
| 205 | 205 | 
| 206 MaybeObject* Heap::CopyFixedDoubleArray(FixedDoubleArray* src) { | 206 MaybeObject* Heap::CopyFixedDoubleArray(FixedDoubleArray* src) { | 
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 410         : OLD_DATA_SPACE; | 410         : OLD_DATA_SPACE; | 
| 411   } else { | 411   } else { | 
| 412     return (type <= LAST_DATA_TYPE) ? OLD_DATA_SPACE : OLD_POINTER_SPACE; | 412     return (type <= LAST_DATA_TYPE) ? OLD_DATA_SPACE : OLD_POINTER_SPACE; | 
| 413   } | 413   } | 
| 414 } | 414 } | 
| 415 | 415 | 
| 416 | 416 | 
| 417 void Heap::CopyBlock(Address dst, Address src, int byte_size) { | 417 void Heap::CopyBlock(Address dst, Address src, int byte_size) { | 
| 418   CopyWords(reinterpret_cast<Object**>(dst), | 418   CopyWords(reinterpret_cast<Object**>(dst), | 
| 419             reinterpret_cast<Object**>(src), | 419             reinterpret_cast<Object**>(src), | 
| 420             byte_size / kPointerSize); | 420             static_cast<size_t>(byte_size / kPointerSize)); | 
| 421 } | 421 } | 
| 422 | 422 | 
| 423 | 423 | 
| 424 void Heap::MoveBlock(Address dst, Address src, int byte_size) { | 424 void Heap::MoveBlock(Address dst, Address src, int byte_size) { | 
| 425   ASSERT(IsAligned(byte_size, kPointerSize)); | 425   ASSERT(IsAligned(byte_size, kPointerSize)); | 
| 426 | 426 | 
| 427   int size_in_words = byte_size / kPointerSize; | 427   int size_in_words = byte_size / kPointerSize; | 
| 428 | 428 | 
| 429   if ((dst < src) || (dst >= (src + byte_size))) { | 429   if ((dst < src) || (dst >= (src + byte_size))) { | 
| 430     Object** src_slot = reinterpret_cast<Object**>(src); | 430     Object** src_slot = reinterpret_cast<Object**>(src); | 
| 431     Object** dst_slot = reinterpret_cast<Object**>(dst); | 431     Object** dst_slot = reinterpret_cast<Object**>(dst); | 
| 432     Object** end_slot = src_slot + size_in_words; | 432     Object** end_slot = src_slot + size_in_words; | 
| 433 | 433 | 
| 434     while (src_slot != end_slot) { | 434     while (src_slot != end_slot) { | 
| 435       *dst_slot++ = *src_slot++; | 435       *dst_slot++ = *src_slot++; | 
| 436     } | 436     } | 
| 437   } else { | 437   } else { | 
| 438     memmove(dst, src, byte_size); | 438     OS::MemMove(dst, src, static_cast<size_t>(byte_size)); | 
| 439   } | 439   } | 
| 440 } | 440 } | 
| 441 | 441 | 
| 442 | 442 | 
| 443 void Heap::ScavengePointer(HeapObject** p) { | 443 void Heap::ScavengePointer(HeapObject** p) { | 
| 444   ScavengeObject(p, *p); | 444   ScavengeObject(p, *p); | 
| 445 } | 445 } | 
| 446 | 446 | 
| 447 | 447 | 
| 448 void Heap::ScavengeObject(HeapObject** p, HeapObject* object) { | 448 void Heap::ScavengeObject(HeapObject** p, HeapObject* object) { | 
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 868 AssertNoAllocation::~AssertNoAllocation() { } | 868 AssertNoAllocation::~AssertNoAllocation() { } | 
| 869 DisableAssertNoAllocation::DisableAssertNoAllocation() { } | 869 DisableAssertNoAllocation::DisableAssertNoAllocation() { } | 
| 870 DisableAssertNoAllocation::~DisableAssertNoAllocation() { } | 870 DisableAssertNoAllocation::~DisableAssertNoAllocation() { } | 
| 871 | 871 | 
| 872 #endif | 872 #endif | 
| 873 | 873 | 
| 874 | 874 | 
| 875 } }  // namespace v8::internal | 875 } }  // namespace v8::internal | 
| 876 | 876 | 
| 877 #endif  // V8_HEAP_INL_H_ | 877 #endif  // V8_HEAP_INL_H_ | 
| OLD | NEW | 
|---|