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 |