| Index: lib/compiler/implementation/ssa/codegen.dart
|
| ===================================================================
|
| --- lib/compiler/implementation/ssa/codegen.dart (revision 6616)
|
| +++ lib/compiler/implementation/ssa/codegen.dart (working copy)
|
| @@ -15,7 +15,27 @@
|
| SsaOptimizedCodeGenerator codegen = new SsaOptimizedCodeGenerator(
|
| compiler, work, parameters, parameterNames);
|
| codegen.visitGraph(graph);
|
| - return 'function($parameters) {\n${codegen.buffer}}';
|
| +
|
| + FunctionElement element = work.element;
|
| + String code;
|
| + if (element.isInstanceMember()
|
| + && element.enclosingElement.isClass()
|
| + && element.enclosingElement.isNative()
|
| + && native.isOverriddenMethod(element,
|
| + element.enclosingElement,
|
| + compiler.emitter.nativeEmitter)) {
|
| + // Record that this method is overridden. In case of optional
|
| + // arguments, the emitter will generate stubs to handle them,
|
| + // and needs to know if the method is overridden.
|
| + compiler.emitter.nativeEmitter.overriddenMethods.add(element);
|
| + StringBuffer buffer = new StringBuffer();
|
| + native.generateMethodWithPrototypeCheckForElement(
|
| + compiler, buffer, element, '${codegen.buffer}', parameters);
|
| + code = buffer.toString();
|
| + } else {
|
| + code = codegen.buffer.toString();
|
| + }
|
| + return 'function($parameters) {\n$code}';
|
| });
|
| }
|
|
|
|
|