beb7114861
This relands commit b0a71d364c
Cq-Include-Trybots: dart/try:vm-kernel-precomp-linux-release-simarm64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try,vm-kernel-linux-release-simarm-try,vm-kernel-precomp-linux-release-x64-try
Change-Id: I1d32e5d0d44f4e422d188643b548ed81859f7d74
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143807
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
42 lines
1.3 KiB
C++
42 lines
1.3 KiB
C++
// Copyright (c) 2019, 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_COMPILER_FRONTEND_BYTECODE_SCOPE_BUILDER_H_
|
|
#define RUNTIME_VM_COMPILER_FRONTEND_BYTECODE_SCOPE_BUILDER_H_
|
|
|
|
#if defined(DART_PRECOMPILED_RUNTIME)
|
|
#error "AOT runtime should not use compiler sources (including header files)"
|
|
#endif // defined(DART_PRECOMPILED_RUNTIME)
|
|
|
|
#include "vm/object.h"
|
|
#include "vm/parser.h" // For ParsedFunction.
|
|
#include "vm/scopes.h"
|
|
|
|
namespace dart {
|
|
namespace kernel {
|
|
|
|
// Builds scopes, populates parameters and local variables for
|
|
// certain functions declared in bytecode.
|
|
class BytecodeScopeBuilder : public ValueObject {
|
|
public:
|
|
explicit BytecodeScopeBuilder(ParsedFunction* parsed_function);
|
|
|
|
void BuildScopes();
|
|
|
|
private:
|
|
void AddParameters(const Function& function,
|
|
LocalVariable::TypeCheckMode mode);
|
|
LocalVariable* MakeVariable(const String& name, const AbstractType& type);
|
|
LocalVariable* MakeReceiverVariable(bool is_parameter);
|
|
|
|
ParsedFunction* parsed_function_;
|
|
Zone* zone_;
|
|
LocalScope* scope_;
|
|
};
|
|
|
|
} // namespace kernel
|
|
} // namespace dart
|
|
|
|
#endif // RUNTIME_VM_COMPILER_FRONTEND_BYTECODE_SCOPE_BUILDER_H_
|