| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/snapshot.h" | 5 #include "vm/snapshot.h" |
| 6 | 6 |
| 7 #include "platform/assert.h" | 7 #include "platform/assert.h" |
| 8 #include "vm/bootstrap.h" | 8 #include "vm/bootstrap.h" |
| 9 #include "vm/class_finalizer.h" | 9 #include "vm/class_finalizer.h" |
| 10 #include "vm/dart.h" | 10 #include "vm/dart.h" |
| (...skipping 796 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 807 assembly_stream_.Print("Precompiled_%s_%" Pd ":\n", name, i); | 807 assembly_stream_.Print("Precompiled_%s_%" Pd ":\n", name, i); |
| 808 } else { | 808 } else { |
| 809 UNREACHABLE(); | 809 UNREACHABLE(); |
| 810 } | 810 } |
| 811 | 811 |
| 812 { | 812 { |
| 813 // 3. Write from the entry point to the end. | 813 // 3. Write from the entry point to the end. |
| 814 NoSafepointScope no_safepoint; | 814 NoSafepointScope no_safepoint; |
| 815 uword beginning = reinterpret_cast<uword>(insns.raw()) - kHeapObjectTag; | 815 uword beginning = reinterpret_cast<uword>(insns.raw()) - kHeapObjectTag; |
| 816 uword entry = beginning + Instructions::HeaderSize(); | 816 uword entry = beginning + Instructions::HeaderSize(); |
| 817 uword payload_size = insns.size(); | 817 uword payload_size = insns.Size(); |
| 818 payload_size = Utils::RoundUp(payload_size, OS::PreferredCodeAlignment()); | 818 payload_size = Utils::RoundUp(payload_size, OS::PreferredCodeAlignment()); |
| 819 uword end = entry + payload_size; | 819 uword end = entry + payload_size; |
| 820 | 820 |
| 821 ASSERT(Utils::IsAligned(beginning, sizeof(uint64_t))); | 821 ASSERT(Utils::IsAligned(beginning, sizeof(uint64_t))); |
| 822 ASSERT(Utils::IsAligned(entry, sizeof(uint64_t))); | 822 ASSERT(Utils::IsAligned(entry, sizeof(uint64_t))); |
| 823 ASSERT(Utils::IsAligned(end, sizeof(uint64_t))); | 823 ASSERT(Utils::IsAligned(end, sizeof(uint64_t))); |
| 824 | 824 |
| 825 for (uword* cursor = reinterpret_cast<uword*>(entry); | 825 for (uword* cursor = reinterpret_cast<uword*>(entry); |
| 826 cursor < reinterpret_cast<uword*>(end); cursor++) { | 826 cursor < reinterpret_cast<uword*>(end); cursor++) { |
| 827 WriteWordLiteralText(*cursor); | 827 WriteWordLiteralText(*cursor); |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 938 cursor < reinterpret_cast<uword*>(entry); cursor++) { | 938 cursor < reinterpret_cast<uword*>(entry); cursor++) { |
| 939 instructions_blob_stream_.WriteWord(*cursor); | 939 instructions_blob_stream_.WriteWord(*cursor); |
| 940 } | 940 } |
| 941 } | 941 } |
| 942 | 942 |
| 943 // 2. Write from the entry point to the end. | 943 // 2. Write from the entry point to the end. |
| 944 { | 944 { |
| 945 NoSafepointScope no_safepoint; | 945 NoSafepointScope no_safepoint; |
| 946 uword beginning = reinterpret_cast<uword>(insns.raw()) - kHeapObjectTag; | 946 uword beginning = reinterpret_cast<uword>(insns.raw()) - kHeapObjectTag; |
| 947 uword entry = beginning + Instructions::HeaderSize(); | 947 uword entry = beginning + Instructions::HeaderSize(); |
| 948 uword payload_size = insns.size(); | 948 uword payload_size = insns.Size(); |
| 949 payload_size = Utils::RoundUp(payload_size, OS::PreferredCodeAlignment()); | 949 payload_size = Utils::RoundUp(payload_size, OS::PreferredCodeAlignment()); |
| 950 uword end = entry + payload_size; | 950 uword end = entry + payload_size; |
| 951 | 951 |
| 952 ASSERT(Utils::IsAligned(beginning, sizeof(uint64_t))); | 952 ASSERT(Utils::IsAligned(beginning, sizeof(uint64_t))); |
| 953 ASSERT(Utils::IsAligned(entry, sizeof(uint64_t))); | 953 ASSERT(Utils::IsAligned(entry, sizeof(uint64_t))); |
| 954 ASSERT(Utils::IsAligned(end, sizeof(uint64_t))); | 954 ASSERT(Utils::IsAligned(end, sizeof(uint64_t))); |
| 955 | 955 |
| 956 for (uword* cursor = reinterpret_cast<uword*>(entry); | 956 for (uword* cursor = reinterpret_cast<uword*>(entry); |
| 957 cursor < reinterpret_cast<uword*>(end); cursor++) { | 957 cursor < reinterpret_cast<uword*>(end); cursor++) { |
| 958 instructions_blob_stream_.WriteWord(*cursor); | 958 instructions_blob_stream_.WriteWord(*cursor); |
| (...skipping 997 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1956 if (setjmp(*jump.Set()) == 0) { | 1956 if (setjmp(*jump.Set()) == 0) { |
| 1957 NoSafepointScope no_safepoint; | 1957 NoSafepointScope no_safepoint; |
| 1958 WriteObject(obj.raw()); | 1958 WriteObject(obj.raw()); |
| 1959 } else { | 1959 } else { |
| 1960 ThrowException(exception_type(), exception_msg()); | 1960 ThrowException(exception_type(), exception_msg()); |
| 1961 } | 1961 } |
| 1962 } | 1962 } |
| 1963 | 1963 |
| 1964 | 1964 |
| 1965 } // namespace dart | 1965 } // namespace dart |
| OLD | NEW |