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/code-factory.h" | 7 #include "src/code-factory.h" |
8 #include "src/codegen.h" | 8 #include "src/codegen.h" |
9 #include "src/deoptimizer.h" | 9 #include "src/deoptimizer.h" |
10 #include "src/full-codegen/full-codegen.h" | 10 #include "src/full-codegen/full-codegen.h" |
(...skipping 2600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2611 RelocInfo::CODE_TARGET); | 2611 RelocInfo::CODE_TARGET); |
2612 } | 2612 } |
2613 | 2613 |
2614 // Called Construct on an Object that doesn't have a [[Construct]] internal | 2614 // Called Construct on an Object that doesn't have a [[Construct]] internal |
2615 // method. | 2615 // method. |
2616 __ bind(&non_constructor); | 2616 __ bind(&non_constructor); |
2617 __ Jump(masm->isolate()->builtins()->ConstructedNonConstructable(), | 2617 __ Jump(masm->isolate()->builtins()->ConstructedNonConstructable(), |
2618 RelocInfo::CODE_TARGET); | 2618 RelocInfo::CODE_TARGET); |
2619 } | 2619 } |
2620 | 2620 |
2621 // static | |
2622 void Builtins::Generate_AllocateInNewSpace(MacroAssembler* masm) { | |
2623 // ----------- S t a t e ------------- | |
2624 // -- edx : requested object size (tagged) | |
2625 // -- esi : context | |
2626 // ----------------------------------- | |
2627 __ AssertSmi(edx); | |
2628 | |
2629 Label runtime; | |
2630 __ SmiUntag(edx); | |
2631 __ Allocate(edx, eax, ecx, edi, &runtime, NO_ALLOCATION_FLAGS); | |
2632 __ Ret(); | |
2633 | |
2634 __ bind(&runtime); | |
2635 __ SmiTag(edx); | |
2636 __ PopReturnAddressTo(ecx); | |
2637 __ Push(edx); | |
2638 __ PushReturnAddressFrom(ecx); | |
2639 __ TailCallRuntime(Runtime::kAllocateInNewSpace); | |
2640 } | |
2641 | |
2642 // static | |
2643 void Builtins::Generate_AllocateInOldSpace(MacroAssembler* masm) { | |
2644 // ----------- S t a t e ------------- | |
2645 // -- edx : requested object size (tagged) | |
2646 // -- esi : context | |
2647 // ----------------------------------- | |
2648 __ AssertSmi(edx); | |
2649 | |
2650 Label runtime; | |
2651 __ SmiUntag(edx); | |
2652 __ Allocate(edx, eax, ecx, edi, &runtime, PRETENURE); | |
2653 __ Ret(); | |
2654 | |
2655 __ bind(&runtime); | |
2656 __ SmiTag(edx); | |
2657 __ PopReturnAddressTo(ecx); | |
2658 __ Push(edx); | |
2659 __ Push(Smi::FromInt(AllocateTargetSpace::encode(OLD_SPACE))); | |
2660 __ PushReturnAddressFrom(ecx); | |
2661 __ TailCallRuntime(Runtime::kAllocateInTargetSpace); | |
2662 } | |
2663 | 2621 |
2664 void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) { | 2622 void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) { |
2665 // ----------- S t a t e ------------- | 2623 // ----------- S t a t e ------------- |
2666 // -- eax : actual number of arguments | 2624 // -- eax : actual number of arguments |
2667 // -- ebx : expected number of arguments | 2625 // -- ebx : expected number of arguments |
2668 // -- edx : new target (passed through to callee) | 2626 // -- edx : new target (passed through to callee) |
2669 // -- edi : function (passed through to callee) | 2627 // -- edi : function (passed through to callee) |
2670 // ----------------------------------- | 2628 // ----------------------------------- |
2671 | 2629 |
2672 Label invoke, dont_adapt_arguments, stack_overflow; | 2630 Label invoke, dont_adapt_arguments, stack_overflow; |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2912 // And "return" to the OSR entry point of the function. | 2870 // And "return" to the OSR entry point of the function. |
2913 __ ret(0); | 2871 __ ret(0); |
2914 } | 2872 } |
2915 | 2873 |
2916 | 2874 |
2917 #undef __ | 2875 #undef __ |
2918 } // namespace internal | 2876 } // namespace internal |
2919 } // namespace v8 | 2877 } // namespace v8 |
2920 | 2878 |
2921 #endif // V8_TARGET_ARCH_IA32 | 2879 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |