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 10996 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11007 switch (InfoAt(i)) { | 11007 switch (InfoAt(i)) { |
11008 case ObjectPool::kTaggedObject: | 11008 case ObjectPool::kTaggedObject: |
11009 obj = ObjectAt(i); | 11009 obj = ObjectAt(i); |
11010 jsarr.AddValue(obj); | 11010 jsarr.AddValue(obj); |
11011 break; | 11011 break; |
11012 case ObjectPool::kImmediate: | 11012 case ObjectPool::kImmediate: |
11013 imm = RawValueAt(i); | 11013 imm = RawValueAt(i); |
11014 jsarr.AddValue64(imm); | 11014 jsarr.AddValue64(imm); |
11015 break; | 11015 break; |
11016 case ObjectPool::kExternalLabel: | 11016 case ObjectPool::kExternalLabel: |
| 11017 case ObjectPool::kNativeEntry: |
11017 imm = RawValueAt(i); | 11018 imm = RawValueAt(i); |
11018 jsarr.AddValueF("0x%" Px, imm); | 11019 jsarr.AddValueF("0x%" Px, imm); |
11019 break; | 11020 break; |
11020 default: | 11021 default: |
11021 UNREACHABLE(); | 11022 UNREACHABLE(); |
11022 } | 11023 } |
11023 } | 11024 } |
11024 } | 11025 } |
11025 } | 11026 } |
11026 | 11027 |
11027 | 11028 |
11028 static const char* DescribeExternalLabel(uword addr) { | 11029 static const char* DescribeExternalLabel(uword addr) { |
11029 const char* stub_name = StubCode::NameOfStub(addr); | 11030 const char* stub_name = StubCode::NameOfStub(addr); |
11030 if (stub_name != NULL) { | 11031 if (stub_name != NULL) { |
11031 return stub_name; | 11032 return stub_name; |
11032 } | 11033 } |
11033 | 11034 |
11034 RuntimeFunctionId rt_id = RuntimeEntry::RuntimeFunctionIdFromAddress(addr); | |
11035 if (rt_id != kNoRuntimeFunctionId) { | |
11036 return "runtime entry"; | |
11037 } | |
11038 | |
11039 if (addr == NativeEntry::LinkNativeCallLabel().address()) { | |
11040 return "link native"; | |
11041 } | |
11042 | |
11043 if (addr == reinterpret_cast<uword>(Symbols::PredefinedAddress())) { | 11035 if (addr == reinterpret_cast<uword>(Symbols::PredefinedAddress())) { |
11044 return "predefined symbols"; | 11036 return "predefined symbols"; |
11045 } | 11037 } |
11046 | 11038 |
11047 return "UNKNOWN"; | 11039 return "UNKNOWN"; |
11048 } | 11040 } |
11049 | 11041 |
11050 | 11042 |
11051 void ObjectPool::DebugPrint() const { | 11043 void ObjectPool::DebugPrint() const { |
11052 ISL_Print("Object Pool: {\n"); | 11044 ISL_Print("Object Pool: {\n"); |
11053 for (intptr_t i = 0; i < Length(); i++) { | 11045 for (intptr_t i = 0; i < Length(); i++) { |
11054 intptr_t offset = OffsetFromIndex(i); | 11046 intptr_t offset = OffsetFromIndex(i); |
11055 ISL_Print(" %" Pd " PP+0x%" Px ": ", i, offset); | 11047 ISL_Print(" %" Pd " PP+0x%" Px ": ", i, offset); |
11056 if (InfoAt(i) == kTaggedObject) { | 11048 if (InfoAt(i) == kTaggedObject) { |
11057 RawObject* obj = ObjectAt(i); | 11049 RawObject* obj = ObjectAt(i); |
11058 ISL_Print("0x%" Px " %s (obj)\n", | 11050 ISL_Print("0x%" Px " %s (obj)\n", |
11059 reinterpret_cast<uword>(obj), | 11051 reinterpret_cast<uword>(obj), |
11060 Object::Handle(obj).ToCString()); | 11052 Object::Handle(obj).ToCString()); |
11061 } else if (InfoAt(i) == kExternalLabel) { | 11053 } else if (InfoAt(i) == kExternalLabel) { |
11062 uword addr = RawValueAt(i); | 11054 uword addr = RawValueAt(i); |
11063 ISL_Print("0x%" Px " (external label: %s)\n", | 11055 ISL_Print("0x%" Px " (external label: %s)\n", |
11064 addr, DescribeExternalLabel(addr)); | 11056 addr, DescribeExternalLabel(addr)); |
| 11057 } else if (InfoAt(i) == kNativeEntry) { |
| 11058 ISL_Print("0x%" Px " (native entry)\n", RawValueAt(i)); |
11065 } else { | 11059 } else { |
11066 ISL_Print("0x%" Px " (raw)\n", RawValueAt(i)); | 11060 ISL_Print("0x%" Px " (raw)\n", RawValueAt(i)); |
11067 } | 11061 } |
11068 } | 11062 } |
11069 ISL_Print("}\n"); | 11063 ISL_Print("}\n"); |
11070 } | 11064 } |
11071 | 11065 |
11072 | 11066 |
11073 intptr_t PcDescriptors::Length() const { | 11067 intptr_t PcDescriptors::Length() const { |
11074 return raw_ptr()->length_; | 11068 return raw_ptr()->length_; |
(...skipping 10433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
21508 return tag_label.ToCString(); | 21502 return tag_label.ToCString(); |
21509 } | 21503 } |
21510 | 21504 |
21511 | 21505 |
21512 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 21506 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { |
21513 Instance::PrintJSONImpl(stream, ref); | 21507 Instance::PrintJSONImpl(stream, ref); |
21514 } | 21508 } |
21515 | 21509 |
21516 | 21510 |
21517 } // namespace dart | 21511 } // namespace dart |
OLD | NEW |