Index: src/compiler/frame.h |
diff --git a/src/compiler/frame.h b/src/compiler/frame.h |
index a4d6829cfa843d8c06254cce61f6b5f0194a0fbc..2d9e5e03688a15d83cbb062a0bdb0d4544ed559b 100644 |
--- a/src/compiler/frame.h |
+++ b/src/compiler/frame.h |
@@ -111,9 +111,18 @@ class Frame : public ZoneObject { |
frame_slot_count_ += count; |
} |
- int AllocateSpillSlot(int width) { |
+ int AllocateSpillSlot(int width, int alignement = 0) { |
ahaas
2017/04/24 11:43:54
alignment
ivica.bogosavljevic
2017/04/27 13:56:56
Acknowledged.
|
int frame_slot_count_before = frame_slot_count_; |
- AllocateAlignedFrameSlots(width); |
+ if (alignement <= kPointerSize) { |
+ AllocateAlignedFrameSlots(width); |
+ } else { |
+ // We need to allocate more place for spill slot |
+ // in case we need an aligned spill slot to be |
+ // able to properly align start of spill slot |
+ // and still have enough place to hold all the |
+ // data |
+ AllocateAlignedFrameSlots(width + alignement - kPointerSize); |
+ } |
spill_slot_count_ += frame_slot_count_ - frame_slot_count_before; |
return frame_slot_count_ - 1; |
} |