Construct CallCompiledObjectMethodPosArgsVariable

Performance Diagrams

Construct CallCompiledObjectMethodPosArgsVariable 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000CPython 2.7Nuitka (master)Nuitka (develop)Nuitka (factory)21210016288.11538461538461257.0CPython 2.769349861240.03846153846155423.3166836033672Nuitka (master)69347155391.96153846153845423.3198363318916Nuitka (develop)69347155543.8846153846154423.3198363318916Nuitka (factory)Construct CallCompiledObjectMethodPosArgsVariableTicks Construct CallCompiledObjectMethodPosArgsVariable 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 3.8Nuitka (master)Nuitka (develop)Nuitka (factory)18712485988.11538461538461257.0CPython 3.875601780240.03846153846155404.27636246650115Nuitka (master)75601802391.96153846153845404.27633341350156Nuitka (develop)75601836543.8846153846154404.27628851341115Nuitka (factory)Construct CallCompiledObjectMethodPosArgsVariableTicks

Source Code with Construct

from __future__ import print_function

class C(object):
    def compiled_method(self, a,b,c,d,e,f):
        return a, b, c, d, e, f

def getUnknownValue():
    return 8

def calledRepeatedly():
    a = getUnknownValue()
    b = getUnknownValue()
    c = getUnknownValue()
    d = getUnknownValue()
    e = getUnknownValue()
    f = getUnknownValue()

    inst = C()

    # This is supposed to make a call to a compiled method, which is
    # being optimized separately.
# construct_begin
    inst.compiled_method(a, b, c, d, e, f)
    inst.compiled_method(a, c, b, d, e, f)
    inst.compiled_method(a, b, c, d, f, e)
# construct_alternative



import itertools
for x in itertools.repeat(None, 50000):
    calledRepeatedly()

print("OK.")

Source Code without Construct

from __future__ import print_function

class C(object):
    def compiled_method(self, a,b,c,d,e,f):
        return a, b, c, d, e, f

def getUnknownValue():
    return 8

def calledRepeatedly():
    a = getUnknownValue()
    b = getUnknownValue()
    c = getUnknownValue()
    d = getUnknownValue()
    e = getUnknownValue()
    f = getUnknownValue()

    inst = C()

    # This is supposed to make a call to a compiled method, which is
    # being optimized separately.
# construct_begin



# construct_alternative
    pass
# construct_end

import itertools
for x in itertools.repeat(None, 50000):
    calledRepeatedly()

print("OK.")

Context Diff of Source Code


Construct
Baseline
37     inst = C() 37     inst = C()
38 38
39     # This is supposed to make a call to a compiled method, which is 39     # This is supposed to make a call to a compiled method, which is
40     # being optimized separately. 40     # being optimized separately.
41 # construct_begin 41 # construct_begin
n 42     inst.compiled_method(a, b, c, d, e, f) n
43     inst.compiled_method(a, c, b, d, e, f)
44     inst.compiled_method(a, b, c, d, f, e)
45 # construct_alternative
46 42
47 43
t t 44  
45 # construct_alternative
46     pass
47 # construct_end
48 48
49 import itertools 49 import itertools
50 for x in itertools.repeat(None, 50000): 50 for x in itertools.repeat(None, 50000):
51     calledRepeatedly() 51     calledRepeatedly()
52 52

Context Diff of Generated Code


