| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index dabc1f980050b1f77414e883c2011a6064fbe0d2..06e130737616b84e7801f137cf34e72a85df17e9 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -232,10 +232,10 @@
|
|
|
| bool Object::BooleanValue() {
|
| if (IsSmi()) return Smi::cast(this)->value() != 0;
|
| - if (IsBoolean()) return IsTrue();
|
| DCHECK(IsHeapObject());
|
| Isolate* isolate = HeapObject::cast(this)->GetIsolate();
|
| - if (IsUndefined(isolate) || IsNull()) return false;
|
| + if (IsBoolean()) return IsTrue(isolate);
|
| + if (IsUndefined(isolate) || IsNull(isolate)) return false;
|
| if (IsUndetectable()) return false; // Undetectable object is false.
|
| if (IsString()) return String::cast(this)->length() != 0;
|
| if (IsHeapNumber()) return HeapNumber::cast(this)->HeapNumberBooleanValue();
|
| @@ -694,7 +694,7 @@
|
| Isolate* isolate = receiver->GetIsolate();
|
| ASSIGN_RETURN_ON_EXCEPTION(isolate, func,
|
| JSReceiver::GetProperty(receiver, name), Object);
|
| - if (func->IsNull() || func->IsUndefined(isolate)) {
|
| + if (func->IsNull(isolate) || func->IsUndefined(isolate)) {
|
| return isolate->factory()->undefined_value();
|
| }
|
| if (!func->IsCallable()) {
|
| @@ -1111,7 +1111,7 @@
|
| isolate, handler_proto,
|
| Execution::Call(isolate, trap, handler, arraysize(argv), argv), Object);
|
| // 8. If Type(handlerProto) is neither Object nor Null, throw a TypeError.
|
| - if (!(handler_proto->IsJSReceiver() || handler_proto->IsNull())) {
|
| + if (!(handler_proto->IsJSReceiver() || handler_proto->IsNull(isolate))) {
|
| THROW_NEW_ERROR(isolate,
|
| NewTypeError(MessageTemplate::kProxyGetPrototypeOfInvalid),
|
| Object);
|
| @@ -1693,7 +1693,7 @@
|
| JSReceiver::GetProperty(Handle<JSReceiver>::cast(constructor),
|
| isolate->factory()->species_symbol()),
|
| Object);
|
| - if (constructor->IsNull()) {
|
| + if (constructor->IsNull(isolate)) {
|
| constructor = isolate->factory()->undefined_value();
|
| }
|
| }
|
| @@ -2326,11 +2326,11 @@
|
| os << "<undefined>";
|
| } else if (IsTheHole(isolate)) {
|
| os << "<the hole>";
|
| - } else if (IsNull()) {
|
| + } else if (IsNull(isolate)) {
|
| os << "<null>";
|
| - } else if (IsTrue()) {
|
| + } else if (IsTrue(isolate)) {
|
| os << "<true>";
|
| - } else if (IsFalse()) {
|
| + } else if (IsFalse(isolate)) {
|
| os << "<false>";
|
| } else {
|
| os << "<Odd Oddball: ";
|
| @@ -6019,7 +6019,7 @@
|
|
|
| DCHECK(result->IsBoolean());
|
| // Rebox CustomArguments::kReturnValueOffset before returning.
|
| - return Just(result->IsTrue());
|
| + return Just(result->IsTrue(isolate));
|
| }
|
|
|
|
|
| @@ -8426,9 +8426,9 @@
|
| }
|
|
|
| DCHECK(getter->IsCallable() || getter->IsUndefined(isolate) ||
|
| - getter->IsNull() || getter->IsFunctionTemplateInfo());
|
| + getter->IsNull(isolate) || getter->IsFunctionTemplateInfo());
|
| DCHECK(setter->IsCallable() || setter->IsUndefined(isolate) ||
|
| - setter->IsNull() || getter->IsFunctionTemplateInfo());
|
| + setter->IsNull(isolate) || getter->IsFunctionTemplateInfo());
|
| it->TransitionToAccessorProperty(getter, setter, attributes);
|
|
|
| return isolate->factory()->undefined_value();
|
| @@ -9249,7 +9249,7 @@
|
| : &RuntimeCallStats::Map_TransitionToAccessorProperty);
|
|
|
| // At least one of the accessors needs to be a new value.
|
| - DCHECK(!getter->IsNull() || !setter->IsNull());
|
| + DCHECK(!getter->IsNull(isolate) || !setter->IsNull(isolate));
|
| DCHECK(name->IsUniqueName());
|
|
|
| // Dictionary maps can always have additional data properties.
|
| @@ -9310,11 +9310,13 @@
|
| if (current_pair->Equals(*getter, *setter)) return map;
|
|
|
| bool overwriting_accessor = false;
|
| - if (!getter->IsNull() && !current_pair->get(ACCESSOR_GETTER)->IsNull() &&
|
| + if (!getter->IsNull(isolate) &&
|
| + !current_pair->get(ACCESSOR_GETTER)->IsNull(isolate) &&
|
| current_pair->get(ACCESSOR_GETTER) != *getter) {
|
| overwriting_accessor = true;
|
| }
|
| - if (!setter->IsNull() && !current_pair->get(ACCESSOR_SETTER)->IsNull() &&
|
| + if (!setter->IsNull(isolate) &&
|
| + !current_pair->get(ACCESSOR_SETTER)->IsNull(isolate) &&
|
| current_pair->get(ACCESSOR_SETTER) != *setter) {
|
| overwriting_accessor = true;
|
| }
|
| @@ -10090,7 +10092,7 @@
|
| .ToHandleChecked();
|
| }
|
| Isolate* isolate = accessor_pair->GetIsolate();
|
| - if (accessor->IsNull()) {
|
| + if (accessor->IsNull(isolate)) {
|
| return isolate->factory()->undefined_value();
|
| }
|
| return handle(accessor, isolate);
|
| @@ -12127,8 +12129,9 @@
|
| }
|
| map->set_has_hidden_prototype(is_hidden);
|
|
|
| - WriteBarrierMode wb_mode =
|
| - prototype->IsNull() ? SKIP_WRITE_BARRIER : UPDATE_WRITE_BARRIER;
|
| + WriteBarrierMode wb_mode = prototype->IsNull(map->GetIsolate())
|
| + ? SKIP_WRITE_BARRIER
|
| + : UPDATE_WRITE_BARRIER;
|
| map->set_prototype(*prototype, wb_mode);
|
| }
|
|
|
| @@ -14802,7 +14805,7 @@
|
| STACK_CHECK(isolate, Nothing<bool>());
|
| Handle<Name> trap_name = isolate->factory()->setPrototypeOf_string();
|
| // 1. Assert: Either Type(V) is Object or Type(V) is Null.
|
| - DCHECK(value->IsJSReceiver() || value->IsNull());
|
| + DCHECK(value->IsJSReceiver() || value->IsNull(isolate));
|
| // 2. Let handler be the value of the [[ProxyHandler]] internal slot of O.
|
| Handle<Object> handler(proxy->handler(), isolate);
|
| // 3. If handler is null, throw a TypeError exception.
|
| @@ -14889,7 +14892,7 @@
|
| Heap* heap = isolate->heap();
|
| // Silently ignore the change if value is not a JSObject or null.
|
| // SpiderMonkey behaves this way.
|
| - if (!value->IsJSReceiver() && !value->IsNull()) return Just(true);
|
| + if (!value->IsJSReceiver() && !value->IsNull(isolate)) return Just(true);
|
|
|
| bool dictionary_elements_in_chain =
|
| object->map()->DictionaryElementsInPrototypeChainOnly();
|
|
|