Chromium Code Reviews| Index: pkg/compiler/lib/src/js_emitter/old_emitter/reflection_data_parser.dart |
| diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/reflection_data_parser.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/reflection_data_parser.dart |
| index f54481716c77af9933f22f361cb7a9b2838c79e0..befd7a9eecab363baf9fb7d562ace1830f108a0e 100644 |
| --- a/pkg/compiler/lib/src/js_emitter/old_emitter/reflection_data_parser.dart |
| +++ b/pkg/compiler/lib/src/js_emitter/old_emitter/reflection_data_parser.dart |
| @@ -55,25 +55,25 @@ jsAst.Expression getReflectionDataParser(OldEmitter oldEmitter, |
| jsAst.Statement processClassData = js.statement('''{ |
| function processClassData(cls, descriptor, processedClasses) { |
| - var newDesc = map(); // Use a slow object. |
| + descriptor = convertToSlowObject(descriptor); // Use a slow object. |
| var previousProperty; |
| var properties = Object.keys(descriptor); |
| for (var i = 0; i < properties.length; i++) { |
| var property = properties[i]; |
| - var firstChar = property.substring(0, 1); |
| + var firstChar = property.charCodeAt(0); |
| if (property === "static") { |
| - processStatics(#embeddedStatics[cls] = descriptor[property], |
| + processStatics(#embeddedStatics[cls] = descriptor.static, |
| processedClasses); |
| - } else if (firstChar === "+") { |
| + } else if (firstChar === 43) { // 43 is aka "+". |
|
floitsch
2015/03/09 15:37:09
"is aka" -> "is" or "aka", although that doesn't s
herhut
2015/03/10 12:53:54
Done.
|
| mangledNames[previousProperty] = property.substring(1); |
| var flag = descriptor[property]; |
| if (flag > 0) |
| descriptor[previousProperty].$reflectableField = flag; |
| - } else if (firstChar === "*") { |
| - newDesc[previousProperty].$defaultValuesField = descriptor[property]; |
| - var optionalMethods = newDesc.$methodsWithOptionalArgumentsField; |
| + } else if (firstChar === 42) { // 42 is aka "*" |
| + descriptor[previousProperty].$defaultValuesField = descriptor[property]; |
| + var optionalMethods = descriptor.$methodsWithOptionalArgumentsField; |
| if (!optionalMethods) { |
| - newDesc.$methodsWithOptionalArgumentsField = optionalMethods={} |
| + descriptor.$methodsWithOptionalArgumentsField = optionalMethods={} |
| } |
| optionalMethods[property] = previousProperty; |
| } else { |
| @@ -82,9 +82,9 @@ jsAst.Expression getReflectionDataParser(OldEmitter oldEmitter, |
| elem != null && |
| elem.constructor === Array && |
| property !== "<>") { |
| - addStubs(newDesc, elem, property, false, []); |
| + addStubs(descriptor, elem, property, false, []); |
| } else { |
| - newDesc[previousProperty = property] = elem; |
| + previousProperty = property; |
| } |
| } |
| } |
| @@ -95,7 +95,7 @@ jsAst.Expression getReflectionDataParser(OldEmitter oldEmitter, |
| * 'Super;field1,field2' |
| * from the CLASS_DESCRIPTOR_PROPERTY property on the descriptor. |
| */ |
| - var classData = newDesc["${namer.classDescriptorProperty}"], |
| + var classData = descriptor["${namer.classDescriptorProperty}"], |
| split, supr, fields = classData; |
| if (#hasRetainedMetadata) |
| @@ -113,7 +113,7 @@ jsAst.Expression getReflectionDataParser(OldEmitter oldEmitter, |
| supr = split[0]; |
| var functionSignature = split[1]; |
| if (functionSignature) |
| - newDesc.${namer.operatorSignature} = function(s) { |
| + descriptor.${namer.operatorSignature} = function(s) { |
| return function() { |
| return #metadata[s]; |
| }; |
| @@ -125,7 +125,7 @@ jsAst.Expression getReflectionDataParser(OldEmitter oldEmitter, |
| processedClasses.combinedConstructorFunction += defineClass(cls, fields); |
| processedClasses.constructorsList.push(cls); |
| } |
| - processedClasses.collected[cls] = [globalObject, newDesc]; |
| + processedClasses.collected[cls] = [globalObject, descriptor]; |
| classes.push(cls); |
| } |
| }''', {'embeddedStatics': staticsAccess, |
| @@ -141,16 +141,16 @@ jsAst.Expression getReflectionDataParser(OldEmitter oldEmitter, |
| var property = properties[i]; |
| if (property === "${namer.classDescriptorProperty}") continue; |
| var element = descriptor[property]; |
| - var firstChar = property.substring(0, 1); |
| + var firstChar = property.charCodeAt(0); |
| var previousProperty; |
| - if (firstChar === "+") { |
| + if (firstChar === 43) { // 43 is aka "+". |
| mangledGlobalNames[previousProperty] = property.substring(1); |
| var flag = descriptor[property]; |
| if (flag > 0) |
| descriptor[previousProperty].$reflectableField = flag; |
| if (element && element.length) |
| #typeInformation[previousProperty] = element; |
| - } else if (firstChar === "*") { |
| + } else if (firstChar === 42) { // 42 is aka "*" |
| globalObject[previousProperty].$defaultValuesField = element; |
| var optionalMethods = descriptor.$methodsWithOptionalArgumentsField; |
| if (!optionalMethods) { |