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

Side by Side Diff: src/x64/codegen-x64.cc

Issue 546006: Some cleanup of the toplevel code generator:... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 10 years, 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 4229 matching lines...) Expand 10 before | Expand all | Expand 10 after
4240 4240
4241 Comment cmnt(masm_, "[ LoadReference"); 4241 Comment cmnt(masm_, "[ LoadReference");
4242 Expression* e = ref->expression(); 4242 Expression* e = ref->expression();
4243 Property* property = e->AsProperty(); 4243 Property* property = e->AsProperty();
4244 Variable* var = e->AsVariableProxy()->AsVariable(); 4244 Variable* var = e->AsVariableProxy()->AsVariable();
4245 4245
4246 if (property != NULL) { 4246 if (property != NULL) {
4247 // The expression is either a property or a variable proxy that rewrites 4247 // The expression is either a property or a variable proxy that rewrites
4248 // to a property. 4248 // to a property.
4249 Load(property->obj()); 4249 Load(property->obj());
4250 // We use a named reference if the key is a literal symbol, unless it is 4250 if (property->key()->IsPropertyName()) {
Lasse Reichstein 2010/01/12 08:30:05 This is a really great clean-up! So much easier to
4251 // a string that can be legally parsed as an integer. This is because
4252 // otherwise we will not get into the slow case code that handles [] on
4253 // String objects.
4254 Literal* literal = property->key()->AsLiteral();
4255 uint32_t dummy;
4256 if (literal != NULL &&
4257 literal->handle()->IsSymbol() &&
4258 !String::cast(*(literal->handle()))->AsArrayIndex(&dummy)) {
4259 ref->set_type(Reference::NAMED); 4251 ref->set_type(Reference::NAMED);
4260 } else { 4252 } else {
4261 Load(property->key()); 4253 Load(property->key());
4262 ref->set_type(Reference::KEYED); 4254 ref->set_type(Reference::KEYED);
4263 } 4255 }
4264 } else if (var != NULL) { 4256 } else if (var != NULL) {
4265 // The expression is a variable proxy that does not rewrite to a 4257 // The expression is a variable proxy that does not rewrite to a
4266 // property. Global variables are treated as named property references. 4258 // property. Global variables are treated as named property references.
4267 if (var->is_global()) { 4259 if (var->is_global()) {
4268 LoadGlobal(); 4260 LoadGlobal();
(...skipping 3854 matching lines...) Expand 10 before | Expand all | Expand 10 after
8123 masm.GetCode(&desc); 8115 masm.GetCode(&desc);
8124 // Call the function from C++. 8116 // Call the function from C++.
8125 return FUNCTION_CAST<ModuloFunction>(buffer); 8117 return FUNCTION_CAST<ModuloFunction>(buffer);
8126 } 8118 }
8127 8119
8128 #endif 8120 #endif
8129 8121
8130 #undef __ 8122 #undef __
8131 8123
8132 } } // namespace v8::internal 8124 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698