Construct
Baseline
85 static PyCodeObject *codeobj_a50eca7361520524c2a4e45d65dec70a; 85 static PyCodeObject *codeobj_a50eca7361520524c2a4e45d65dec70a;
86 /* For use in "MainProgram.c". */ 86 /* For use in "MainProgram.c". */
87 PyCodeObject *codeobj_main = NULL; 87 PyCodeObject *codeobj_main = NULL;
88 88
89 static void createModuleCodeObjects(void) { 89 static void createModuleCodeObjects(void) {
n 90     module_filename_obj = mod_consts[6]; CHECK_OBJECT(module_filename_obj); n 90     module_filename_obj = mod_consts[5]; CHECK_OBJECT(module_filename_obj);
91     codeobj_ddb667f464d453bf0a1c4dc7a83f8297 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[32], NULL, NULL, 0, 0, 0); 91     codeobj_ddb667f464d453bf0a1c4dc7a83f8297 = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[32], NULL, NULL, 0, 0, 0);
92     codeobj_2d0e269a255b4d7d1c7632c1af33adc0 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[3], mod_consts[33], NULL, 0, 0, 0); 92     codeobj_2d0e269a255b4d7d1c7632c1af33adc0 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[3], mod_consts[33], NULL, 0, 0, 0);
93     codeobj_b2b5648b0e8a2a36f2c15c476b257542 = MAKE_CODEOBJECT(module_filename_obj, 29, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[25], mod_consts[34], NULL, 0, 0, 0); 93     codeobj_b2b5648b0e8a2a36f2c15c476b257542 = MAKE_CODEOBJECT(module_filename_obj, 29, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[25], mod_consts[34], NULL, 0, 0, 0);
n 94     codeobj_dee7a92b76b82b45dca6749976455bdd = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[4], mod_consts[35], NULL, 7, 0, 0); n 94     codeobj_dee7a92b76b82b45dca6749976455bdd = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[21], mod_consts[35], NULL, 7, 0, 0);
95     codeobj_a50eca7361520524c2a4e45d65dec70a = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[2], NULL, NULL, 0, 0, 0); 95     codeobj_a50eca7361520524c2a4e45d65dec70a = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[2], NULL, NULL, 0, 0, 0);
96 } 96 }
97 97
98 // The module function declarations. 98 // The module function declarations.
99 NUITKA_LOCAL_MODULE PyObject *impl___main__$$$function__1__mro_entries_conversion(PyObject **python_pars); 99 NUITKA_LOCAL_MODULE PyObject *impl___main__$$$function__1__mro_entries_conversion(PyObject **python_pars);
502     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 502     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
503     PyObject *exception_type = NULL; 503     PyObject *exception_type = NULL;
504     PyObject *exception_value = NULL; 504     PyObject *exception_value = NULL;
505     PyTracebackObject *exception_tb = NULL; 505     PyTracebackObject *exception_tb = NULL;
506     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 506     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 507     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; n
508     static struct Nuitka_FrameObject *cache_frame_b2b5648b0e8a2a36f2c15c476b257542 = NULL; 507     static struct Nuitka_FrameObject *cache_frame_b2b5648b0e8a2a36f2c15c476b257542 = NULL;
509     PyObject *tmp_return_value = NULL; 508     PyObject *tmp_return_value = NULL;
510     PyObject *exception_keeper_type_1; 509     PyObject *exception_keeper_type_1;
511     PyObject *exception_keeper_value_1; 510     PyObject *exception_keeper_value_1;
512     PyTracebackObject *exception_keeper_tb_1; 511     PyTracebackObject *exception_keeper_tb_1;
776             type_description_1 = "ooooooo"; 775             type_description_1 = "ooooooo";
777             goto frame_exception_exit_1; 776             goto frame_exception_exit_1;
778         } 777         }
779         assert(var_inst == NULL); 778         assert(var_inst == NULL);
780         var_inst = tmp_assign_source_7; 779         var_inst = tmp_assign_source_7;
n 781     } n
782     {
783         PyObject *tmp_called_instance_1;
784         PyObject *tmp_call_result_1;
785         PyObject *tmp_args_element_name_1;
786         PyObject *tmp_args_element_name_2;
787         PyObject *tmp_args_element_name_3;
788         PyObject *tmp_args_element_name_4;
789         PyObject *tmp_args_element_name_5;
790         PyObject *tmp_args_element_name_6;
791         CHECK_OBJECT(var_inst);
792         tmp_called_instance_1 = var_inst;
793         CHECK_OBJECT(var_a);
794         tmp_args_element_name_1 = var_a;
795         CHECK_OBJECT(var_b);
796         tmp_args_element_name_2 = var_b;
797         CHECK_OBJECT(var_c);
798         tmp_args_element_name_3 = var_c;
799         CHECK_OBJECT(var_d);
800         tmp_args_element_name_4 = var_d;
801         CHECK_OBJECT(var_e);
802         tmp_args_element_name_5 = var_e;
803         CHECK_OBJECT(var_f);
804         tmp_args_element_name_6 = var_f;
805         frame_b2b5648b0e8a2a36f2c15c476b257542->m_frame.f_lineno = 42;
806         {
807             PyObject *call_args[] = {tmp_args_element_name_1, tmp_args_element_name_2, tmp_args_element_name_3, tmp_args_element_name_4, tmp_args_element_name_5, tmp_args_element_name_6};
808             tmp_call_result_1 = CALL_METHOD_WITH_ARGS6(
809                 tmp_called_instance_1,
810                 mod_consts[4],
811                 call_args
812             );
813         }
814  
815         if (tmp_call_result_1 == NULL) {
816             assert(ERROR_OCCURRED());
817  
818             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
819  
820  
821             exception_lineno = 42;
822             type_description_1 = "ooooooo";
823             goto frame_exception_exit_1;
824         }
825         Py_DECREF(tmp_call_result_1);
826     }
827     {
828         PyObject *tmp_called_instance_2;
829         PyObject *tmp_call_result_2;
830         PyObject *tmp_args_element_name_7;
831         PyObject *tmp_args_element_name_8;
832         PyObject *tmp_args_element_name_9;
833         PyObject *tmp_args_element_name_10;
834         PyObject *tmp_args_element_name_11;
835         PyObject *tmp_args_element_name_12;
836         CHECK_OBJECT(var_inst);
837         tmp_called_instance_2 = var_inst;
838         CHECK_OBJECT(var_a);
839         tmp_args_element_name_7 = var_a;
840         CHECK_OBJECT(var_c);
841         tmp_args_element_name_8 = var_c;
842         CHECK_OBJECT(var_b);
843         tmp_args_element_name_9 = var_b;
844         CHECK_OBJECT(var_d);
845         tmp_args_element_name_10 = var_d;
846         CHECK_OBJECT(var_e);
847         tmp_args_element_name_11 = var_e;
848         CHECK_OBJECT(var_f);
849         tmp_args_element_name_12 = var_f;
850         frame_b2b5648b0e8a2a36f2c15c476b257542->m_frame.f_lineno = 43;
851         {
852             PyObject *call_args[] = {tmp_args_element_name_7, tmp_args_element_name_8, tmp_args_element_name_9, tmp_args_element_name_10, tmp_args_element_name_11, tmp_args_element_name_12};
853             tmp_call_result_2 = CALL_METHOD_WITH_ARGS6(
854                 tmp_called_instance_2,
855                 mod_consts[4],
856                 call_args
857             );
858         }
859  
860         if (tmp_call_result_2 == NULL) {
861             assert(ERROR_OCCURRED());
862  
863             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
864  
865  
866             exception_lineno = 43;
867             type_description_1 = "ooooooo";
868             goto frame_exception_exit_1;
869         }
870         Py_DECREF(tmp_call_result_2);
871     }
872     {
873         PyObject *tmp_called_instance_3;
874         PyObject *tmp_call_result_3;
875         PyObject *tmp_args_element_name_13;
876         PyObject *tmp_args_element_name_14;
877         PyObject *tmp_args_element_name_15;
878         PyObject *tmp_args_element_name_16;
879         PyObject *tmp_args_element_name_17;
880         PyObject *tmp_args_element_name_18;
881         CHECK_OBJECT(var_inst);
882         tmp_called_instance_3 = var_inst;
883         CHECK_OBJECT(var_a);
884         tmp_args_element_name_13 = var_a;
885         CHECK_OBJECT(var_b);
886         tmp_args_element_name_14 = var_b;
887         CHECK_OBJECT(var_c);
888         tmp_args_element_name_15 = var_c;
889         CHECK_OBJECT(var_d);
890         tmp_args_element_name_16 = var_d;
891         CHECK_OBJECT(var_f);
892         tmp_args_element_name_17 = var_f;
893         CHECK_OBJECT(var_e);
894         tmp_args_element_name_18 = var_e;
895         frame_b2b5648b0e8a2a36f2c15c476b257542->m_frame.f_lineno = 44;
896         {
897             PyObject *call_args[] = {tmp_args_element_name_13, tmp_args_element_name_14, tmp_args_element_name_15, tmp_args_element_name_16, tmp_args_element_name_17, tmp_args_element_name_18};
898             tmp_call_result_3 = CALL_METHOD_WITH_ARGS6(
899                 tmp_called_instance_3,
900                 mod_consts[4],
901                 call_args
902             );
903         }
904  
905         if (tmp_call_result_3 == NULL) {
906             assert(ERROR_OCCURRED());
907  
908             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
909  
910  
911             exception_lineno = 44;
912             type_description_1 = "ooooooo";
913             goto frame_exception_exit_1;
914         }
915         Py_DECREF(tmp_call_result_3);
916     } 780     }
917 781
918 #if 0 782 #if 0
919     RESTORE_FRAME_EXCEPTION(frame_b2b5648b0e8a2a36f2c15c476b257542); 783     RESTORE_FRAME_EXCEPTION(frame_b2b5648b0e8a2a36f2c15c476b257542);
920 #endif 784 #endif
1020     var_d = NULL; 884     var_d = NULL;
1021     Py_XDECREF(var_e); 885     Py_XDECREF(var_e);
1022     var_e = NULL; 886     var_e = NULL;
1023     Py_XDECREF(var_f); 887     Py_XDECREF(var_f);
1024     var_f = NULL; 888     var_f = NULL;
n 1025     Py_XDECREF(var_inst); n
1026     var_inst = NULL;
1027     // Re-raise. 889     // Re-raise.
1028     exception_type = exception_keeper_type_1; 890     exception_type = exception_keeper_type_1;
1029     exception_value = exception_keeper_value_1; 891     exception_value = exception_keeper_value_1;
1030     exception_tb = exception_keeper_tb_1; 892     exception_tb = exception_keeper_tb_1;
1031     exception_lineno = exception_keeper_lineno_1; 893     exception_lineno = exception_keeper_lineno_1;
1056 918
1057 919
1058 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() { 920 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() {
1059     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 921     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
1060         impl___main__$$$function__1_compiled_method, 922         impl___main__$$$function__1_compiled_method,
n 1061         mod_consts[4], n 923         mod_consts[21],
1062 #if PYTHON_VERSION >= 0x300 924 #if PYTHON_VERSION >= 0x300
1063         mod_consts[22], 925         mod_consts[22],
1064 #endif 926 #endif
1065         codeobj_dee7a92b76b82b45dca6749976455bdd, 927         codeobj_dee7a92b76b82b45dca6749976455bdd,
1066         NULL, 928         NULL,
1514 1376
1515     // Module code. 1377     // Module code.
1516     { 1378     {
1517         PyObject *tmp_assign_source_1; 1379         PyObject *tmp_assign_source_1;
1518         tmp_assign_source_1 = Py_None; 1380         tmp_assign_source_1 = Py_None;
n 1519         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_1); n 1381         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1);
1520     } 1382     }
1521     { 1383     {
1522         PyObject *tmp_assign_source_2; 1384         PyObject *tmp_assign_source_2;
n 1523         tmp_assign_source_2 = mod_consts[6]; n 1385         tmp_assign_source_2 = mod_consts[5];
1524         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_2); 1386         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2);
1525     } 1387     }
1526     { 1388     {
1527         PyObject *tmp_assign_source_3; 1389         PyObject *tmp_assign_source_3;
1528         tmp_assign_source_3 = Py_None; 1390         tmp_assign_source_3 = Py_None;
n 1529         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_3); n 1391         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3);
1530     } 1392     }
1531     { 1393     {
1532         PyObject *tmp_assign_source_4; 1394         PyObject *tmp_assign_source_4;
1533         tmp_assign_source_4 = PyDict_New(); 1395         tmp_assign_source_4 = PyDict_New();
n 1534         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_4); n 1396         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4);
1535     } 1397     }
1536     { 1398     {
1537         PyObject *tmp_assign_source_5; 1399         PyObject *tmp_assign_source_5;
1538         { 1400         {
1539             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 1401             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 1540             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[10]); n 1402             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[9]);
1541         } 1403         }
1542 1404
1543         assert(!(tmp_assign_source_5 == NULL)); 1405         assert(!(tmp_assign_source_5 == NULL));
n 1544         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_5); n 1406         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_5);
1545     } 1407     }
1546     // Frame without reuse. 1408     // Frame without reuse.
1547     frame_ddb667f464d453bf0a1c4dc7a83f8297 = MAKE_MODULE_FRAME(codeobj_ddb667f464d453bf0a1c4dc7a83f8297, module___main__); 1409     frame_ddb667f464d453bf0a1c4dc7a83f8297 = MAKE_MODULE_FRAME(codeobj_ddb667f464d453bf0a1c4dc7a83f8297, module___main__);
1548 1410
1549     // Push the new frame as the currently active one, and we should be exclusively 1411     // Push the new frame as the currently active one, and we should be exclusively
1554     // Framed code: 1416     // Framed code:
1555     // Tried code: 1417     // Tried code:
1556     { 1418     {
1557         PyObject *tmp_assign_source_6; 1419         PyObject *tmp_assign_source_6;
1558         PyObject *tmp_dircall_arg1_1; 1420         PyObject *tmp_dircall_arg1_1;
n 1559         tmp_dircall_arg1_1 = mod_consts[11]; n 1421         tmp_dircall_arg1_1 = mod_consts[10];
1560         Py_INCREF(tmp_dircall_arg1_1); 1422         Py_INCREF(tmp_dircall_arg1_1);
1561 1423
1562         { 1424         {
1563             PyObject *dir_call_args[] = {tmp_dircall_arg1_1}; 1425             PyObject *dir_call_args[] = {tmp_dircall_arg1_1};
1564             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args); 1426             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args);
1594         int tmp_truth_name_1; 1456         int tmp_truth_name_1;
1595         PyObject *tmp_type_arg_1; 1457         PyObject *tmp_type_arg_1;
1596         PyObject *tmp_expression_name_1; 1458         PyObject *tmp_expression_name_1;
1597         PyObject *tmp_subscript_name_1; 1459         PyObject *tmp_subscript_name_1;
1598         PyObject *tmp_bases_name_1; 1460         PyObject *tmp_bases_name_1;
n 1599         tmp_key_name_1 = mod_consts[12]; n 1461         tmp_key_name_1 = mod_consts[11];
1600         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1462         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1601         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict; 1463         tmp_dict_arg_name_1 = tmp_class_creation_1__class_decl_dict;
1602         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1); 1464         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_1, tmp_key_name_1);
1603         assert(!(tmp_res == -1)); 1465         assert(!(tmp_res == -1));
1604         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1466         tmp_condition_result_1 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1608             goto condexpr_false_1; 1470             goto condexpr_false_1;
1609         } 1471         }
1610         condexpr_true_1:; 1472         condexpr_true_1:;
1611         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1473         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1612         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict; 1474         tmp_dict_arg_name_2 = tmp_class_creation_1__class_decl_dict;
n 1613         tmp_key_name_2 = mod_consts[12]; n 1475         tmp_key_name_2 = mod_consts[11];
1614         tmp_metaclass_name_1 = DICT_GET_ITEM_WITH_ERROR(tmp_dict_arg_name_2, tmp_key_name_2); 1476         tmp_metaclass_name_1 = DICT_GET_ITEM_WITH_ERROR(tmp_dict_arg_name_2, tmp_key_name_2);
1615         if (tmp_metaclass_name_1 == NULL) { 1477         if (tmp_metaclass_name_1 == NULL) {
1616             assert(ERROR_OCCURRED()); 1478             assert(ERROR_OCCURRED());
1617 1479
1618             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1480             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1643             goto condexpr_false_2; 1505             goto condexpr_false_2;
1644         } 1506         }
1645         condexpr_true_2:; 1507         condexpr_true_2:;
1646         CHECK_OBJECT(tmp_class_creation_1__bases); 1508         CHECK_OBJECT(tmp_class_creation_1__bases);
1647         tmp_expression_name_1 = tmp_class_creation_1__bases; 1509         tmp_expression_name_1 = tmp_class_creation_1__bases;
n 1648         tmp_subscript_name_1 = mod_consts[13]; n 1510         tmp_subscript_name_1 = mod_consts[12];
1649         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0); 1511         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_name_1, tmp_subscript_name_1, 0);
1650         if (tmp_type_arg_1 == NULL) { 1512         if (tmp_type_arg_1 == NULL) {
1651             assert(ERROR_OCCURRED()); 1513             assert(ERROR_OCCURRED());
1652 1514
1653             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1515             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1694     } 1556     }
1695     { 1557     {
1696         nuitka_bool tmp_condition_result_3; 1558         nuitka_bool tmp_condition_result_3;
1697         PyObject *tmp_key_name_3; 1559         PyObject *tmp_key_name_3;
1698         PyObject *tmp_dict_arg_name_3; 1560         PyObject *tmp_dict_arg_name_3;
n 1699         tmp_key_name_3 = mod_consts[12]; n 1561         tmp_key_name_3 = mod_consts[11];
1700         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1562         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1701         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict; 1563         tmp_dict_arg_name_3 = tmp_class_creation_1__class_decl_dict;
1702         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3); 1564         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_name_3, tmp_key_name_3);
1703         assert(!(tmp_res == -1)); 1565         assert(!(tmp_res == -1));
1704         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1566         tmp_condition_result_3 = (tmp_res != 0) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1709         } 1571         }
1710     } 1572     }
1711     branch_yes_1:; 1573     branch_yes_1:;
1712     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1574     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1713     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict; 1575     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict;
n 1714     tmp_dictdel_key = mod_consts[12]; n 1576     tmp_dictdel_key = mod_consts[11];
1715     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key); 1577     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key);
1716     if (tmp_result == false) { 1578     if (tmp_result == false) {
1717         assert(ERROR_OCCURRED()); 1579         assert(ERROR_OCCURRED());
1718 1580
1719         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1581         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1727     { 1589     {
1728         nuitka_bool tmp_condition_result_4; 1590         nuitka_bool tmp_condition_result_4;
1729         PyObject *tmp_expression_name_2; 1591         PyObject *tmp_expression_name_2;
1730         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1592         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1731         tmp_expression_name_2 = tmp_class_creation_1__metaclass; 1593         tmp_expression_name_2 = tmp_class_creation_1__metaclass;
n 1732         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[14]); n 1594         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_2, mod_consts[13]);
1733         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1595         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1734         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) { 1596         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) {
1735             goto branch_yes_2; 1597             goto branch_yes_2;
1736         } else { 1598         } else {
1737             goto branch_no_2; 1599             goto branch_no_2;
1745         PyObject *tmp_args_name_1; 1607         PyObject *tmp_args_name_1;
1746         PyObject *tmp_tuple_element_1; 1608         PyObject *tmp_tuple_element_1;
1747         PyObject *tmp_kwargs_name_1; 1609         PyObject *tmp_kwargs_name_1;
1748         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1610         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1749         tmp_expression_name_3 = tmp_class_creation_1__metaclass; 1611         tmp_expression_name_3 = tmp_class_creation_1__metaclass;
n 1750         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[14]); n 1612         tmp_called_name_1 = LOOKUP_ATTRIBUTE(tmp_expression_name_3, mod_consts[13]);
1751         if (tmp_called_name_1 == NULL) { 1613         if (tmp_called_name_1 == NULL) {
1752             assert(ERROR_OCCURRED()); 1614             assert(ERROR_OCCURRED());
1753 1615
1754             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1616             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1755 1617
1787         nuitka_bool tmp_condition_result_5; 1649         nuitka_bool tmp_condition_result_5;
1788         PyObject *tmp_operand_name_1; 1650         PyObject *tmp_operand_name_1;
1789         PyObject *tmp_expression_name_4; 1651         PyObject *tmp_expression_name_4;
1790         CHECK_OBJECT(tmp_class_creation_1__prepared); 1652         CHECK_OBJECT(tmp_class_creation_1__prepared);
1791         tmp_expression_name_4 = tmp_class_creation_1__prepared; 1653         tmp_expression_name_4 = tmp_class_creation_1__prepared;
n 1792         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[15]); n 1654         tmp_result = HAS_ATTR_BOOL(tmp_expression_name_4, mod_consts[14]);
1793         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False; 1655         tmp_operand_name_1 = (tmp_result) ? Py_True : Py_False;
1794         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1); 1656         tmp_res = CHECK_IF_TRUE(tmp_operand_name_1);
1795         if (tmp_res == -1) { 1657         if (tmp_res == -1) {
1796             assert(ERROR_OCCURRED()); 1658             assert(ERROR_OCCURRED());
1797 1659
1818         PyObject *tmp_tuple_element_2; 1680         PyObject *tmp_tuple_element_2;
1819         PyObject *tmp_getattr_target_1; 1681         PyObject *tmp_getattr_target_1;
1820         PyObject *tmp_getattr_attr_1; 1682         PyObject *tmp_getattr_attr_1;
1821         PyObject *tmp_getattr_default_1; 1683         PyObject *tmp_getattr_default_1;
1822         tmp_raise_type_1 = PyExc_TypeError; 1684         tmp_raise_type_1 = PyExc_TypeError;
n 1823         tmp_left_name_1 = mod_consts[16]; n 1685         tmp_left_name_1 = mod_consts[15];
1824         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1686         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1825         tmp_getattr_target_1 = tmp_class_creation_1__metaclass; 1687         tmp_getattr_target_1 = tmp_class_creation_1__metaclass;
n 1826         tmp_getattr_attr_1 = mod_consts[17]; n 1688         tmp_getattr_attr_1 = mod_consts[16];
1827         tmp_getattr_default_1 = mod_consts[18]; 1689         tmp_getattr_default_1 = mod_consts[17];
1828         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1); 1690         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1);
1829         if (tmp_tuple_element_2 == NULL) { 1691         if (tmp_tuple_element_2 == NULL) {
1830             assert(ERROR_OCCURRED()); 1692             assert(ERROR_OCCURRED());
1831 1693
1832             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1694             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1843             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2); 1705             PyTuple_SET_ITEM(tmp_right_name_1, 0, tmp_tuple_element_2);
1844             CHECK_OBJECT(tmp_class_creation_1__prepared); 1706             CHECK_OBJECT(tmp_class_creation_1__prepared);
1845             tmp_type_arg_2 = tmp_class_creation_1__prepared; 1707             tmp_type_arg_2 = tmp_class_creation_1__prepared;
1846             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2); 1708             tmp_expression_name_5 = BUILTIN_TYPE1(tmp_type_arg_2);
1847             assert(!(tmp_expression_name_5 == NULL)); 1709             assert(!(tmp_expression_name_5 == NULL));
n 1848             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[17]); n 1710             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_name_5, mod_consts[16]);
1849             Py_DECREF(tmp_expression_name_5); 1711             Py_DECREF(tmp_expression_name_5);
1850             if (tmp_tuple_element_2 == NULL) { 1712             if (tmp_tuple_element_2 == NULL) {
1851                 assert(ERROR_OCCURRED()); 1713                 assert(ERROR_OCCURRED());
1852 1714
1853                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1715                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1905             locals___main__$$$class__1_C_22 = tmp_set_locals_1; 1767             locals___main__$$$class__1_C_22 = tmp_set_locals_1;
1906             Py_INCREF(tmp_set_locals_1); 1768             Py_INCREF(tmp_set_locals_1);
1907         } 1769         }
1908         // Tried code: 1770         // Tried code:
1909         // Tried code: 1771         // Tried code:
n 1910         tmp_dictset_value = mod_consts[19]; n 1772         tmp_dictset_value = mod_consts[18];
1773         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value);
1774         if (tmp_res != 0) {
1775             assert(ERROR_OCCURRED());
1776  
1777             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1778  
1779  
1780             exception_lineno = 22;
1781  
1782             goto try_except_handler_3;
1783         }
1784         tmp_dictset_value = mod_consts[3];
1911         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value); 1785         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
n 1912         if (tmp_res != 0) { n
1913             assert(ERROR_OCCURRED());
1914  
1915             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1916  
1917  
1918             exception_lineno = 22;
1919  
1920             goto try_except_handler_3;
1921         }
1922         tmp_dictset_value = mod_consts[3];
1923         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[21], tmp_dictset_value);
1924         if (tmp_res != 0) { 1786         if (tmp_res != 0) {
1925             assert(ERROR_OCCURRED()); 1787             assert(ERROR_OCCURRED());
1926 1788
1927             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1789             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1928 1790
1960         // Framed code: 1822         // Framed code:
1961 1823
1962 1824
1963         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(); 1825         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method();
1964 1826
n 1965         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[4], tmp_dictset_value); n 1827         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[21], tmp_dictset_value);
1966         Py_DECREF(tmp_dictset_value); 1828         Py_DECREF(tmp_dictset_value);
1967         if (tmp_res != 0) { 1829         if (tmp_res != 0) {
1968             assert(ERROR_OCCURRED()); 1830             assert(ERROR_OCCURRED());
1969 1831
1970             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1832             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
2033             nuitka_bool tmp_condition_result_6; 1895             nuitka_bool tmp_condition_result_6;
2034             PyObject *tmp_compexpr_left_1; 1896             PyObject *tmp_compexpr_left_1;
2035             PyObject *tmp_compexpr_right_1; 1897             PyObject *tmp_compexpr_right_1;
2036             CHECK_OBJECT(tmp_class_creation_1__bases); 1898             CHECK_OBJECT(tmp_class_creation_1__bases);
2037             tmp_compexpr_left_1 = tmp_class_creation_1__bases; 1899             tmp_compexpr_left_1 = tmp_class_creation_1__bases;
n 2038             tmp_compexpr_right_1 = mod_consts[11]; n 1900             tmp_compexpr_right_1 = mod_consts[10];
2039             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1); 1901             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1);
2040             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) { 1902             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) {
2041                 assert(ERROR_OCCURRED()); 1903                 assert(ERROR_OCCURRED());
2042 1904
2043                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1905                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
2053                 goto branch_no_4; 1915                 goto branch_no_4;
2054             } 1916             }
2055             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED); 1917             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED);
2056         } 1918         }
2057         branch_yes_4:; 1919         branch_yes_4:;
n 2058         tmp_dictset_value = mod_consts[11]; n 1920         tmp_dictset_value = mod_consts[10];
2059         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[23], tmp_dictset_value); 1921         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[23], tmp_dictset_value);
2060         if (tmp_res != 0) { 1922         if (tmp_res != 0) {
2061             assert(ERROR_OCCURRED()); 1923             assert(ERROR_OCCURRED());
2062 1924
2063             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1925             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
2232         PyObject *tmp_level_name_1; 2094         PyObject *tmp_level_name_1;
2233         tmp_name_name_1 = mod_consts[26]; 2095         tmp_name_name_1 = mod_consts[26];
2234         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__; 2096         tmp_globals_arg_name_1 = (PyObject *)moduledict___main__;
2235         tmp_locals_arg_name_1 = Py_None; 2097         tmp_locals_arg_name_1 = Py_None;
2236         tmp_fromlist_name_1 = Py_None; 2098         tmp_fromlist_name_1 = Py_None;
t 2237         tmp_level_name_1 = mod_consts[13]; t 2099         tmp_level_name_1 = mod_consts[12];
2238         frame_ddb667f464d453bf0a1c4dc7a83f8297->m_frame.f_lineno = 49; 2100         frame_ddb667f464d453bf0a1c4dc7a83f8297->m_frame.f_lineno = 49;
2239         tmp_assign_source_15 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_arg_name_1, tmp_locals_arg_name_1, tmp_fromlist_name_1, tmp_level_name_1); 2101         tmp_assign_source_15 = IMPORT_MODULE5(tmp_name_name_1, tmp_globals_arg_name_1, tmp_locals_arg_name_1, tmp_fromlist_name_1, tmp_level_name_1);
2240         assert(!(tmp_assign_source_15 == NULL)); 2102         assert(!(tmp_assign_source_15 == NULL));
2241         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[26], tmp_assign_source_15); 2103         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[26], tmp_assign_source_15);
2242     } 2104     }