| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "v8.h" | 5 #include "v8.h" |
| 6 | 6 |
| 7 #include "arm/lithium-codegen-arm.h" | 7 #include "arm/lithium-codegen-arm.h" |
| 8 #include "arm/lithium-gap-resolver-arm.h" | 8 #include "arm/lithium-gap-resolver-arm.h" |
| 9 #include "code-stubs.h" | 9 #include "code-stubs.h" |
| 10 #include "stub-cache.h" | 10 #include "stub-cache.h" |
| (...skipping 5137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5148 Register reg = ToRegister(input); | 5148 Register reg = ToRegister(input); |
| 5149 | 5149 |
| 5150 __ ldr(map_reg, FieldMemOperand(reg, HeapObject::kMapOffset)); | 5150 __ ldr(map_reg, FieldMemOperand(reg, HeapObject::kMapOffset)); |
| 5151 | 5151 |
| 5152 DeferredCheckMaps* deferred = NULL; | 5152 DeferredCheckMaps* deferred = NULL; |
| 5153 if (instr->hydrogen()->has_migration_target()) { | 5153 if (instr->hydrogen()->has_migration_target()) { |
| 5154 deferred = new(zone()) DeferredCheckMaps(this, instr, reg); | 5154 deferred = new(zone()) DeferredCheckMaps(this, instr, reg); |
| 5155 __ bind(deferred->check_maps()); | 5155 __ bind(deferred->check_maps()); |
| 5156 } | 5156 } |
| 5157 | 5157 |
| 5158 const UniqueSet<Map>* map_set = instr->hydrogen()->map_set(); | 5158 const UniqueSet<Map>* maps = instr->hydrogen()->maps(); |
| 5159 Label success; | 5159 Label success; |
| 5160 for (int i = 0; i < map_set->size() - 1; i++) { | 5160 for (int i = 0; i < maps->size() - 1; i++) { |
| 5161 Handle<Map> map = map_set->at(i).handle(); | 5161 Handle<Map> map = maps->at(i).handle(); |
| 5162 __ CompareMap(map_reg, map, &success); | 5162 __ CompareMap(map_reg, map, &success); |
| 5163 __ b(eq, &success); | 5163 __ b(eq, &success); |
| 5164 } | 5164 } |
| 5165 | 5165 |
| 5166 Handle<Map> map = map_set->at(map_set->size() - 1).handle(); | 5166 Handle<Map> map = maps->at(maps->size() - 1).handle(); |
| 5167 __ CompareMap(map_reg, map, &success); | 5167 __ CompareMap(map_reg, map, &success); |
| 5168 if (instr->hydrogen()->has_migration_target()) { | 5168 if (instr->hydrogen()->has_migration_target()) { |
| 5169 __ b(ne, deferred->entry()); | 5169 __ b(ne, deferred->entry()); |
| 5170 } else { | 5170 } else { |
| 5171 DeoptimizeIf(ne, instr->environment()); | 5171 DeoptimizeIf(ne, instr->environment()); |
| 5172 } | 5172 } |
| 5173 | 5173 |
| 5174 __ bind(&success); | 5174 __ bind(&success); |
| 5175 } | 5175 } |
| 5176 | 5176 |
| (...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5830 __ ldr(result, FieldMemOperand(scratch, | 5830 __ ldr(result, FieldMemOperand(scratch, |
| 5831 FixedArray::kHeaderSize - kPointerSize)); | 5831 FixedArray::kHeaderSize - kPointerSize)); |
| 5832 __ bind(deferred->exit()); | 5832 __ bind(deferred->exit()); |
| 5833 __ bind(&done); | 5833 __ bind(&done); |
| 5834 } | 5834 } |
| 5835 | 5835 |
| 5836 | 5836 |
| 5837 #undef __ | 5837 #undef __ |
| 5838 | 5838 |
| 5839 } } // namespace v8::internal | 5839 } } // namespace v8::internal |
| OLD | NEW |