| Index: src/mips/full-codegen-mips.cc
|
| diff --git a/src/mips/full-codegen-mips.cc b/src/mips/full-codegen-mips.cc
|
| index fd0f487978a3691341e978320dc3c489ad8f2407..c8239e32461c4fe675ff2aae2806e397a765fb71 100644
|
| --- a/src/mips/full-codegen-mips.cc
|
| +++ b/src/mips/full-codegen-mips.cc
|
| @@ -119,6 +119,11 @@ class JumpPatchSite BASE_EMBEDDED {
|
| };
|
|
|
|
|
| +int FullCodeGenerator::self_optimization_header_size() {
|
| + return 0; // TODO(jkummerow): determine correct value.
|
| +}
|
| +
|
| +
|
| // Generate code for a JS function. On entry to the function the receiver
|
| // and arguments have been pushed on the stack left to right. The actual
|
| // argument count matches the formal parameter count expected by the
|
| @@ -140,13 +145,6 @@ void FullCodeGenerator::Generate() {
|
| SetFunctionPosition(function());
|
| Comment cmnt(masm_, "[ function compiled by full code generator");
|
|
|
| -#ifdef DEBUG
|
| - if (strlen(FLAG_stop_at) > 0 &&
|
| - info->function()->name()->IsEqualTo(CStrVector(FLAG_stop_at))) {
|
| - __ stop("stop-at");
|
| - }
|
| -#endif
|
| -
|
| // We can optionally optimize based on counters rather than statistical
|
| // sampling.
|
| if (info->ShouldSelfOptimize()) {
|
| @@ -154,6 +152,7 @@ void FullCodeGenerator::Generate() {
|
| PrintF("[adding self-optimization header to %s]\n",
|
| *info->function()->debug_name()->ToCString());
|
| }
|
| + has_self_optimization_header_ = true;
|
| MaybeObject* maybe_cell = isolate()->heap()->AllocateJSGlobalPropertyCell(
|
| Smi::FromInt(Compiler::kCallsUntilPrimitiveOpt));
|
| JSGlobalPropertyCell* cell;
|
| @@ -165,9 +164,17 @@ void FullCodeGenerator::Generate() {
|
| Handle<Code> compile_stub(
|
| isolate()->builtins()->builtin(Builtins::kLazyRecompile));
|
| __ Jump(compile_stub, RelocInfo::CODE_TARGET, eq, a3, Operand(zero_reg));
|
| + ASSERT(masm_->pc_offset() == self_optimization_header_size());
|
| }
|
| }
|
|
|
| +#ifdef DEBUG
|
| + if (strlen(FLAG_stop_at) > 0 &&
|
| + info->function()->name()->IsEqualTo(CStrVector(FLAG_stop_at))) {
|
| + __ stop("stop-at");
|
| + }
|
| +#endif
|
| +
|
| // 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
|
|
|