Chromium Code Reviews| Index: lib/compiler/implementation/ssa/builder.dart |
| diff --git a/lib/compiler/implementation/ssa/builder.dart b/lib/compiler/implementation/ssa/builder.dart |
| index 86371b188d40e240c98e923a6ab0d5fbe3a7ff4b..db1f6f5744340ee7b4b86a9c95552ee116ce2c48 100644 |
| --- a/lib/compiler/implementation/ssa/builder.dart |
| +++ b/lib/compiler/implementation/ssa/builder.dart |
| @@ -44,18 +44,27 @@ class Interceptors { |
| } |
| Element getStaticInterceptor(SourceString name, int parameters) { |
| - String mangledName = "builtin\$${name.slowToString()}\$${parameters}"; |
| - return compiler.findHelper(new SourceString(mangledName)); |
| + String mangledName = "${name.slowToString()}"; |
|
floitsch
2012/05/01 14:37:44
String name = ...
and no need to go through string
|
| + Element element = compiler.findInterceptor(new SourceString(mangledName)); |
| + if (element !== null && element.isFunction()) { |
| + // Only pick the function element with the short name if the |
| + // number of parameters it expects matches the number we're |
| + // passing modulo the receiver. |
| + FunctionElement function = element; |
| + if (function.parameterCount(compiler) == parameters + 1) return element; |
| + } |
| + String longMangledName = "$mangledName\$$parameters"; |
|
floitsch
2012/05/01 14:37:44
you can use mangledName here then.
|
| + return compiler.findInterceptor(new SourceString(longMangledName)); |
| } |
| Element getStaticGetInterceptor(SourceString name) { |
| - String mangledName = "builtin\$get\$${name.slowToString()}"; |
| - return compiler.findHelper(new SourceString(mangledName)); |
| + String mangledName = "get\$${name.slowToString()}"; |
| + return compiler.findInterceptor(new SourceString(mangledName)); |
| } |
| Element getStaticSetInterceptor(SourceString name) { |
| - String mangledName = "builtin\$set\$${name.slowToString()}"; |
| - return compiler.findHelper(new SourceString(mangledName)); |
| + String mangledName = "set\$${name.slowToString()}"; |
| + return compiler.findInterceptor(new SourceString(mangledName)); |
| } |
| Element getOperatorInterceptor(Operator op) { |