Revision: 19218
Author:   [email protected]
Date:     Mon Feb 10 10:23:48 2014 UTC
Log:      A64: Implement pre-aging support for A64.

[email protected]

Review URL: https://codereview.chromium.org/139503006
http://code.google.com/p/v8/source/detail?r=19218

Modified:
 /branches/experimental/a64/src/a64/builtins-a64.cc
 /branches/experimental/a64/src/a64/macro-assembler-a64.cc
 /branches/experimental/a64/src/a64/macro-assembler-a64.h

=======================================
--- /branches/experimental/a64/src/a64/builtins-a64.cc Fri Feb 7 17:37:38 2014 UTC +++ /branches/experimental/a64/src/a64/builtins-a64.cc Mon Feb 10 10:23:48 2014 UTC
@@ -839,7 +839,8 @@
     __ Push(x0, x1, fp, lr);
__ Mov(x1, Operand(ExternalReference::isolate_address(masm->isolate())));
     __ CallCFunction(
- ExternalReference::get_make_code_young_function(masm->isolate()), 2);
+        ExternalReference::get_mark_code_as_executed_function(
+            masm->isolate()), 2);
     __ Pop(lr, fp, x1, x0);

// Perform prologue operations usually performed by the young code stub.
=======================================
--- /branches/experimental/a64/src/a64/macro-assembler-a64.cc Fri Feb 7 21:04:58 2014 UTC +++ /branches/experimental/a64/src/a64/macro-assembler-a64.cc Mon Feb 10 10:23:48 2014 UTC
@@ -2600,8 +2600,12 @@
     __ Push(lr, fp, cp, Tmp0());
     __ Add(fp, jssp, StandardFrameConstants::kFixedFrameSizeFromFp);
   } else {
-    TODO_UNIMPLEMENTED("Prologue: Support IsCodePreAgingActive().");
-    __ EmitFrameSetupForCodeAgePatching();
+    if (isolate()->IsCodePreAgingActive()) {
+      Code* stub = Code::GetPreAgedCodeAgeStub(isolate());
+      __ EmitCodeAgeSequence(stub);
+    } else {
+      __ EmitFrameSetupForCodeAgePatching();
+    }
   }
 }

@@ -4666,6 +4670,14 @@
 }


+
+void MacroAssembler::EmitCodeAgeSequence(Code* stub) {
+ InstructionAccurateScope scope(this, kCodeAgeSequenceSize / kInstructionSize);
+  ASSERT(jssp.Is(StackPointer()));
+  EmitCodeAgeSequence(this, stub);
+}
+
+
 #undef __
 #define __ assm->

@@ -4688,7 +4700,7 @@
 }


-void MacroAssembler::EmitCodeAgeSequence(PatchingAssembler * assm,
+void MacroAssembler::EmitCodeAgeSequence(Assembler * assm,
                                          Code * stub) {
   Label start;
   __ bind(&start);
=======================================
--- /branches/experimental/a64/src/a64/macro-assembler-a64.h Fri Feb 7 21:04:58 2014 UTC +++ /branches/experimental/a64/src/a64/macro-assembler-a64.h Mon Feb 10 10:23:48 2014 UTC
@@ -1945,7 +1945,7 @@
   //
   // This function takes an Assembler so it can be called from either a
   // MacroAssembler or a PatchingAssembler context.
-  static void EmitFrameSetupForCodeAgePatching(Assembler * assm);
+  static void EmitFrameSetupForCodeAgePatching(Assembler* assm);

   // Call EmitFrameSetupForCodeAgePatching from a MacroAssembler context.
   void EmitFrameSetupForCodeAgePatching();
@@ -1954,13 +1954,13 @@
// generated by this sequence is expected to replace the code generated by
   // EmitFrameSetupForCodeAgePatching, and represents an old function.
   //
- // It never makes sense to call this other than in a patching context, so this
-  // method only accepts a PatchingAssembler.
-  //
// If stub is NULL, this function generates the code age sequence but omits // the stub address that is normally embedded in the instruction stream. This
   // can be used by debug code to verify code age sequences.
-  static void EmitCodeAgeSequence(PatchingAssembler * assm, Code * stub);
+  static void EmitCodeAgeSequence(Assembler* assm, Code* stub);
+
+  // Call EmitCodeAgeSequence from a MacroAssembler context.
+  void EmitCodeAgeSequence(Code* stub);

   // Return true if the sequence is a young sequence geneated by
// EmitFrameSetupForCodeAgePatching. Otherwise, this method asserts that the

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