| Index: runtime/vm/megamorphic_cache_table.h
|
| diff --git a/runtime/vm/megamorphic_cache_table.h b/runtime/vm/megamorphic_cache_table.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..85e046898da0a1c42a1ca53f2d30e873b581fffe
|
| --- /dev/null
|
| +++ b/runtime/vm/megamorphic_cache_table.h
|
| @@ -0,0 +1,55 @@
|
| +// 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 kInitialCapacity = 128;
|
| + 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_
|
|
|