summaryrefslogtreecommitdiff
path: root/deps/v8/src/torque/types.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/torque/types.h')
-rw-r--r--deps/v8/src/torque/types.h27
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;