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 "src/code-stubs.h" | 5 #include "src/code-stubs.h" |
6 | 6 |
7 #include "src/bailout-reason.h" | 7 #include "src/bailout-reason.h" |
8 #include "src/crankshaft/hydrogen.h" | 8 #include "src/crankshaft/hydrogen.h" |
9 #include "src/crankshaft/lithium.h" | 9 #include "src/crankshaft/lithium.h" |
10 #include "src/field-index.h" | 10 #include "src/field-index.h" |
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
463 HValue* CodeStubGraphBuilder<FastCloneShallowArrayStub>::BuildCodeStub() { | 463 HValue* CodeStubGraphBuilder<FastCloneShallowArrayStub>::BuildCodeStub() { |
464 Factory* factory = isolate()->factory(); | 464 Factory* factory = isolate()->factory(); |
465 HValue* undefined = graph()->GetConstantUndefined(); | 465 HValue* undefined = graph()->GetConstantUndefined(); |
466 AllocationSiteMode alloc_site_mode = casted_stub()->allocation_site_mode(); | 466 AllocationSiteMode alloc_site_mode = casted_stub()->allocation_site_mode(); |
467 HValue* closure = GetParameter(0); | 467 HValue* closure = GetParameter(0); |
468 HValue* literal_index = GetParameter(1); | 468 HValue* literal_index = GetParameter(1); |
469 | 469 |
470 // TODO(turbofan): This codestub has regressed to need a frame on ia32 at some | 470 // TODO(turbofan): This codestub has regressed to need a frame on ia32 at some |
471 // point and wasn't caught since it wasn't built in the snapshot. We should | 471 // point and wasn't caught since it wasn't built in the snapshot. We should |
472 // probably just replace with a TurboFan stub rather than fixing it. | 472 // probably just replace with a TurboFan stub rather than fixing it. |
473 #if !V8_TARGET_ARCH_IA32 | 473 #if !(V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X87) |
474 // This stub is very performance sensitive, the generated code must be tuned | 474 // This stub is very performance sensitive, the generated code must be tuned |
475 // so that it doesn't build and eager frame. | 475 // so that it doesn't build and eager frame. |
476 info()->MarkMustNotHaveEagerFrame(); | 476 info()->MarkMustNotHaveEagerFrame(); |
477 #endif | 477 #endif |
478 | 478 |
479 HValue* literals_array = Add<HLoadNamedField>( | 479 HValue* literals_array = Add<HLoadNamedField>( |
480 closure, nullptr, HObjectAccess::ForLiteralsPointer()); | 480 closure, nullptr, HObjectAccess::ForLiteralsPointer()); |
481 | 481 |
482 HInstruction* allocation_site = Add<HLoadKeyed>( | 482 HInstruction* allocation_site = Add<HLoadKeyed>( |
483 literals_array, literal_index, nullptr, nullptr, FAST_ELEMENTS, | 483 literals_array, literal_index, nullptr, nullptr, FAST_ELEMENTS, |
(...skipping 1578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2062 template<> | 2062 template<> |
2063 HValue* CodeStubGraphBuilder<RegExpConstructResultStub>::BuildCodeStub() { | 2063 HValue* CodeStubGraphBuilder<RegExpConstructResultStub>::BuildCodeStub() { |
2064 // Determine the parameters. | 2064 // Determine the parameters. |
2065 HValue* length = GetParameter(RegExpConstructResultStub::kLength); | 2065 HValue* length = GetParameter(RegExpConstructResultStub::kLength); |
2066 HValue* index = GetParameter(RegExpConstructResultStub::kIndex); | 2066 HValue* index = GetParameter(RegExpConstructResultStub::kIndex); |
2067 HValue* input = GetParameter(RegExpConstructResultStub::kInput); | 2067 HValue* input = GetParameter(RegExpConstructResultStub::kInput); |
2068 | 2068 |
2069 // TODO(turbofan): This codestub has regressed to need a frame on ia32 at some | 2069 // TODO(turbofan): This codestub has regressed to need a frame on ia32 at some |
2070 // point and wasn't caught since it wasn't built in the snapshot. We should | 2070 // point and wasn't caught since it wasn't built in the snapshot. We should |
2071 // probably just replace with a TurboFan stub rather than fixing it. | 2071 // probably just replace with a TurboFan stub rather than fixing it. |
2072 #if !V8_TARGET_ARCH_IA32 | 2072 #if !(V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X87) |
2073 info()->MarkMustNotHaveEagerFrame(); | 2073 info()->MarkMustNotHaveEagerFrame(); |
2074 #endif | 2074 #endif |
2075 | 2075 |
2076 return BuildRegExpConstructResult(length, index, input); | 2076 return BuildRegExpConstructResult(length, index, input); |
2077 } | 2077 } |
2078 | 2078 |
2079 | 2079 |
2080 Handle<Code> RegExpConstructResultStub::GenerateCode() { | 2080 Handle<Code> RegExpConstructResultStub::GenerateCode() { |
2081 return DoGenerateCode(this); | 2081 return DoGenerateCode(this); |
2082 } | 2082 } |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2322 return Pop(); | 2322 return Pop(); |
2323 } | 2323 } |
2324 | 2324 |
2325 | 2325 |
2326 Handle<Code> KeyedLoadGenericStub::GenerateCode() { | 2326 Handle<Code> KeyedLoadGenericStub::GenerateCode() { |
2327 return DoGenerateCode(this); | 2327 return DoGenerateCode(this); |
2328 } | 2328 } |
2329 | 2329 |
2330 } // namespace internal | 2330 } // namespace internal |
2331 } // namespace v8 | 2331 } // namespace v8 |
OLD | NEW |