aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/objects-debug.cc
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2016-09-06 22:49:51 +0200
committerMichaël Zasso <targos@protonmail.com>2016-09-22 09:51:19 +0200
commitec02b811a8a5c999bab4de312be2d732b7d9d50b (patch)
treeca3068017254f238cf413a451c57a803572983a4 /deps/v8/src/objects-debug.cc
parentd2eb7ce0105369a9cad82787cb33a665e9bd00ad (diff)
downloadandroid-node-v8-ec02b811a8a5c999bab4de312be2d732b7d9d50b.tar.gz
android-node-v8-ec02b811a8a5c999bab4de312be2d732b7d9d50b.tar.bz2
android-node-v8-ec02b811a8a5c999bab4de312be2d732b7d9d50b.zip
deps: update V8 to 5.4.500.27
Pick up latest commit from the 5.4-lkgr branch. deps: edit V8 gitignore to allow trace event copy deps: update V8 trace event to 315bf1e2d45be7d53346c31cfcc37424a32c30c8 deps: edit V8 gitignore to allow gtest_prod.h copy deps: update V8 gtest to 6f8a66431cb592dad629028a50b3dd418a408c87 PR-URL: https://github.com/nodejs/node/pull/8317 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Diffstat (limited to 'deps/v8/src/objects-debug.cc')
-rw-r--r--deps/v8/src/objects-debug.cc177
1 files changed, 92 insertions, 85 deletions
diff --git a/deps/v8/src/objects-debug.cc b/deps/v8/src/objects-debug.cc
index b023b03aea..7d426a045e 100644
--- a/deps/v8/src/objects-debug.cc
+++ b/deps/v8/src/objects-debug.cc
@@ -99,6 +99,9 @@ void HeapObject::HeapObjectVerify() {
Oddball::cast(this)->OddballVerify();
break;
case JS_OBJECT_TYPE:
+ case JS_ERROR_TYPE:
+ case JS_ARGUMENTS_TYPE:
+ case JS_API_OBJECT_TYPE:
case JS_SPECIAL_API_OBJECT_TYPE:
case JS_CONTEXT_EXTENSION_OBJECT_TYPE:
case JS_PROMISE_TYPE:
@@ -107,9 +110,6 @@ void HeapObject::HeapObjectVerify() {
case JS_GENERATOR_OBJECT_TYPE:
JSGeneratorObject::cast(this)->JSGeneratorObjectVerify();
break;
- case JS_MODULE_TYPE:
- JSModule::cast(this)->JSModuleVerify();
- break;
case JS_VALUE_TYPE:
JSValue::cast(this)->JSValueVerify();
break;
@@ -209,8 +209,8 @@ void HeapObject::VerifyHeapPointer(Object* p) {
void Symbol::SymbolVerify() {
CHECK(IsSymbol());
CHECK(HasHashCode());
- CHECK(GetHeap()->hidden_properties_symbol() == this || Hash() > 0u);
- CHECK(name()->IsUndefined() || name()->IsString());
+ CHECK(Hash() > 0u);
+ CHECK(name()->IsUndefined(GetIsolate()) || name()->IsString());
}
@@ -288,6 +288,7 @@ void JSObject::JSObjectVerify() {
actual_unused_property_fields - JSObject::kFieldsAdded);
}
DescriptorArray* descriptors = map()->instance_descriptors();
+ Isolate* isolate = GetIsolate();
for (int i = 0; i < map()->NumberOfOwnDescriptors(); i++) {
if (descriptors->GetDetails(i).type() == DATA) {
Representation r = descriptors->GetDetails(i).representation();
@@ -298,7 +299,7 @@ void JSObject::JSObjectVerify() {
}
Object* value = RawFastPropertyAt(index);
if (r.IsDouble()) DCHECK(value->IsMutableHeapNumber());
- if (value->IsUninitialized()) continue;
+ if (value->IsUninitialized(isolate)) continue;
if (r.IsSmi()) DCHECK(value->IsSmi());
if (r.IsHeapObject()) DCHECK(value->IsHeapObject());
FieldType* field_type = descriptors->GetFieldType(i);
@@ -311,7 +312,7 @@ void JSObject::JSObjectVerify() {
// object literal creation and we will end up having and undefined
// value that does not match the field type.
CHECK(!field_type->NowStable() || field_type->NowContains(value) ||
- (!FLAG_use_allocation_folding && value->IsUndefined()));
+ (!FLAG_use_allocation_folding && value->IsUndefined(isolate)));
}
}
}
@@ -337,7 +338,7 @@ void Map::MapVerify() {
CHECK(instance_size() == kVariableSizeSentinel ||
(kPointerSize <= instance_size() &&
instance_size() < heap->Capacity()));
- CHECK(GetBackPointer()->IsUndefined() ||
+ CHECK(GetBackPointer()->IsUndefined(heap->isolate()) ||
!Map::cast(GetBackPointer())->is_stable());
VerifyHeapPointer(prototype());
VerifyHeapPointer(instance_descriptors());
@@ -369,21 +370,6 @@ void Map::VerifyOmittedMapChecks() {
}
-void CodeCache::CodeCacheVerify() {
- VerifyHeapPointer(default_cache());
- VerifyHeapPointer(normal_type_cache());
- CHECK(default_cache()->IsFixedArray());
- CHECK(normal_type_cache()->IsUndefined()
- || normal_type_cache()->IsCodeCacheHashTable());
-}
-
-
-void PolymorphicCodeCache::PolymorphicCodeCacheVerify() {
- VerifyHeapPointer(cache());
- CHECK(cache()->IsUndefined() || cache()->IsPolymorphicCodeCacheHashTable());
-}
-
-
void TypeFeedbackInfo::TypeFeedbackInfoVerify() {
VerifyObjectField(kStorage1Offset);
VerifyObjectField(kStorage2Offset);
@@ -426,7 +412,7 @@ void TransitionArray::TransitionArrayVerify() {
VerifyPointer(e);
}
CHECK_LE(LengthFor(number_of_transitions()), length());
- CHECK(next_link()->IsUndefined() || next_link()->IsSmi() ||
+ CHECK(next_link()->IsUndefined(GetIsolate()) || next_link()->IsSmi() ||
next_link()->IsTransitionArray());
}
@@ -443,14 +429,6 @@ void JSGeneratorObject::JSGeneratorObjectVerify() {
}
-void JSModule::JSModuleVerify() {
- VerifyObjectField(kContextOffset);
- VerifyObjectField(kScopeInfoOffset);
- CHECK(context()->IsUndefined() ||
- Context::cast(context())->IsModuleContext());
-}
-
-
void JSValue::JSValueVerify() {
Object* v = value();
if (v->IsHeapObject()) {
@@ -463,16 +441,18 @@ void JSDate::JSDateVerify() {
if (value()->IsHeapObject()) {
VerifyHeapPointer(value());
}
- CHECK(value()->IsUndefined() || value()->IsSmi() || value()->IsHeapNumber());
- CHECK(year()->IsUndefined() || year()->IsSmi() || year()->IsNaN());
- CHECK(month()->IsUndefined() || month()->IsSmi() || month()->IsNaN());
- CHECK(day()->IsUndefined() || day()->IsSmi() || day()->IsNaN());
- CHECK(weekday()->IsUndefined() || weekday()->IsSmi() || weekday()->IsNaN());
- CHECK(hour()->IsUndefined() || hour()->IsSmi() || hour()->IsNaN());
- CHECK(min()->IsUndefined() || min()->IsSmi() || min()->IsNaN());
- CHECK(sec()->IsUndefined() || sec()->IsSmi() || sec()->IsNaN());
- CHECK(cache_stamp()->IsUndefined() ||
- cache_stamp()->IsSmi() ||
+ Isolate* isolate = GetIsolate();
+ CHECK(value()->IsUndefined(isolate) || value()->IsSmi() ||
+ value()->IsHeapNumber());
+ CHECK(year()->IsUndefined(isolate) || year()->IsSmi() || year()->IsNaN());
+ CHECK(month()->IsUndefined(isolate) || month()->IsSmi() || month()->IsNaN());
+ CHECK(day()->IsUndefined(isolate) || day()->IsSmi() || day()->IsNaN());
+ CHECK(weekday()->IsUndefined(isolate) || weekday()->IsSmi() ||
+ weekday()->IsNaN());
+ CHECK(hour()->IsUndefined(isolate) || hour()->IsSmi() || hour()->IsNaN());
+ CHECK(min()->IsUndefined(isolate) || min()->IsSmi() || min()->IsNaN());
+ CHECK(sec()->IsUndefined(isolate) || sec()->IsSmi() || sec()->IsNaN());
+ CHECK(cache_stamp()->IsUndefined(isolate) || cache_stamp()->IsSmi() ||
cache_stamp()->IsNaN());
if (month()->IsSmi()) {
@@ -501,7 +481,7 @@ void JSDate::JSDateVerify() {
}
if (cache_stamp()->IsSmi()) {
CHECK(Smi::cast(cache_stamp())->value() <=
- Smi::cast(GetIsolate()->date_cache()->stamp())->value());
+ Smi::cast(isolate->date_cache()->stamp())->value());
}
}
@@ -569,7 +549,7 @@ void JSFunction::JSFunctionVerify() {
VerifyObjectField(kNextFunctionLinkOffset);
CHECK(code()->IsCode());
CHECK(next_function_link() == NULL ||
- next_function_link()->IsUndefined() ||
+ next_function_link()->IsUndefined(GetIsolate()) ||
next_function_link()->IsJSFunction());
CHECK(map()->is_callable());
}
@@ -580,14 +560,17 @@ void SharedFunctionInfo::SharedFunctionInfoVerify() {
VerifyObjectField(kNameOffset);
VerifyObjectField(kCodeOffset);
VerifyObjectField(kOptimizedCodeMapOffset);
- VerifyObjectField(kFeedbackVectorOffset);
+ VerifyObjectField(kFeedbackMetadataOffset);
VerifyObjectField(kScopeInfoOffset);
VerifyObjectField(kInstanceClassNameOffset);
- CHECK(function_data()->IsUndefined() || IsApiFunction() ||
- HasBuiltinFunctionId() || HasBytecodeArray());
+ CHECK(function_data()->IsUndefined(GetIsolate()) || IsApiFunction() ||
+ HasBytecodeArray() || HasAsmWasmData());
VerifyObjectField(kFunctionDataOffset);
VerifyObjectField(kScriptOffset);
VerifyObjectField(kDebugInfoOffset);
+ CHECK(function_identifier()->IsUndefined(GetIsolate()) ||
+ HasBuiltinFunctionId() || HasInferredName());
+ VerifyObjectField(kFunctionIdentifierOffset);
}
@@ -618,12 +601,13 @@ void Oddball::OddballVerify() {
VerifyHeapPointer(to_string());
Object* number = to_number();
if (number->IsHeapObject()) {
- CHECK(number == heap->nan_value());
+ CHECK(number == heap->nan_value() ||
+ number == heap->hole_nan_value());
} else {
CHECK(number->IsSmi());
int value = Smi::cast(number)->value();
// Hidden oddballs have negative smis.
- const int kLeastHiddenOddballNumber = -6;
+ const int kLeastHiddenOddballNumber = -7;
CHECK_LE(value, 1);
CHECK(value >= kLeastHiddenOddballNumber);
}
@@ -648,6 +632,8 @@ void Oddball::OddballVerify() {
CHECK(this == heap->exception());
} else if (map() == heap->optimized_out_map()) {
CHECK(this == heap->optimized_out());
+ } else if (map() == heap->stale_register_map()) {
+ CHECK(this == heap->stale_register());
} else {
UNREACHABLE();
}
@@ -707,11 +693,25 @@ void Code::VerifyEmbeddedObjectsDependency() {
CHECK(map->dependent_code()->Contains(DependentCode::kWeakCodeGroup,
cell));
} else if (obj->IsJSObject()) {
- WeakHashTable* table =
- GetIsolate()->heap()->weak_object_to_code_table();
- Handle<HeapObject> key_obj(HeapObject::cast(obj), isolate);
- CHECK(DependentCode::cast(table->Lookup(key_obj))
- ->Contains(DependentCode::kWeakCodeGroup, cell));
+ if (isolate->heap()->InNewSpace(obj)) {
+ ArrayList* list =
+ GetIsolate()->heap()->weak_new_space_object_to_code_list();
+ bool found = false;
+ for (int i = 0; i < list->Length(); i += 2) {
+ WeakCell* obj_cell = WeakCell::cast(list->Get(i));
+ if (!obj_cell->cleared() && obj_cell->value() == obj &&
+ WeakCell::cast(list->Get(i + 1)) == cell) {
+ found = true;
+ break;
+ }
+ }
+ CHECK(found);
+ } else {
+ Handle<HeapObject> key_obj(HeapObject::cast(obj), isolate);
+ DependentCode* dep =
+ GetIsolate()->heap()->LookupWeakObjectToCodeDependency(key_obj);
+ dep->Contains(DependentCode::kWeakCodeGroup, cell);
+ }
}
}
}
@@ -720,12 +720,12 @@ void Code::VerifyEmbeddedObjectsDependency() {
void JSArray::JSArrayVerify() {
JSObjectVerify();
- CHECK(length()->IsNumber() || length()->IsUndefined());
+ Isolate* isolate = GetIsolate();
+ CHECK(length()->IsNumber() || length()->IsUndefined(isolate));
// If a GC was caused while constructing this array, the elements
// pointer may point to a one pointer filler map.
if (ElementsAreSafeToExamine()) {
- CHECK(elements()->IsUndefined() ||
- elements()->IsFixedArray() ||
+ CHECK(elements()->IsUndefined(isolate) || elements()->IsFixedArray() ||
elements()->IsFixedDoubleArray());
}
}
@@ -735,7 +735,7 @@ void JSSet::JSSetVerify() {
CHECK(IsJSSet());
JSObjectVerify();
VerifyHeapPointer(table());
- CHECK(table()->IsOrderedHashTable() || table()->IsUndefined());
+ CHECK(table()->IsOrderedHashTable() || table()->IsUndefined(GetIsolate()));
// TODO(arv): Verify OrderedHashTable too.
}
@@ -744,7 +744,7 @@ void JSMap::JSMapVerify() {
CHECK(IsJSMap());
JSObjectVerify();
VerifyHeapPointer(table());
- CHECK(table()->IsOrderedHashTable() || table()->IsUndefined());
+ CHECK(table()->IsOrderedHashTable() || table()->IsUndefined(GetIsolate()));
// TODO(arv): Verify OrderedHashTable too.
}
@@ -753,9 +753,10 @@ void JSSetIterator::JSSetIteratorVerify() {
CHECK(IsJSSetIterator());
JSObjectVerify();
VerifyHeapPointer(table());
- CHECK(table()->IsOrderedHashTable() || table()->IsUndefined());
- CHECK(index()->IsSmi() || index()->IsUndefined());
- CHECK(kind()->IsSmi() || kind()->IsUndefined());
+ Isolate* isolate = GetIsolate();
+ CHECK(table()->IsOrderedHashTable() || table()->IsUndefined(isolate));
+ CHECK(index()->IsSmi() || index()->IsUndefined(isolate));
+ CHECK(kind()->IsSmi() || kind()->IsUndefined(isolate));
}
@@ -763,9 +764,10 @@ void JSMapIterator::JSMapIteratorVerify() {
CHECK(IsJSMapIterator());
JSObjectVerify();
VerifyHeapPointer(table());
- CHECK(table()->IsOrderedHashTable() || table()->IsUndefined());
- CHECK(index()->IsSmi() || index()->IsUndefined());
- CHECK(kind()->IsSmi() || kind()->IsUndefined());
+ Isolate* isolate = GetIsolate();
+ CHECK(table()->IsOrderedHashTable() || table()->IsUndefined(isolate));
+ CHECK(index()->IsSmi() || index()->IsUndefined(isolate));
+ CHECK(kind()->IsSmi() || kind()->IsUndefined(isolate));
}
@@ -773,7 +775,7 @@ void JSWeakMap::JSWeakMapVerify() {
CHECK(IsJSWeakMap());
JSObjectVerify();
VerifyHeapPointer(table());
- CHECK(table()->IsHashTable() || table()->IsUndefined());
+ CHECK(table()->IsHashTable() || table()->IsUndefined(GetIsolate()));
}
@@ -781,13 +783,14 @@ void JSWeakSet::JSWeakSetVerify() {
CHECK(IsJSWeakSet());
JSObjectVerify();
VerifyHeapPointer(table());
- CHECK(table()->IsHashTable() || table()->IsUndefined());
+ CHECK(table()->IsHashTable() || table()->IsUndefined(GetIsolate()));
}
void JSRegExp::JSRegExpVerify() {
JSObjectVerify();
- CHECK(data()->IsUndefined() || data()->IsFixedArray());
+ Isolate* isolate = GetIsolate();
+ CHECK(data()->IsUndefined(isolate) || data()->IsFixedArray());
switch (TypeTag()) {
case JSRegExp::ATOM: {
FixedArray* arr = FixedArray::cast(data());
@@ -823,7 +826,7 @@ void JSRegExp::JSRegExpVerify() {
}
default:
CHECK_EQ(JSRegExp::NOT_COMPILED, TypeTag());
- CHECK(data()->IsUndefined());
+ CHECK(data()->IsUndefined(isolate));
break;
}
}
@@ -833,10 +836,11 @@ void JSProxy::JSProxyVerify() {
CHECK(IsJSProxy());
VerifyPointer(target());
VerifyPointer(handler());
+ Isolate* isolate = GetIsolate();
CHECK_EQ(target()->IsCallable(), map()->is_callable());
CHECK_EQ(target()->IsConstructor(), map()->is_constructor());
- CHECK(hash()->IsSmi() || hash()->IsUndefined());
- CHECK(map()->prototype()->IsNull());
+ CHECK(hash()->IsSmi() || hash()->IsUndefined(isolate));
+ CHECK(map()->prototype()->IsNull(isolate));
// There should be no properties on a Proxy.
CHECK_EQ(0, map()->NumberOfOwnDescriptors());
}
@@ -846,8 +850,8 @@ void JSArrayBuffer::JSArrayBufferVerify() {
CHECK(IsJSArrayBuffer());
JSObjectVerify();
VerifyPointer(byte_length());
- CHECK(byte_length()->IsSmi() || byte_length()->IsHeapNumber()
- || byte_length()->IsUndefined());
+ CHECK(byte_length()->IsSmi() || byte_length()->IsHeapNumber() ||
+ byte_length()->IsUndefined(GetIsolate()));
}
@@ -855,16 +859,17 @@ void JSArrayBufferView::JSArrayBufferViewVerify() {
CHECK(IsJSArrayBufferView());
JSObjectVerify();
VerifyPointer(buffer());
- CHECK(buffer()->IsJSArrayBuffer() || buffer()->IsUndefined()
- || buffer() == Smi::FromInt(0));
+ Isolate* isolate = GetIsolate();
+ CHECK(buffer()->IsJSArrayBuffer() || buffer()->IsUndefined(isolate) ||
+ buffer() == Smi::FromInt(0));
VerifyPointer(raw_byte_offset());
CHECK(raw_byte_offset()->IsSmi() || raw_byte_offset()->IsHeapNumber() ||
- raw_byte_offset()->IsUndefined());
+ raw_byte_offset()->IsUndefined(isolate));
VerifyPointer(raw_byte_length());
CHECK(raw_byte_length()->IsSmi() || raw_byte_length()->IsHeapNumber() ||
- raw_byte_length()->IsUndefined());
+ raw_byte_length()->IsUndefined(isolate));
}
@@ -873,7 +878,7 @@ void JSTypedArray::JSTypedArrayVerify() {
JSArrayBufferViewVerify();
VerifyPointer(raw_length());
CHECK(raw_length()->IsSmi() || raw_length()->IsHeapNumber() ||
- raw_length()->IsUndefined());
+ raw_length()->IsUndefined(GetIsolate()));
VerifyPointer(elements());
}
@@ -921,6 +926,7 @@ void AccessorInfo::AccessorInfoVerify() {
VerifyPointer(expected_receiver_type());
VerifyPointer(getter());
VerifyPointer(setter());
+ VerifyPointer(js_getter());
VerifyPointer(data());
}
@@ -934,9 +940,9 @@ void AccessorPair::AccessorPairVerify() {
void AccessCheckInfo::AccessCheckInfoVerify() {
CHECK(IsAccessCheckInfo());
- VerifyPointer(named_callback());
- VerifyPointer(indexed_callback());
VerifyPointer(callback());
+ VerifyPointer(named_interceptor());
+ VerifyPointer(indexed_interceptor());
VerifyPointer(data());
}
@@ -986,7 +992,7 @@ void ObjectTemplateInfo::ObjectTemplateInfoVerify() {
CHECK(IsObjectTemplateInfo());
TemplateInfoVerify();
VerifyPointer(constructor());
- VerifyPointer(internal_field_count());
+ VerifyPointer(data());
}
@@ -1014,12 +1020,13 @@ void Script::ScriptVerify() {
void NormalizedMapCache::NormalizedMapCacheVerify() {
FixedArray::cast(this)->FixedArrayVerify();
if (FLAG_enable_slow_asserts) {
+ Isolate* isolate = GetIsolate();
for (int i = 0; i < length(); i++) {
Object* e = FixedArray::get(i);
if (e->IsMap()) {
Map::cast(e)->DictionaryMapVerify();
} else {
- CHECK(e->IsUndefined());
+ CHECK(e->IsUndefined(isolate));
}
}
}
@@ -1029,7 +1036,7 @@ void NormalizedMapCache::NormalizedMapCacheVerify() {
void DebugInfo::DebugInfoVerify() {
CHECK(IsDebugInfo());
VerifyPointer(shared());
- VerifyPointer(abstract_code());
+ VerifyPointer(debug_bytecode_array());
VerifyPointer(break_points());
}
@@ -1073,9 +1080,9 @@ void JSObject::IncrementSpillStatistics(SpillInformation* info) {
int holes = 0;
FixedArray* e = FixedArray::cast(elements());
int len = e->length();
- Heap* heap = GetHeap();
+ Isolate* isolate = GetIsolate();
for (int i = 0; i < len; i++) {
- if (e->get(i) == heap->the_hole_value()) holes++;
+ if (e->get(i)->IsTheHole(isolate)) holes++;
}
info->number_of_fast_used_elements_ += len - holes;
info->number_of_fast_unused_elements_ += holes;