Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1276)

Unified Diff: runtime/lib/linked_hash_map.cc

Issue 1151523002: VM-internalize the default Map implementation. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Ready for review. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/lib/linked_hash_map.cc
diff --git a/runtime/lib/linked_hash_map.cc b/runtime/lib/linked_hash_map.cc
index b69910a86bdd39824a63710e587f88c84380af3a..95118415bebc55966f7fa72fce2744abcd622718 100644
--- a/runtime/lib/linked_hash_map.cc
+++ b/runtime/lib/linked_hash_map.cc
@@ -13,85 +13,98 @@
namespace dart {
-DEFINE_FLAG(bool, use_internal_hash_map, false, "Use internal hash map.");
-
-
DEFINE_NATIVE_ENTRY(LinkedHashMap_allocate, 1) {
const TypeArguments& type_arguments =
TypeArguments::CheckedHandle(arguments->NativeArgAt(0));
const LinkedHashMap& map =
- LinkedHashMap::Handle(LinkedHashMap::New());
+ LinkedHashMap::Handle(LinkedHashMap::NewDefault());
map.SetTypeArguments(type_arguments);
return map.raw();
}
-DEFINE_NATIVE_ENTRY(LinkedHashMap_getLength, 1) {
+DEFINE_NATIVE_ENTRY(LinkedHashMap_getIndex, 1) {
const LinkedHashMap& map =
LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0));
- return Smi::New(map.Length());
+ return map.index();
}
-DEFINE_NATIVE_ENTRY(LinkedHashMap_lookUp, 2) {
+DEFINE_NATIVE_ENTRY(LinkedHashMap_setIndex, 2) {
const LinkedHashMap& map =
LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0));
- GET_NON_NULL_NATIVE_ARGUMENT(Instance, key, arguments->NativeArgAt(1));
- return map.LookUp(key);
+ const TypedData& index =
+ TypedData::CheckedHandle(arguments->NativeArgAt(1));
+ map.SetIndex(index);
+ return Object::null();
}
-DEFINE_NATIVE_ENTRY(LinkedHashMap_containsKey, 2) {
+DEFINE_NATIVE_ENTRY(LinkedHashMap_getData, 1) {
const LinkedHashMap& map =
LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0));
- GET_NON_NULL_NATIVE_ARGUMENT(Instance, key, arguments->NativeArgAt(1));
- return Bool::Get(map.Contains(key)).raw();
+ return map.data();
}
-DEFINE_NATIVE_ENTRY(LinkedHashMap_insertOrUpdate, 3) {
- LinkedHashMap& map =
+DEFINE_NATIVE_ENTRY(LinkedHashMap_setData, 2) {
+ const LinkedHashMap& map =
LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0));
- GET_NON_NULL_NATIVE_ARGUMENT(Instance, key, arguments->NativeArgAt(1));
- GET_NON_NULL_NATIVE_ARGUMENT(Instance, value, arguments->NativeArgAt(2));
- map.InsertOrUpdate(key, value);
+ const Array& data =
+ Array::CheckedHandle(arguments->NativeArgAt(1));
+ map.SetData(data);
return Object::null();
}
-DEFINE_NATIVE_ENTRY(LinkedHashMap_remove, 2) {
+DEFINE_NATIVE_ENTRY(LinkedHashMap_getHashMask, 1) {
const LinkedHashMap& map =
LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0));
- GET_NON_NULL_NATIVE_ARGUMENT(Instance, key, arguments->NativeArgAt(1));
- return map.Remove(key);
+ return map.hash_mask();
}
-DEFINE_NATIVE_ENTRY(LinkedHashMap_clear, 1) {
+DEFINE_NATIVE_ENTRY(LinkedHashMap_setHashMask, 2) {
const LinkedHashMap& map =
LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0));
- map.Clear();
+ const Smi& hashMask =
+ Smi::CheckedHandle(arguments->NativeArgAt(1));
+ map.SetHashMask(hashMask.Value());
return Object::null();
}
-DEFINE_NATIVE_ENTRY(LinkedHashMap_toArray, 1) {
+DEFINE_NATIVE_ENTRY(LinkedHashMap_getDeletedKeys, 1) {
const LinkedHashMap& map =
LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0));
- return map.ToArray();
+ return map.deleted_keys();
}
-DEFINE_NATIVE_ENTRY(LinkedHashMap_getModMark, 2) {
+DEFINE_NATIVE_ENTRY(LinkedHashMap_setDeletedKeys, 2) {
const LinkedHashMap& map =
LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0));
- GET_NON_NULL_NATIVE_ARGUMENT(Bool, create, arguments->NativeArgAt(1));
- return map.GetModificationMark(create.value());
+ const Smi& deletedKeys =
+ Smi::CheckedHandle(arguments->NativeArgAt(1));
+ map.SetDeletedKeys(deletedKeys.Value());
+ return Object::null();
}
-DEFINE_NATIVE_ENTRY(LinkedHashMap_useInternal, 0) {
- return Bool::Get(FLAG_use_internal_hash_map).raw();
+DEFINE_NATIVE_ENTRY(LinkedHashMap_getUsedData, 1) {
+ const LinkedHashMap& map =
+ LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0));
+ return map.used_data();
+}
+
+
+DEFINE_NATIVE_ENTRY(LinkedHashMap_setUsedData, 2) {
+ const LinkedHashMap& map =
+ LinkedHashMap::CheckedHandle(arguments->NativeArgAt(0));
+ const Smi& usedData =
+ Smi::CheckedHandle(arguments->NativeArgAt(1));
+ map.SetUsedData(usedData.Value());
+ return Object::null();
}
} // namespace dart

Powered by Google App Engine
This is Rietveld 408576698