| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of dart2js.js_emitter; | 5 part of dart2js.js_emitter; |
| 6 | 6 |
| 7 // TODO(ahe): Share these with js_helper.dart. | 7 // TODO(ahe): Share these with js_helper.dart. |
| 8 const FUNCTION_INDEX = 0; | 8 const FUNCTION_INDEX = 0; |
| 9 const NAME_INDEX = 1; | 9 const NAME_INDEX = 1; |
| 10 const CALL_NAME_INDEX = 2; | 10 const CALL_NAME_INDEX = 2; |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 'objectClassName': js.string(namer.runtimeTypeName(compiler.objectClass)), | 135 'objectClassName': js.string(namer.runtimeTypeName(compiler.objectClass)), |
| 136 'needsStructuredMemberInfo': emitter.needsStructuredMemberInfo, | 136 'needsStructuredMemberInfo': emitter.needsStructuredMemberInfo, |
| 137 'usesMangledNames': | 137 'usesMangledNames': |
| 138 compiler.mirrorsLibrary != null || compiler.enabledFunctionApply, | 138 compiler.mirrorsLibrary != null || compiler.enabledFunctionApply, |
| 139 'tearOffCode': buildTearOffCode(backend), | 139 'tearOffCode': buildTearOffCode(backend), |
| 140 'nativeInfoHandler': nativeInfoHandler, | 140 'nativeInfoHandler': nativeInfoHandler, |
| 141 'operatorIsPrefix' : js.string(namer.operatorIsPrefix), | 141 'operatorIsPrefix' : js.string(namer.operatorIsPrefix), |
| 142 'deferredActionString': js.string(namer.deferredAction)}; | 142 'deferredActionString': js.string(namer.deferredAction)}; |
| 143 | 143 |
| 144 String skeleton = ''' | 144 String skeleton = ''' |
| 145 function $setupProgramName(programData) { | 145 function $setupProgramName(programData, typesOffset) { |
| 146 "use strict"; | 146 "use strict"; |
| 147 if (#needsClassSupport) { | 147 if (#needsClassSupport) { |
| 148 | 148 |
| 149 function generateAccessor(fieldDescriptor, accessors, cls) { | 149 function generateAccessor(fieldDescriptor, accessors, cls) { |
| 150 var fieldInformation = fieldDescriptor.split("-"); | 150 var fieldInformation = fieldDescriptor.split("-"); |
| 151 var field = fieldInformation[0]; | 151 var field = fieldInformation[0]; |
| 152 var len = field.length; | 152 var len = field.length; |
| 153 var code = field.charCodeAt(len - 1); | 153 var code = field.charCodeAt(len - 1); |
| 154 var reflectable; | 154 var reflectable; |
| 155 if (fieldInformation.length > 1) reflectable = true; | 155 if (fieldInformation.length > 1) reflectable = true; |
| (...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 652 var requiredParameterCount = requiredParameterInfo >> 1; | 652 var requiredParameterCount = requiredParameterInfo >> 1; |
| 653 var isAccessor = (requiredParameterInfo & 1) === 1; | 653 var isAccessor = (requiredParameterInfo & 1) === 1; |
| 654 var isSetter = requiredParameterInfo === 3; | 654 var isSetter = requiredParameterInfo === 3; |
| 655 var isGetter = requiredParameterInfo === 1; | 655 var isGetter = requiredParameterInfo === 1; |
| 656 var optionalParameterInfo = ${readInt("array", "1")}; | 656 var optionalParameterInfo = ${readInt("array", "1")}; |
| 657 var optionalParameterCount = optionalParameterInfo >> 1; | 657 var optionalParameterCount = optionalParameterInfo >> 1; |
| 658 var optionalParametersAreNamed = (optionalParameterInfo & 1) === 1; | 658 var optionalParametersAreNamed = (optionalParameterInfo & 1) === 1; |
| 659 var isIntercepted = | 659 var isIntercepted = |
| 660 requiredParameterCount + optionalParameterCount != funcs[0].length; | 660 requiredParameterCount + optionalParameterCount != funcs[0].length; |
| 661 var functionTypeIndex = ${readFunctionType("array", "2")}; | 661 var functionTypeIndex = ${readFunctionType("array", "2")}; |
| 662 if (typeof functionTypeIndex == "number") |
| 663 ${readFunctionType("array", "2")} = functionTypeIndex + typesOffset; |
| 662 var unmangledNameIndex = $unmangledNameIndex; | 664 var unmangledNameIndex = $unmangledNameIndex; |
| 663 | 665 |
| 664 if (getterStubName) { | 666 if (getterStubName) { |
| 665 f = tearOff(funcs, array, isStatic, name, isIntercepted); | 667 f = tearOff(funcs, array, isStatic, name, isIntercepted); |
| 666 prototype[name].\$getter = f; | 668 prototype[name].\$getter = f; |
| 667 f.\$getterStub = true; | 669 f.\$getterStub = true; |
| 668 // Used to create an isolate using spawnFunction. | 670 // Used to create an isolate using spawnFunction. |
| 669 if (isStatic) { | 671 if (isStatic) { |
| 670 #globalFunctions[name] = f; | 672 #globalFunctions[name] = f; |
| 671 functions.push(getterStubName); | 673 functions.push(getterStubName); |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 804 (function() { | 806 (function() { |
| 805 var result = $array[$index]; | 807 var result = $array[$index]; |
| 806 if ($check) { | 808 if ($check) { |
| 807 throw new Error( | 809 throw new Error( |
| 808 name + ": expected value of type \'$type\' at index " + ($index) + | 810 name + ": expected value of type \'$type\' at index " + ($index) + |
| 809 " but got " + (typeof result)); | 811 " but got " + (typeof result)); |
| 810 } | 812 } |
| 811 return result; | 813 return result; |
| 812 })()'''; | 814 })()'''; |
| 813 } | 815 } |
| OLD | NEW |