| 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 1417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1428 if (new_buffer_size > kMaximalBufferSize) { | 1428 if (new_buffer_size > kMaximalBufferSize) { |
| 1429 V8::FatalProcessOutOfMemory("RelocInfoBuffer::GrowBuffer"); | 1429 V8::FatalProcessOutOfMemory("RelocInfoBuffer::GrowBuffer"); |
| 1430 } | 1430 } |
| 1431 | 1431 |
| 1432 // Set up new buffer. | 1432 // Set up new buffer. |
| 1433 byte* new_buffer = NewArray<byte>(new_buffer_size); | 1433 byte* new_buffer = NewArray<byte>(new_buffer_size); |
| 1434 | 1434 |
| 1435 // Copy the data. | 1435 // Copy the data. |
| 1436 int curently_used_size = | 1436 int curently_used_size = |
| 1437 static_cast<int>(buffer_ + buffer_size_ - reloc_info_writer_.pos()); | 1437 static_cast<int>(buffer_ + buffer_size_ - reloc_info_writer_.pos()); |
| 1438 memmove(new_buffer + new_buffer_size - curently_used_size, | 1438 OS::MemMove(new_buffer + new_buffer_size - curently_used_size, |
| 1439 reloc_info_writer_.pos(), curently_used_size); | 1439 reloc_info_writer_.pos(), curently_used_size); |
| 1440 | 1440 |
| 1441 reloc_info_writer_.Reposition( | 1441 reloc_info_writer_.Reposition( |
| 1442 new_buffer + new_buffer_size - curently_used_size, | 1442 new_buffer + new_buffer_size - curently_used_size, |
| 1443 reloc_info_writer_.last_pc()); | 1443 reloc_info_writer_.last_pc()); |
| 1444 | 1444 |
| 1445 DeleteArray(buffer_); | 1445 DeleteArray(buffer_); |
| 1446 buffer_ = new_buffer; | 1446 buffer_ = new_buffer; |
| 1447 buffer_size_ = new_buffer_size; | 1447 buffer_size_ = new_buffer_size; |
| 1448 } | 1448 } |
| 1449 | 1449 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1481 if (RelocInfo::IsRealRelocMode(rinfo->rmode())) { | 1481 if (RelocInfo::IsRealRelocMode(rinfo->rmode())) { |
| 1482 buffer_writer.Write(it.rinfo()); | 1482 buffer_writer.Write(it.rinfo()); |
| 1483 } | 1483 } |
| 1484 } | 1484 } |
| 1485 } | 1485 } |
| 1486 | 1486 |
| 1487 Vector<byte> buffer = buffer_writer.GetResult(); | 1487 Vector<byte> buffer = buffer_writer.GetResult(); |
| 1488 | 1488 |
| 1489 if (buffer.length() == code->relocation_size()) { | 1489 if (buffer.length() == code->relocation_size()) { |
| 1490 // Simply patch relocation area of code. | 1490 // Simply patch relocation area of code. |
| 1491 memcpy(code->relocation_start(), buffer.start(), buffer.length()); | 1491 OS::MemCopy(code->relocation_start(), buffer.start(), buffer.length()); |
| 1492 return code; | 1492 return code; |
| 1493 } else { | 1493 } else { |
| 1494 // Relocation info section now has different size. We cannot simply | 1494 // Relocation info section now has different size. We cannot simply |
| 1495 // rewrite it inside code object. Instead we have to create a new | 1495 // rewrite it inside code object. Instead we have to create a new |
| 1496 // code object. | 1496 // code object. |
| 1497 Handle<Code> result(FACTORY->CopyCode(code, buffer)); | 1497 Handle<Code> result(FACTORY->CopyCode(code, buffer)); |
| 1498 return result; | 1498 return result; |
| 1499 } | 1499 } |
| 1500 } | 1500 } |
| 1501 | 1501 |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1754 Smi::cast(Memory::Object_at(padding_pointer))->value(); | 1754 Smi::cast(Memory::Object_at(padding_pointer))->value(); |
| 1755 if (padding_counter * kPointerSize < shortage_bytes) { | 1755 if (padding_counter * kPointerSize < shortage_bytes) { |
| 1756 return "Not enough space for frame dropper frame " | 1756 return "Not enough space for frame dropper frame " |
| 1757 "(even with padding frame)"; | 1757 "(even with padding frame)"; |
| 1758 } | 1758 } |
| 1759 Memory::Object_at(padding_pointer) = | 1759 Memory::Object_at(padding_pointer) = |
| 1760 Smi::FromInt(padding_counter - shortage_bytes / kPointerSize); | 1760 Smi::FromInt(padding_counter - shortage_bytes / kPointerSize); |
| 1761 | 1761 |
| 1762 StackFrame* pre_pre_frame = frames[top_frame_index - 2]; | 1762 StackFrame* pre_pre_frame = frames[top_frame_index - 2]; |
| 1763 | 1763 |
| 1764 memmove(padding_start + kPointerSize - shortage_bytes, | 1764 OS::MemMove(padding_start + kPointerSize - shortage_bytes, |
| 1765 padding_start + kPointerSize, | 1765 padding_start + kPointerSize, |
| 1766 Debug::FramePaddingLayout::kFrameBaseSize * kPointerSize); | 1766 Debug::FramePaddingLayout::kFrameBaseSize * kPointerSize); |
| 1767 | 1767 |
| 1768 pre_top_frame->UpdateFp(pre_top_frame->fp() - shortage_bytes); | 1768 pre_top_frame->UpdateFp(pre_top_frame->fp() - shortage_bytes); |
| 1769 pre_pre_frame->SetCallerFp(pre_top_frame->fp()); | 1769 pre_pre_frame->SetCallerFp(pre_top_frame->fp()); |
| 1770 unused_stack_top -= shortage_bytes; | 1770 unused_stack_top -= shortage_bytes; |
| 1771 | 1771 |
| 1772 STATIC_ASSERT(sizeof(Address) == kPointerSize); | 1772 STATIC_ASSERT(sizeof(Address) == kPointerSize); |
| 1773 top_frame_pc_address -= shortage_bytes / kPointerSize; | 1773 top_frame_pc_address -= shortage_bytes / kPointerSize; |
| 1774 } else { | 1774 } else { |
| 1775 return "Not enough space for frame dropper frame"; | 1775 return "Not enough space for frame dropper frame"; |
| 1776 } | 1776 } |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2119 | 2119 |
| 2120 bool LiveEditFunctionTracker::IsActive(Isolate* isolate) { | 2120 bool LiveEditFunctionTracker::IsActive(Isolate* isolate) { |
| 2121 return false; | 2121 return false; |
| 2122 } | 2122 } |
| 2123 | 2123 |
| 2124 #endif // ENABLE_DEBUGGER_SUPPORT | 2124 #endif // ENABLE_DEBUGGER_SUPPORT |
| 2125 | 2125 |
| 2126 | 2126 |
| 2127 | 2127 |
| 2128 } } // namespace v8::internal | 2128 } } // namespace v8::internal |
| OLD | NEW |