PPC: [turbofan] Run everything after representation selection concurrently.

Port d1b3d426ce

Original commit message:

    Further refactor the pipeline to even run the first scheduler (part of
    the effect control linearization) concurrently. This temporarily
    disables most of the write barrier elimination, but we will get back to
    that later.

    Drive-by-fix: Remove the dead code from ChangeLowering, and stack
    allocate the Typer in the pipeline. Also migrate the AllocateStub to a
    native code builtin, so that we have the code object + a handle to it
    available all the time.

R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=v8:4969
LOG=N

Review-Url: https://codereview.chromium.org/1941613002
Cr-Commit-Position: refs/heads/master@{#35938}
This commit is contained in:
bjaideep 2016-05-02 07:51:39 -07:00 committed by Commit bot
parent 37ca108f90
commit 98b074cb41
3 changed files with 35 additions and 7 deletions

View File

@ -2734,6 +2734,40 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
RelocInfo::CODE_TARGET);
}
// static
void Builtins::Generate_AllocateInNewSpace(MacroAssembler* masm) {
// ----------- S t a t e -------------
// -- r4 : requested object size (untagged)
// -- lr : return address
// -----------------------------------
Label runtime;
__ Allocate(r4, r3, r5, r6, &runtime, NO_ALLOCATION_FLAGS);
__ Ret();
__ bind(&runtime);
__ SmiTag(r4);
__ Push(r4);
__ LoadSmiLiteral(cp, Smi::FromInt(0));
__ TailCallRuntime(Runtime::kAllocateInNewSpace);
}
// static
void Builtins::Generate_AllocateInOldSpace(MacroAssembler* masm) {
// ----------- S t a t e -------------
// -- r4 : requested object size (untagged)
// -- lr : return address
// -----------------------------------
Label runtime;
__ Allocate(r4, r3, r5, r6, &runtime, PRETENURE);
__ Ret();
__ bind(&runtime);
__ SmiTag(r4);
__ LoadSmiLiteral(r5, Smi::FromInt(AllocateTargetSpace::encode(OLD_SPACE)));
__ Push(r4, r5);
__ LoadSmiLiteral(cp, Smi::FromInt(0));
__ TailCallRuntime(Runtime::kAllocateInTargetSpace);
}
void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) {
// ----------- S t a t e -------------

View File

@ -243,13 +243,6 @@ void AllocateHeapNumberDescriptor::InitializePlatformSpecific(
SIMD128_TYPES(SIMD128_ALLOC_DESC)
#undef SIMD128_ALLOC_DESC
void AllocateDescriptor::InitializePlatformSpecific(
CallInterfaceDescriptorData* data) {
Register registers[] = {r3};
data->InitializePlatformSpecific(arraysize(registers), registers);
}
void ArrayConstructorConstantArgCountDescriptor::InitializePlatformSpecific(
CallInterfaceDescriptorData* data) {
// register state

View File

@ -19,6 +19,7 @@ const Register kReturnRegister1 = {Register::kCode_r4};
const Register kReturnRegister2 = {Register::kCode_r5};
const Register kJSFunctionRegister = {Register::kCode_r4};
const Register kContextRegister = {Register::kCode_r30};
const Register kAllocateSizeRegister = {Register::kCode_r4};
const Register kInterpreterAccumulatorRegister = {Register::kCode_r3};
const Register kInterpreterBytecodeOffsetRegister = {Register::kCode_r15};
const Register kInterpreterBytecodeArrayRegister = {Register::kCode_r16};