Revision: 19235
Author: [email protected]
Date: Mon Feb 10 16:34:03 2014 UTC
Log: 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
Review URL: https://codereview.chromium.org/155723004
http://code.google.com/p/v8/source/detail?r=19235
Modified:
/branches/experimental/a64/src/a64/lithium-codegen-a64.cc
=======================================
--- /branches/experimental/a64/src/a64/lithium-codegen-a64.cc Mon Feb 10
15:37:43 2014 UTC
+++ /branches/experimental/a64/src/a64/lithium-codegen-a64.cc Mon Feb 10
16:34:03 2014 UTC
@@ -981,14 +981,25 @@
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) {
+ 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(gt, ¬_zero);
+ __ Mov(w1, FLAG_deopt_every_n_times);
+ __ Str(w1, MemOperand(x0));
+ __ Pop(x0, x1);
ASSERT(frame_is_built_);
__ Call(entry, RelocInfo::RUNTIME_ENTRY);
- return false;
+ __ Unreachable();
+
+ __ Bind(¬_zero);
+ __ Str(w1, MemOperand(x0));
+ __ Pop(x0, x1);
}
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.