MIPS: port Remove in-loop tracking for call ICs.
port r9260 (af9cfd83). Original commit message: We passed this flag around in a lot of places and had differenc call ICs based on it, but never did any real specialization based on its value. BUG= TEST= Committed: http://code.google.com/p/v8/source/detail?r=9269 Review URL: http://codereview.chromium.org/7886028 Patch from Paul Lind <plind44@gmail.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9271 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
63bec78428
commit
7f28e975e5
@ -2042,9 +2042,8 @@ void FullCodeGenerator::EmitCallWithIC(Call* expr,
|
|||||||
// Record source position for debugger.
|
// Record source position for debugger.
|
||||||
SetSourcePosition(expr->position());
|
SetSourcePosition(expr->position());
|
||||||
// Call the IC initialization code.
|
// Call the IC initialization code.
|
||||||
InLoopFlag in_loop = (loop_depth() > 0) ? IN_LOOP : NOT_IN_LOOP;
|
|
||||||
Handle<Code> ic =
|
Handle<Code> ic =
|
||||||
isolate()->stub_cache()->ComputeCallInitialize(arg_count, in_loop, mode);
|
isolate()->stub_cache()->ComputeCallInitialize(arg_count, mode);
|
||||||
__ Call(ic, mode, expr->id());
|
__ Call(ic, mode, expr->id());
|
||||||
RecordJSReturnSite(expr);
|
RecordJSReturnSite(expr);
|
||||||
// Restore context register.
|
// Restore context register.
|
||||||
@ -2075,9 +2074,8 @@ void FullCodeGenerator::EmitKeyedCallWithIC(Call* expr,
|
|||||||
// Record source position for debugger.
|
// Record source position for debugger.
|
||||||
SetSourcePosition(expr->position());
|
SetSourcePosition(expr->position());
|
||||||
// Call the IC initialization code.
|
// Call the IC initialization code.
|
||||||
InLoopFlag in_loop = (loop_depth() > 0) ? IN_LOOP : NOT_IN_LOOP;
|
|
||||||
Handle<Code> ic =
|
Handle<Code> ic =
|
||||||
isolate()->stub_cache()->ComputeKeyedCallInitialize(arg_count, in_loop);
|
isolate()->stub_cache()->ComputeKeyedCallInitialize(arg_count);
|
||||||
__ lw(a2, MemOperand(sp, (arg_count + 1) * kPointerSize)); // Key.
|
__ lw(a2, MemOperand(sp, (arg_count + 1) * kPointerSize)); // Key.
|
||||||
__ Call(ic, RelocInfo::CODE_TARGET, expr->id());
|
__ Call(ic, RelocInfo::CODE_TARGET, expr->id());
|
||||||
RecordJSReturnSite(expr);
|
RecordJSReturnSite(expr);
|
||||||
@ -2098,8 +2096,7 @@ void FullCodeGenerator::EmitCallWithStub(Call* expr, CallFunctionFlags flags) {
|
|||||||
}
|
}
|
||||||
// Record source position for debugger.
|
// Record source position for debugger.
|
||||||
SetSourcePosition(expr->position());
|
SetSourcePosition(expr->position());
|
||||||
InLoopFlag in_loop = (loop_depth() > 0) ? IN_LOOP : NOT_IN_LOOP;
|
CallFunctionStub stub(arg_count, flags);
|
||||||
CallFunctionStub stub(arg_count, in_loop, flags);
|
|
||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
RecordJSReturnSite(expr);
|
RecordJSReturnSite(expr);
|
||||||
// Restore context register.
|
// Restore context register.
|
||||||
@ -2197,8 +2194,7 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
|||||||
}
|
}
|
||||||
// Record source position for debugger.
|
// Record source position for debugger.
|
||||||
SetSourcePosition(expr->position());
|
SetSourcePosition(expr->position());
|
||||||
InLoopFlag in_loop = (loop_depth() > 0) ? IN_LOOP : NOT_IN_LOOP;
|
CallFunctionStub stub(arg_count, RECEIVER_MIGHT_BE_IMPLICIT);
|
||||||
CallFunctionStub stub(arg_count, in_loop, RECEIVER_MIGHT_BE_IMPLICIT);
|
|
||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
RecordJSReturnSite(expr);
|
RecordJSReturnSite(expr);
|
||||||
// Restore context register.
|
// Restore context register.
|
||||||
@ -3574,9 +3570,7 @@ void FullCodeGenerator::VisitCallRuntime(CallRuntime* expr) {
|
|||||||
__ li(a2, Operand(expr->name()));
|
__ li(a2, Operand(expr->name()));
|
||||||
RelocInfo::Mode mode = RelocInfo::CODE_TARGET;
|
RelocInfo::Mode mode = RelocInfo::CODE_TARGET;
|
||||||
Handle<Code> ic =
|
Handle<Code> ic =
|
||||||
isolate()->stub_cache()->ComputeCallInitialize(arg_count,
|
isolate()->stub_cache()->ComputeCallInitialize(arg_count, mode);
|
||||||
NOT_IN_LOOP,
|
|
||||||
mode);
|
|
||||||
__ Call(ic, mode, expr->id());
|
__ Call(ic, mode, expr->id());
|
||||||
// Restore context register.
|
// Restore context register.
|
||||||
__ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
__ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
|
@ -395,7 +395,6 @@ static void GenerateMonomorphicCacheProbe(MacroAssembler* masm,
|
|||||||
|
|
||||||
// Probe the stub cache.
|
// Probe the stub cache.
|
||||||
Code::Flags flags = Code::ComputeFlags(kind,
|
Code::Flags flags = Code::ComputeFlags(kind,
|
||||||
NOT_IN_LOOP,
|
|
||||||
MONOMORPHIC,
|
MONOMORPHIC,
|
||||||
extra_ic_state,
|
extra_ic_state,
|
||||||
NORMAL,
|
NORMAL,
|
||||||
@ -732,9 +731,7 @@ void LoadIC::GenerateMegamorphic(MacroAssembler* masm) {
|
|||||||
// -----------------------------------
|
// -----------------------------------
|
||||||
|
|
||||||
// Probe the stub cache.
|
// Probe the stub cache.
|
||||||
Code::Flags flags = Code::ComputeFlags(Code::LOAD_IC,
|
Code::Flags flags = Code::ComputeFlags(Code::LOAD_IC, MONOMORPHIC);
|
||||||
NOT_IN_LOOP,
|
|
||||||
MONOMORPHIC);
|
|
||||||
Isolate::Current()->stub_cache()->GenerateProbe(
|
Isolate::Current()->stub_cache()->GenerateProbe(
|
||||||
masm, flags, a0, a2, a3, t0, t1);
|
masm, flags, a0, a2, a3, t0, t1);
|
||||||
|
|
||||||
@ -1395,10 +1392,8 @@ void StoreIC::GenerateMegamorphic(MacroAssembler* masm,
|
|||||||
// -----------------------------------
|
// -----------------------------------
|
||||||
|
|
||||||
// Get the receiver from the stack and probe the stub cache.
|
// Get the receiver from the stack and probe the stub cache.
|
||||||
Code::Flags flags = Code::ComputeFlags(Code::STORE_IC,
|
Code::Flags flags =
|
||||||
NOT_IN_LOOP,
|
Code::ComputeFlags(Code::STORE_IC, MONOMORPHIC, strict_mode);
|
||||||
MONOMORPHIC,
|
|
||||||
strict_mode);
|
|
||||||
Isolate::Current()->stub_cache()->GenerateProbe(
|
Isolate::Current()->stub_cache()->GenerateProbe(
|
||||||
masm, flags, a1, a2, a3, t0, t1);
|
masm, flags, a1, a2, a3, t0, t1);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user