summaryrefslogtreecommitdiff
path: root/source/compiler-core/slang-source-loc.h
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2023-03-22 12:04:33 -0400
committerGitHub <noreply@github.com>2023-03-22 12:04:33 -0400
commitd4f99c8bac8b28f18c864a717d8833db6a1c872d (patch)
treeebea06c019130d8248d5e4f6bccf5e4b2649e3cb /source/compiler-core/slang-source-loc.h
parentd8a40abba5223fbcb56c52b04ccb88c02bbaf79f (diff)
Source map obfuscation (#2717)
* #include an absolute path didn't work - because paths were taken to always be relative. * WIP source map. * Split out handling of RttiTypeFuncs to a map type. * Make RttiTypeFuncsMap hold default impls. * Slightly more sophisticated RttiTypeFuncsMap * Source map decoding. * Fix tabs. * Fix asserts due to negative values. * Use less obscure mechanisms in SourceMap. * Source map decoding. Simplifying SourceMap usage. * First attempt at ouputting a source map as part of emit. * Added support for -source-map option. SourceMap is added to the artifact. * Small improvements around column calculation in SourceWriter. * Source Loc obuscation WIP. * Fix some issues around SourceMap obfuscation. * Split out obfuscation into its own file. * Keep obfuscated SourceMap even through serialization bottleneck.
Diffstat (limited to 'source/compiler-core/slang-source-loc.h')
-rw-r--r--source/compiler-core/slang-source-loc.h20
1 files changed, 16 insertions, 4 deletions
diff --git a/source/compiler-core/slang-source-loc.h b/source/compiler-core/slang-source-loc.h
index 66e4c0475..15c7c0a53 100644
--- a/source/compiler-core/slang-source-loc.h
+++ b/source/compiler-core/slang-source-loc.h
@@ -279,6 +279,13 @@ struct HumaneSourceLoc
Int column = 0;
};
+// Same as HumaneSourceLoc but stores the path only as a handle.
+struct HandleSourceLoc
+{
+ StringSlicePool::Handle pathHandle = StringSlicePool::Handle(0);
+ Int line = 0;
+ Int column = 0;
+};
/* A SourceView maps to a single span of SourceLoc range and is equivalent to a single include or more precisely use of a source file.
It is distinct from a SourceFile - because a SourceFile may be included multiple times, with different interpretations (depending
@@ -336,6 +343,10 @@ class SourceView
/// Type determines if the location wanted is the original, or the 'normal' (which modifys behavior based on #line directives)
HumaneSourceLoc getHumaneLoc(SourceLoc loc, SourceLocType type = SourceLocType::Nominal);
+ /// Get the humane location, but store the path as a handle
+ HandleSourceLoc getHandleLoc(SourceLoc loc, SourceLocType type = SourceLocType::Nominal);
+
+
/// Get the path associated with a location
PathInfo getPathInfo(SourceLoc loc, SourceLocType type = SourceLocType::Nominal);
@@ -346,6 +357,10 @@ class SourceView
/// For the original source file (ie not an include) - the view will have an initiating source loc of SourceLoc(0)
SourceLoc getInitiatingSourceLoc() const { return m_initiatingSourceLoc; }
+ /// Gets the pathInfo for this view. It may be different from the m_sourceFile's if the path has been
+ /// overridden by m_viewPath
+ PathInfo getViewPathInfo() const;
+
/// Ctor
SourceView(SourceFile* sourceFile, SourceRange range, const String* viewPath, SourceLoc initiatingSourceLoc):
m_range(range),
@@ -361,10 +376,7 @@ class SourceView
protected:
/// Get the pathInfo from a string handle. If it's 0, it will return the _getPathInfo
PathInfo _getPathInfoFromHandle(StringSlicePool::Handle pathHandle) const;
- /// Gets the pathInfo for this view. It may be different from the m_sourceFile's if the path has been
- /// overridden by m_viewPath
- PathInfo _getPathInfo() const;
-
+
String m_viewPath; ///< Path to this view. If empty the path is the path to the SourceView
SourceLoc m_initiatingSourceLoc; ///< An optional source loc that defines where this view was initiated from. SourceLoc(0) if not defined.