Chromium Code Reviews| Index: lib/compiler/implementation/ssa/codegen.dart |
| =================================================================== |
| --- lib/compiler/implementation/ssa/codegen.dart (revision 11610) |
| +++ lib/compiler/implementation/ssa/codegen.dart (working copy) |
| @@ -2336,18 +2336,14 @@ |
| }; |
| if (node.isChecked) { |
| - Element element = node.type.computeType(compiler).element; |
| - world.registerIsCheck(element); |
| - SourceString helper; |
| - String additionalArgument; |
| - bool nativeCheck = |
| - backend.emitter.nativeEmitter.requiresNativeIsCheck(element); |
| + Type type = node.type.computeType(compiler); |
|
floitsch
2012/08/30 14:35:14
Add Element element = type.element;
It's used freq
ngeoffray
2012/08/30 17:10:21
Done.
|
| + world.registerIsCheck(type.element); |
| if (node.isArgumentTypeCheck) { |
| - if (element == compiler.intClass) { |
| + if (type.element == compiler.intClass) { |
| checkInt(node.checkedInput, '!=='); |
| } else { |
| - assert(element == compiler.numClass); |
| + assert(type.element == compiler.numClass); |
| checkNum(node.checkedInput, '!=='); |
| } |
| js.Expression test = pop(); |
| @@ -2362,41 +2358,8 @@ |
| } |
| assert(node.isCheckedModeCheck || node.isCastTypeCheck); |
| - if (element == compiler.stringClass) { |
| - helper = const SourceString('stringTypeCheck'); |
| - } else if (element == compiler.doubleClass) { |
| - helper = const SourceString('doubleTypeCheck'); |
| - } else if (element == compiler.numClass) { |
| - helper = const SourceString('numTypeCheck'); |
| - } else if (element == compiler.boolClass) { |
| - helper = const SourceString('boolTypeCheck'); |
| - } else if (element == compiler.functionClass || element.isTypedef()) { |
| - helper = const SourceString('functionTypeCheck'); |
| - } else if (element == compiler.intClass) { |
| - helper = const SourceString('intTypeCheck'); |
| - } else if (Elements.isStringSupertype(element, compiler)) { |
| - additionalArgument = compiler.namer.operatorIs(element); |
| - if (nativeCheck) { |
| - helper = const SourceString('stringSuperNativeTypeCheck'); |
| - } else { |
| - helper = const SourceString('stringSuperTypeCheck'); |
| - } |
| - } else if (element === compiler.listClass) { |
| - helper = const SourceString('listTypeCheck'); |
| - } else { |
| - additionalArgument = compiler.namer.operatorIs(element); |
| - if (Elements.isListSupertype(element, compiler)) { |
| - if (nativeCheck) { |
| - helper = const SourceString('listSuperNativeTypeCheck'); |
| - } else { |
| - helper = const SourceString('listSuperTypeCheck'); |
| - } |
| - } else if (nativeCheck) { |
| - helper = const SourceString('callTypeCheck'); |
| - } else { |
| - helper = const SourceString('propertyTypeCheck'); |
| - } |
| - } |
| + SourceString helper = backend.getCheckedModeHelper(type); |
| + String additionalArgument = compiler.namer.operatorIs(type.element); |
| if (node.isCastTypeCheck) { |
| helper = castNames[helper.stringValue]; |
| } |
| @@ -2405,9 +2368,7 @@ |
| List<js.Expression> arguments = <js.Expression>[]; |
| use(node.checkedInput); |
| arguments.add(pop()); |
| - if (additionalArgument !== null) { |
| - arguments.add(new js.LiteralString("'$additionalArgument'")); |
| - } |
| + arguments.add(new js.LiteralString("'$additionalArgument'")); |
| String helperName = compiler.namer.isolateAccess(helperElement); |
| push(new js.Call(new js.VariableUse(helperName), arguments)); |
| } else { |