Reviewers: Rodolph Perfetta (ARM), ulan,

Description:
A64: Add support for --deopt-every-n-times for n != 2

To match arm, the DeoptimizeIf*() methods need to invoke the
DeoptimizeHeader() method explicitly, so we do the check even if the
condition does not hold.

BUG=none
[email protected],[email protected]
LOG=n

Please review this at https://codereview.chromium.org/155723004/

SVN Base: https://v8.googlecode.com/svn/branches/experimental/a64

Affected files (+17, -6 lines):
  M src/a64/lithium-codegen-a64.cc


Index: src/a64/lithium-codegen-a64.cc
diff --git a/src/a64/lithium-codegen-a64.cc b/src/a64/lithium-codegen-a64.cc
index eaeb9cee9041b2c621d0af99082553167904fe99..e8d4579d171793c62c97c8155fe6be6de5364a04 100644
--- a/src/a64/lithium-codegen-a64.cc
+++ b/src/a64/lithium-codegen-a64.cc
@@ -958,14 +958,25 @@ bool LCodeGen::DeoptimizeHeader(LEnvironment* environment) {
     return false;
   }

- ASSERT(FLAG_deopt_every_n_times < 2); // Other values not supported on A64.
-  TODO_UNIMPLEMENTED("Support for FLAG_deopt_every_n_times >= 2.");
-  if (FLAG_deopt_every_n_times == 1 &&
-      !info()->IsStub() &&
-      info()->opt_count() == id) {
-    ASSERT(frame_is_built_);
+  if (FLAG_deopt_every_n_times != 0 && !info()->IsStub()) {
+    Label not_zero;
+ ExternalReference count = ExternalReference::stress_deopt_count(isolate());
+
+    __ Push(x0, x1);
+    __ Mov(x0, Operand(count));
+    __ Ldr(w1, MemOperand(x0));
+    __ Subs(x1, x1, 1);
+    __ B(ge, &not_zero);
+    __ Mov(w1, FLAG_deopt_every_n_times);
+    __ Str(w1, MemOperand(x0));
+    __ Pop(x0, x1);
     __ Call(entry, RelocInfo::RUNTIME_ENTRY);
     return false;
+
+    __ Bind(not_zero);
+    __ Str(w1, MemOperand(x0));
+    __ Pop(x0, x1);
+    return true;
   }

   return true;


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to