summaryrefslogtreecommitdiff
path: root/deps/v8/src/arm
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2012-02-27 13:43:31 -0800
committerisaacs <i@izs.me>2012-02-27 13:43:31 -0800
commit2e24ded6d23c58c97d3559bbfb37872b3981bc55 (patch)
tree94734cc8855253dda8314a09ddd24f8c6473ec5a /deps/v8/src/arm
parentfde26002f176b4da87cc60bdb1b59b1d45c6a901 (diff)
downloadnode-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.cc21
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