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

Unified Diff: lib/compiler/implementation/ssa/codegen.dart

Issue 10696194: Introduce CodeBuffer as StringBuffer replacement in compiler. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: . Created 8 years, 5 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
Index: lib/compiler/implementation/ssa/codegen.dart
diff --git a/lib/compiler/implementation/ssa/codegen.dart b/lib/compiler/implementation/ssa/codegen.dart
index d009c93cfe92c6b2cb18ee8a4436c652d6f2a8ac..af5926c37a671987a12100ba714a8762cfa587b3 100644
--- a/lib/compiler/implementation/ssa/codegen.dart
+++ b/lib/compiler/implementation/ssa/codegen.dart
@@ -11,9 +11,9 @@ class SsaCodeGeneratorTask extends CompilerTask {
NativeEmitter get nativeEmitter() => backend.emitter.nativeEmitter;
- CodeBlock buildJavaScriptFunction(FunctionElement element,
- String parameters,
- String body) {
+ CodeBuffer buildJavaScriptFunction(FunctionElement element,
+ String parameters,
+ String body) {
String extraSpace = "";
// Members are emitted inside a JavaScript object literal. To line up the
// indentation we want the closing curly brace to be indented by one space.
@@ -33,18 +33,18 @@ class SsaCodeGeneratorTask extends CompilerTask {
extraSpace = " ";
}
- String code = 'function($parameters) {\n$body$extraSpace}';
- List<SourceMappingEntry> sourceMappings = new List<SourceMappingEntry>();
- SourceFile sourceFile = element.getCompilationUnit().script.file;
FunctionExpression expression = element.cachedNode;
- sourceMappings.add(new SourceMappingEntry(
- sourceFile, expression.getBeginToken().charOffset, 0));
- sourceMappings.add(new SourceMappingEntry(
- sourceFile, expression.getEndToken().charOffset, code.length - 1));
- return new CodeBlock(code, sourceMappings);
+ CodeBuffer buffer = new CodeBuffer();
+ buffer.setSourceLocation(element, expression.getBeginToken());
+ buffer.add('function($parameters) {\n');
+ buffer.add(body);
+ buffer.add(extraSpace);
+ buffer.setSourceLocation(element, expression.getEndToken());
+ buffer.add('}');
+ return buffer;
}
- CodeBlock generateMethod(WorkItem work, HGraph graph) {
+ CodeBuffer generateMethod(WorkItem work, HGraph graph) {
return measure(() {
compiler.tracer.traceGraph("codegen", graph);
Map<Element, String> parameterNames = getParameterNames(work);
@@ -78,7 +78,7 @@ class SsaCodeGeneratorTask extends CompilerTask {
});
}
- CodeBlock generateBailoutMethod(WorkItem work, HGraph graph) {
+ CodeBuffer generateBailoutMethod(WorkItem work, HGraph graph) {
return measure(() {
compiler.tracer.traceGraph("codegen-bailout", graph);
@@ -152,7 +152,7 @@ class SsaCodeGenerator implements HVisitor, HBlockInformationVisitor {
final JavaScriptBackend backend;
final WorkItem work;
- final StringBuffer buffer;
+ final CodeBuffer buffer;
final String parameters;
final Set<HInstruction> generateAtUseSite;
@@ -251,7 +251,7 @@ class SsaCodeGenerator implements HVisitor, HBlockInformationVisitor {
this.parameterNames)
: declaredVariables = new Set<String>(),
delayedVariableDeclarations = new Set<String>(),
- buffer = new StringBuffer(),
+ buffer = new CodeBuffer(),
generateAtUseSite = new Set<HInstruction>(),
controlFlowOperators = new Set<HInstruction>(),
breakAction = new Map<Element, ElementAction>(),
@@ -2831,8 +2831,8 @@ class SsaOptimizedCodeGenerator extends SsaCodeGenerator {
class SsaUnoptimizedCodeGenerator extends SsaCodeGenerator {
- final StringBuffer setup;
- final StringBuffer newParameters;
+ final CodeBuffer setup;
+ final CodeBuffer newParameters;
final List<String> labels;
int labelId = 0;
@@ -2841,8 +2841,8 @@ class SsaUnoptimizedCodeGenerator extends SsaCodeGenerator {
SsaUnoptimizedCodeGenerator(backend, work, parameters, parameterNames)
: super(backend, work, parameters, parameterNames),
- setup = new StringBuffer(),
- newParameters = new StringBuffer(),
+ setup = new CodeBuffer(),
+ newParameters = new CodeBuffer(),
labels = <String>[];
String pushLabel() {

Powered by Google App Engine
This is Rietveld 408576698