c34f1b4890
Change-Id: I11bbd7168513d2edf5b3ef4c77236e647bc9941c Reviewed-on: https://dart-review.googlesource.com/c/88902 Commit-Queue: Ryan Macnak <rmacnak@google.com> Reviewed-by: Zach Anderson <zra@google.com>
50 lines
1.2 KiB
C++
50 lines
1.2 KiB
C++
// Copyright (c) 2015, 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_PROGRAM_VISITOR_H_
|
|
#define RUNTIME_VM_PROGRAM_VISITOR_H_
|
|
|
|
#include "vm/allocation.h"
|
|
|
|
namespace dart {
|
|
|
|
class Function;
|
|
class Class;
|
|
|
|
template <typename T>
|
|
class Visitor : public ValueObject {
|
|
public:
|
|
virtual ~Visitor() {}
|
|
virtual void Visit(const T& obj) = 0;
|
|
};
|
|
|
|
typedef Visitor<Function> FunctionVisitor;
|
|
typedef Visitor<Class> ClassVisitor;
|
|
|
|
class ProgramVisitor : public AllStatic {
|
|
public:
|
|
static void VisitFunctions(FunctionVisitor* visitor);
|
|
static void VisitClasses(ClassVisitor* visitor);
|
|
|
|
static void Dedup();
|
|
|
|
private:
|
|
static void BindStaticCalls();
|
|
static void ShareMegamorphicBuckets();
|
|
static void DedupStackMaps();
|
|
static void DedupPcDescriptors();
|
|
NOT_IN_PRECOMPILED(static void DedupDeoptEntries());
|
|
#if defined(DART_PRECOMPILER)
|
|
static void DedupCatchEntryMovesMaps();
|
|
#endif
|
|
static void DedupCodeSourceMaps();
|
|
static void DedupLists();
|
|
static void DedupInstructions();
|
|
static void DedupInstructionsWithSameMetadata();
|
|
};
|
|
|
|
} // namespace dart
|
|
|
|
#endif // RUNTIME_VM_PROGRAM_VISITOR_H_
|