| Index: runtime/vm/kernel_binary_flowgraph.h
|
| diff --git a/runtime/vm/kernel_binary_flowgraph.h b/runtime/vm/kernel_binary_flowgraph.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..66ae657820be6cd38189535a915b6d06fb2081b3
|
| --- /dev/null
|
| +++ b/runtime/vm/kernel_binary_flowgraph.h
|
| @@ -0,0 +1,52 @@
|
| +// Copyright (c) 2017, 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_KERNEL_BINARY_FLOWGRAPH_H_
|
| +#define RUNTIME_VM_KERNEL_BINARY_FLOWGRAPH_H_
|
| +
|
| +#if !defined(DART_PRECOMPILED_RUNTIME)
|
| +
|
| +#include <map>
|
| +
|
| +#include "vm/kernel.h"
|
| +#include "vm/kernel_binary.h"
|
| +#include "vm/kernel_to_il.h"
|
| +#include "vm/object.h"
|
| +
|
| +namespace dart {
|
| +namespace kernel {
|
| +
|
| +class StreamingFlowGraphBuilder {
|
| + public:
|
| + StreamingFlowGraphBuilder(FlowGraphBuilder* flowGraph_builder,
|
| + const uint8_t* buffer,
|
| + intptr_t buffer_length)
|
| + : flow_graph_builder_(flowGraph_builder),
|
| + reader_(new kernel::Reader(buffer, buffer_length)) {}
|
| +
|
| + virtual ~StreamingFlowGraphBuilder() { delete reader_; }
|
| +
|
| + Fragment BuildAt(intptr_t kernel_offset);
|
| +
|
| + private:
|
| + TokenPosition ReadPosition(bool record = true);
|
| +
|
| + CatchBlock* catch_block();
|
| +
|
| + Fragment DebugStepCheck(TokenPosition position);
|
| + Fragment LoadLocal(LocalVariable* variable);
|
| + Fragment PushArgument();
|
| + Fragment RethrowException(TokenPosition position, int catch_try_index);
|
| +
|
| + Fragment BuildRethrow();
|
| +
|
| + FlowGraphBuilder* flow_graph_builder_;
|
| + kernel::Reader* reader_;
|
| +};
|
| +
|
| +} // namespace kernel
|
| +} // namespace dart
|
| +
|
| +#endif // !defined(DART_PRECOMPILED_RUNTIME)
|
| +#endif // RUNTIME_VM_KERNEL_BINARY_FLOWGRAPH_H_
|
|
|