| Index: src/compiler/osr.h
|
| diff --git a/src/compiler/osr.h b/src/compiler/osr.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3c33f6675a24515dade94cda8dd3d8d042e8f7c0
|
| --- /dev/null
|
| +++ b/src/compiler/osr.h
|
| @@ -0,0 +1,53 @@
|
| +// Copyright 2014 the V8 project authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef V8_COMPILER_OSR_H_
|
| +#define V8_COMPILER_OSR_H_
|
| +
|
| +#include "src/zone.h"
|
| +
|
| +namespace v8 {
|
| +namespace internal {
|
| +
|
| +class CompilationInfo;
|
| +
|
| +namespace compiler {
|
| +
|
| +class Graph;
|
| +class CommonOperatorBuilder;
|
| +class Frame;
|
| +class Linkage;
|
| +
|
| +// Encapsulates logic relating to OSR compilations as well has handles some
|
| +// details of the frame layout.
|
| +class OsrHelper {
|
| + public:
|
| + explicit OsrHelper(CompilationInfo* info);
|
| +
|
| + // Deconstructs the artificial {OsrNormalEntry} and rewrites the graph so
|
| + // that only the path corresponding to {OsrLoopEntry} remains.
|
| + void Deconstruct(Graph* graph, CommonOperatorBuilder* common, Zone* tmp_zone);
|
| +
|
| + // Prepares the frame w.r.t. OSR.
|
| + void SetupFrame(Frame* frame);
|
| +
|
| + // Returns the number of unoptimized frame slots for this OSR.
|
| + size_t UnoptimizedFrameSlots() { return stack_slot_count_; }
|
| +
|
| + // Returns the environment index of the first stack slot.
|
| + static int FirstStackSlotIndex(int parameter_count) {
|
| + // n.b. unlike Crankshaft, TurboFan environments do not contain the context.
|
| + return 1 + parameter_count; // receiver + params
|
| + }
|
| +
|
| + private:
|
| + size_t parameter_count_;
|
| + size_t stack_slot_count_;
|
| +};
|
| +
|
| +} // namespace compiler
|
| +} // namespace internal
|
| +} // namespace v8
|
| +
|
| +#endif // V8_COMPILER_OSR_H_
|
|
|