diff options
Diffstat (limited to 'deps/v8/src/torque/types.h')
-rw-r--r-- | deps/v8/src/torque/types.h | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/deps/v8/src/torque/types.h b/deps/v8/src/torque/types.h index 0d79c1f405..f6180c4250 100644 --- a/deps/v8/src/torque/types.h +++ b/deps/v8/src/torque/types.h @@ -282,6 +282,8 @@ class V8_EXPORT_PRIVATE BuiltinPointerType final : public Type { } size_t function_pointer_type_id() const { return function_pointer_type_id_; } + std::vector<std::string> GetRuntimeTypes() const override { return {"Smi"}; } + private: friend class TypeOracle; BuiltinPointerType(const Type* parent, TypeVector parameter_types, @@ -500,6 +502,18 @@ class StructType final : public AggregateType { DECLARE_TYPE_BOILERPLATE(StructType) std::string ToExplicitString() const override; std::string GetGeneratedTypeNameImpl() const override; + std::string MangledName() const override { + // TODO(gsps): Generate more readable mangled names + std::string str(name()); + std::replace(str.begin(), str.end(), ',', '_'); + std::replace(str.begin(), str.end(), ' ', '_'); + std::replace(str.begin(), str.end(), '<', '_'); + std::replace(str.begin(), str.end(), '>', '_'); + return str; + } + + static std::string ComputeName(const std::string& basename, + const std::vector<const Type*>& args); private: friend class TypeOracle; @@ -526,10 +540,10 @@ class ClassType final : public AggregateType { std::string GetGeneratedTNodeTypeNameImpl() const override; bool IsExtern() const { return flags_ & ClassFlag::kExtern; } bool ShouldGeneratePrint() const { - return flags_ & ClassFlag::kGeneratePrint; + return flags_ & ClassFlag::kGeneratePrint || !IsExtern(); } bool ShouldGenerateVerify() const { - return flags_ & ClassFlag::kGenerateVerify; + return flags_ & ClassFlag::kGenerateVerify || !IsExtern(); } bool IsTransient() const override { return flags_ & ClassFlag::kTransient; } bool IsAbstract() const { return flags_ & ClassFlag::kAbstract; } @@ -540,7 +554,7 @@ class ClassType final : public AggregateType { return flags_ & ClassFlag::kHasSameInstanceTypeAsParent; } bool GenerateCppClassDefinitions() const { - return flags_ & ClassFlag::kGenerateCppClassDefinitions; + return flags_ & ClassFlag::kGenerateCppClassDefinitions || !IsExtern(); } bool HasIndexedField() const override; size_t size() const { return size_; } @@ -606,8 +620,6 @@ class VisitResult { base::Optional<StackRange> stack_range_; }; -using NameValueMap = std::map<std::string, VisitResult>; - VisitResult ProjectStructField(VisitResult structure, const std::string& fieldname); @@ -669,6 +681,7 @@ struct Signature { base::Optional<std::string> arguments_variable; ParameterTypes parameter_types; size_t implicit_count; + size_t ExplicitCount() const { return types().size() - implicit_count; } const Type* return_type; LabelDeclarationVector labels; bool HasSameTypesAs( |