OLD | NEW |
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 3390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3401 case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS: | 3401 case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS: |
3402 case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS: | 3402 case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS: |
3403 case JSObject::EXTERNAL_PIXEL_ELEMENTS: | 3403 case JSObject::EXTERNAL_PIXEL_ELEMENTS: |
3404 return false; | 3404 return false; |
3405 | 3405 |
3406 case JSObject::EXTERNAL_FLOAT_ELEMENTS: | 3406 case JSObject::EXTERNAL_FLOAT_ELEMENTS: |
3407 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: | 3407 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: |
3408 case JSObject::FAST_ELEMENTS: | 3408 case JSObject::FAST_ELEMENTS: |
3409 case JSObject::FAST_DOUBLE_ELEMENTS: | 3409 case JSObject::FAST_DOUBLE_ELEMENTS: |
3410 case JSObject::DICTIONARY_ELEMENTS: | 3410 case JSObject::DICTIONARY_ELEMENTS: |
| 3411 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS: |
3411 UNREACHABLE(); | 3412 UNREACHABLE(); |
3412 return false; | 3413 return false; |
3413 } | 3414 } |
3414 return false; | 3415 return false; |
3415 } | 3416 } |
3416 | 3417 |
3417 | 3418 |
3418 void KeyedLoadStubCompiler::GenerateLoadExternalArray( | 3419 void KeyedLoadStubCompiler::GenerateLoadExternalArray( |
3419 MacroAssembler* masm, | 3420 MacroAssembler* masm, |
3420 JSObject::ElementsKind elements_kind) { | 3421 JSObject::ElementsKind elements_kind) { |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3495 __ ldc1(f0, MemOperand(t3, 0)); | 3496 __ ldc1(f0, MemOperand(t3, 0)); |
3496 } else { | 3497 } else { |
3497 // t3: pointer to the beginning of the double we want to load. | 3498 // t3: pointer to the beginning of the double we want to load. |
3498 __ lw(a2, MemOperand(t3, 0)); | 3499 __ lw(a2, MemOperand(t3, 0)); |
3499 __ lw(a3, MemOperand(t3, Register::kSizeInBytes)); | 3500 __ lw(a3, MemOperand(t3, Register::kSizeInBytes)); |
3500 } | 3501 } |
3501 break; | 3502 break; |
3502 case JSObject::FAST_ELEMENTS: | 3503 case JSObject::FAST_ELEMENTS: |
3503 case JSObject::FAST_DOUBLE_ELEMENTS: | 3504 case JSObject::FAST_DOUBLE_ELEMENTS: |
3504 case JSObject::DICTIONARY_ELEMENTS: | 3505 case JSObject::DICTIONARY_ELEMENTS: |
| 3506 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS: |
3505 UNREACHABLE(); | 3507 UNREACHABLE(); |
3506 break; | 3508 break; |
3507 } | 3509 } |
3508 | 3510 |
3509 // For integer array types: | 3511 // For integer array types: |
3510 // a2: value | 3512 // a2: value |
3511 // For float array type: | 3513 // For float array type: |
3512 // f0: value (if FPU is supported) | 3514 // f0: value (if FPU is supported) |
3513 // a2: value (if FPU is not supported) | 3515 // a2: value (if FPU is not supported) |
3514 // For double array type: | 3516 // For double array type: |
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3854 CpuFeatures::Scope scope(FPU); | 3856 CpuFeatures::Scope scope(FPU); |
3855 __ sdc1(f0, MemOperand(a3, 0)); | 3857 __ sdc1(f0, MemOperand(a3, 0)); |
3856 } else { | 3858 } else { |
3857 __ sw(t2, MemOperand(a3, 0)); | 3859 __ sw(t2, MemOperand(a3, 0)); |
3858 __ sw(t3, MemOperand(a3, Register::kSizeInBytes)); | 3860 __ sw(t3, MemOperand(a3, Register::kSizeInBytes)); |
3859 } | 3861 } |
3860 break; | 3862 break; |
3861 case JSObject::FAST_ELEMENTS: | 3863 case JSObject::FAST_ELEMENTS: |
3862 case JSObject::FAST_DOUBLE_ELEMENTS: | 3864 case JSObject::FAST_DOUBLE_ELEMENTS: |
3863 case JSObject::DICTIONARY_ELEMENTS: | 3865 case JSObject::DICTIONARY_ELEMENTS: |
| 3866 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS: |
3864 UNREACHABLE(); | 3867 UNREACHABLE(); |
3865 break; | 3868 break; |
3866 } | 3869 } |
3867 | 3870 |
3868 // Entry registers are intact, a0 holds the value which is the return value. | 3871 // Entry registers are intact, a0 holds the value which is the return value. |
3869 __ mov(v0, value); | 3872 __ mov(v0, value); |
3870 __ Ret(); | 3873 __ Ret(); |
3871 | 3874 |
3872 if (elements_kind != JSObject::EXTERNAL_PIXEL_ELEMENTS) { | 3875 if (elements_kind != JSObject::EXTERNAL_PIXEL_ELEMENTS) { |
3873 // a3: external array. | 3876 // a3: external array. |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3919 __ sll(t8, t0, 2); | 3922 __ sll(t8, t0, 2); |
3920 __ addu(t8, a3, t8); | 3923 __ addu(t8, a3, t8); |
3921 __ sw(t3, MemOperand(t8, 0)); | 3924 __ sw(t3, MemOperand(t8, 0)); |
3922 break; | 3925 break; |
3923 case JSObject::EXTERNAL_PIXEL_ELEMENTS: | 3926 case JSObject::EXTERNAL_PIXEL_ELEMENTS: |
3924 case JSObject::EXTERNAL_FLOAT_ELEMENTS: | 3927 case JSObject::EXTERNAL_FLOAT_ELEMENTS: |
3925 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: | 3928 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: |
3926 case JSObject::FAST_ELEMENTS: | 3929 case JSObject::FAST_ELEMENTS: |
3927 case JSObject::FAST_DOUBLE_ELEMENTS: | 3930 case JSObject::FAST_DOUBLE_ELEMENTS: |
3928 case JSObject::DICTIONARY_ELEMENTS: | 3931 case JSObject::DICTIONARY_ELEMENTS: |
| 3932 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS: |
3929 UNREACHABLE(); | 3933 UNREACHABLE(); |
3930 break; | 3934 break; |
3931 } | 3935 } |
3932 } | 3936 } |
3933 | 3937 |
3934 // Entry registers are intact, a0 holds the value | 3938 // Entry registers are intact, a0 holds the value |
3935 // which is the return value. | 3939 // which is the return value. |
3936 __ mov(v0, value); | 3940 __ mov(v0, value); |
3937 __ Ret(); | 3941 __ Ret(); |
3938 } else { | 3942 } else { |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4088 __ sll(t8, t0, 2); | 4092 __ sll(t8, t0, 2); |
4089 __ addu(t8, a3, t8); | 4093 __ addu(t8, a3, t8); |
4090 __ sw(t3, MemOperand(t8, 0)); | 4094 __ sw(t3, MemOperand(t8, 0)); |
4091 break; | 4095 break; |
4092 case JSObject::EXTERNAL_PIXEL_ELEMENTS: | 4096 case JSObject::EXTERNAL_PIXEL_ELEMENTS: |
4093 case JSObject::EXTERNAL_FLOAT_ELEMENTS: | 4097 case JSObject::EXTERNAL_FLOAT_ELEMENTS: |
4094 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: | 4098 case JSObject::EXTERNAL_DOUBLE_ELEMENTS: |
4095 case JSObject::FAST_ELEMENTS: | 4099 case JSObject::FAST_ELEMENTS: |
4096 case JSObject::FAST_DOUBLE_ELEMENTS: | 4100 case JSObject::FAST_DOUBLE_ELEMENTS: |
4097 case JSObject::DICTIONARY_ELEMENTS: | 4101 case JSObject::DICTIONARY_ELEMENTS: |
| 4102 case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS: |
4098 UNREACHABLE(); | 4103 UNREACHABLE(); |
4099 break; | 4104 break; |
4100 } | 4105 } |
4101 } | 4106 } |
4102 } | 4107 } |
4103 } | 4108 } |
4104 | 4109 |
4105 // Slow case, key and receiver still in a0 and a1. | 4110 // Slow case, key and receiver still in a0 and a1. |
4106 __ bind(&slow); | 4111 __ bind(&slow); |
4107 __ IncrementCounter( | 4112 __ IncrementCounter( |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4233 masm->isolate()->builtins()->KeyedStoreIC_MissForceGeneric(); | 4238 masm->isolate()->builtins()->KeyedStoreIC_MissForceGeneric(); |
4234 __ Jump(ic, RelocInfo::CODE_TARGET); | 4239 __ Jump(ic, RelocInfo::CODE_TARGET); |
4235 } | 4240 } |
4236 | 4241 |
4237 | 4242 |
4238 #undef __ | 4243 #undef __ |
4239 | 4244 |
4240 } } // namespace v8::internal | 4245 } } // namespace v8::internal |
4241 | 4246 |
4242 #endif // V8_TARGET_ARCH_MIPS | 4247 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |