Index: src/assembler.cc |
diff --git a/src/assembler.cc b/src/assembler.cc |
index 90d08bb6821177d179fbc0c161c5e7eae448a698..acce223582e75fb98cbe220947d2760211d15c07 100644 |
--- a/src/assembler.cc |
+++ b/src/assembler.cc |
@@ -1814,7 +1814,7 @@ int ConstantPoolBuilder::Emit(Assembler* assm) { |
if (!emitted) { |
// Mark start of constant pool. Align if necessary. |
- if (!empty) assm->Align(kDoubleSize); |
+ if (!empty) assm->DataAlign(kDoubleSize); |
assm->bind(&emitted_label_); |
if (!empty) { |
// Emit in groups based on access and type. |
@@ -1822,7 +1822,7 @@ int ConstantPoolBuilder::Emit(Assembler* assm) { |
EmitGroup(assm, ConstantPoolEntry::REGULAR, ConstantPoolEntry::DOUBLE); |
EmitGroup(assm, ConstantPoolEntry::REGULAR, ConstantPoolEntry::INTPTR); |
if (info_[ConstantPoolEntry::DOUBLE].overflow()) { |
- assm->Align(kDoubleSize); |
+ assm->DataAlign(kDoubleSize); |
EmitGroup(assm, ConstantPoolEntry::OVERFLOWED, |
ConstantPoolEntry::DOUBLE); |
} |
@@ -1871,5 +1871,13 @@ void Assembler::RecordDebugBreakSlot() { |
EnsureSpace ensure_space(this); |
RecordRelocInfo(RelocInfo::DEBUG_BREAK_SLOT); |
} |
+ |
+ |
+void Assembler::DataAlign(int m) { |
+ DCHECK(m >= 2 && base::bits::IsPowerOfTwo32(m)); |
+ while ((pc_offset() & (m - 1)) != 0) { |
+ db(0); |
+ } |
+} |
} // namespace internal |
} // namespace v8 |