summaryrefslogtreecommitdiffstats
path: root/source/slang/slang.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2018-05-02 15:11:04 -0400
committerYong He <yonghe@outlook.com>2018-05-02 18:20:32 -0400
commit0399d992e21128a2c4b676e8f5456981ccfa6469 (patch)
tree8ca5c144c438d95406eba5b41be3a3e689beb36a /source/slang/slang.cpp
parent60bcc6809f57e12f3705cc65cb325b0983b08899 (diff)
Speedup type checking using cached overload resolution results.
This change adds caches to built-in operator overload resolution and type coersion to avoid running these time-consuming operations every time. - Adds `TypeCheckingCache` type, which is defined in check.cpp, that contains two dictionaries for the cached results of `ResolveInvoke` and `CanCoerce` calls. - Add `destroyTypeCheckingCache` and `getTypeCheckingCache` methods to `Session` class to reuse these cached results over the entire session.
Diffstat (limited to 'source/slang/slang.cpp')
-rw-r--r--source/slang/slang.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp
index 9e740d5f5..3cb580f00 100644
--- a/source/slang/slang.cpp
+++ b/source/slang/slang.cpp
@@ -823,6 +823,8 @@ Session::~Session()
irBasicBlockType = nullptr;
constExprRate = nullptr;
+ destroyTypeCheckingCache();
+
builtinTypes = decltype(builtinTypes)();
// destroy modules next
loadedModuleCode = decltype(loadedModuleCode)();