Merge V8 5.2.361.47 DO NOT MERGE
https://chromium.googlesource.com/v8/v8/+/5.2.361.47
FPIIM-449
Change-Id: Ibec421b85a9b88cb3a432ada642e469fe7e78346
(cherry picked from commit bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8)
diff --git a/src/objects-printer.cc b/src/objects-printer.cc
index 58092a4..551beb2 100644
--- a/src/objects-printer.cc
+++ b/src/objects-printer.cc
@@ -33,7 +33,13 @@
void HeapObject::PrintHeader(std::ostream& os, const char* id) { // NOLINT
- os << reinterpret_cast<void*>(this) << ": [" << id << "]";
+ os << reinterpret_cast<void*>(this) << ": [";
+ if (id != nullptr) {
+ os << id;
+ } else {
+ os << map()->instance_type();
+ }
+ os << "]";
}
@@ -95,13 +101,16 @@
os << "filler";
break;
case JS_OBJECT_TYPE: // fall through
+ case JS_API_OBJECT_TYPE:
case JS_SPECIAL_API_OBJECT_TYPE:
case JS_CONTEXT_EXTENSION_OBJECT_TYPE:
- case JS_ARRAY_TYPE:
case JS_GENERATOR_OBJECT_TYPE:
case JS_PROMISE_TYPE:
JSObject::cast(this)->JSObjectPrint(os);
break;
+ case JS_ARRAY_TYPE:
+ JSArray::cast(this)->JSArrayPrint(os);
+ break;
case JS_REGEXP_TYPE:
JSRegExp::cast(this)->JSRegExpPrint(os);
break;
@@ -396,16 +405,20 @@
obj->PrintHeader(os, id);
// Don't call GetElementsKind, its validation code can cause the printer to
// fail when debugging.
- os << "\n - map = " << reinterpret_cast<void*>(obj->map()) << " ["
+ os << "\n - map = " << reinterpret_cast<void*>(obj->map()) << " [";
+ if (obj->HasFastProperties()) {
+ os << "FastProperties";
+ } else {
+ os << "DictionaryProperties";
+ }
+ PrototypeIterator iter(obj->GetIsolate(), obj);
+ os << "]\n - prototype = " << reinterpret_cast<void*>(iter.GetCurrent());
+ os << "\n - elements = " << Brief(obj->elements()) << " ["
<< ElementsKindToString(obj->map()->elements_kind());
if (obj->elements()->map() == obj->GetHeap()->fixed_cow_array_map()) {
os << " (COW)";
}
- PrototypeIterator iter(obj->GetIsolate(), obj);
- os << "]\n - prototype = " << reinterpret_cast<void*>(iter.GetCurrent());
- if (obj->elements()->length() > 0) {
- os << "\n - elements = " << Brief(obj->elements());
- }
+ os << "]";
}
@@ -413,14 +426,19 @@
bool print_elements = true) {
os << "\n {";
obj->PrintProperties(os);
- obj->PrintTransitions(os);
if (print_elements) obj->PrintElements(os);
os << "\n }\n";
}
void JSObject::JSObjectPrint(std::ostream& os) { // NOLINT
- JSObjectPrintHeader(os, this, "JSObject");
+ JSObjectPrintHeader(os, this, nullptr);
+ JSObjectPrintBody(os, this);
+}
+
+void JSArray::JSArrayPrint(std::ostream& os) { // NOLINT
+ JSObjectPrintHeader(os, this, "JSArray");
+ os << "\n - length = " << Brief(this->length());
JSObjectPrintBody(os, this);
}
@@ -478,7 +496,6 @@
if (is_constructor()) os << "\n - constructor";
if (is_access_check_needed()) os << "\n - access_check_needed";
if (!is_extensible()) os << "\n - non-extensible";
- if (is_observed()) os << "\n - observed";
if (is_prototype_map()) {
os << "\n - prototype_map";
os << "\n - prototype info: " << Brief(prototype_info());
@@ -506,20 +523,6 @@
}
-void CodeCache::CodeCachePrint(std::ostream& os) { // NOLINT
- HeapObject::PrintHeader(os, "CodeCache");
- os << "\n - default_cache: " << Brief(default_cache());
- os << "\n - normal_type_cache: " << Brief(normal_type_cache());
-}
-
-
-void PolymorphicCodeCache::PolymorphicCodeCachePrint(
- std::ostream& os) { // NOLINT
- HeapObject::PrintHeader(os, "PolymorphicCodeCache");
- os << "\n - cache: " << Brief(cache());
-}
-
-
void TypeFeedbackInfo::TypeFeedbackInfoPrint(std::ostream& os) { // NOLINT
HeapObject::PrintHeader(os, "TypeFeedbackInfo");
os << "\n - ic_total_count: " << ic_total_count()
@@ -988,6 +991,7 @@
os << "\n - flag: " << flag();
os << "\n - getter: " << Brief(getter());
os << "\n - setter: " << Brief(setter());
+ os << "\n - js_getter: " << Brief(js_getter());
os << "\n - data: " << Brief(data());
os << "\n";
}
@@ -1140,8 +1144,7 @@
os << "\n - compilation type: " << compilation_type();
os << "\n - line ends: " << Brief(line_ends());
os << "\n - eval from shared: " << Brief(eval_from_shared());
- os << "\n - eval from instructions offset: "
- << eval_from_instructions_offset();
+ os << "\n - eval from position: " << eval_from_position();
os << "\n - shared function infos: " << Brief(shared_function_infos());
os << "\n";
}
@@ -1293,7 +1296,7 @@
for (int i = 0; i < num_transitions; i++) {
Name* key = GetKey(transitions, i);
Map* target = GetTarget(transitions, i);
- os << "\n ";
+ os << "\n ";
#ifdef OBJECT_PRINT
key->NamePrint(os);
#else
@@ -1312,8 +1315,6 @@
<< ")";
} else if (key == heap->strict_function_transition_symbol()) {
os << " (transition to strict function)";
- } else if (key == heap->observed_symbol()) {
- os << " (transition to Object.observe)";
} else {
PropertyDetails details = GetTargetDetails(key, target);
os << "(transition to ";