aboutsummaryrefslogtreecommitdiff
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.h23
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(