OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/objects.h" | 5 #include "src/objects.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 #include <iomanip> | 8 #include <iomanip> |
9 #include <sstream> | 9 #include <sstream> |
10 | 10 |
(...skipping 13435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13446 } | 13446 } |
13447 Assembler::FlushICache(GetIsolate(), instruction_start(), instruction_size()); | 13447 Assembler::FlushICache(GetIsolate(), instruction_start(), instruction_size()); |
13448 } | 13448 } |
13449 | 13449 |
13450 | 13450 |
13451 void Code::CopyFrom(const CodeDesc& desc) { | 13451 void Code::CopyFrom(const CodeDesc& desc) { |
13452 // copy code | 13452 // copy code |
13453 CopyBytes(instruction_start(), desc.buffer, | 13453 CopyBytes(instruction_start(), desc.buffer, |
13454 static_cast<size_t>(desc.instr_size)); | 13454 static_cast<size_t>(desc.instr_size)); |
13455 | 13455 |
| 13456 // copy unwinding info, if any |
| 13457 if (desc.unwinding_info) { |
| 13458 DCHECK_GT(desc.unwinding_info_size, 0); |
| 13459 set_unwinding_info_size(desc.unwinding_info_size); |
| 13460 CopyBytes(unwinding_info_start(), desc.unwinding_info, |
| 13461 static_cast<size_t>(desc.unwinding_info_size)); |
| 13462 } |
| 13463 |
13456 // copy reloc info | 13464 // copy reloc info |
13457 CopyBytes(relocation_start(), | 13465 CopyBytes(relocation_start(), |
13458 desc.buffer + desc.buffer_size - desc.reloc_size, | 13466 desc.buffer + desc.buffer_size - desc.reloc_size, |
13459 static_cast<size_t>(desc.reloc_size)); | 13467 static_cast<size_t>(desc.reloc_size)); |
13460 | 13468 |
13461 // unbox handles and relocate | 13469 // unbox handles and relocate |
13462 intptr_t delta = instruction_start() - desc.buffer; | 13470 intptr_t delta = instruction_start() - desc.buffer; |
13463 int mode_mask = RelocInfo::kCodeTargetMask | | 13471 int mode_mask = RelocInfo::kCodeTargetMask | |
13464 RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) | | 13472 RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) | |
13465 RelocInfo::ModeMask(RelocInfo::CELL) | | 13473 RelocInfo::ModeMask(RelocInfo::CELL) | |
(...skipping 5389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
18855 } else { | 18863 } else { |
18856 // Old-style generators. | 18864 // Old-style generators. |
18857 int offset = continuation(); | 18865 int offset = continuation(); |
18858 CHECK(0 <= offset && offset < function()->code()->instruction_size()); | 18866 CHECK(0 <= offset && offset < function()->code()->instruction_size()); |
18859 return function()->code()->SourcePosition(offset); | 18867 return function()->code()->SourcePosition(offset); |
18860 } | 18868 } |
18861 } | 18869 } |
18862 | 18870 |
18863 } // namespace internal | 18871 } // namespace internal |
18864 } // namespace v8 | 18872 } // namespace v8 |
OLD | NEW |