| Index: lib/compiler/implementation/ssa/codegen.dart | 
| diff --git a/lib/compiler/implementation/ssa/codegen.dart b/lib/compiler/implementation/ssa/codegen.dart | 
| index d0cadc72110bf1a9198a0b34bddf55c541fb787d..431f501127b9dfe4d4509a17ab91a172d0b9a162 100644 | 
| --- a/lib/compiler/implementation/ssa/codegen.dart | 
| +++ b/lib/compiler/implementation/ssa/codegen.dart | 
| @@ -13,7 +13,7 @@ class SsaCodeGeneratorTask extends CompilerTask { | 
|  | 
| CodeBuffer buildJavaScriptFunction(FunctionElement element, | 
| String parameters, | 
| -                                     String body) { | 
| +                                     CodeBuffer 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. | 
| @@ -57,7 +57,7 @@ class SsaCodeGeneratorTask extends CompilerTask { | 
| codegen.visitGraph(graph); | 
|  | 
| FunctionElement element = work.element; | 
| -      String code; | 
| +      CodeBuffer code; | 
| if (element.isInstanceMember() | 
| && element.enclosingElement.isClass() | 
| && element.enclosingElement.isNative() | 
| @@ -70,9 +70,10 @@ class SsaCodeGeneratorTask extends CompilerTask { | 
| StringBuffer buffer = new StringBuffer(); | 
| native.generateMethodWithPrototypeCheckForElement( | 
| compiler, buffer, element, '${codegen.buffer}', parameters); | 
| -        code = buffer.toString(); | 
| +        code = new CodeBuffer(); | 
| +        code.add(buffer); | 
| } else { | 
| -        code = codegen.buffer.toString(); | 
| +        code = codegen.buffer; | 
| } | 
| return buildJavaScriptFunction(element, parameters, code); | 
| }); | 
| @@ -88,9 +89,11 @@ class SsaCodeGeneratorTask extends CompilerTask { | 
| backend, work, parameters, parameterNames); | 
| codegen.visitGraph(graph); | 
|  | 
| -      String body = '${codegen.setup}${codegen.buffer}'; | 
| +      CodeBuffer code = new CodeBuffer(); | 
| +      code.add(codegen.setup); | 
| +      code.add(codegen.buffer); | 
| return buildJavaScriptFunction( | 
| -          work.element, codegen.newParameters.toString(), body); | 
| +          work.element, codegen.newParameters.toString(), code); | 
| }); | 
| } | 
|  | 
| @@ -655,6 +658,9 @@ class SsaCodeGenerator implements HVisitor, HBlockInformationVisitor { | 
| visit(HInstruction node, int expectedPrecedenceForNode) { | 
| int oldPrecedence = this.expectedPrecedence; | 
| this.expectedPrecedence = expectedPrecedenceForNode; | 
| +    if (node.sourcePosition !== null) { | 
| +      buffer.setSourceLocation(work.element, node.sourcePosition); | 
| +    } | 
| node.accept(this); | 
| this.expectedPrecedence = oldPrecedence; | 
| } | 
|  |