MIPS: Allow function inlining with context change.
Port r17019 (cd4b69cd) BUG= R=jkummerow@chromium.org, plind44@gmail.com Review URL: https://codereview.chromium.org/25622003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17070 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
9d732d6594
commit
4b9a9f7af7
@ -6366,7 +6366,7 @@ bool HOptimizedGraphBuilder::TryInline(CallKind call_kind,
|
||||
return false;
|
||||
}
|
||||
|
||||
#if !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM
|
||||
#if !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_MIPS
|
||||
// Target must be able to use caller's context.
|
||||
CompilationInfo* outer_info = current_info();
|
||||
if (target->context() != outer_info->closure()->context() ||
|
||||
@ -6515,9 +6515,9 @@ bool HOptimizedGraphBuilder::TryInline(CallKind call_kind,
|
||||
undefined,
|
||||
function_state()->inlining_kind(),
|
||||
undefined_receiver);
|
||||
#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM
|
||||
// IA32 and ARM only, overwrite the caller's context in the deoptimization
|
||||
// environment with the correct one.
|
||||
#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS
|
||||
// IA32, ARM and MIPS only, overwrite the caller's context in the
|
||||
// deoptimization environment with the correct one.
|
||||
//
|
||||
// TODO(kmillikin): implement the same inlining on other platforms so we
|
||||
// can remove the unsightly ifdefs in this function.
|
||||
|
@ -732,6 +732,10 @@ void LCodeGen::LoadContextFromDeferred(LOperand* context) {
|
||||
__ Move(cp, ToRegister(context));
|
||||
} else if (context->IsStackSlot()) {
|
||||
__ lw(cp, ToMemOperand(context));
|
||||
} else if (context->IsConstantOperand()) {
|
||||
HConstant* constant =
|
||||
chunk_->LookupConstant(LConstantOperand::cast(context));
|
||||
__ LoadObject(cp, Handle<Object>::cast(constant->handle(isolate())));
|
||||
} else {
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user