// Copyright (c) 2012, 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_MEGAMORPHIC_CACHE_TABLE_H_ #define RUNTIME_VM_MEGAMORPHIC_CACHE_TABLE_H_ #include "vm/allocation.h" namespace dart { namespace compiler { class ObjectPoolBuilder; } class Array; class Function; class Isolate; class ObjectPointerVisitor; class RawArray; class RawFunction; class RawCode; class RawMegamorphicCache; class RawString; class String; class MegamorphicCacheTable : public AllStatic { public: static RawFunction* miss_handler(Isolate* isolate); NOT_IN_PRECOMPILED(static void InitMissHandler(Isolate* isolate)); // Re-initializes the megamorphic miss handler function in the object store. // // Normally we initialize the megamorphic miss handler during isolate startup. // Though if we AOT compile with bare instructions support, we need to // re-generate the handler to ensure it uses the common object pool. NOT_IN_PRECOMPILED( static void ReInitMissHandlerCode(Isolate* isolate, compiler::ObjectPoolBuilder* wrapper)); static RawMegamorphicCache* Lookup(Isolate* isolate, const String& name, const Array& descriptor); static void PrintSizes(Isolate* isolate); }; } // namespace dart #endif // RUNTIME_VM_MEGAMORPHIC_CACHE_TABLE_H_