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

Side by Side Diff: pkg/dartino_compiler/lib/src/constructor_codegen.dart

Issue 1659163007: Rename fletch -> dartino (Closed) Base URL: https://github.com/dartino/sdk.git@master
Patch Set: address comments Created 4 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE.md file. 3 // BSD-style license that can be found in the LICENSE.md file.
4 4
5 library fletchc.constructor_codegen; 5 library dartino_compiler.constructor_codegen;
6 6
7 import 'package:compiler/src/elements/elements.dart'; 7 import 'package:compiler/src/elements/elements.dart';
8 import 'package:compiler/src/resolution/tree_elements.dart' show 8 import 'package:compiler/src/resolution/tree_elements.dart' show
9 TreeElements; 9 TreeElements;
10 import 'package:compiler/src/tree/tree.dart'; 10 import 'package:compiler/src/tree/tree.dart';
11 import 'package:compiler/src/universe/call_structure.dart' show 11 import 'package:compiler/src/universe/call_structure.dart' show
12 CallStructure; 12 CallStructure;
13 import 'package:compiler/src/dart_types.dart'; 13 import 'package:compiler/src/dart_types.dart';
14 14
15 import 'fletch_context.dart'; 15 import 'dartino_context.dart';
16 16
17 import 'fletch_function_builder.dart' show 17 import 'dartino_function_builder.dart' show
18 FletchFunctionBuilder; 18 DartinoFunctionBuilder;
19 19
20 import 'fletch_class_builder.dart' show 20 import 'dartino_class_builder.dart' show
21 FletchClassBuilder; 21 DartinoClassBuilder;
22 22
23 import 'closure_environment.dart'; 23 import 'closure_environment.dart';
24 24
25 import 'lazy_field_initializer_codegen.dart'; 25 import 'lazy_field_initializer_codegen.dart';
26 26
27 import 'codegen_visitor.dart'; 27 import 'codegen_visitor.dart';
28 28
29 import 'fletch_registry.dart' show 29 import 'dartino_registry.dart' show
30 FletchRegistry; 30 DartinoRegistry;
31 31
32 class ConstructorCodegen extends CodegenVisitor with FletchRegistryMixin { 32 class ConstructorCodegen extends CodegenVisitor with DartinoRegistryMixin {
33 final FletchRegistry registry; 33 final DartinoRegistry registry;
34 34
35 final FletchClassBuilder classBuilder; 35 final DartinoClassBuilder classBuilder;
36 36
37 final Map<FieldElement, LocalValue> fieldScope = <FieldElement, LocalValue>{}; 37 final Map<FieldElement, LocalValue> fieldScope = <FieldElement, LocalValue>{};
38 38
39 final List<ConstructorElement> constructors = <ConstructorElement>[]; 39 final List<ConstructorElement> constructors = <ConstructorElement>[];
40 40
41 ClosureEnvironment initializerClosureEnvironment; 41 ClosureEnvironment initializerClosureEnvironment;
42 42
43 ConstructorCodegen(FletchFunctionBuilder functionBuilder, 43 ConstructorCodegen(DartinoFunctionBuilder functionBuilder,
44 FletchContext context, 44 DartinoContext context,
45 TreeElements elements, 45 TreeElements elements,
46 this.registry, 46 this.registry,
47 ClosureEnvironment closureEnvironment, 47 ClosureEnvironment closureEnvironment,
48 ConstructorElement constructor, 48 ConstructorElement constructor,
49 this.classBuilder) 49 this.classBuilder)
50 : super(functionBuilder, context, elements, 50 : super(functionBuilder, context, elements,
51 closureEnvironment, constructor); 51 closureEnvironment, constructor);
52 52
53 ConstructorElement get constructor => element; 53 ConstructorElement get constructor => element;
54 54
(...skipping 18 matching lines...) Expand all
73 int parameterCount = signature.parameterCount; 73 int parameterCount = signature.parameterCount;
74 74
75 // Visit constructor and evaluate initializers and super calls. The 75 // Visit constructor and evaluate initializers and super calls. The
76 // arguments to the constructor are located before the return address. 76 // arguments to the constructor are located before the return address.
77 inlineInitializers(constructor, -parameterCount - 1); 77 inlineInitializers(constructor, -parameterCount - 1);
78 78
79 handleAllocationAndBodyCall(); 79 handleAllocationAndBodyCall();
80 } 80 }
81 81
82 LazyFieldInitializerCodegen lazyFieldInitializerCodegenFor( 82 LazyFieldInitializerCodegen lazyFieldInitializerCodegenFor(
83 FletchFunctionBuilder function, 83 DartinoFunctionBuilder function,
84 FieldElement field) { 84 FieldElement field) {
85 TreeElements elements = field.resolvedAst.elements; 85 TreeElements elements = field.resolvedAst.elements;
86 return new LazyFieldInitializerCodegen( 86 return new LazyFieldInitializerCodegen(
87 function, 87 function,
88 context, 88 context,
89 elements, 89 elements,
90 registry, 90 registry,
91 context.backend.createClosureEnvironment(field, elements), 91 context.backend.createClosureEnvironment(field, elements),
92 field); 92 field);
93 } 93 }
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 // Boxed parameters are passed as boxed objects, not as the values 340 // Boxed parameters are passed as boxed objects, not as the values
341 // contained within like we do for ordinary invokes 341 // contained within like we do for ordinary invokes
342 scope[parameter].loadRaw(assembler); 342 scope[parameter].loadRaw(assembler);
343 }); 343 });
344 344
345 assembler 345 assembler
346 ..invokeStatic(constructorId, 1 + signature.parameterCount) 346 ..invokeStatic(constructorId, 1 + signature.parameterCount)
347 ..pop(); 347 ..pop();
348 } 348 }
349 349
350 void pushInitialFieldValues(FletchClassBuilder classBuilder) { 350 void pushInitialFieldValues(DartinoClassBuilder classBuilder) {
351 if (classBuilder.hasSuperClass) { 351 if (classBuilder.hasSuperClass) {
352 pushInitialFieldValues(classBuilder.superclass); 352 pushInitialFieldValues(classBuilder.superclass);
353 } 353 }
354 int fieldIndex = classBuilder.superclassFields; 354 int fieldIndex = classBuilder.superclassFields;
355 ClassElement classElement = classBuilder.element.implementation; 355 ClassElement classElement = classBuilder.element.implementation;
356 classElement.forEachInstanceField((_, FieldElement field) { 356 classElement.forEachInstanceField((_, FieldElement field) {
357 fieldScope[field] = new UnboxedLocalValue(fieldIndex++, field); 357 fieldScope[field] = new UnboxedLocalValue(fieldIndex++, field);
358 Expression initializer = field.initializer; 358 Expression initializer = field.initializer;
359 if (initializer == null) { 359 if (initializer == null) {
360 assembler.loadLiteralNull(); 360 assembler.loadLiteralNull();
361 } else { 361 } else {
362 // Create a LazyFieldInitializerCodegen for compiling the initializer. 362 // Create a LazyFieldInitializerCodegen for compiling the initializer.
363 // Note that we reuse the functionBuilder, to inline it into the 363 // Note that we reuse the functionBuilder, to inline it into the
364 // constructor. 364 // constructor.
365 LazyFieldInitializerCodegen codegen = 365 LazyFieldInitializerCodegen codegen =
366 lazyFieldInitializerCodegenFor(functionBuilder, field); 366 lazyFieldInitializerCodegenFor(functionBuilder, field);
367 367
368 // We only want the value of the actual initializer, not the usual 368 // We only want the value of the actual initializer, not the usual
369 // 'body'. 369 // 'body'.
370 codegen.visitForValue(initializer); 370 codegen.visitForValue(initializer);
371 } 371 }
372 }); 372 });
373 assert(fieldIndex <= classBuilder.fields); 373 assert(fieldIndex <= classBuilder.fields);
374 } 374 }
375 } 375 }
OLDNEW
« no previous file with comments | « pkg/dartino_compiler/lib/src/console_print.dart ('k') | pkg/dartino_compiler/lib/src/dartino_backend.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698