MIPS: Count-based profiling for primitive functions (hidden behind a flag)
Port r10657 (92073cf). BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9383003 Patch from Daniel Kalmar <kalmard@homejinni.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10677 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
384cc7fce2
commit
7c695dcfa9
@ -1,4 +1,4 @@
|
||||
// Copyright 2011 the V8 project authors. All rights reserved.
|
||||
// Copyright 2012 the V8 project authors. All rights reserved.
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
@ -149,6 +149,27 @@ void FullCodeGenerator::Generate(CompilationInfo* info) {
|
||||
}
|
||||
#endif
|
||||
|
||||
// We can optionally optimize based on counters rather than statistical
|
||||
// sampling.
|
||||
if (info->ShouldSelfOptimize()) {
|
||||
if (FLAG_trace_opt) {
|
||||
PrintF("[adding self-optimization header to %s]\n",
|
||||
*info->function()->debug_name()->ToCString());
|
||||
}
|
||||
MaybeObject* maybe_cell = isolate()->heap()->AllocateJSGlobalPropertyCell(
|
||||
Smi::FromInt(Compiler::kCallsUntilPrimitiveOpt));
|
||||
JSGlobalPropertyCell* cell;
|
||||
if (maybe_cell->To(&cell)) {
|
||||
__ li(a2, Handle<JSGlobalPropertyCell>(cell));
|
||||
__ lw(a3, FieldMemOperand(a2, JSGlobalPropertyCell::kValueOffset));
|
||||
__ Subu(a3, a3, Operand(Smi::FromInt(1)));
|
||||
__ sw(a3, FieldMemOperand(a2, JSGlobalPropertyCell::kValueOffset));
|
||||
Handle<Code> compile_stub(
|
||||
isolate()->builtins()->builtin(Builtins::kLazyRecompile));
|
||||
__ Jump(compile_stub, RelocInfo::CODE_TARGET, eq, a3, Operand(zero_reg));
|
||||
}
|
||||
}
|
||||
|
||||
// Strict mode functions and builtins need to replace the receiver
|
||||
// with undefined when called as functions (without an explicit
|
||||
// receiver object). t1 is zero for method calls and non-zero for
|
||||
|
Loading…
Reference in New Issue
Block a user