| 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/object.h" | 5 #include "vm/object.h" |
| 6 | 6 |
| 7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
| 8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
| 9 #include "vm/assembler.h" | 9 #include "vm/assembler.h" |
| 10 #include "vm/cpu.h" | 10 #include "vm/cpu.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 "fit into a javascript integer."); | 60 "fit into a javascript integer."); |
| 61 DEFINE_FLAG(bool, trace_cha, false, "Trace CHA operations"); | 61 DEFINE_FLAG(bool, trace_cha, false, "Trace CHA operations"); |
| 62 DEFINE_FLAG(bool, use_field_guards, true, "Guard field cids."); | 62 DEFINE_FLAG(bool, use_field_guards, true, "Guard field cids."); |
| 63 DEFINE_FLAG(bool, use_lib_cache, true, "Use library name cache"); | 63 DEFINE_FLAG(bool, use_lib_cache, true, "Use library name cache"); |
| 64 DEFINE_FLAG(bool, trace_field_guards, false, "Trace changes in field's cids."); | 64 DEFINE_FLAG(bool, trace_field_guards, false, "Trace changes in field's cids."); |
| 65 DEFINE_FLAG(bool, ignore_patch_signature_mismatch, false, | 65 DEFINE_FLAG(bool, ignore_patch_signature_mismatch, false, |
| 66 "Ignore patch file member signature mismatch."); | 66 "Ignore patch file member signature mismatch."); |
| 67 | 67 |
| 68 DECLARE_FLAG(charp, coverage_dir); | 68 DECLARE_FLAG(charp, coverage_dir); |
| 69 DECLARE_FLAG(bool, load_deferred_eagerly); | 69 DECLARE_FLAG(bool, load_deferred_eagerly); |
| 70 DECLARE_FLAG(bool, precompilation); |
| 70 DECLARE_FLAG(bool, show_invisible_frames); | 71 DECLARE_FLAG(bool, show_invisible_frames); |
| 71 DECLARE_FLAG(bool, trace_deoptimization); | 72 DECLARE_FLAG(bool, trace_deoptimization); |
| 72 DECLARE_FLAG(bool, trace_deoptimization_verbose); | 73 DECLARE_FLAG(bool, trace_deoptimization_verbose); |
| 73 DECLARE_FLAG(bool, write_protect_code); | 74 DECLARE_FLAG(bool, write_protect_code); |
| 74 | 75 |
| 75 | 76 |
| 76 static const char* const kGetterPrefix = "get:"; | 77 static const char* const kGetterPrefix = "get:"; |
| 77 static const intptr_t kGetterPrefixLength = strlen(kGetterPrefix); | 78 static const intptr_t kGetterPrefixLength = strlen(kGetterPrefix); |
| 78 static const char* const kSetterPrefix = "set:"; | 79 static const char* const kSetterPrefix = "set:"; |
| 79 static const intptr_t kSetterPrefixLength = strlen(kSetterPrefix); | 80 static const intptr_t kSetterPrefixLength = strlen(kSetterPrefix); |
| (...skipping 22321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 22401 OS::SNPrint(chars, truncated_len, "%s", kTruncated); | 22402 OS::SNPrint(chars, truncated_len, "%s", kTruncated); |
| 22402 frame_strings.Add(chars); | 22403 frame_strings.Add(chars); |
| 22403 total_len += truncated_len; | 22404 total_len += truncated_len; |
| 22404 } | 22405 } |
| 22405 } else { | 22406 } else { |
| 22406 code = CodeAtFrame(i); | 22407 code = CodeAtFrame(i); |
| 22407 ASSERT(function.raw() == code.function()); | 22408 ASSERT(function.raw() == code.function()); |
| 22408 uword pc = code.EntryPoint() + Smi::Value(PcOffsetAtFrame(i)); | 22409 uword pc = code.EntryPoint() + Smi::Value(PcOffsetAtFrame(i)); |
| 22409 if (code.is_optimized() && expand_inlined()) { | 22410 if (code.is_optimized() && expand_inlined()) { |
| 22410 // Traverse inlined frames. | 22411 // Traverse inlined frames. |
| 22411 if (Compiler::allow_recompilation()) { | 22412 if (!FLAG_precompilation) { |
| 22412 for (InlinedFunctionsIterator it(code, pc); | 22413 for (InlinedFunctionsIterator it(code, pc); |
| 22413 !it.Done() && (*frame_index < max_frames); it.Advance()) { | 22414 !it.Done() && (*frame_index < max_frames); it.Advance()) { |
| 22414 function = it.function(); | 22415 function = it.function(); |
| 22415 if (function.is_visible() || FLAG_show_invisible_frames) { | 22416 if (function.is_visible() || FLAG_show_invisible_frames) { |
| 22416 code = it.code(); | 22417 code = it.code(); |
| 22417 ASSERT(function.raw() == code.function()); | 22418 ASSERT(function.raw() == code.function()); |
| 22418 uword pc = it.pc(); | 22419 uword pc = it.pc(); |
| 22419 ASSERT(pc != 0); | 22420 ASSERT(pc != 0); |
| 22420 ASSERT(code.EntryPoint() <= pc); | 22421 ASSERT(code.EntryPoint() <= pc); |
| 22421 ASSERT(pc < (code.EntryPoint() + code.Size())); | 22422 ASSERT(pc < (code.EntryPoint() + code.Size())); |
| (...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 22837 return tag_label.ToCString(); | 22838 return tag_label.ToCString(); |
| 22838 } | 22839 } |
| 22839 | 22840 |
| 22840 | 22841 |
| 22841 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 22842 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { |
| 22842 Instance::PrintJSONImpl(stream, ref); | 22843 Instance::PrintJSONImpl(stream, ref); |
| 22843 } | 22844 } |
| 22844 | 22845 |
| 22845 | 22846 |
| 22846 } // namespace dart | 22847 } // namespace dart |
| OLD | NEW |