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

Side by Side Diff: src/objects.cc

Issue 149316: Fix issue with skipping global object during lookup through... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 5 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 1693 matching lines...) Expand 10 before | Expand all | Expand 10 after
1704 } 1704 }
1705 } else { 1705 } else {
1706 int entry = property_dictionary()->FindEntry(name); 1706 int entry = property_dictionary()->FindEntry(name);
1707 if (entry != StringDictionary::kNotFound) { 1707 if (entry != StringDictionary::kNotFound) {
1708 // Make sure to disallow caching for uninitialized constants 1708 // Make sure to disallow caching for uninitialized constants
1709 // found in the dictionary-mode objects. 1709 // found in the dictionary-mode objects.
1710 Object* value = property_dictionary()->ValueAt(entry); 1710 Object* value = property_dictionary()->ValueAt(entry);
1711 if (IsGlobalObject()) { 1711 if (IsGlobalObject()) {
1712 PropertyDetails d = property_dictionary()->DetailsAt(entry); 1712 PropertyDetails d = property_dictionary()->DetailsAt(entry);
1713 if (d.IsDeleted()) { 1713 if (d.IsDeleted()) {
1714 // We've skipped a global object during lookup, so we cannot
1715 // use inline caching because the map of the global object
1716 // doesn't change if the property should be re-added.
1717 result->DisallowCaching();
1714 result->NotFound(); 1718 result->NotFound();
1715 return; 1719 return;
1716 } 1720 }
1717 value = JSGlobalPropertyCell::cast(value)->value(); 1721 value = JSGlobalPropertyCell::cast(value)->value();
1718 ASSERT(result->IsLoaded()); 1722 ASSERT(result->IsLoaded());
1719 } 1723 }
1720 if (value->IsTheHole()) { 1724 if (value->IsTheHole()) {
1721 result->DisallowCaching(); 1725 result->DisallowCaching();
1722 } 1726 }
1723 result->DictionaryResult(this, entry); 1727 result->DictionaryResult(this, entry);
(...skipping 5982 matching lines...) Expand 10 before | Expand all | Expand 10 after
7706 if (break_point_objects()->IsUndefined()) return 0; 7710 if (break_point_objects()->IsUndefined()) return 0;
7707 // Single beak point. 7711 // Single beak point.
7708 if (!break_point_objects()->IsFixedArray()) return 1; 7712 if (!break_point_objects()->IsFixedArray()) return 1;
7709 // Multiple break points. 7713 // Multiple break points.
7710 return FixedArray::cast(break_point_objects())->length(); 7714 return FixedArray::cast(break_point_objects())->length();
7711 } 7715 }
7712 #endif 7716 #endif
7713 7717
7714 7718
7715 } } // namespace v8::internal 7719 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/global-deleted-property-ic.js » ('j') | test/mjsunit/global-deleted-property-ic.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698