Index: src/snapshot/natives-external.cc |
diff --git a/src/snapshot/natives-external.cc b/src/snapshot/natives-external.cc |
index 94fc2c11ff8c4aa950d9b14f767ed527732405a8..e0df27f3ad5c20c41433b1724f6c8dbe345c8dcf 100644 |
--- a/src/snapshot/natives-external.cc |
+++ b/src/snapshot/natives-external.cc |
@@ -229,11 +229,19 @@ Vector<const char> NativesCollection<type>::GetScriptsSource() { |
} |
-// The compiler can't 'see' all uses of the static methods and hence |
-// my choice to elide them. This we'll explicitly instantiate these. |
-template class NativesCollection<CORE>; |
-template class NativesCollection<CODE_STUB>; |
-template class NativesCollection<EXPERIMENTAL>; |
-template class NativesCollection<EXTRAS>; |
+// Explicit template instantiations. |
+#define INSTANTIATE_TEMPLATES(T) \ |
+ template int NativesCollection<T>::GetBuiltinsCount(); \ |
+ template int NativesCollection<T>::GetDebuggerCount(); \ |
+ template int NativesCollection<T>::GetIndex(const char* name); \ |
+ template Vector<const char> NativesCollection<T>::GetScriptSource(int i); \ |
+ template Vector<const char> NativesCollection<T>::GetScriptName(int i); \ |
+ template Vector<const char> NativesCollection<T>::GetScriptsSource(); |
+INSTANTIATE_TEMPLATES(CORE) |
+INSTANTIATE_TEMPLATES(CODE_STUB) |
+INSTANTIATE_TEMPLATES(EXPERIMENTAL) |
+INSTANTIATE_TEMPLATES(EXTRAS) |
+#undef INSTANTIATE_TEMPLATES |
+ |
} // namespace internal |
} // namespace v8 |