blob: 9188b0dd364834d43814e4a4c0de7e5db2d53875 [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#ifndef RUNTIME_VM_FFI_NATIVE_ASSETS_H_
#define RUNTIME_VM_FFI_NATIVE_ASSETS_H_
#include "vm/hash_table.h"
#include "vm/tagged_pointer.h"
#include "vm/thread.h"
namespace dart {
class NativeAssetsMapTraits {
public:
static const char* Name() { return "NativeAssetsMapTraits"; }
static bool ReportStats() { return false; }
static bool IsMatch(const Object& a, const Object& b) {
const String& a_str = String::Cast(a);
const String& b_str = String::Cast(b);
ASSERT(a_str.HasHash() && b_str.HasHash());
return a_str.Equals(b_str);
}
static uword Hash(const Object& key) { return String::Cast(key).Hash(); }
static ObjectPtr NewKey(const String& str) { return str.ptr(); }
};
typedef UnorderedHashMap<NativeAssetsMapTraits> NativeAssetsMap;
// In JIT: Populates object_store->native_assets_map with the right info from
// object_store->native_assets_library.
//
// In AOT: The object_store->native_assets_library should have been
// pre-populated from the aotsnapshot.
ArrayPtr GetNativeAssetsMap(Thread* thread);
} // namespace dart
#endif // RUNTIME_VM_FFI_NATIVE_ASSETS_H_