Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Side by Side Diff: src/arm/stub-cache-arm.cc

Issue 7600025: Create a common subclass for arrays (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: review feedback Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/arm/lithium-codegen-arm.cc ('k') | src/hydrogen.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 3471 matching lines...) Expand 10 before | Expand all | Expand 10 after
3482 // have been verified by the caller to not be a smi. 3482 // have been verified by the caller to not be a smi.
3483 3483
3484 // Check that the key is a smi. 3484 // Check that the key is a smi.
3485 __ JumpIfNotSmi(key, &miss_force_generic); 3485 __ JumpIfNotSmi(key, &miss_force_generic);
3486 3486
3487 __ ldr(r3, FieldMemOperand(receiver, JSObject::kElementsOffset)); 3487 __ ldr(r3, FieldMemOperand(receiver, JSObject::kElementsOffset));
3488 // r3: elements array 3488 // r3: elements array
3489 3489
3490 // Check that the index is in range. 3490 // Check that the index is in range.
3491 __ ldr(ip, FieldMemOperand(r3, ExternalArray::kLengthOffset)); 3491 __ ldr(ip, FieldMemOperand(r3, ExternalArray::kLengthOffset));
3492 __ cmp(ip, Operand(key, ASR, kSmiTagSize)); 3492 __ cmp(key, ip);
3493 // Unsigned comparison catches both negative and too-large values. 3493 // Unsigned comparison catches both negative and too-large values.
3494 __ b(lo, &miss_force_generic); 3494 __ b(hs, &miss_force_generic);
3495 3495
3496 __ ldr(r3, FieldMemOperand(r3, ExternalArray::kExternalPointerOffset)); 3496 __ ldr(r3, FieldMemOperand(r3, ExternalArray::kExternalPointerOffset));
3497 // r3: base pointer of external storage 3497 // r3: base pointer of external storage
3498 3498
3499 // We are not untagging smi key and instead work with it 3499 // We are not untagging smi key and instead work with it
3500 // as if it was premultiplied by 2. 3500 // as if it was premultiplied by 2.
3501 ASSERT((kSmiTag == 0) && (kSmiTagSize == 1)); 3501 ASSERT((kSmiTag == 0) && (kSmiTagSize == 1));
3502 3502
3503 Register value = r2; 3503 Register value = r2;
3504 switch (elements_kind) { 3504 switch (elements_kind) {
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
3804 3804
3805 // Register usage. 3805 // Register usage.
3806 Register value = r0; 3806 Register value = r0;
3807 Register key = r1; 3807 Register key = r1;
3808 Register receiver = r2; 3808 Register receiver = r2;
3809 // r3 mostly holds the elements array or the destination external array. 3809 // r3 mostly holds the elements array or the destination external array.
3810 3810
3811 // This stub is meant to be tail-jumped to, the receiver must already 3811 // This stub is meant to be tail-jumped to, the receiver must already
3812 // have been verified by the caller to not be a smi. 3812 // have been verified by the caller to not be a smi.
3813 3813
3814 __ ldr(r3, FieldMemOperand(receiver, JSObject::kElementsOffset));
3815
3816 // Check that the key is a smi. 3814 // Check that the key is a smi.
3817 __ JumpIfNotSmi(key, &miss_force_generic); 3815 __ JumpIfNotSmi(key, &miss_force_generic);
3818 3816
3817 __ ldr(r3, FieldMemOperand(receiver, JSObject::kElementsOffset));
3818
3819 // Check that the index is in range 3819 // Check that the index is in range
3820 __ SmiUntag(r4, key);
3821 __ ldr(ip, FieldMemOperand(r3, ExternalArray::kLengthOffset)); 3820 __ ldr(ip, FieldMemOperand(r3, ExternalArray::kLengthOffset));
3822 __ cmp(r4, ip); 3821 __ cmp(key, ip);
3823 // Unsigned comparison catches both negative and too-large values. 3822 // Unsigned comparison catches both negative and too-large values.
3824 __ b(hs, &miss_force_generic); 3823 __ b(hs, &miss_force_generic);
3825 3824
3826 // Handle both smis and HeapNumbers in the fast path. Go to the 3825 // Handle both smis and HeapNumbers in the fast path. Go to the
3827 // runtime for all other kinds of values. 3826 // runtime for all other kinds of values.
3828 // r3: external array. 3827 // r3: external array.
3829 // r4: key (integer).
3830 if (elements_kind == JSObject::EXTERNAL_PIXEL_ELEMENTS) { 3828 if (elements_kind == JSObject::EXTERNAL_PIXEL_ELEMENTS) {
3831 // Double to pixel conversion is only implemented in the runtime for now. 3829 // Double to pixel conversion is only implemented in the runtime for now.
3832 __ JumpIfNotSmi(value, &slow); 3830 __ JumpIfNotSmi(value, &slow);
3833 } else { 3831 } else {
3834 __ JumpIfNotSmi(value, &check_heap_number); 3832 __ JumpIfNotSmi(value, &check_heap_number);
3835 } 3833 }
3836 __ SmiUntag(r5, value); 3834 __ SmiUntag(r5, value);
3837 __ ldr(r3, FieldMemOperand(r3, ExternalArray::kExternalPointerOffset)); 3835 __ ldr(r3, FieldMemOperand(r3, ExternalArray::kExternalPointerOffset));
3838 3836
3839 // r3: base pointer of external storage. 3837 // r3: base pointer of external storage.
3840 // r4: key (integer).
3841 // r5: value (integer). 3838 // r5: value (integer).
3842 switch (elements_kind) { 3839 switch (elements_kind) {
3843 case JSObject::EXTERNAL_PIXEL_ELEMENTS: 3840 case JSObject::EXTERNAL_PIXEL_ELEMENTS:
3844 // Clamp the value to [0..255]. 3841 // Clamp the value to [0..255].
3845 __ Usat(r5, 8, Operand(r5)); 3842 __ Usat(r5, 8, Operand(r5));
3846 __ strb(r5, MemOperand(r3, r4, LSL, 0)); 3843 __ strb(r5, MemOperand(r3, key, LSR, 1));
3847 break; 3844 break;
3848 case JSObject::EXTERNAL_BYTE_ELEMENTS: 3845 case JSObject::EXTERNAL_BYTE_ELEMENTS:
3849 case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 3846 case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
3850 __ strb(r5, MemOperand(r3, r4, LSL, 0)); 3847 __ strb(r5, MemOperand(r3, key, LSR, 1));
3851 break; 3848 break;
3852 case JSObject::EXTERNAL_SHORT_ELEMENTS: 3849 case JSObject::EXTERNAL_SHORT_ELEMENTS:
3853 case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 3850 case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
3854 __ strh(r5, MemOperand(r3, r4, LSL, 1)); 3851 __ strh(r5, MemOperand(r3, key, LSL, 0));
3855 break; 3852 break;
3856 case JSObject::EXTERNAL_INT_ELEMENTS: 3853 case JSObject::EXTERNAL_INT_ELEMENTS:
3857 case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS: 3854 case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS:
3858 __ str(r5, MemOperand(r3, r4, LSL, 2)); 3855 __ str(r5, MemOperand(r3, key, LSL, 1));
3859 break; 3856 break;
3860 case JSObject::EXTERNAL_FLOAT_ELEMENTS: 3857 case JSObject::EXTERNAL_FLOAT_ELEMENTS:
3861 // Perform int-to-float conversion and store to memory. 3858 // Perform int-to-float conversion and store to memory.
3859 __ SmiUntag(r4, key);
3862 StoreIntAsFloat(masm, r3, r4, r5, r6, r7, r9); 3860 StoreIntAsFloat(masm, r3, r4, r5, r6, r7, r9);
3863 break; 3861 break;
3864 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: 3862 case JSObject::EXTERNAL_DOUBLE_ELEMENTS:
3865 __ add(r3, r3, Operand(r4, LSL, 3)); 3863 __ add(r3, r3, Operand(key, LSL, 2));
3866 // r3: effective address of the double element 3864 // r3: effective address of the double element
3867 FloatingPointHelper::Destination destination; 3865 FloatingPointHelper::Destination destination;
3868 if (CpuFeatures::IsSupported(VFP3)) { 3866 if (CpuFeatures::IsSupported(VFP3)) {
3869 destination = FloatingPointHelper::kVFPRegisters; 3867 destination = FloatingPointHelper::kVFPRegisters;
3870 } else { 3868 } else {
3871 destination = FloatingPointHelper::kCoreRegisters; 3869 destination = FloatingPointHelper::kCoreRegisters;
3872 } 3870 }
3873 FloatingPointHelper::ConvertIntToDouble( 3871 FloatingPointHelper::ConvertIntToDouble(
3874 masm, r5, destination, 3872 masm, r5, destination,
3875 d0, r6, r7, // These are: double_dst, dst1, dst2. 3873 d0, r6, r7, // These are: double_dst, dst1, dst2.
(...skipping 12 matching lines...) Expand all
3888 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS: 3886 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS:
3889 UNREACHABLE(); 3887 UNREACHABLE();
3890 break; 3888 break;
3891 } 3889 }
3892 3890
3893 // Entry registers are intact, r0 holds the value which is the return value. 3891 // Entry registers are intact, r0 holds the value which is the return value.
3894 __ Ret(); 3892 __ Ret();
3895 3893
3896 if (elements_kind != JSObject::EXTERNAL_PIXEL_ELEMENTS) { 3894 if (elements_kind != JSObject::EXTERNAL_PIXEL_ELEMENTS) {
3897 // r3: external array. 3895 // r3: external array.
3898 // r4: index (integer).
3899 __ bind(&check_heap_number); 3896 __ bind(&check_heap_number);
3900 __ CompareObjectType(value, r5, r6, HEAP_NUMBER_TYPE); 3897 __ CompareObjectType(value, r5, r6, HEAP_NUMBER_TYPE);
3901 __ b(ne, &slow); 3898 __ b(ne, &slow);
3902 3899
3903 __ ldr(r3, FieldMemOperand(r3, ExternalArray::kExternalPointerOffset)); 3900 __ ldr(r3, FieldMemOperand(r3, ExternalArray::kExternalPointerOffset));
3904 3901
3905 // r3: base pointer of external storage. 3902 // r3: base pointer of external storage.
3906 // r4: key (integer).
3907 3903
3908 // The WebGL specification leaves the behavior of storing NaN and 3904 // The WebGL specification leaves the behavior of storing NaN and
3909 // +/-Infinity into integer arrays basically undefined. For more 3905 // +/-Infinity into integer arrays basically undefined. For more
3910 // reproducible behavior, convert these to zero. 3906 // reproducible behavior, convert these to zero.
3911 if (CpuFeatures::IsSupported(VFP3)) { 3907 if (CpuFeatures::IsSupported(VFP3)) {
3912 CpuFeatures::Scope scope(VFP3); 3908 CpuFeatures::Scope scope(VFP3);
3913 3909
3914 if (elements_kind == JSObject::EXTERNAL_FLOAT_ELEMENTS) { 3910 if (elements_kind == JSObject::EXTERNAL_FLOAT_ELEMENTS) {
3915 // vldr requires offset to be a multiple of 4 so we can not 3911 // vldr requires offset to be a multiple of 4 so we can not
3916 // include -kHeapObjectTag into it. 3912 // include -kHeapObjectTag into it.
3917 __ sub(r5, r0, Operand(kHeapObjectTag)); 3913 __ sub(r5, r0, Operand(kHeapObjectTag));
3918 __ vldr(d0, r5, HeapNumber::kValueOffset); 3914 __ vldr(d0, r5, HeapNumber::kValueOffset);
3919 __ add(r5, r3, Operand(r4, LSL, 2)); 3915 __ add(r5, r3, Operand(key, LSL, 1));
3920 __ vcvt_f32_f64(s0, d0); 3916 __ vcvt_f32_f64(s0, d0);
3921 __ vstr(s0, r5, 0); 3917 __ vstr(s0, r5, 0);
3922 } else if (elements_kind == JSObject::EXTERNAL_DOUBLE_ELEMENTS) { 3918 } else if (elements_kind == JSObject::EXTERNAL_DOUBLE_ELEMENTS) {
3923 __ sub(r5, r0, Operand(kHeapObjectTag)); 3919 __ sub(r5, r0, Operand(kHeapObjectTag));
3924 __ vldr(d0, r5, HeapNumber::kValueOffset); 3920 __ vldr(d0, r5, HeapNumber::kValueOffset);
3925 __ add(r5, r3, Operand(r4, LSL, 3)); 3921 __ add(r5, r3, Operand(key, LSL, 2));
3926 __ vstr(d0, r5, 0); 3922 __ vstr(d0, r5, 0);
3927 } else { 3923 } else {
3928 // Hoisted load. vldr requires offset to be a multiple of 4 so we can 3924 // Hoisted load. vldr requires offset to be a multiple of 4 so we can
3929 // not include -kHeapObjectTag into it. 3925 // not include -kHeapObjectTag into it.
3930 __ sub(r5, value, Operand(kHeapObjectTag)); 3926 __ sub(r5, value, Operand(kHeapObjectTag));
3931 __ vldr(d0, r5, HeapNumber::kValueOffset); 3927 __ vldr(d0, r5, HeapNumber::kValueOffset);
3932 __ EmitECMATruncate(r5, d0, s2, r6, r7, r9); 3928 __ EmitECMATruncate(r5, d0, s2, r6, r7, r9);
3933 3929
3934 switch (elements_kind) { 3930 switch (elements_kind) {
3935 case JSObject::EXTERNAL_BYTE_ELEMENTS: 3931 case JSObject::EXTERNAL_BYTE_ELEMENTS:
3936 case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 3932 case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
3937 __ strb(r5, MemOperand(r3, r4, LSL, 0)); 3933 __ strb(r5, MemOperand(r3, key, LSR, 1));
3938 break; 3934 break;
3939 case JSObject::EXTERNAL_SHORT_ELEMENTS: 3935 case JSObject::EXTERNAL_SHORT_ELEMENTS:
3940 case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 3936 case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
3941 __ strh(r5, MemOperand(r3, r4, LSL, 1)); 3937 __ strh(r5, MemOperand(r3, key, LSL, 0));
3942 break; 3938 break;
3943 case JSObject::EXTERNAL_INT_ELEMENTS: 3939 case JSObject::EXTERNAL_INT_ELEMENTS:
3944 case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS: 3940 case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS:
3945 __ str(r5, MemOperand(r3, r4, LSL, 2)); 3941 __ str(r5, MemOperand(r3, key, LSL, 1));
3946 break; 3942 break;
3947 case JSObject::EXTERNAL_PIXEL_ELEMENTS: 3943 case JSObject::EXTERNAL_PIXEL_ELEMENTS:
3948 case JSObject::EXTERNAL_FLOAT_ELEMENTS: 3944 case JSObject::EXTERNAL_FLOAT_ELEMENTS:
3949 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: 3945 case JSObject::EXTERNAL_DOUBLE_ELEMENTS:
3950 case JSObject::FAST_ELEMENTS: 3946 case JSObject::FAST_ELEMENTS:
3951 case JSObject::FAST_DOUBLE_ELEMENTS: 3947 case JSObject::FAST_DOUBLE_ELEMENTS:
3952 case JSObject::DICTIONARY_ELEMENTS: 3948 case JSObject::DICTIONARY_ELEMENTS:
3953 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS: 3949 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS:
3954 UNREACHABLE(); 3950 UNREACHABLE();
3955 break; 3951 break;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
3997 __ and_(r5, r5, Operand(HeapNumber::kSignMask), LeaveCC, lt); 3993 __ and_(r5, r5, Operand(HeapNumber::kSignMask), LeaveCC, lt);
3998 __ b(lt, &done); 3994 __ b(lt, &done);
3999 3995
4000 __ and_(r7, r5, Operand(HeapNumber::kSignMask)); 3996 __ and_(r7, r5, Operand(HeapNumber::kSignMask));
4001 __ and_(r5, r5, Operand(HeapNumber::kMantissaMask)); 3997 __ and_(r5, r5, Operand(HeapNumber::kMantissaMask));
4002 __ orr(r7, r7, Operand(r5, LSL, kMantissaInHiWordShift)); 3998 __ orr(r7, r7, Operand(r5, LSL, kMantissaInHiWordShift));
4003 __ orr(r7, r7, Operand(r6, LSR, kMantissaInLoWordShift)); 3999 __ orr(r7, r7, Operand(r6, LSR, kMantissaInLoWordShift));
4004 __ orr(r5, r7, Operand(r9, LSL, kBinary32ExponentShift)); 4000 __ orr(r5, r7, Operand(r9, LSL, kBinary32ExponentShift));
4005 4001
4006 __ bind(&done); 4002 __ bind(&done);
4007 __ str(r5, MemOperand(r3, r4, LSL, 2)); 4003 __ str(r5, MemOperand(r3, key, LSL, 1));
4008 // Entry registers are intact, r0 holds the value which is the return 4004 // Entry registers are intact, r0 holds the value which is the return
4009 // value. 4005 // value.
4010 __ Ret(); 4006 __ Ret();
4011 4007
4012 __ bind(&nan_or_infinity_or_zero); 4008 __ bind(&nan_or_infinity_or_zero);
4013 __ and_(r7, r5, Operand(HeapNumber::kSignMask)); 4009 __ and_(r7, r5, Operand(HeapNumber::kSignMask));
4014 __ and_(r5, r5, Operand(HeapNumber::kMantissaMask)); 4010 __ and_(r5, r5, Operand(HeapNumber::kMantissaMask));
4015 __ orr(r9, r9, r7); 4011 __ orr(r9, r9, r7);
4016 __ orr(r9, r9, Operand(r5, LSL, kMantissaInHiWordShift)); 4012 __ orr(r9, r9, Operand(r5, LSL, kMantissaInHiWordShift));
4017 __ orr(r5, r9, Operand(r6, LSR, kMantissaInLoWordShift)); 4013 __ orr(r5, r9, Operand(r6, LSR, kMantissaInLoWordShift));
4018 __ b(&done); 4014 __ b(&done);
4019 } else if (elements_kind == JSObject::EXTERNAL_DOUBLE_ELEMENTS) { 4015 } else if (elements_kind == JSObject::EXTERNAL_DOUBLE_ELEMENTS) {
4020 __ add(r7, r3, Operand(r4, LSL, 3)); 4016 __ add(r7, r3, Operand(key, LSL, 2));
4021 // r7: effective address of destination element. 4017 // r7: effective address of destination element.
4022 __ str(r6, MemOperand(r7, 0)); 4018 __ str(r6, MemOperand(r7, 0));
4023 __ str(r5, MemOperand(r7, Register::kSizeInBytes)); 4019 __ str(r5, MemOperand(r7, Register::kSizeInBytes));
4024 __ Ret(); 4020 __ Ret();
4025 } else { 4021 } else {
4026 bool is_signed_type = IsElementTypeSigned(elements_kind); 4022 bool is_signed_type = IsElementTypeSigned(elements_kind);
4027 int meaningfull_bits = is_signed_type ? (kBitsPerInt - 1) : kBitsPerInt; 4023 int meaningfull_bits = is_signed_type ? (kBitsPerInt - 1) : kBitsPerInt;
4028 int32_t min_value = is_signed_type ? 0x80000000 : 0x00000000; 4024 int32_t min_value = is_signed_type ? 0x80000000 : 0x00000000;
4029 4025
4030 Label done, sign; 4026 Label done, sign;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
4066 __ orr(r5, r5, Operand(r6, LSR, r9)); 4062 __ orr(r5, r5, Operand(r6, LSR, r9));
4067 4063
4068 __ bind(&sign); 4064 __ bind(&sign);
4069 __ teq(r7, Operand(0, RelocInfo::NONE)); 4065 __ teq(r7, Operand(0, RelocInfo::NONE));
4070 __ rsb(r5, r5, Operand(0, RelocInfo::NONE), LeaveCC, ne); 4066 __ rsb(r5, r5, Operand(0, RelocInfo::NONE), LeaveCC, ne);
4071 4067
4072 __ bind(&done); 4068 __ bind(&done);
4073 switch (elements_kind) { 4069 switch (elements_kind) {
4074 case JSObject::EXTERNAL_BYTE_ELEMENTS: 4070 case JSObject::EXTERNAL_BYTE_ELEMENTS:
4075 case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS: 4071 case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
4076 __ strb(r5, MemOperand(r3, r4, LSL, 0)); 4072 __ strb(r5, MemOperand(r3, key, LSR, 1));
4077 break; 4073 break;
4078 case JSObject::EXTERNAL_SHORT_ELEMENTS: 4074 case JSObject::EXTERNAL_SHORT_ELEMENTS:
4079 case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS: 4075 case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
4080 __ strh(r5, MemOperand(r3, r4, LSL, 1)); 4076 __ strh(r5, MemOperand(r3, key, LSL, 0));
4081 break; 4077 break;
4082 case JSObject::EXTERNAL_INT_ELEMENTS: 4078 case JSObject::EXTERNAL_INT_ELEMENTS:
4083 case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS: 4079 case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS:
4084 __ str(r5, MemOperand(r3, r4, LSL, 2)); 4080 __ str(r5, MemOperand(r3, key, LSL, 1));
4085 break; 4081 break;
4086 case JSObject::EXTERNAL_PIXEL_ELEMENTS: 4082 case JSObject::EXTERNAL_PIXEL_ELEMENTS:
4087 case JSObject::EXTERNAL_FLOAT_ELEMENTS: 4083 case JSObject::EXTERNAL_FLOAT_ELEMENTS:
4088 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: 4084 case JSObject::EXTERNAL_DOUBLE_ELEMENTS:
4089 case JSObject::FAST_ELEMENTS: 4085 case JSObject::FAST_ELEMENTS:
4090 case JSObject::FAST_DOUBLE_ELEMENTS: 4086 case JSObject::FAST_DOUBLE_ELEMENTS:
4091 case JSObject::DICTIONARY_ELEMENTS: 4087 case JSObject::DICTIONARY_ELEMENTS:
4092 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS: 4088 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS:
4093 UNREACHABLE(); 4089 UNREACHABLE();
4094 break; 4090 break;
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
4426 masm->isolate()->builtins()->KeyedStoreIC_MissForceGeneric(); 4422 masm->isolate()->builtins()->KeyedStoreIC_MissForceGeneric();
4427 __ Jump(ic, RelocInfo::CODE_TARGET); 4423 __ Jump(ic, RelocInfo::CODE_TARGET);
4428 } 4424 }
4429 4425
4430 4426
4431 #undef __ 4427 #undef __
4432 4428
4433 } } // namespace v8::internal 4429 } } // namespace v8::internal
4434 4430
4435 #endif // V8_TARGET_ARCH_ARM 4431 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « src/arm/lithium-codegen-arm.cc ('k') | src/hydrogen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698