From 0399d992e21128a2c4b676e8f5456981ccfa6469 Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 2 May 2018 15:11:04 -0400 Subject: 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. --- source/slang/compiler.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source/slang/compiler.h') diff --git a/source/slang/compiler.h b/source/slang/compiler.h index 4cda366f0..e7c40bdc8 100644 --- a/source/slang/compiler.h +++ b/source/slang/compiler.h @@ -445,6 +445,7 @@ namespace Slang char const* text, CodeGenTarget target); + struct TypeCheckingCache; // class Session @@ -535,6 +536,10 @@ namespace Slang Dictionary > mapNameToSyntaxClass; + // cache used by type checking, implemented in check.cpp + TypeCheckingCache* typeCheckingCache = nullptr; + TypeCheckingCache* getTypeCheckingCache(); + void destroyTypeCheckingCache(); // Session(); -- cgit v1.2.3