| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 1725 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1736 break; | 1736 break; |
| 1737 case TRANSITION: | 1737 case TRANSITION: |
| 1738 case INTERCEPTOR: | 1738 case INTERCEPTOR: |
| 1739 case NONEXISTENT: | 1739 case NONEXISTENT: |
| 1740 case NORMAL: | 1740 case NORMAL: |
| 1741 case HANDLER: | 1741 case HANDLER: |
| 1742 UNREACHABLE(); | 1742 UNREACHABLE(); |
| 1743 break; | 1743 break; |
| 1744 } | 1744 } |
| 1745 } else if (lookup.IsCacheable() && | 1745 } else if (lookup.IsCacheable() && |
| 1746 // For dicts the lookup on the map will fail, but the object may |
| 1747 // contain the property so we cannot generate a negative lookup |
| 1748 // (which would just be a map check and return undefined). |
| 1749 !map->is_dictionary_map() && |
| 1746 PrototypeChainCanNeverResolve(map, name)) { | 1750 PrototypeChainCanNeverResolve(map, name)) { |
| 1747 negative_lookups.Add(types->at(i), zone); | 1751 negative_lookups.Add(types->at(i), zone); |
| 1748 } | 1752 } |
| 1749 } | 1753 } |
| 1750 | 1754 |
| 1751 bool need_generic = | 1755 bool need_generic = |
| 1752 (types->length() != negative_lookups.length() + types_.length()); | 1756 (types->length() != negative_lookups.length() + types_.length()); |
| 1753 if (!need_generic && FLAG_deoptimize_uncommon_cases) { | 1757 if (!need_generic && FLAG_deoptimize_uncommon_cases) { |
| 1754 SetFlag(kUseGVN); | 1758 SetFlag(kUseGVN); |
| 1755 for (int i = 0; i < negative_lookups.length(); i++) { | 1759 for (int i = 0; i < negative_lookups.length(); i++) { |
| (...skipping 828 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2584 | 2588 |
| 2585 | 2589 |
| 2586 void HCheckPrototypeMaps::Verify() { | 2590 void HCheckPrototypeMaps::Verify() { |
| 2587 HInstruction::Verify(); | 2591 HInstruction::Verify(); |
| 2588 ASSERT(HasNoUses()); | 2592 ASSERT(HasNoUses()); |
| 2589 } | 2593 } |
| 2590 | 2594 |
| 2591 #endif | 2595 #endif |
| 2592 | 2596 |
| 2593 } } // namespace v8::internal | 2597 } } // namespace v8::internal |
| OLD | NEW |