| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #include "src/disasm.h" | 7 #include "src/disasm.h" |
| 8 #include "src/disassembler.h" | 8 #include "src/disassembler.h" |
| 9 #include "src/heap/objects-visiting.h" | 9 #include "src/heap/objects-visiting.h" |
| 10 #include "src/jsregexp.h" | 10 #include "src/jsregexp.h" |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 case FIELD: { | 234 case FIELD: { |
| 235 FieldIndex index = FieldIndex::ForDescriptor(map(), i); | 235 FieldIndex index = FieldIndex::ForDescriptor(map(), i); |
| 236 if (IsUnboxedDoubleField(index)) { | 236 if (IsUnboxedDoubleField(index)) { |
| 237 os << "<unboxed double> " << RawFastDoublePropertyAt(index); | 237 os << "<unboxed double> " << RawFastDoublePropertyAt(index); |
| 238 } else { | 238 } else { |
| 239 os << Brief(RawFastPropertyAt(index)); | 239 os << Brief(RawFastPropertyAt(index)); |
| 240 } | 240 } |
| 241 os << " (field at offset " << index.property_index() << ")\n"; | 241 os << " (field at offset " << index.property_index() << ")\n"; |
| 242 break; | 242 break; |
| 243 } | 243 } |
| 244 case ACCESSOR_FIELD: { |
| 245 FieldIndex index = FieldIndex::ForDescriptor(map(), i); |
| 246 os << " (accessor at offset " << index.property_index() << ")\n"; |
| 247 break; |
| 248 } |
| 244 case CONSTANT: | 249 case CONSTANT: |
| 245 os << Brief(descs->GetConstant(i)) << " (constant)\n"; | 250 os << Brief(descs->GetConstant(i)) << " (constant)\n"; |
| 246 break; | 251 break; |
| 247 case CALLBACKS: | 252 case CALLBACKS: |
| 248 os << Brief(descs->GetCallbacksObject(i)) << " (callback)\n"; | 253 os << Brief(descs->GetCallbacksObject(i)) << " (callbacks)\n"; |
| 249 break; | 254 break; |
| 250 } | 255 } |
| 251 } | 256 } |
| 252 } else { | 257 } else { |
| 253 property_dictionary()->Print(os); | 258 property_dictionary()->Print(os); |
| 254 } | 259 } |
| 255 } | 260 } |
| 256 | 261 |
| 257 | 262 |
| 258 template <class T> | 263 template <class T> |
| (...skipping 923 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1182 os << " (transition to sealed)"; | 1187 os << " (transition to sealed)"; |
| 1183 } else if (key == GetHeap()->frozen_symbol()) { | 1188 } else if (key == GetHeap()->frozen_symbol()) { |
| 1184 os << " (transition to frozen)"; | 1189 os << " (transition to frozen)"; |
| 1185 } else if (key == GetHeap()->elements_transition_symbol()) { | 1190 } else if (key == GetHeap()->elements_transition_symbol()) { |
| 1186 os << " (transition to " << ElementsKindToString(target->elements_kind()) | 1191 os << " (transition to " << ElementsKindToString(target->elements_kind()) |
| 1187 << ")"; | 1192 << ")"; |
| 1188 } else if (key == GetHeap()->observed_symbol()) { | 1193 } else if (key == GetHeap()->observed_symbol()) { |
| 1189 os << " (transition to Object.observe)"; | 1194 os << " (transition to Object.observe)"; |
| 1190 } else { | 1195 } else { |
| 1191 PropertyDetails details = GetTargetDetails(key, target); | 1196 PropertyDetails details = GetTargetDetails(key, target); |
| 1192 switch (details.type()) { | 1197 os << " (transition to "; |
| 1193 case FIELD: { | 1198 if (details.location() == IN_DESCRIPTOR) { |
| 1194 os << " (transition to field)"; | 1199 os << "immutable "; |
| 1195 break; | |
| 1196 } | |
| 1197 case CONSTANT: | |
| 1198 os << " (transition to constant " << Brief(GetTargetValue(i)) << ")"; | |
| 1199 break; | |
| 1200 case CALLBACKS: | |
| 1201 os << " (transition to callback " << Brief(GetTargetValue(i)) << ")"; | |
| 1202 break; | |
| 1203 } | 1200 } |
| 1204 os << ", attrs: " << details.attributes(); | 1201 os << (details.kind() == DATA ? "data" : "accessor"); |
| 1202 if (details.location() == IN_DESCRIPTOR) { |
| 1203 os << " " << Brief(GetTargetValue(i)); |
| 1204 } |
| 1205 os << "), attrs: " << details.attributes(); |
| 1205 } | 1206 } |
| 1206 os << " -> " << Brief(target) << "\n"; | 1207 os << " -> " << Brief(target) << "\n"; |
| 1207 } | 1208 } |
| 1208 } | 1209 } |
| 1209 | 1210 |
| 1210 | 1211 |
| 1211 void JSObject::PrintTransitions(std::ostream& os) { // NOLINT | 1212 void JSObject::PrintTransitions(std::ostream& os) { // NOLINT |
| 1212 if (!map()->HasTransitionArray()) return; | 1213 if (!map()->HasTransitionArray()) return; |
| 1213 map()->transitions()->PrintTransitions(os, false); | 1214 map()->transitions()->PrintTransitions(os, false); |
| 1214 } | 1215 } |
| 1215 #endif // defined(DEBUG) || defined(OBJECT_PRINT) | 1216 #endif // defined(DEBUG) || defined(OBJECT_PRINT) |
| 1216 } } // namespace v8::internal | 1217 } } // namespace v8::internal |
| OLD | NEW |