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

Side by Side Diff: src/ia32/codegen-ia32.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 2006-2009 the V8 project authors. All rights reserved. 1 // Copyright 2006-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 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 657
658 Comment cmnt(masm_, "[ LoadReference"); 658 Comment cmnt(masm_, "[ LoadReference");
659 Expression* e = ref->expression(); 659 Expression* e = ref->expression();
660 Property* property = e->AsProperty(); 660 Property* property = e->AsProperty();
661 Variable* var = e->AsVariableProxy()->AsVariable(); 661 Variable* var = e->AsVariableProxy()->AsVariable();
662 662
663 if (property != NULL) { 663 if (property != NULL) {
664 // The expression is either a property or a variable proxy that rewrites 664 // The expression is either a property or a variable proxy that rewrites
665 // to a property. 665 // to a property.
666 Load(property->obj()); 666 Load(property->obj());
667 // We use a named reference if the key is a literal symbol, unless it is 667 if (property->key()->IsPropertyName()) {
668 // a string that can be legally parsed as an integer. This is because
669 // otherwise we will not get into the slow case code that handles [] on
670 // String objects.
671 Literal* literal = property->key()->AsLiteral();
672 uint32_t dummy;
673 if (literal != NULL &&
674 literal->handle()->IsSymbol() &&
675 !String::cast(*(literal->handle()))->AsArrayIndex(&dummy)) {
676 ref->set_type(Reference::NAMED); 668 ref->set_type(Reference::NAMED);
677 } else { 669 } else {
678 Load(property->key()); 670 Load(property->key());
679 ref->set_type(Reference::KEYED); 671 ref->set_type(Reference::KEYED);
680 } 672 }
681 } else if (var != NULL) { 673 } else if (var != NULL) {
682 // The expression is a variable proxy that does not rewrite to a 674 // The expression is a variable proxy that does not rewrite to a
683 // property. Global variables are treated as named property references. 675 // property. Global variables are treated as named property references.
684 if (var->is_global()) { 676 if (var->is_global()) {
685 LoadGlobal(); 677 LoadGlobal();
(...skipping 9081 matching lines...) Expand 10 before | Expand all | Expand 10 after
9767 9759
9768 // Call the runtime; it returns -1 (less), 0 (equal), or 1 (greater) 9760 // Call the runtime; it returns -1 (less), 0 (equal), or 1 (greater)
9769 // tagged as a small integer. 9761 // tagged as a small integer.
9770 __ bind(&runtime); 9762 __ bind(&runtime);
9771 __ TailCallRuntime(ExternalReference(Runtime::kStringCompare), 2, 1); 9763 __ TailCallRuntime(ExternalReference(Runtime::kStringCompare), 2, 1);
9772 } 9764 }
9773 9765
9774 #undef __ 9766 #undef __
9775 9767
9776 } } // namespace v8::internal 9768 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698