+class StringCacheMapTraits : public V8PersistentValueMapTraits<StringImpl*, v8::String, true> {
+public:
+ // Weak traits:
+ typedef StringImpl WeakCallbackDataType;
+ typedef v8::PersistentValueMap<StringImpl*, v8::String, StringCacheMapTraits> MapType;
+
+ static WeakCallbackDataType* WeakCallbackParameter(
+ MapType* map, StringImpl* key, v8::Local<v8::String>& value) { return key; }
+ static void DisposeCallbackData(WeakCallbackDataType* callbackData) { }
+
+ static MapType* MapFromWeakCallbackData(
+ const v8::WeakCallbackData<v8::String, WeakCallbackDataType>&);
+
+ static StringImpl* KeyFromWeakCallbackData(
+ const v8::WeakCallbackData<v8::String, WeakCallbackDataType>& data)
+ {
+ return data.GetParameter();
+ }
+
+ static void Dispose(v8::Isolate*, v8::UniquePersistent<v8::String> value, StringImpl* key);
+};
+
+