Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Unified Diff: pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart

Issue 2916353002: Support locals in compile_from_dill_test. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map.dart ('k') | pkg/compiler/lib/src/ssa/builder_kernel.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
diff --git a/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart b/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
index 6c285f267f5cab9bd3ece8dddaf3c1f1c6074fd6..30ad611db6f17d1d516e35b0cfcdb5be5587d8f1 100644
--- a/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
+++ b/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
@@ -136,7 +136,7 @@ class KernelSsaBuilderTask extends CompilerTask implements SsaBuilderTask {
_compiler,
_elementMap,
new KernelToTypeInferenceMapImpl(closedWorld),
- null,
+ new KernelToLocalsMapImpl(work.element),
closedWorld,
work.registry,
// TODO(johnniwinther): Support these:
@@ -229,11 +229,25 @@ class KernelToTypeInferenceMapImpl implements KernelToTypeInferenceMap {
}
class KernelToLocalsMapImpl implements KernelToLocalsMap {
+ final List<MemberEntity> _members = <MemberEntity>[];
+ Map<ir.VariableDeclaration, KLocal> _map = <ir.VariableDeclaration, KLocal>{};
+
+ MemberEntity get currentMember => _members.last;
+
+ KernelToLocalsMapImpl(MemberEntity member) {
+ _members.add(member);
+ }
+
@override
- void enterInlinedMember(MemberEntity member) {}
+ void enterInlinedMember(MemberEntity member) {
+ _members.add(member);
+ }
@override
- void leaveInlinedMember(MemberEntity member) {}
+ void leaveInlinedMember(MemberEntity member) {
+ assert(member == currentMember);
+ _members.removeLast();
+ }
@override
JumpTarget getJumpTarget(ir.TreeNode node, {bool isContinueTarget: false}) {
@@ -242,10 +256,22 @@ class KernelToLocalsMapImpl implements KernelToLocalsMap {
@override
Local getLocal(ir.VariableDeclaration node) {
- throw new UnimplementedError('KernelToLocalsMapImpl.getLocal');
+ return _map.putIfAbsent(node, () {
+ return new KLocal(node.name, currentMember);
+ });
}
}
+class KLocal implements Local {
+ final String name;
+ final MemberEntity memberContext;
+
+ KLocal(this.name, this.memberContext);
+
+ @override
+ Entity get executableContext => memberContext;
+}
+
/// TODO(johnniwinther,efortuna): Implement this.
class KernelClosureClassMaps implements ClosureClassMaps {
const KernelClosureClassMaps();
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map.dart ('k') | pkg/compiler/lib/src/ssa/builder_kernel.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698