string test_s734 array T_nextFree392 integer T_firstFree633 integer T_maxIndex101 array T_typeId835 integer wurst_stack_depth139 array wurst_stack278 string test_s734 = "" integer T_firstFree633 = 0 integer T_maxIndex101 = 0 integer wurst_stack_depth139 = 0 function initGlobals189() { } function main191() { initGlobals189(); wurst_stack_278[wurst_stack_depth_139] = "when calling init_test in ondestroy_dynamicdispatchFrotty3, line 1"; wurst_stack_depth_139 = (wurst_stack_depth_139 + 1); test_s_734 = ""; dispatch_T_destroyT137(new_A970("when calling new_A in ondestroy_dynamicdispatchFrotty3, line 15"), "when calling dispatch_T_destroyT in ondestroy_dynamicdispatchFrotty3, line 16"); if (test_s_734 == "C") { testSuccess149(); } else { }; wurst_stack_depth_139 = (wurst_stack_depth_139 - 1); } function config162() { } IS_NATIVE function testSuccess149() { } function new_A970(string __wurst_stackPos166) returns integer { local integer this207 wurst_stack_278[wurst_stack_depth_139] = __wurst_stackPos_166; wurst_stack_depth_139 = (wurst_stack_depth_139 + 1); wurst_stack_278[wurst_stack_depth_139] = "when calling alloc_A in ondestroy_dynamicdispatchFrotty3, line 7"; wurst_stack_depth_139 = (wurst_stack_depth_139 + 1); if (T_firstFree_633 == 0) { if (T_maxIndex_101 < 32768) { T_maxIndex_101 = (T_maxIndex_101 + 1); this_207 = T_maxIndex_101; T_typeId_835[this_207] = 2; } else { error139("Out of memory: Could not create A.", "when calling error in ondestroy_dynamicdispatchFrotty3, line 7"); this_207 = 0; }; } else { T_firstFree_633 = (T_firstFree_633 - 1); this_207 = T_nextFree_392[T_firstFree_633]; T_typeId_835[this_207] = 2; }; wurst_stack_depth_139 = ((wurst_stack_depth_139 - 1) - 1); return this_207; } function error139(string msg735, string __wurst_stackPos930) { local integer stacktraceIndex306 local integer stacktraceLimit157 wurst_stack_278[wurst_stack_depth_139] = __wurst_stackPos_930; wurst_stack_depth_139 = (wurst_stack_depth_139 + 1); __wurst_stackPos_930 = ""; stacktraceIndex_306 = wurst_stack_depth_139; stacktraceLimit_157 = 0; loop { stacktraceIndex_306 = (stacktraceIndex_306 - 1); stacktraceLimit_157 = (stacktraceLimit_157 + 1); exitwhen ((stacktraceLimit_157 > 20) or (stacktraceIndex_306 < 0)); __wurst_stackPos_930 = (__wurst_stackPos_930 + (" " + wurst_stack_278[stacktraceIndex_306])); }; $debugPrint202((msg_735 + (" " + __wurst_stackPos_930))); wurst_stack_depth_139 = (wurst_stack_depth_139 - 1); } function dispatch_T_destroyT137(integer this604, string __wurst_stackPos360) { wurst_stack_278[wurst_stack_depth_139] = __wurst_stackPos_360; wurst_stack_depth_139 = (wurst_stack_depth_139 + 1); if (T_typeId_835[this_604] == 0) { if (this_604 == 0) { error139("Nullpointer exception when calling T.T", "when calling error in ondestroy_dynamicdispatchFrotty3, line 11"); } else { error139("Called T.T on invalid object.", "when calling error in ondestroy_dynamicdispatchFrotty3, line 11"); }; } else { }; if (T_typeId_835[this_604] <= 3) { if (T_typeId_835[this_604] <= 2) { wurst_stack_278[wurst_stack_depth_139] = "when calling destroyA in ondestroy_dynamicdispatchFrotty3, line 11"; wurst_stack_depth_139 = (wurst_stack_depth_139 + 1); test_s_734 = (test_s_734 + "C"); wurst_stack_278[wurst_stack_depth_139] = "when calling dealloc_A in ondestroy_dynamicdispatchFrotty3, line 7"; wurst_stack_depth_139 = (wurst_stack_depth_139 + 1); if (T_typeId_835[this_604] == 0) { error139("Double free: object of type A", "when calling error in ondestroy_dynamicdispatchFrotty3, line 7"); } else { T_nextFree_392[T_firstFree_633] = this_604; T_firstFree_633 = (T_firstFree_633 + 1); T_typeId_835[this_604] = 0; }; wurst_stack_depth_139 = ((wurst_stack_depth_139 - 1) - 1); } else { wurst_stack_278[wurst_stack_depth_139] = "when calling destroyB in ondestroy_dynamicdispatchFrotty3, line 11"; wurst_stack_depth_139 = (wurst_stack_depth_139 + 1); test_s_734 = ((test_s_734 + "B") + "C"); wurst_stack_278[wurst_stack_depth_139] = "when calling dealloc_B in ondestroy_dynamicdispatchFrotty3, line 9"; wurst_stack_depth_139 = (wurst_stack_depth_139 + 1); if (T_typeId_835[this_604] == 0) { error139("Double free: object of type B", "when calling error in ondestroy_dynamicdispatchFrotty3, line 8"); } else { T_nextFree_392[T_firstFree_633] = this_604; T_firstFree_633 = (T_firstFree_633 + 1); T_typeId_835[this_604] = 0; }; wurst_stack_depth_139 = ((wurst_stack_depth_139 - 1) - 1); }; } else { wurst_stack_278[wurst_stack_depth_139] = "when calling destroyT in ondestroy_dynamicdispatchFrotty3, line 11"; wurst_stack_depth_139 = (wurst_stack_depth_139 + 1); wurst_stack_278[wurst_stack_depth_139] = "when calling dealloc_T in ondestroy_dynamicdispatchFrotty3, line 11"; wurst_stack_depth_139 = (wurst_stack_depth_139 + 1); if (T_typeId_835[this_604] == 0) { error139("Double free: object of type T", "when calling error in ondestroy_dynamicdispatchFrotty3, line 11"); } else { T_nextFree_392[T_firstFree_633] = this_604; T_firstFree_633 = (T_firstFree_633 + 1); T_typeId_835[this_604] = 0; }; wurst_stack_depth_139 = ((wurst_stack_depth_139 - 1) - 1); }; wurst_stack_depth_139 = (wurst_stack_depth_139 - 1); }