// 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 VM_MEGAMORPHIC_CACHE_TABLE_H_ #define VM_MEGAMORPHIC_CACHE_TABLE_H_ #include "vm/allocation.h" namespace dart { class Array; class Function; class ObjectPointerVisitor; class RawArray; class RawFunction; class RawMegamorphicCache; class RawString; class String; class MegamorphicCacheTable { public: MegamorphicCacheTable(); ~MegamorphicCacheTable(); RawFunction* miss_handler() const { return miss_handler_; } void InitMissHandler(); RawMegamorphicCache* Lookup(const String& name, const Array& descriptor); void VisitObjectPointers(ObjectPointerVisitor* visitor); void PrintSizes(); private: struct Entry { RawString* name; RawArray* descriptor; RawMegamorphicCache* cache; }; static const int kCapacityIncrement = 128; RawFunction* miss_handler_; intptr_t capacity_; intptr_t length_; Entry* table_; DISALLOW_COPY_AND_ASSIGN(MegamorphicCacheTable); }; } // namespace dart #endif // VM_MEGAMORPHIC_CACHE_TABLE_H_