Merge V8 5.3.332.45. DO NOT MERGE
Test: Manual
FPIIM-449
Change-Id: Id3254828b068abdea3cb10442e0172a8c9a98e03
(cherry picked from commit 13e2dadd00298019ed862f2b2fc5068bba730bcf)
diff --git a/src/objects-debug.cc b/src/objects-debug.cc
index a8728fc..d3d13d4 100644
--- a/src/objects-debug.cc
+++ b/src/objects-debug.cc
@@ -99,6 +99,8 @@
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:
@@ -211,7 +213,7 @@
CHECK(IsSymbol());
CHECK(HasHashCode());
CHECK(Hash() > 0u);
- CHECK(name()->IsUndefined() || name()->IsString());
+ CHECK(name()->IsUndefined(GetIsolate()) || name()->IsString());
}
@@ -289,6 +291,7 @@
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();
@@ -299,7 +302,7 @@
}
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);
@@ -312,7 +315,7 @@
// 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)));
}
}
}
@@ -338,7 +341,7 @@
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());
@@ -412,7 +415,7 @@
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());
}
@@ -432,7 +435,7 @@
void JSModule::JSModuleVerify() {
VerifyObjectField(kContextOffset);
VerifyObjectField(kScopeInfoOffset);
- CHECK(context()->IsUndefined() ||
+ CHECK(context()->IsUndefined(GetIsolate()) ||
Context::cast(context())->IsModuleContext());
}
@@ -449,16 +452,18 @@
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()) {
@@ -487,7 +492,7 @@
}
if (cache_stamp()->IsSmi()) {
CHECK(Smi::cast(cache_stamp())->value() <=
- Smi::cast(GetIsolate()->date_cache()->stamp())->value());
+ Smi::cast(isolate->date_cache()->stamp())->value());
}
}
@@ -555,7 +560,7 @@
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());
}
@@ -566,14 +571,17 @@
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());
VerifyObjectField(kFunctionDataOffset);
VerifyObjectField(kScriptOffset);
VerifyObjectField(kDebugInfoOffset);
+ CHECK(function_identifier()->IsUndefined(GetIsolate()) ||
+ HasBuiltinFunctionId() || HasInferredName());
+ VerifyObjectField(kFunctionIdentifierOffset);
}
@@ -708,12 +716,12 @@
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());
}
}
@@ -723,7 +731,7 @@
CHECK(IsJSSet());
JSObjectVerify();
VerifyHeapPointer(table());
- CHECK(table()->IsOrderedHashTable() || table()->IsUndefined());
+ CHECK(table()->IsOrderedHashTable() || table()->IsUndefined(GetIsolate()));
// TODO(arv): Verify OrderedHashTable too.
}
@@ -732,7 +740,7 @@
CHECK(IsJSMap());
JSObjectVerify();
VerifyHeapPointer(table());
- CHECK(table()->IsOrderedHashTable() || table()->IsUndefined());
+ CHECK(table()->IsOrderedHashTable() || table()->IsUndefined(GetIsolate()));
// TODO(arv): Verify OrderedHashTable too.
}
@@ -741,9 +749,10 @@
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));
}
@@ -751,9 +760,10 @@
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));
}
@@ -761,7 +771,7 @@
CHECK(IsJSWeakMap());
JSObjectVerify();
VerifyHeapPointer(table());
- CHECK(table()->IsHashTable() || table()->IsUndefined());
+ CHECK(table()->IsHashTable() || table()->IsUndefined(GetIsolate()));
}
@@ -769,13 +779,14 @@
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());
@@ -811,7 +822,7 @@
}
default:
CHECK_EQ(JSRegExp::NOT_COMPILED, TypeTag());
- CHECK(data()->IsUndefined());
+ CHECK(data()->IsUndefined(isolate));
break;
}
}
@@ -821,10 +832,11 @@
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());
}
@@ -834,8 +846,8 @@
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()));
}
@@ -843,16 +855,17 @@
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));
}
@@ -861,7 +874,7 @@
JSArrayBufferViewVerify();
VerifyPointer(raw_length());
CHECK(raw_length()->IsSmi() || raw_length()->IsHeapNumber() ||
- raw_length()->IsUndefined());
+ raw_length()->IsUndefined(GetIsolate()));
VerifyPointer(elements());
}
@@ -923,9 +936,9 @@
void AccessCheckInfo::AccessCheckInfoVerify() {
CHECK(IsAccessCheckInfo());
- VerifyPointer(named_callback());
- VerifyPointer(indexed_callback());
VerifyPointer(callback());
+ VerifyPointer(named_interceptor());
+ VerifyPointer(indexed_interceptor());
VerifyPointer(data());
}
@@ -1003,12 +1016,13 @@
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));
}
}
}
@@ -1062,9 +1076,9 @@
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;