Reviewers: jochen, ulan,

Description:
A64: Let the Simulator trap BLR XZR instructions.

This instruction is used as a guard for the constant pool.

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

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+5, -0 lines):
  M src/a64/simulator-a64.cc


Index: src/a64/simulator-a64.cc
diff --git a/src/a64/simulator-a64.cc b/src/a64/simulator-a64.cc
index e0a0d62a02a695128f50cbc2821c2c776e89401e..014b71477def993b76a8d1c6d953b8c0b67403fe 100644
--- a/src/a64/simulator-a64.cc
+++ b/src/a64/simulator-a64.cc
@@ -986,6 +986,11 @@ void Simulator::VisitUnconditionalBranchToRegister(Instruction* instr) {
   switch (instr->Mask(UnconditionalBranchToRegisterMask)) {
     case BLR: {
       set_lr(instr->NextInstruction());
+      if (instr->Rn() == 31) {
+ // BLR XZR is used as a guard for the constant pool. We should never hit
+        // this, but if we do trap to allow debugging.
+        Debug();
+      }
       // Fall through.
     }
     case BR:


--
--
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