OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 2090 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2101 DeferredCheckMaps* deferred = NULL; | 2101 DeferredCheckMaps* deferred = NULL; |
2102 if (instr->hydrogen()->has_migration_target()) { | 2102 if (instr->hydrogen()->has_migration_target()) { |
2103 deferred = new(zone()) DeferredCheckMaps(this, instr, object); | 2103 deferred = new(zone()) DeferredCheckMaps(this, instr, object); |
2104 __ Bind(deferred->check_maps()); | 2104 __ Bind(deferred->check_maps()); |
2105 } | 2105 } |
2106 | 2106 |
2107 UniqueSet<Map> map_set = instr->hydrogen()->map_set(); | 2107 UniqueSet<Map> map_set = instr->hydrogen()->map_set(); |
2108 Label success; | 2108 Label success; |
2109 for (int i = 0; i < map_set.size(); i++) { | 2109 for (int i = 0; i < map_set.size(); i++) { |
2110 Handle<Map> map = map_set.at(i).handle(); | 2110 Handle<Map> map = map_set.at(i).handle(); |
2111 __ CompareMap(map_reg, map, &success); | 2111 __ CompareMap(map_reg, map); |
2112 __ B(eq, &success); | 2112 __ B(eq, &success); |
2113 } | 2113 } |
2114 | 2114 |
2115 // We didn't match a map. | 2115 // We didn't match a map. |
2116 if (instr->hydrogen()->has_migration_target()) { | 2116 if (instr->hydrogen()->has_migration_target()) { |
2117 __ B(deferred->entry()); | 2117 __ B(deferred->entry()); |
2118 } else { | 2118 } else { |
2119 Deoptimize(instr->environment()); | 2119 Deoptimize(instr->environment()); |
2120 } | 2120 } |
2121 | 2121 |
(...skipping 3595 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5717 __ Bind(&out_of_object); | 5717 __ Bind(&out_of_object); |
5718 __ Ldr(result, FieldMemOperand(object, JSObject::kPropertiesOffset)); | 5718 __ Ldr(result, FieldMemOperand(object, JSObject::kPropertiesOffset)); |
5719 // Index is equal to negated out of object property index plus 1. | 5719 // Index is equal to negated out of object property index plus 1. |
5720 __ Sub(result, result, Operand::UntagSmiAndScale(index, kPointerSizeLog2)); | 5720 __ Sub(result, result, Operand::UntagSmiAndScale(index, kPointerSizeLog2)); |
5721 __ Ldr(result, FieldMemOperand(result, | 5721 __ Ldr(result, FieldMemOperand(result, |
5722 FixedArray::kHeaderSize - kPointerSize)); | 5722 FixedArray::kHeaderSize - kPointerSize)); |
5723 __ Bind(&done); | 5723 __ Bind(&done); |
5724 } | 5724 } |
5725 | 5725 |
5726 } } // namespace v8::internal | 5726 } } // namespace v8::internal |
OLD | NEW |