| 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/native_entry.h" | 5 #include "vm/native_entry.h" |
| 6 #include "vm/object.h" | 6 #include "vm/object.h" |
| 7 #include "vm/object_store.h" | 7 #include "vm/object_store.h" |
| 8 #include "vm/snapshot.h" | 8 #include "vm/snapshot.h" |
| 9 #include "vm/stub_code.h" | 9 #include "vm/stub_code.h" |
| 10 #include "vm/symbols.h" | 10 #include "vm/symbols.h" |
| (...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 726 func.set_kind_tag(reader->Read<uint32_t>()); | 726 func.set_kind_tag(reader->Read<uint32_t>()); |
| 727 func.set_token_pos(TokenPosition::SnapshotDecode(token_pos)); | 727 func.set_token_pos(TokenPosition::SnapshotDecode(token_pos)); |
| 728 func.set_end_token_pos(TokenPosition::SnapshotDecode(end_token_pos)); | 728 func.set_end_token_pos(TokenPosition::SnapshotDecode(end_token_pos)); |
| 729 if (reader->snapshot_code()) { | 729 if (reader->snapshot_code()) { |
| 730 func.set_usage_counter(0); | 730 func.set_usage_counter(0); |
| 731 func.set_deoptimization_counter(0); | 731 func.set_deoptimization_counter(0); |
| 732 func.set_optimized_instruction_count(0); | 732 func.set_optimized_instruction_count(0); |
| 733 func.set_optimized_call_site_count(0); | 733 func.set_optimized_call_site_count(0); |
| 734 } else { | 734 } else { |
| 735 func.set_usage_counter(reader->Read<int32_t>()); | 735 func.set_usage_counter(reader->Read<int32_t>()); |
| 736 func.set_deoptimization_counter(reader->Read<int16_t>()); | 736 func.set_deoptimization_counter(reader->Read<int8_t>()); |
| 737 func.set_optimized_instruction_count(reader->Read<uint16_t>()); | 737 func.set_optimized_instruction_count(reader->Read<uint16_t>()); |
| 738 func.set_optimized_call_site_count(reader->Read<uint16_t>()); | 738 func.set_optimized_call_site_count(reader->Read<uint16_t>()); |
| 739 } | 739 } |
| 740 func.set_was_compiled(false); |
| 740 | 741 |
| 741 // Set all the object fields. | 742 // Set all the object fields. |
| 742 READ_OBJECT_FIELDS(func, | 743 READ_OBJECT_FIELDS(func, |
| 743 func.raw()->from(), func.raw()->to_snapshot(), | 744 func.raw()->from(), func.raw()->to_snapshot(), |
| 744 kAsReference); | 745 kAsReference); |
| 745 // Initialize all fields that are not part of the snapshot. | 746 // Initialize all fields that are not part of the snapshot. |
| 746 if (reader->snapshot_code()) { | 747 if (reader->snapshot_code()) { |
| 747 func.ClearICDataArray(); | 748 func.ClearICDataArray(); |
| 748 func.ClearCode(); | 749 func.ClearCode(); |
| 749 // Read the code object and fixup entry point. | 750 // Read the code object and fixup entry point. |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 807 writer->Write<int16_t>(ptr()->num_optional_parameters_); | 808 writer->Write<int16_t>(ptr()->num_optional_parameters_); |
| 808 writer->Write<uint32_t>(ptr()->kind_tag_); | 809 writer->Write<uint32_t>(ptr()->kind_tag_); |
| 809 if (writer->snapshot_code()) { | 810 if (writer->snapshot_code()) { |
| 810 // Omit fields used to support de/reoptimization. | 811 // Omit fields used to support de/reoptimization. |
| 811 } else { | 812 } else { |
| 812 if (is_optimized) { | 813 if (is_optimized) { |
| 813 writer->Write<int32_t>(FLAG_optimization_counter_threshold); | 814 writer->Write<int32_t>(FLAG_optimization_counter_threshold); |
| 814 } else { | 815 } else { |
| 815 writer->Write<int32_t>(0); | 816 writer->Write<int32_t>(0); |
| 816 } | 817 } |
| 817 writer->Write<int16_t>(ptr()->deoptimization_counter_); | 818 writer->Write<int8_t>(ptr()->deoptimization_counter_); |
| 818 writer->Write<uint16_t>(ptr()->optimized_instruction_count_); | 819 writer->Write<uint16_t>(ptr()->optimized_instruction_count_); |
| 819 writer->Write<uint16_t>(ptr()->optimized_call_site_count_); | 820 writer->Write<uint16_t>(ptr()->optimized_call_site_count_); |
| 820 } | 821 } |
| 821 | 822 |
| 822 // Write out all the object pointer fields. | 823 // Write out all the object pointer fields. |
| 823 SnapshotWriterVisitor visitor(writer, kAsReference); | 824 SnapshotWriterVisitor visitor(writer, kAsReference); |
| 824 visitor.VisitPointers(from(), to_snapshot()); | 825 visitor.VisitPointers(from(), to_snapshot()); |
| 825 if (writer->snapshot_code()) { | 826 if (writer->snapshot_code()) { |
| 826 ASSERT(ptr()->ic_data_array_ == Array::null()); | 827 ASSERT(ptr()->ic_data_array_ == Array::null()); |
| 827 ASSERT((ptr()->code_ == ptr()->unoptimized_code_) || | 828 ASSERT((ptr()->code_ == ptr()->unoptimized_code_) || |
| (...skipping 2865 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3693 // We do not allow objects with native fields in an isolate message. | 3694 // We do not allow objects with native fields in an isolate message. |
| 3694 writer->SetWriteException(Exceptions::kArgument, | 3695 writer->SetWriteException(Exceptions::kArgument, |
| 3695 "Illegal argument in isolate message" | 3696 "Illegal argument in isolate message" |
| 3696 " : (object is a UserTag)"); | 3697 " : (object is a UserTag)"); |
| 3697 } else { | 3698 } else { |
| 3698 UNREACHABLE(); | 3699 UNREACHABLE(); |
| 3699 } | 3700 } |
| 3700 } | 3701 } |
| 3701 | 3702 |
| 3702 } // namespace dart | 3703 } // namespace dart |
| OLD | NEW |