WARNING! Access to this system is limited to authorised users only.
Unauthorised users may be subject to prosecution.
Unauthorised access to this system is a criminal offence under Australian law (Federal Crimes Act 1914 Part VIA)
It is a criminal offence to:
(1) Obtain access to data without authority. -Penalty 2 years imprisonment.
(2) Damage, delete, alter or insert data without authority. -Penalty 10 years imprisonment.
User activity is monitored and recorded. Anyone using this system expressly consents to such monitoring and recording.

Commit c9a83f74 authored by qinsoon's avatar qinsoon
Browse files

spilled variables are properly aligned on stack as well

parent 3b88ae36
......@@ -103,16 +103,37 @@ impl Frame {
trace!("add exception callsite: {} to dest {}", callsite, dest);
self.exception_callsites.push((callsite, dest));
}
#[cfg(target_arch = "x86_64")]
fn alloc_slot(&mut self, val: &P<Value>, vm: &VM) -> &FrameSlot {
// RBP is 16 bytes aligned, we are offsetting from RBP
// every value should be properly aligned
let backendty = vm.get_backend_type_info(val.ty.id());
if backendty.alignment > 16 {
unimplemented!()
}
self.cur_offset -= backendty.size as isize;
{
// if alignment doesnt satisfy, make adjustment
let abs_offset = self.cur_offset.abs() as usize;
if abs_offset % backendty.alignment != 0 {
use utils::math;
let abs_offset = math::align_up(abs_offset, backendty.alignment);
self.cur_offset = -(abs_offset as isize);
}
}
let id = val.id();
let ret = FrameSlot {
offset: self.cur_offset,
value: val.clone()
};
self.cur_offset -= vm.get_type_size(val.ty.id()) as isize;
self.allocated.insert(id, ret);
self.allocated.get(&id).unwrap()
}
......
......@@ -1158,7 +1158,7 @@ def test_rpytarget_richards():
res = run_boot_image(main, '/tmp/test_richards-mu', args=['5'])
assert res.returncode == 0, res.err
@pytest.mark.xfail(reason='printing time fails')
@pytest.mark.xfail(reason='Segment Fault')
@may_spawn_proc
def test_rpytarget_richards_measure_time():
from rpython.translator.goal.richards import entry_point
......@@ -1172,7 +1172,6 @@ def test_rpytarget_richards_measure_time():
res = run_boot_image(main, '/tmp/test_richards_measure_time-mu', args=['5'])
assert res.returncode == 0, res.err
@pytest.mark.xfail(reason='ValueError exception, probably formatting fails')
@may_spawn_proc
def test_rpython_print_time():
import time
......
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