-
Notifications
You must be signed in to change notification settings - Fork 40
Open
Labels
Description
The following effekt program is not running. I need to get this test program running to my thesis.
record OneSlotPerson(
field1: Int,
field2: Int,
field3: Int,
field4: Int,
field5: Int,
field6: Int
)
// we first allocate 128 slots and then release them all, such that we have exactly 128 slots on the to-do-list
// therefore, we have to flush the to-do list twice to clear it completely
def allocate128SlotsAndReleaseThem() = {
var x1 = OneSlotPerson(1, 2, 3, 4, 5, 6)
var x2 = OneSlotPerson(2, 3, 4, 5, 6, 7)
var x3 = OneSlotPerson(3, 4, 5, 6, 7, 8)
var x4 = OneSlotPerson(4, 5, 6, 7, 8, 9)
var x5 = OneSlotPerson(5, 6, 7, 8, 9, 10)
var x6 = OneSlotPerson(6, 7, 8, 9, 10, 11)
var x7 = OneSlotPerson(7, 8, 9, 10, 11, 12)
var x8 = OneSlotPerson(8, 9, 10, 11, 12, 13)
var x9 = OneSlotPerson(9, 10, 11, 12, 13, 14)
var x10 = OneSlotPerson(10, 11, 12, 13, 14, 15)
var x11 = OneSlotPerson(11, 12, 13, 14, 15, 16)
var x12 = OneSlotPerson(12, 13, 14, 15, 16, 17)
var x13 = OneSlotPerson(13, 14, 15, 16, 17, 18)
var x14 = OneSlotPerson(14, 15, 16, 17, 18, 19)
var x15 = OneSlotPerson(15, 16, 17, 18, 19, 20)
var x16 = OneSlotPerson(16, 17, 18, 19, 20, 21)
var x17 = OneSlotPerson(17, 18, 19, 20, 21, 22)
var x18 = OneSlotPerson(18, 19, 20, 21, 22, 23)
var x19 = OneSlotPerson(19, 20, 21, 22, 23, 24)
var x20 = OneSlotPerson(20, 21, 22, 23, 24, 25)
var x21 = OneSlotPerson(21, 22, 23, 24, 25, 26)
var x22 = OneSlotPerson(22, 23, 24, 25, 26, 27)
var x23 = OneSlotPerson(23, 24, 25, 26, 27, 28)
var x24 = OneSlotPerson(24, 25, 26, 27, 28, 29)
var x25 = OneSlotPerson(25, 26, 27, 28, 29, 30)
var x26 = OneSlotPerson(26, 27, 28, 29, 30, 31)
var x27 = OneSlotPerson(27, 28, 29, 30, 31, 32)
var x28 = OneSlotPerson(28, 29, 30, 31, 32, 33)
var x29 = OneSlotPerson(29, 30, 31, 32, 33, 34)
var x30 = OneSlotPerson(30, 31, 32, 33, 34, 35)
var x31 = OneSlotPerson(31, 32, 33, 34, 35, 36)
var x32 = OneSlotPerson(32, 33, 34, 35, 36, 37)
var x33 = OneSlotPerson(33, 34, 35, 36, 37, 38)
var x34 = OneSlotPerson(34, 35, 36, 37, 38, 39)
var x35 = OneSlotPerson(35, 36, 37, 38, 39, 40)
var x36 = OneSlotPerson(36, 37, 38, 39, 40, 41)
var x37 = OneSlotPerson(37, 38, 39, 40, 41, 42)
var x38 = OneSlotPerson(38, 39, 40, 41, 42, 43)
var x39 = OneSlotPerson(39, 40, 41, 42, 43, 44)
var x40 = OneSlotPerson(40, 41, 42, 43, 44, 45)
var x41 = OneSlotPerson(41, 42, 43, 44, 45, 46)
var x42 = OneSlotPerson(42, 43, 44, 45, 46, 47)
var x43 = OneSlotPerson(43, 44, 45, 46, 47, 48)
var x44 = OneSlotPerson(44, 45, 46, 47, 48, 49)
var x45 = OneSlotPerson(45, 46, 47, 48, 49, 50)
var x46 = OneSlotPerson(46, 47, 48, 49, 50, 51)
var x47 = OneSlotPerson(47, 48, 49, 50, 51, 52)
var x48 = OneSlotPerson(48, 49, 50, 51, 52, 53)
var x49 = OneSlotPerson(49, 50, 51, 52, 53, 54)
var x50 = OneSlotPerson(50, 51, 52, 53, 54, 55)
var x51 = OneSlotPerson(51, 52, 53, 54, 55, 56)
var x52 = OneSlotPerson(52, 53, 54, 55, 56, 57)
var x53 = OneSlotPerson(53, 54, 55, 56, 57, 58)
var x54 = OneSlotPerson(54, 55, 56, 57, 58, 59)
var x55 = OneSlotPerson(55, 56, 57, 58, 59, 60)
var x56 = OneSlotPerson(56, 57, 58, 59, 60, 61)
var x57 = OneSlotPerson(57, 58, 59, 60, 61, 62)
var x58 = OneSlotPerson(58, 59, 60, 61, 62, 63)
var x59 = OneSlotPerson(59, 60, 61, 62, 63, 64)
var x60 = OneSlotPerson(60, 61, 62, 63, 64, 65)
var x61 = OneSlotPerson(61, 62, 63, 64, 65, 66)
var x62 = OneSlotPerson(62, 63, 64, 65, 66, 67)
var x63 = OneSlotPerson(63, 64, 65, 66, 67, 68)
var x64 = OneSlotPerson(64, 65, 66, 67, 68, 69)
var x65 = OneSlotPerson(65, 66, 67, 68, 69, 70)
var x66 = OneSlotPerson(66, 67, 68, 69, 70, 71)
var x67 = OneSlotPerson(67, 68, 69, 70, 71, 72)
var x68 = OneSlotPerson(68, 69, 70, 71, 72, 73)
var x69 = OneSlotPerson(69, 70, 71, 72, 73, 74)
var x70 = OneSlotPerson(70, 71, 72, 73, 74, 75)
var x71 = OneSlotPerson(71, 72, 73, 74, 75, 76)
var x72 = OneSlotPerson(72, 73, 74, 75, 76, 77)
var x73 = OneSlotPerson(73, 74, 75, 76, 77, 78)
var x74 = OneSlotPerson(74, 75, 76, 77, 78, 79)
var x75 = OneSlotPerson(75, 76, 77, 78, 79, 80)
var x76 = OneSlotPerson(76, 77, 78, 79, 80, 81)
var x77 = OneSlotPerson(77, 78, 79, 80, 81, 82)
var x78 = OneSlotPerson(78, 79, 80, 81, 82, 83)
var x79 = OneSlotPerson(79, 80, 81, 82, 83, 84)
var x80 = OneSlotPerson(80, 81, 82, 83, 84, 85)
var x81 = OneSlotPerson(81, 82, 83, 84, 85, 86)
var x82 = OneSlotPerson(82, 83, 84, 85, 86, 87)
var x83 = OneSlotPerson(83, 84, 85, 86, 87, 88)
var x84 = OneSlotPerson(84, 85, 86, 87, 88, 89)
var x85 = OneSlotPerson(85, 86, 87, 88, 89, 90)
var x86 = OneSlotPerson(86, 87, 88, 89, 90, 91)
var x87 = OneSlotPerson(87, 88, 89, 90, 91, 92)
var x88 = OneSlotPerson(88, 89, 90, 91, 92, 93)
var x89 = OneSlotPerson(89, 90, 91, 92, 93, 94)
var x90 = OneSlotPerson(90, 91, 92, 93, 94, 95)
var x91 = OneSlotPerson(91, 92, 93, 94, 95, 96)
var x92 = OneSlotPerson(92, 93, 94, 95, 96, 97)
var x93 = OneSlotPerson(93, 94, 95, 96, 97, 98)
var x94 = OneSlotPerson(94, 95, 96, 97, 98, 99)
var x95 = OneSlotPerson(95, 96, 97, 98, 99, 100)
var x96 = OneSlotPerson(96, 97, 98, 99, 100, 101)
var x97 = OneSlotPerson(97, 98, 99, 100, 101, 102)
var x98 = OneSlotPerson(98, 99, 100, 101, 102, 103)
var x99 = OneSlotPerson(99, 100, 101, 102, 103, 104)
var x100 = OneSlotPerson(100, 101, 102, 103, 104, 105)
var x101 = OneSlotPerson(101, 102, 103, 104, 105, 106)
var x102 = OneSlotPerson(102, 103, 104, 105, 106, 107)
var x103 = OneSlotPerson(103, 104, 105, 106, 107, 108)
var x104 = OneSlotPerson(104, 105, 106, 107, 108, 109)
var x105 = OneSlotPerson(105, 106, 107, 108, 109, 110)
var x106 = OneSlotPerson(106, 107, 108, 109, 110, 111)
var x107 = OneSlotPerson(107, 108, 109, 110, 111, 112)
var x108 = OneSlotPerson(108, 109, 110, 111, 112, 113)
var x109 = OneSlotPerson(109, 110, 111, 112, 113, 114)
var x110 = OneSlotPerson(110, 111, 112, 113, 114, 115)
var x111 = OneSlotPerson(111, 112, 113, 114, 115, 116)
var x112 = OneSlotPerson(112, 113, 114, 115, 116, 117)
var x113 = OneSlotPerson(113, 114, 115, 116, 117, 118)
var x114 = OneSlotPerson(114, 115, 116, 117, 118, 119)
var x115 = OneSlotPerson(115, 116, 117, 118, 119, 120)
var x116 = OneSlotPerson(116, 117, 118, 119, 120, 121)
var x117 = OneSlotPerson(117, 118, 119, 120, 121, 122)
var x118 = OneSlotPerson(118, 119, 120, 121, 122, 123)
var x119 = OneSlotPerson(119, 120, 121, 122, 123, 124)
var x120 = OneSlotPerson(120, 121, 122, 123, 124, 125)
var x121 = OneSlotPerson(121, 122, 123, 124, 125, 126)
var x122 = OneSlotPerson(122, 123, 124, 125, 126, 127)
var x123 = OneSlotPerson(123, 124, 125, 126, 127, 128)
var x124 = OneSlotPerson(124, 125, 126, 127, 128, 129)
var x125 = OneSlotPerson(125, 126, 127, 128, 129, 130)
var x126 = OneSlotPerson(126, 127, 128, 129, 130, 131)
var x127 = OneSlotPerson(127, 128, 129, 130, 131, 132)
var x128 = OneSlotPerson(128, 129, 130, 131, 132, 133)
println(x1.field1)
println(x2.field1)
println(x3.field1)
println(x4.field1)
println(x5.field1)
println(x6.field1)
println(x7.field1)
println(x8.field1)
println(x9.field1)
println(x10.field1)
println(x11.field1)
println(x12.field1)
println(x13.field1)
println(x14.field1)
println(x15.field1)
println(x16.field1)
println(x17.field1)
println(x18.field1)
println(x19.field1)
println(x20.field1)
println(x21.field1)
println(x22.field1)
println(x23.field1)
println(x24.field1)
println(x25.field1)
println(x26.field1)
println(x27.field1)
println(x28.field1)
println(x29.field1)
println(x30.field1)
println(x31.field1)
println(x32.field1)
println(x33.field1)
println(x34.field1)
println(x35.field1)
println(x36.field1)
println(x37.field1)
println(x38.field1)
println(x39.field1)
println(x40.field1)
println(x41.field1)
println(x42.field1)
println(x43.field1)
println(x44.field1)
println(x45.field1)
println(x46.field1)
println(x47.field1)
println(x48.field1)
println(x49.field1)
println(x50.field1)
println(x51.field1)
println(x52.field1)
println(x53.field1)
println(x54.field1)
println(x55.field1)
println(x56.field1)
println(x57.field1)
println(x58.field1)
println(x59.field1)
println(x60.field1)
println(x61.field1)
println(x62.field1)
println(x63.field1)
println(x64.field1)
println(x65.field1)
println(x66.field1)
println(x67.field1)
println(x68.field1)
println(x69.field1)
println(x70.field1)
println(x71.field1)
println(x72.field1)
println(x73.field1)
println(x74.field1)
println(x75.field1)
println(x76.field1)
println(x77.field1)
println(x78.field1)
println(x79.field1)
println(x80.field1)
println(x81.field1)
println(x82.field1)
println(x83.field1)
println(x84.field1)
println(x85.field1)
println(x86.field1)
println(x87.field1)
println(x88.field1)
println(x89.field1)
println(x90.field1)
println(x91.field1)
println(x92.field1)
println(x93.field1)
println(x94.field1)
println(x95.field1)
println(x96.field1)
println(x97.field1)
println(x98.field1)
println(x99.field1)
println(x100.field1)
println(x101.field1)
println(x102.field1)
println(x103.field1)
println(x104.field1)
println(x105.field1)
println(x106.field1)
println(x107.field1)
println(x108.field1)
println(x109.field1)
println(x110.field1)
println(x111.field1)
println(x112.field1)
println(x113.field1)
println(x114.field1)
println(x115.field1)
println(x116.field1)
println(x117.field1)
println(x118.field1)
println(x119.field1)
println(x120.field1)
println(x121.field1)
println(x122.field1)
println(x123.field1)
println(x124.field1)
println(x125.field1)
println(x126.field1)
println(x127.field1)
println(x128.field1)
}
def main() = {
allocate128SlotsAndReleaseThem();
// allocate & flush to-do list twice
var flushingTodoListFirstTime = OneSlotPerson(1, 2, 3, 4, 5, 6)
var flushingTodoListSecondTime = OneSlotPerson(1, 2, 3, 4, 5, 7)
// deallocate again
println(flushingTodoListFirstTime.field1)
println(flushingTodoListSecondTime.field1)
}
I let it run on effekt-master via effekt --no-optimize --backend=llvm allocate_first_then_release_flush_twice.effekt on my intel macbook, getting the following stack trace:
Exception in thread "main" java.lang.StackOverflowError
at effekt.machine.Transformer$.transform(Transformer.scala:77)
at effekt.machine.Transformer$.transform(Transformer.scala:170)
at effekt.machine.Transformer$.transform(Transformer.scala:170)
at effekt.machine.Transformer$.transform(Transformer.scala:170)
at effekt.machine.Transformer$.transform(Transformer.scala:170)
at effekt.machine.Transformer$.transform(Transformer.scala:170)
at effekt.machine.Transformer$.transform(Transformer.scala:170)
at effekt.machine.Transformer$.transform(Transformer.scala:170)
Best regards
Daniel