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.