diff options
Diffstat (limited to 'deps/v8/src/torque/types.h')
-rw-r--r-- | deps/v8/src/torque/types.h | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/deps/v8/src/torque/types.h b/deps/v8/src/torque/types.h index d2198d50c3..0102cf31d5 100644 --- a/deps/v8/src/torque/types.h +++ b/deps/v8/src/torque/types.h @@ -156,7 +156,7 @@ struct Field { SourcePosition pos; const AggregateType* aggregate; - base::Optional<const Field*> index; + base::Optional<NameAndType> index; NameAndType name_and_type; size_t offset; bool is_weak; @@ -204,8 +204,7 @@ class AbstractType final : public Type { return "AT" + str; } std::string GetGeneratedTypeNameImpl() const override { - return IsConstexpr() ? generated_type_ - : "compiler::TNode<" + generated_type_ + ">"; + return IsConstexpr() ? generated_type_ : "TNode<" + generated_type_ + ">"; } std::string GetGeneratedTNodeTypeNameImpl() const override; bool IsConstexpr() const override { @@ -316,7 +315,7 @@ class V8_EXPORT_PRIVATE UnionType final : public Type { std::string ToExplicitString() const override; std::string MangledName() const override; std::string GetGeneratedTypeNameImpl() const override { - return "compiler::TNode<" + GetGeneratedTNodeTypeName() + ">"; + return "TNode<" + GetGeneratedTNodeTypeName() + ">"; } std::string GetGeneratedTNodeTypeNameImpl() const override; @@ -514,10 +513,12 @@ class ClassType final : public AggregateType { std::string GetGeneratedTNodeTypeNameImpl() const override; bool IsExtern() const { return flags_ & ClassFlag::kExtern; } bool ShouldGeneratePrint() const { - return flags_ & ClassFlag::kGeneratePrint || !IsExtern(); + return (flags_ & ClassFlag::kGeneratePrint || !IsExtern()) && + !HasUndefinedLayout(); } bool ShouldGenerateVerify() const { - return flags_ & ClassFlag::kGenerateVerify || !IsExtern(); + return (flags_ & ClassFlag::kGenerateVerify || !IsExtern()) && + !HasUndefinedLayout(); } bool IsTransient() const override { return flags_ & ClassFlag::kTransient; } bool IsAbstract() const { return flags_ & ClassFlag::kAbstract; } @@ -549,6 +550,20 @@ class ClassType final : public AggregateType { std::vector<Field> ComputeAllFields() const; + const InstanceTypeConstraints& GetInstanceTypeConstraints() const { + return decl_->instance_type_constraints; + } + bool IsHighestInstanceTypeWithinParent() const { + return flags_ & ClassFlag::kHighestInstanceTypeWithinParent; + } + bool IsLowestInstanceTypeWithinParent() const { + return flags_ & ClassFlag::kLowestInstanceTypeWithinParent; + } + bool HasUndefinedLayout() const { + return flags_ & ClassFlag::kUndefinedLayout; + } + SourcePosition GetPosition() const { return decl_->pos; } + private: friend class TypeOracle; friend class TypeVisitor; |