diff --git a/deps/v8/src/field-type.cc b/deps/v8/src/field-type.cc index 76d694c132628f..57d00d04631f89 100644 --- a/deps/v8/src/field-type.cc +++ b/deps/v8/src/field-type.cc @@ -13,7 +13,9 @@ namespace internal { // static FieldType* FieldType::None() { - return reinterpret_cast(Smi::FromInt(0)); + // Do not Smi::FromInt(0) here or for Any(), as that may translate + // as `nullptr` which is not a valid value for `this`. + return reinterpret_cast(Smi::FromInt(2)); } // static diff --git a/deps/v8/test/cctest/test-field-type-tracking.cc b/deps/v8/test/cctest/test-field-type-tracking.cc index c7c6f84423e42a..9d928e84a8099f 100644 --- a/deps/v8/test/cctest/test-field-type-tracking.cc +++ b/deps/v8/test/cctest/test-field-type-tracking.cc @@ -16,6 +16,7 @@ #include "src/global-handles.h" #include "src/ic/stub-cache.h" #include "src/macro-assembler.h" +#include "src/types.h" using namespace v8::internal; @@ -2473,6 +2474,16 @@ TEST(TransitionAccessorConstantToSameAccessorConstant) { TestTransitionTo(transition_op, transition_op, checker); } +TEST(FieldTypeConvertSimple) { + CcTest::InitializeVM(); + v8::HandleScope scope(CcTest::isolate()); + Isolate* isolate = CcTest::i_isolate(); + + Zone zone(isolate->allocator()); + + CHECK_EQ(FieldType::Any()->Convert(&zone), Type::Any()); + CHECK_EQ(FieldType::None()->Convert(&zone), Type::None()); +} // TODO(ishell): add this test once IS_ACCESSOR_FIELD_SUPPORTED is supported. // TEST(TransitionAccessorConstantToAnotherAccessorConstant)