string test_s202 array<integer> T_nextFree750 integer T_firstFree184 integer T_maxIndex122 array<integer> T_typeId366 integer wurst_stack_depth223 array<string> wurst_stack170 string test_s202 = "" integer T_firstFree184 = 0 integer T_maxIndex122 = 0 integer wurst_stack_depth223 = 0 function initGlobals104() { } function main141() { initGlobals104(); wurst_stack_170[wurst_stack_depth_223] = "when calling init_test in ondestroy_dynamicdispatchFrotty1, line 1"; wurst_stack_depth_223 = (wurst_stack_depth_223 + 1); test_s_202 = ""; dispatch_T_destroyT387(new_A208("when calling new_A in ondestroy_dynamicdispatchFrotty1, line 10"), "when calling dispatch_T_destroyT in ondestroy_dynamicdispatchFrotty1, line 11"); if (test_s_202 == "") { testSuccess358(); } else { }; wurst_stack_depth_223 = (wurst_stack_depth_223 - 1); } function config191() { } IS_NATIVE function testSuccess358() { } function new_A208(string __wurst_stackPos165) returns integer { local integer this375 wurst_stack_170[wurst_stack_depth_223] = __wurst_stackPos_165; wurst_stack_depth_223 = (wurst_stack_depth_223 + 1); wurst_stack_170[wurst_stack_depth_223] = "when calling alloc_A in ondestroy_dynamicdispatchFrotty1, line 4"; wurst_stack_depth_223 = (wurst_stack_depth_223 + 1); if (T_firstFree_184 == 0) { if (T_maxIndex_122 < 32768) { T_maxIndex_122 = (T_maxIndex_122 + 1); this_375 = T_maxIndex_122; T_typeId_366[this_375] = 2; } else { error167("Out of memory: Could not create A.", "when calling error in ondestroy_dynamicdispatchFrotty1, line 4"); this_375 = 0; }; } else { T_firstFree_184 = (T_firstFree_184 - 1); this_375 = T_nextFree_750[T_firstFree_184]; T_typeId_366[this_375] = 2; }; wurst_stack_depth_223 = ((wurst_stack_depth_223 - 1) - 1); return this_375; } function error167(string msg173, string __wurst_stackPos519) { local integer stacktraceIndex578 local integer stacktraceLimit854 wurst_stack_170[wurst_stack_depth_223] = __wurst_stackPos_519; wurst_stack_depth_223 = (wurst_stack_depth_223 + 1); __wurst_stackPos_519 = ""; stacktraceIndex_578 = wurst_stack_depth_223; stacktraceLimit_854 = 0; loop { stacktraceIndex_578 = (stacktraceIndex_578 - 1); stacktraceLimit_854 = (stacktraceLimit_854 + 1); exitwhen ((stacktraceLimit_854 > 20) or (stacktraceIndex_578 < 0)); __wurst_stackPos_519 = (__wurst_stackPos_519 + (" " + wurst_stack_170[stacktraceIndex_578])); }; $debugPrint160((msg_173 + (" " + __wurst_stackPos_519))); wurst_stack_depth_223 = (wurst_stack_depth_223 - 1); } function dispatch_T_destroyT387(integer this834, string __wurst_stackPos117) { wurst_stack_170[wurst_stack_depth_223] = __wurst_stackPos_117; wurst_stack_depth_223 = (wurst_stack_depth_223 + 1); if (T_typeId_366[this_834] == 0) { if (this_834 == 0) { error167("Nullpointer exception when calling T.T", "when calling error in ondestroy_dynamicdispatchFrotty1, line 8"); } else { error167("Called T.T on invalid object.", "when calling error in ondestroy_dynamicdispatchFrotty1, line 8"); }; } else { }; if (T_typeId_366[this_834] <= 2) { wurst_stack_170[wurst_stack_depth_223] = "when calling destroyT in ondestroy_dynamicdispatchFrotty1, line 8"; wurst_stack_depth_223 = (wurst_stack_depth_223 + 1); wurst_stack_170[wurst_stack_depth_223] = "when calling dealloc_T in ondestroy_dynamicdispatchFrotty1, line 8"; wurst_stack_depth_223 = (wurst_stack_depth_223 + 1); if (T_typeId_366[this_834] == 0) { error167("Double free: object of type T", "when calling error in ondestroy_dynamicdispatchFrotty1, line 8"); } else { T_nextFree_750[T_firstFree_184] = this_834; T_firstFree_184 = (T_firstFree_184 + 1); T_typeId_366[this_834] = 0; }; wurst_stack_depth_223 = ((wurst_stack_depth_223 - 1) - 1); } else { wurst_stack_170[wurst_stack_depth_223] = "when calling destroyB in ondestroy_dynamicdispatchFrotty1, line 8"; wurst_stack_depth_223 = (wurst_stack_depth_223 + 1); test_s_202 = (test_s_202 + "B"); wurst_stack_170[wurst_stack_depth_223] = "when calling dealloc_B in ondestroy_dynamicdispatchFrotty1, line 6"; wurst_stack_depth_223 = (wurst_stack_depth_223 + 1); if (T_typeId_366[this_834] == 0) { error167("Double free: object of type B", "when calling error in ondestroy_dynamicdispatchFrotty1, line 5"); } else { T_nextFree_750[T_firstFree_184] = this_834; T_firstFree_184 = (T_firstFree_184 + 1); T_typeId_366[this_834] = 0; }; wurst_stack_depth_223 = ((wurst_stack_depth_223 - 1) - 1); }; wurst_stack_depth_223 = (wurst_stack_depth_223 - 1); }