Commit d9b31caa authored by jacob.bramley@arm.com's avatar jacob.bramley@arm.com

A64: Fix r19474: Tidy up Push and Pop TODOs.

This fixes some snapshot=off, debug-mode regressions.

  - Call CheckConstPool when entering InsturctionAccurateScopes. This
    fixes a problem in PushMultipleTimes where 'count' is very high.
    Each call to PushHelper starts an InstructionAccurateScope
    immediately after the last one finishes, with no opportunity for the
    constant pool to be generated.

  - Temporarily disable AssertStackConsistency in PrepareForPush. This
    assertion seems to push the code size too far, and several cctests
    (intermittently) fail due to buffer size limitations. I would like
    to renable this assertion later.

BUG=
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/172453002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19491 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 0d34254f
......@@ -1079,7 +1079,8 @@ void MacroAssembler::PopHelper(int count, int size,
void MacroAssembler::PrepareForPush(Operand total_size) {
AssertStackConsistency();
// TODO(jbramley): This assertion generates too much code in some debug tests.
// AssertStackConsistency();
if (csp.Is(StackPointer())) {
// If the current stack pointer is csp, then it must be aligned to 16 bytes
// on entry and the total size of the specified registers must also be a
......
......@@ -2167,6 +2167,9 @@ class InstructionAccurateScope BASE_EMBEDDED {
public:
InstructionAccurateScope(MacroAssembler* masm, size_t count = 0)
: masm_(masm), size_(count * kInstructionSize) {
// Before blocking the const pool, see if it needs to be emitted.
masm_->CheckConstPool(false, true);
masm_->StartBlockConstPool();
#ifdef DEBUG
if (count != 0) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment