| 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 #if V8_TARGET_ARCH_IA32 | 5 #if V8_TARGET_ARCH_IA32 | 
| 6 | 6 | 
| 7 #include "src/crankshaft/ia32/lithium-codegen-ia32.h" | 7 #include "src/crankshaft/ia32/lithium-codegen-ia32.h" | 
| 8 | 8 | 
| 9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" | 
| 10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" | 
| (...skipping 3027 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3038       __ cmp(result, factory()->the_hole_value()); | 3038       __ cmp(result, factory()->the_hole_value()); | 
| 3039       DeoptimizeIf(equal, instr, Deoptimizer::kHole); | 3039       DeoptimizeIf(equal, instr, Deoptimizer::kHole); | 
| 3040     } | 3040     } | 
| 3041   } else if (instr->hydrogen()->hole_mode() == CONVERT_HOLE_TO_UNDEFINED) { | 3041   } else if (instr->hydrogen()->hole_mode() == CONVERT_HOLE_TO_UNDEFINED) { | 
| 3042     DCHECK(instr->hydrogen()->elements_kind() == FAST_HOLEY_ELEMENTS); | 3042     DCHECK(instr->hydrogen()->elements_kind() == FAST_HOLEY_ELEMENTS); | 
| 3043     Label done; | 3043     Label done; | 
| 3044     __ cmp(result, factory()->the_hole_value()); | 3044     __ cmp(result, factory()->the_hole_value()); | 
| 3045     __ j(not_equal, &done); | 3045     __ j(not_equal, &done); | 
| 3046     if (info()->IsStub()) { | 3046     if (info()->IsStub()) { | 
| 3047       // A stub can safely convert the hole to undefined only if the array | 3047       // A stub can safely convert the hole to undefined only if the array | 
| 3048       // protector cell contains (Smi) Isolate::kArrayProtectorValid. Otherwise | 3048       // protector cell contains (Smi) Isolate::kArrayElementsProtectorValid. | 
|  | 3049       // Otherwise | 
| 3049       // it needs to bail out. | 3050       // it needs to bail out. | 
| 3050       __ mov(result, isolate()->factory()->array_protector()); | 3051       __ LoadRoot(result, Heap::kArrayElementsProtectorRootIndex); | 
| 3051       __ cmp(FieldOperand(result, PropertyCell::kValueOffset), | 3052       __ cmp(FieldOperand(result, PropertyCell::kValueOffset), | 
| 3052              Immediate(Smi::FromInt(Isolate::kArrayProtectorValid))); | 3053              Immediate(Smi::FromInt(Isolate::kArrayElementsProtectorValid))); | 
| 3053       DeoptimizeIf(not_equal, instr, Deoptimizer::kHole); | 3054       DeoptimizeIf(not_equal, instr, Deoptimizer::kHole); | 
| 3054     } | 3055     } | 
| 3055     __ mov(result, isolate()->factory()->undefined_value()); | 3056     __ mov(result, isolate()->factory()->undefined_value()); | 
| 3056     __ bind(&done); | 3057     __ bind(&done); | 
| 3057   } | 3058   } | 
| 3058 } | 3059 } | 
| 3059 | 3060 | 
| 3060 | 3061 | 
| 3061 void LCodeGen::DoLoadKeyed(LLoadKeyed* instr) { | 3062 void LCodeGen::DoLoadKeyed(LLoadKeyed* instr) { | 
| 3062   if (instr->is_fixed_typed_array()) { | 3063   if (instr->is_fixed_typed_array()) { | 
| (...skipping 2610 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5673   RecordSafepoint(Safepoint::kNoLazyDeopt); | 5674   RecordSafepoint(Safepoint::kNoLazyDeopt); | 
| 5674 } | 5675 } | 
| 5675 | 5676 | 
| 5676 | 5677 | 
| 5677 #undef __ | 5678 #undef __ | 
| 5678 | 5679 | 
| 5679 }  // namespace internal | 5680 }  // namespace internal | 
| 5680 }  // namespace v8 | 5681 }  // namespace v8 | 
| 5681 | 5682 | 
| 5682 #endif  // V8_TARGET_ARCH_IA32 | 5683 #endif  // V8_TARGET_ARCH_IA32 | 
| OLD | NEW | 
|---|