OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 if (info()->IsOptimizing()) { | 168 if (info()->IsOptimizing()) { |
169 ProfileEntryHookStub::MaybeCallEntryHook(masm_); | 169 ProfileEntryHookStub::MaybeCallEntryHook(masm_); |
170 | 170 |
171 #ifdef DEBUG | 171 #ifdef DEBUG |
172 if (strlen(FLAG_stop_at) > 0 && | 172 if (strlen(FLAG_stop_at) > 0 && |
173 info_->function()->name()->IsUtf8EqualTo(CStrVector(FLAG_stop_at))) { | 173 info_->function()->name()->IsUtf8EqualTo(CStrVector(FLAG_stop_at))) { |
174 __ int3(); | 174 __ int3(); |
175 } | 175 } |
176 #endif | 176 #endif |
177 | 177 |
178 // Classic mode functions and builtins need to replace the receiver with the | 178 // Sloppy mode functions and builtins need to replace the receiver with the |
179 // global proxy when called as functions (without an explicit receiver | 179 // global proxy when called as functions (without an explicit receiver |
180 // object). | 180 // object). |
181 if (info_->this_has_uses() && | 181 if (info_->this_has_uses() && |
182 info_->is_classic_mode() && | 182 info_->is_sloppy_mode() && |
183 !info_->is_native()) { | 183 !info_->is_native()) { |
184 Label ok; | 184 Label ok; |
185 // +1 for return address. | 185 // +1 for return address. |
186 int receiver_offset = (scope()->num_parameters() + 1) * kPointerSize; | 186 int receiver_offset = (scope()->num_parameters() + 1) * kPointerSize; |
187 __ mov(ecx, Operand(esp, receiver_offset)); | 187 __ mov(ecx, Operand(esp, receiver_offset)); |
188 | 188 |
189 __ cmp(ecx, isolate()->factory()->undefined_value()); | 189 __ cmp(ecx, isolate()->factory()->undefined_value()); |
190 __ j(not_equal, &ok, Label::kNear); | 190 __ j(not_equal, &ok, Label::kNear); |
191 | 191 |
192 __ mov(ecx, GlobalObjectOperand()); | 192 __ mov(ecx, GlobalObjectOperand()); |
(...skipping 3194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3387 case EXTERNAL_FLOAT64_ELEMENTS: | 3387 case EXTERNAL_FLOAT64_ELEMENTS: |
3388 case FLOAT32_ELEMENTS: | 3388 case FLOAT32_ELEMENTS: |
3389 case FLOAT64_ELEMENTS: | 3389 case FLOAT64_ELEMENTS: |
3390 case FAST_SMI_ELEMENTS: | 3390 case FAST_SMI_ELEMENTS: |
3391 case FAST_ELEMENTS: | 3391 case FAST_ELEMENTS: |
3392 case FAST_DOUBLE_ELEMENTS: | 3392 case FAST_DOUBLE_ELEMENTS: |
3393 case FAST_HOLEY_SMI_ELEMENTS: | 3393 case FAST_HOLEY_SMI_ELEMENTS: |
3394 case FAST_HOLEY_ELEMENTS: | 3394 case FAST_HOLEY_ELEMENTS: |
3395 case FAST_HOLEY_DOUBLE_ELEMENTS: | 3395 case FAST_HOLEY_DOUBLE_ELEMENTS: |
3396 case DICTIONARY_ELEMENTS: | 3396 case DICTIONARY_ELEMENTS: |
3397 case NON_STRICT_ARGUMENTS_ELEMENTS: | 3397 case SLOPPY_ARGUMENTS_ELEMENTS: |
3398 UNREACHABLE(); | 3398 UNREACHABLE(); |
3399 break; | 3399 break; |
3400 } | 3400 } |
3401 } | 3401 } |
3402 } | 3402 } |
3403 | 3403 |
3404 | 3404 |
3405 void LCodeGen::DoLoadKeyedFixedDoubleArray(LLoadKeyed* instr) { | 3405 void LCodeGen::DoLoadKeyedFixedDoubleArray(LLoadKeyed* instr) { |
3406 if (instr->hydrogen()->RequiresHoleCheck()) { | 3406 if (instr->hydrogen()->RequiresHoleCheck()) { |
3407 int offset = FixedDoubleArray::kHeaderSize - kHeapObjectTag + | 3407 int offset = FixedDoubleArray::kHeaderSize - kHeapObjectTag + |
(...skipping 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4499 case EXTERNAL_FLOAT64_ELEMENTS: | 4499 case EXTERNAL_FLOAT64_ELEMENTS: |
4500 case FLOAT32_ELEMENTS: | 4500 case FLOAT32_ELEMENTS: |
4501 case FLOAT64_ELEMENTS: | 4501 case FLOAT64_ELEMENTS: |
4502 case FAST_SMI_ELEMENTS: | 4502 case FAST_SMI_ELEMENTS: |
4503 case FAST_ELEMENTS: | 4503 case FAST_ELEMENTS: |
4504 case FAST_DOUBLE_ELEMENTS: | 4504 case FAST_DOUBLE_ELEMENTS: |
4505 case FAST_HOLEY_SMI_ELEMENTS: | 4505 case FAST_HOLEY_SMI_ELEMENTS: |
4506 case FAST_HOLEY_ELEMENTS: | 4506 case FAST_HOLEY_ELEMENTS: |
4507 case FAST_HOLEY_DOUBLE_ELEMENTS: | 4507 case FAST_HOLEY_DOUBLE_ELEMENTS: |
4508 case DICTIONARY_ELEMENTS: | 4508 case DICTIONARY_ELEMENTS: |
4509 case NON_STRICT_ARGUMENTS_ELEMENTS: | 4509 case SLOPPY_ARGUMENTS_ELEMENTS: |
4510 UNREACHABLE(); | 4510 UNREACHABLE(); |
4511 break; | 4511 break; |
4512 } | 4512 } |
4513 } | 4513 } |
4514 } | 4514 } |
4515 | 4515 |
4516 | 4516 |
4517 void LCodeGen::DoStoreKeyedFixedDoubleArray(LStoreKeyed* instr) { | 4517 void LCodeGen::DoStoreKeyedFixedDoubleArray(LStoreKeyed* instr) { |
4518 ExternalReference canonical_nan_reference = | 4518 ExternalReference canonical_nan_reference = |
4519 ExternalReference::address_of_canonical_non_hole_nan(); | 4519 ExternalReference::address_of_canonical_non_hole_nan(); |
(...skipping 1750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6270 FixedArray::kHeaderSize - kPointerSize)); | 6270 FixedArray::kHeaderSize - kPointerSize)); |
6271 __ bind(&done); | 6271 __ bind(&done); |
6272 } | 6272 } |
6273 | 6273 |
6274 | 6274 |
6275 #undef __ | 6275 #undef __ |
6276 | 6276 |
6277 } } // namespace v8::internal | 6277 } } // namespace v8::internal |
6278 | 6278 |
6279 #endif // V8_TARGET_ARCH_IA32 | 6279 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |