diff options
author | isaacs <i@izs.me> | 2012-02-27 13:43:31 -0800 |
---|---|---|
committer | isaacs <i@izs.me> | 2012-02-27 13:43:31 -0800 |
commit | 2e24ded6d23c58c97d3559bbfb37872b3981bc55 (patch) | |
tree | 94734cc8855253dda8314a09ddd24f8c6473ec5a /deps/v8/src/arm | |
parent | fde26002f176b4da87cc60bdb1b59b1d45c6a901 (diff) | |
download | node-new-2e24ded6d23c58c97d3559bbfb37872b3981bc55.tar.gz |
Upgrade v8 to 3.9.11
Diffstat (limited to 'deps/v8/src/arm')
-rw-r--r-- | deps/v8/src/arm/full-codegen-arm.cc | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/deps/v8/src/arm/full-codegen-arm.cc b/deps/v8/src/arm/full-codegen-arm.cc index b48e842be7..51e9208332 100644 --- a/deps/v8/src/arm/full-codegen-arm.cc +++ b/deps/v8/src/arm/full-codegen-arm.cc @@ -109,6 +109,11 @@ class JumpPatchSite BASE_EMBEDDED { }; +int FullCodeGenerator::self_optimization_header_size() { + return 24; +} + + // 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 @@ -130,13 +135,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()) { @@ -144,6 +142,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; @@ -155,9 +154,17 @@ void FullCodeGenerator::Generate() { Handle<Code> compile_stub( isolate()->builtins()->builtin(Builtins::kLazyRecompile)); __ Jump(compile_stub, RelocInfo::CODE_TARGET, eq); + 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). r5 is zero for method calls and non-zero for |