Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: pkg/compiler/lib/src/js_emitter/old_emitter/reflection_data_parser.dart

Issue 957343002: Make use of __proto__ when available. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698