Construct CallCompiledObjectMethodPosArgsVariable

Performance Diagrams

Construct CallCompiledObjectMethodPosArgsVariable 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000200000000200000000CPython 2.7Nuitka (main)Nuitka (develop)Nuitka (factory)21210016288.11538461538461257.0CPython 2.769347275240.03846153846155423.31969652131403Nuitka (main)69347223391.96153846153845423.3197571058977Nuitka (develop)69347223543.8846153846154423.3197571058977Nuitka (factory)Construct CallCompiledObjectMethodPosArgsVariableTicks Construct CallCompiledObjectMethodPosArgsVariable 002000000020000000400000004000000060000000600000008000000080000000100000000100000000120000000120000000140000000140000000160000000160000000180000000180000000CPython 3.8Nuitka (main)Nuitka (develop)Nuitka (factory)18712485988.11538461538461257.0CPython 3.875601848240.03846153846155404.27627266632044Nuitka (main)75602228391.96153846153845404.2757708417812Nuitka (develop)75602228543.8846153846154404.2757708417812Nuitka (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_cb273429d8291e2d0a87d980401c1817; 85 static PyCodeObject *codeobj_cb273429d8291e2d0a87d980401c1817;
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_b768db7e0d2d94a9e81af97be1b8576f = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[32], NULL, NULL, 0, 0, 0); 91     codeobj_b768db7e0d2d94a9e81af97be1b8576f = MAKE_CODEOBJECT(module_filename_obj, 1, CO_NOFREE, mod_consts[32], NULL, NULL, 0, 0, 0);
92     codeobj_665c41b63b1fddbd54ff4d83d2bbdbd2 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[3], mod_consts[33], NULL, 0, 0, 0); 92     codeobj_665c41b63b1fddbd54ff4d83d2bbdbd2 = MAKE_CODEOBJECT(module_filename_obj, 22, CO_NOFREE, mod_consts[3], mod_consts[33], NULL, 0, 0, 0);
93     codeobj_83e83ba05089d3c02c7f1ab0f16deba1 = MAKE_CODEOBJECT(module_filename_obj, 29, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[25], mod_consts[34], NULL, 0, 0, 0); 93     codeobj_83e83ba05089d3c02c7f1ab0f16deba1 = 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_6095a971465b5e7d2ccadfc4e8c32b41 = 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_6095a971465b5e7d2ccadfc4e8c32b41 = MAKE_CODEOBJECT(module_filename_obj, 23, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[21], mod_consts[35], NULL, 7, 0, 0);
95     codeobj_cb273429d8291e2d0a87d980401c1817 = MAKE_CODEOBJECT(module_filename_obj, 26, CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, mod_consts[2], NULL, NULL, 0, 0, 0); 95     codeobj_cb273429d8291e2d0a87d980401c1817 = 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);
500     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL; 500     NUITKA_MAY_BE_UNUSED char const *type_description_1 = NULL;
501     PyObject *exception_type = NULL; 501     PyObject *exception_type = NULL;
502     PyObject *exception_value = NULL; 502     PyObject *exception_value = NULL;
503     PyTracebackObject *exception_tb = NULL; 503     PyTracebackObject *exception_tb = NULL;
504     NUITKA_MAY_BE_UNUSED int exception_lineno = 0; 504     NUITKA_MAY_BE_UNUSED int exception_lineno = 0;
n 505     NUITKA_MAY_BE_UNUSED nuitka_void tmp_unused; n
506     static struct Nuitka_FrameObject *cache_frame_83e83ba05089d3c02c7f1ab0f16deba1 = NULL; 505     static struct Nuitka_FrameObject *cache_frame_83e83ba05089d3c02c7f1ab0f16deba1 = NULL;
507     PyObject *tmp_return_value = NULL; 506     PyObject *tmp_return_value = NULL;
508     PyObject *exception_keeper_type_1; 507     PyObject *exception_keeper_type_1;
509     PyObject *exception_keeper_value_1; 508     PyObject *exception_keeper_value_1;
510     PyTracebackObject *exception_keeper_tb_1; 509     PyTracebackObject *exception_keeper_tb_1;
774             type_description_1 = "ooooooo"; 773             type_description_1 = "ooooooo";
775             goto frame_exception_exit_1; 774             goto frame_exception_exit_1;
776         } 775         }
777         assert(var_inst == NULL); 776         assert(var_inst == NULL);
778         var_inst = tmp_assign_source_7; 777         var_inst = tmp_assign_source_7;
n 779     } n
780     {
781         PyObject *tmp_called_instance_1;
782         PyObject *tmp_call_result_1;
783         PyObject *tmp_args_element_value_1;
784         PyObject *tmp_args_element_value_2;
785         PyObject *tmp_args_element_value_3;
786         PyObject *tmp_args_element_value_4;
787         PyObject *tmp_args_element_value_5;
788         PyObject *tmp_args_element_value_6;
789         CHECK_OBJECT(var_inst);
790         tmp_called_instance_1 = var_inst;
791         CHECK_OBJECT(var_a);
792         tmp_args_element_value_1 = var_a;
793         CHECK_OBJECT(var_b);
794         tmp_args_element_value_2 = var_b;
795         CHECK_OBJECT(var_c);
796         tmp_args_element_value_3 = var_c;
797         CHECK_OBJECT(var_d);
798         tmp_args_element_value_4 = var_d;
799         CHECK_OBJECT(var_e);
800         tmp_args_element_value_5 = var_e;
801         CHECK_OBJECT(var_f);
802         tmp_args_element_value_6 = var_f;
803         frame_83e83ba05089d3c02c7f1ab0f16deba1->m_frame.f_lineno = 42;
804         {
805             PyObject *call_args[] = {tmp_args_element_value_1, tmp_args_element_value_2, tmp_args_element_value_3, tmp_args_element_value_4, tmp_args_element_value_5, tmp_args_element_value_6};
806             tmp_call_result_1 = CALL_METHOD_WITH_ARGS6(
807                 tmp_called_instance_1,
808                 mod_consts[4],
809                 call_args
810             );
811         }
812  
813         if (tmp_call_result_1 == NULL) {
814             assert(ERROR_OCCURRED());
815  
816             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
817  
818  
819             exception_lineno = 42;
820             type_description_1 = "ooooooo";
821             goto frame_exception_exit_1;
822         }
823         Py_DECREF(tmp_call_result_1);
824     }
825     {
826         PyObject *tmp_called_instance_2;
827         PyObject *tmp_call_result_2;
828         PyObject *tmp_args_element_value_7;
829         PyObject *tmp_args_element_value_8;
830         PyObject *tmp_args_element_value_9;
831         PyObject *tmp_args_element_value_10;
832         PyObject *tmp_args_element_value_11;
833         PyObject *tmp_args_element_value_12;
834         CHECK_OBJECT(var_inst);
835         tmp_called_instance_2 = var_inst;
836         CHECK_OBJECT(var_a);
837         tmp_args_element_value_7 = var_a;
838         CHECK_OBJECT(var_c);
839         tmp_args_element_value_8 = var_c;
840         CHECK_OBJECT(var_b);
841         tmp_args_element_value_9 = var_b;
842         CHECK_OBJECT(var_d);
843         tmp_args_element_value_10 = var_d;
844         CHECK_OBJECT(var_e);
845         tmp_args_element_value_11 = var_e;
846         CHECK_OBJECT(var_f);
847         tmp_args_element_value_12 = var_f;
848         frame_83e83ba05089d3c02c7f1ab0f16deba1->m_frame.f_lineno = 43;
849         {
850             PyObject *call_args[] = {tmp_args_element_value_7, tmp_args_element_value_8, tmp_args_element_value_9, tmp_args_element_value_10, tmp_args_element_value_11, tmp_args_element_value_12};
851             tmp_call_result_2 = CALL_METHOD_WITH_ARGS6(
852                 tmp_called_instance_2,
853                 mod_consts[4],
854                 call_args
855             );
856         }
857  
858         if (tmp_call_result_2 == NULL) {
859             assert(ERROR_OCCURRED());
860  
861             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
862  
863  
864             exception_lineno = 43;
865             type_description_1 = "ooooooo";
866             goto frame_exception_exit_1;
867         }
868         Py_DECREF(tmp_call_result_2);
869     }
870     {
871         PyObject *tmp_called_instance_3;
872         PyObject *tmp_call_result_3;
873         PyObject *tmp_args_element_value_13;
874         PyObject *tmp_args_element_value_14;
875         PyObject *tmp_args_element_value_15;
876         PyObject *tmp_args_element_value_16;
877         PyObject *tmp_args_element_value_17;
878         PyObject *tmp_args_element_value_18;
879         CHECK_OBJECT(var_inst);
880         tmp_called_instance_3 = var_inst;
881         CHECK_OBJECT(var_a);
882         tmp_args_element_value_13 = var_a;
883         CHECK_OBJECT(var_b);
884         tmp_args_element_value_14 = var_b;
885         CHECK_OBJECT(var_c);
886         tmp_args_element_value_15 = var_c;
887         CHECK_OBJECT(var_d);
888         tmp_args_element_value_16 = var_d;
889         CHECK_OBJECT(var_f);
890         tmp_args_element_value_17 = var_f;
891         CHECK_OBJECT(var_e);
892         tmp_args_element_value_18 = var_e;
893         frame_83e83ba05089d3c02c7f1ab0f16deba1->m_frame.f_lineno = 44;
894         {
895             PyObject *call_args[] = {tmp_args_element_value_13, tmp_args_element_value_14, tmp_args_element_value_15, tmp_args_element_value_16, tmp_args_element_value_17, tmp_args_element_value_18};
896             tmp_call_result_3 = CALL_METHOD_WITH_ARGS6(
897                 tmp_called_instance_3,
898                 mod_consts[4],
899                 call_args
900             );
901         }
902  
903         if (tmp_call_result_3 == NULL) {
904             assert(ERROR_OCCURRED());
905  
906             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
907  
908  
909             exception_lineno = 44;
910             type_description_1 = "ooooooo";
911             goto frame_exception_exit_1;
912         }
913         Py_DECREF(tmp_call_result_3);
914     } 778     }
915 779
916 #if 0 780 #if 0
917     RESTORE_FRAME_EXCEPTION(frame_83e83ba05089d3c02c7f1ab0f16deba1); 781     RESTORE_FRAME_EXCEPTION(frame_83e83ba05089d3c02c7f1ab0f16deba1);
918 #endif 782 #endif
1018     var_d = NULL; 882     var_d = NULL;
1019     Py_XDECREF(var_e); 883     Py_XDECREF(var_e);
1020     var_e = NULL; 884     var_e = NULL;
1021     Py_XDECREF(var_f); 885     Py_XDECREF(var_f);
1022     var_f = NULL; 886     var_f = NULL;
n 1023     Py_XDECREF(var_inst); n
1024     var_inst = NULL;
1025     // Re-raise. 887     // Re-raise.
1026     exception_type = exception_keeper_type_1; 888     exception_type = exception_keeper_type_1;
1027     exception_value = exception_keeper_value_1; 889     exception_value = exception_keeper_value_1;
1028     exception_tb = exception_keeper_tb_1; 890     exception_tb = exception_keeper_tb_1;
1029     exception_lineno = exception_keeper_lineno_1; 891     exception_lineno = exception_keeper_lineno_1;
1054 916
1055 917
1056 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() { 918 static PyObject *MAKE_FUNCTION___main__$$$function__1_compiled_method() {
1057     struct Nuitka_FunctionObject *result = Nuitka_Function_New( 919     struct Nuitka_FunctionObject *result = Nuitka_Function_New(
1058         impl___main__$$$function__1_compiled_method, 920         impl___main__$$$function__1_compiled_method,
n 1059         mod_consts[4], n 921         mod_consts[21],
1060 #if PYTHON_VERSION >= 0x300 922 #if PYTHON_VERSION >= 0x300
1061         mod_consts[22], 923         mod_consts[22],
1062 #endif 924 #endif
1063         codeobj_6095a971465b5e7d2ccadfc4e8c32b41, 925         codeobj_6095a971465b5e7d2ccadfc4e8c32b41,
1064         NULL, 926         NULL,
1517 1379
1518     // Module code. 1380     // Module code.
1519     { 1381     {
1520         PyObject *tmp_assign_source_1; 1382         PyObject *tmp_assign_source_1;
1521         tmp_assign_source_1 = Py_None; 1383         tmp_assign_source_1 = Py_None;
n 1522         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[5], tmp_assign_source_1); n 1384         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[4], tmp_assign_source_1);
1523     } 1385     }
1524     { 1386     {
1525         PyObject *tmp_assign_source_2; 1387         PyObject *tmp_assign_source_2;
n 1526         tmp_assign_source_2 = mod_consts[6]; n 1388         tmp_assign_source_2 = mod_consts[5];
1527         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_2); 1389         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[6], tmp_assign_source_2);
1528     } 1390     }
1529     { 1391     {
1530         PyObject *tmp_assign_source_3; 1392         PyObject *tmp_assign_source_3;
1531         tmp_assign_source_3 = Py_None; 1393         tmp_assign_source_3 = Py_None;
n 1532         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_3); n 1394         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[7], tmp_assign_source_3);
1533     } 1395     }
1534     { 1396     {
1535         PyObject *tmp_assign_source_4; 1397         PyObject *tmp_assign_source_4;
1536         tmp_assign_source_4 = PyDict_New(); 1398         tmp_assign_source_4 = PyDict_New();
n 1537         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_4); n 1399         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[8], tmp_assign_source_4);
1538     } 1400     }
1539     { 1401     {
1540         PyObject *tmp_assign_source_5; 1402         PyObject *tmp_assign_source_5;
1541         { 1403         {
1542             PyObject *hard_module = IMPORT_HARD___FUTURE__(); 1404             PyObject *hard_module = IMPORT_HARD___FUTURE__();
n 1543             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[10]); n 1405             tmp_assign_source_5 = LOOKUP_ATTRIBUTE(hard_module, mod_consts[9]);
1544         } 1406         }
1545 1407
1546         assert(!(tmp_assign_source_5 == NULL)); 1408         assert(!(tmp_assign_source_5 == NULL));
n 1547         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[10], tmp_assign_source_5); n 1409         UPDATE_STRING_DICT0(moduledict___main__, (Nuitka_StringObject *)mod_consts[9], tmp_assign_source_5);
1548     } 1410     }
1549     // Frame without reuse. 1411     // Frame without reuse.
1550     frame_b768db7e0d2d94a9e81af97be1b8576f = MAKE_MODULE_FRAME(codeobj_b768db7e0d2d94a9e81af97be1b8576f, module___main__); 1412     frame_b768db7e0d2d94a9e81af97be1b8576f = MAKE_MODULE_FRAME(codeobj_b768db7e0d2d94a9e81af97be1b8576f, module___main__);
1551 1413
1552     // Push the new frame as the currently active one, and we should be exclusively 1414     // Push the new frame as the currently active one, and we should be exclusively
1557     // Framed code: 1419     // Framed code:
1558     // Tried code: 1420     // Tried code:
1559     { 1421     {
1560         PyObject *tmp_assign_source_6; 1422         PyObject *tmp_assign_source_6;
1561         PyObject *tmp_dircall_arg1_1; 1423         PyObject *tmp_dircall_arg1_1;
n 1562         tmp_dircall_arg1_1 = mod_consts[11]; n 1424         tmp_dircall_arg1_1 = mod_consts[10];
1563         Py_INCREF(tmp_dircall_arg1_1); 1425         Py_INCREF(tmp_dircall_arg1_1);
1564 1426
1565         { 1427         {
1566             PyObject *dir_call_args[] = {tmp_dircall_arg1_1}; 1428             PyObject *dir_call_args[] = {tmp_dircall_arg1_1};
1567             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args); 1429             tmp_assign_source_6 = impl___main__$$$function__1__mro_entries_conversion(dir_call_args);
1597         int tmp_truth_name_1; 1459         int tmp_truth_name_1;
1598         PyObject *tmp_type_arg_1; 1460         PyObject *tmp_type_arg_1;
1599         PyObject *tmp_expression_value_1; 1461         PyObject *tmp_expression_value_1;
1600         PyObject *tmp_subscript_value_1; 1462         PyObject *tmp_subscript_value_1;
1601         PyObject *tmp_bases_value_1; 1463         PyObject *tmp_bases_value_1;
n 1602         tmp_key_value_1 = mod_consts[12]; n 1464         tmp_key_value_1 = mod_consts[11];
1603         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1465         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1604         tmp_dict_arg_value_1 = tmp_class_creation_1__class_decl_dict; 1466         tmp_dict_arg_value_1 = tmp_class_creation_1__class_decl_dict;
1605         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_1, tmp_key_value_1); 1467         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_1, tmp_key_value_1);
1606         assert(!(tmp_res == -1)); 1468         assert(!(tmp_res == -1));
1607         tmp_condition_result_1 = (tmp_res != 0) ? true : false; 1469         tmp_condition_result_1 = (tmp_res != 0) ? true : false;
1611             goto condexpr_false_1; 1473             goto condexpr_false_1;
1612         } 1474         }
1613         condexpr_true_1:; 1475         condexpr_true_1:;
1614         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1476         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1615         tmp_dict_arg_value_2 = tmp_class_creation_1__class_decl_dict; 1477         tmp_dict_arg_value_2 = tmp_class_creation_1__class_decl_dict;
n 1616         tmp_key_value_2 = mod_consts[12]; n 1478         tmp_key_value_2 = mod_consts[11];
1617         tmp_metaclass_value_1 = DICT_GET_ITEM0(tmp_dict_arg_value_2, tmp_key_value_2); 1479         tmp_metaclass_value_1 = DICT_GET_ITEM0(tmp_dict_arg_value_2, tmp_key_value_2);
1618         if (tmp_metaclass_value_1 == NULL) { 1480         if (tmp_metaclass_value_1 == NULL) {
1619             tmp_metaclass_value_1 = Py_None; 1481             tmp_metaclass_value_1 = Py_None;
1620         } 1482         }
1621         assert(!(tmp_metaclass_value_1 == NULL)); 1483         assert(!(tmp_metaclass_value_1 == NULL));
1641             goto condexpr_false_2; 1503             goto condexpr_false_2;
1642         } 1504         }
1643         condexpr_true_2:; 1505         condexpr_true_2:;
1644         CHECK_OBJECT(tmp_class_creation_1__bases); 1506         CHECK_OBJECT(tmp_class_creation_1__bases);
1645         tmp_expression_value_1 = tmp_class_creation_1__bases; 1507         tmp_expression_value_1 = tmp_class_creation_1__bases;
n 1646         tmp_subscript_value_1 = mod_consts[13]; n 1508         tmp_subscript_value_1 = mod_consts[12];
1647         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_value_1, tmp_subscript_value_1, 0); 1509         tmp_type_arg_1 = LOOKUP_SUBSCRIPT_CONST(tmp_expression_value_1, tmp_subscript_value_1, 0);
1648         if (tmp_type_arg_1 == NULL) { 1510         if (tmp_type_arg_1 == NULL) {
1649             assert(ERROR_OCCURRED()); 1511             assert(ERROR_OCCURRED());
1650 1512
1651             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1513             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1692     } 1554     }
1693     { 1555     {
1694         bool tmp_condition_result_3; 1556         bool tmp_condition_result_3;
1695         PyObject *tmp_key_value_3; 1557         PyObject *tmp_key_value_3;
1696         PyObject *tmp_dict_arg_value_3; 1558         PyObject *tmp_dict_arg_value_3;
n 1697         tmp_key_value_3 = mod_consts[12]; n 1559         tmp_key_value_3 = mod_consts[11];
1698         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1560         CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1699         tmp_dict_arg_value_3 = tmp_class_creation_1__class_decl_dict; 1561         tmp_dict_arg_value_3 = tmp_class_creation_1__class_decl_dict;
1700         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_3, tmp_key_value_3); 1562         tmp_res = DICT_HAS_ITEM(tmp_dict_arg_value_3, tmp_key_value_3);
1701         assert(!(tmp_res == -1)); 1563         assert(!(tmp_res == -1));
1702         tmp_condition_result_3 = (tmp_res != 0) ? true : false; 1564         tmp_condition_result_3 = (tmp_res != 0) ? true : false;
1707         } 1569         }
1708     } 1570     }
1709     branch_yes_1:; 1571     branch_yes_1:;
1710     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict); 1572     CHECK_OBJECT(tmp_class_creation_1__class_decl_dict);
1711     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict; 1573     tmp_dictdel_dict = tmp_class_creation_1__class_decl_dict;
n 1712     tmp_dictdel_key = mod_consts[12]; n 1574     tmp_dictdel_key = mod_consts[11];
1713     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key); 1575     tmp_result = DICT_REMOVE_ITEM(tmp_dictdel_dict, tmp_dictdel_key);
1714     if (tmp_result == false) { 1576     if (tmp_result == false) {
1715         assert(ERROR_OCCURRED()); 1577         assert(ERROR_OCCURRED());
1716 1578
1717         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1579         FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1725     { 1587     {
1726         nuitka_bool tmp_condition_result_4; 1588         nuitka_bool tmp_condition_result_4;
1727         PyObject *tmp_expression_value_2; 1589         PyObject *tmp_expression_value_2;
1728         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1590         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1729         tmp_expression_value_2 = tmp_class_creation_1__metaclass; 1591         tmp_expression_value_2 = tmp_class_creation_1__metaclass;
n 1730         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_2, mod_consts[14]); n 1592         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_2, mod_consts[13]);
1731         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE; 1593         tmp_condition_result_4 = (tmp_result) ? NUITKA_BOOL_TRUE : NUITKA_BOOL_FALSE;
1732         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) { 1594         if (tmp_condition_result_4 == NUITKA_BOOL_TRUE) {
1733             goto branch_yes_2; 1595             goto branch_yes_2;
1734         } else { 1596         } else {
1735             goto branch_no_2; 1597             goto branch_no_2;
1743         PyObject *tmp_args_value_1; 1605         PyObject *tmp_args_value_1;
1744         PyObject *tmp_tuple_element_1; 1606         PyObject *tmp_tuple_element_1;
1745         PyObject *tmp_kwargs_value_1; 1607         PyObject *tmp_kwargs_value_1;
1746         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1608         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1747         tmp_expression_value_3 = tmp_class_creation_1__metaclass; 1609         tmp_expression_value_3 = tmp_class_creation_1__metaclass;
n 1748         tmp_called_value_1 = LOOKUP_ATTRIBUTE(tmp_expression_value_3, mod_consts[14]); n 1610         tmp_called_value_1 = LOOKUP_ATTRIBUTE(tmp_expression_value_3, mod_consts[13]);
1749         if (tmp_called_value_1 == NULL) { 1611         if (tmp_called_value_1 == NULL) {
1750             assert(ERROR_OCCURRED()); 1612             assert(ERROR_OCCURRED());
1751 1613
1752             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1614             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1753 1615
1785         bool tmp_condition_result_5; 1647         bool tmp_condition_result_5;
1786         PyObject *tmp_operand_value_1; 1648         PyObject *tmp_operand_value_1;
1787         PyObject *tmp_expression_value_4; 1649         PyObject *tmp_expression_value_4;
1788         CHECK_OBJECT(tmp_class_creation_1__prepared); 1650         CHECK_OBJECT(tmp_class_creation_1__prepared);
1789         tmp_expression_value_4 = tmp_class_creation_1__prepared; 1651         tmp_expression_value_4 = tmp_class_creation_1__prepared;
n 1790         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_4, mod_consts[15]); n 1652         tmp_result = HAS_ATTR_BOOL(tmp_expression_value_4, mod_consts[14]);
1791         tmp_operand_value_1 = (tmp_result) ? Py_True : Py_False; 1653         tmp_operand_value_1 = (tmp_result) ? Py_True : Py_False;
1792         tmp_res = CHECK_IF_TRUE(tmp_operand_value_1); 1654         tmp_res = CHECK_IF_TRUE(tmp_operand_value_1);
1793         if (tmp_res == -1) { 1655         if (tmp_res == -1) {
1794             assert(ERROR_OCCURRED()); 1656             assert(ERROR_OCCURRED());
1795 1657
1816         PyObject *tmp_tuple_element_2; 1678         PyObject *tmp_tuple_element_2;
1817         PyObject *tmp_getattr_target_1; 1679         PyObject *tmp_getattr_target_1;
1818         PyObject *tmp_getattr_attr_1; 1680         PyObject *tmp_getattr_attr_1;
1819         PyObject *tmp_getattr_default_1; 1681         PyObject *tmp_getattr_default_1;
1820         tmp_raise_type_1 = PyExc_TypeError; 1682         tmp_raise_type_1 = PyExc_TypeError;
n 1821         tmp_left_value_1 = mod_consts[16]; n 1683         tmp_left_value_1 = mod_consts[15];
1822         CHECK_OBJECT(tmp_class_creation_1__metaclass); 1684         CHECK_OBJECT(tmp_class_creation_1__metaclass);
1823         tmp_getattr_target_1 = tmp_class_creation_1__metaclass; 1685         tmp_getattr_target_1 = tmp_class_creation_1__metaclass;
n 1824         tmp_getattr_attr_1 = mod_consts[17]; n 1686         tmp_getattr_attr_1 = mod_consts[16];
1825         tmp_getattr_default_1 = mod_consts[18]; 1687         tmp_getattr_default_1 = mod_consts[17];
1826         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1); 1688         tmp_tuple_element_2 = BUILTIN_GETATTR(tmp_getattr_target_1, tmp_getattr_attr_1, tmp_getattr_default_1);
1827         if (tmp_tuple_element_2 == NULL) { 1689         if (tmp_tuple_element_2 == NULL) {
1828             assert(ERROR_OCCURRED()); 1690             assert(ERROR_OCCURRED());
1829 1691
1830             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1692             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1841             PyTuple_SET_ITEM(tmp_right_value_1, 0, tmp_tuple_element_2); 1703             PyTuple_SET_ITEM(tmp_right_value_1, 0, tmp_tuple_element_2);
1842             CHECK_OBJECT(tmp_class_creation_1__prepared); 1704             CHECK_OBJECT(tmp_class_creation_1__prepared);
1843             tmp_type_arg_2 = tmp_class_creation_1__prepared; 1705             tmp_type_arg_2 = tmp_class_creation_1__prepared;
1844             tmp_expression_value_5 = BUILTIN_TYPE1(tmp_type_arg_2); 1706             tmp_expression_value_5 = BUILTIN_TYPE1(tmp_type_arg_2);
1845             assert(!(tmp_expression_value_5 == NULL)); 1707             assert(!(tmp_expression_value_5 == NULL));
n 1846             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_value_5, mod_consts[17]); n 1708             tmp_tuple_element_2 = LOOKUP_ATTRIBUTE(tmp_expression_value_5, mod_consts[16]);
1847             Py_DECREF(tmp_expression_value_5); 1709             Py_DECREF(tmp_expression_value_5);
1848             if (tmp_tuple_element_2 == NULL) { 1710             if (tmp_tuple_element_2 == NULL) {
1849                 assert(ERROR_OCCURRED()); 1711                 assert(ERROR_OCCURRED());
1850 1712
1851                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1713                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1903             locals___main__$$$class__1_C_22 = tmp_set_locals_1; 1765             locals___main__$$$class__1_C_22 = tmp_set_locals_1;
1904             Py_INCREF(tmp_set_locals_1); 1766             Py_INCREF(tmp_set_locals_1);
1905         } 1767         }
1906         // Tried code: 1768         // Tried code:
1907         // Tried code: 1769         // Tried code:
n 1908         tmp_dictset_value = mod_consts[19]; n 1770         tmp_dictset_value = mod_consts[18];
1771         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[19], tmp_dictset_value);
1772         if (tmp_res != 0) {
1773             assert(ERROR_OCCURRED());
1774  
1775             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1776  
1777  
1778             exception_lineno = 22;
1779  
1780             goto try_except_handler_3;
1781         }
1782         tmp_dictset_value = mod_consts[3];
1909         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value); 1783         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[20], tmp_dictset_value);
n 1910         if (tmp_res != 0) { n
1911             assert(ERROR_OCCURRED());
1912  
1913             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1914  
1915  
1916             exception_lineno = 22;
1917  
1918             goto try_except_handler_3;
1919         }
1920         tmp_dictset_value = mod_consts[3];
1921         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[21], tmp_dictset_value);
1922         if (tmp_res != 0) { 1784         if (tmp_res != 0) {
1923             assert(ERROR_OCCURRED()); 1785             assert(ERROR_OCCURRED());
1924 1786
1925             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1787             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
1926 1788
1958         // Framed code: 1820         // Framed code:
1959 1821
1960 1822
1961         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method(); 1823         tmp_dictset_value = MAKE_FUNCTION___main__$$$function__1_compiled_method();
1962 1824
n 1963         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[4], tmp_dictset_value); n 1825         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[21], tmp_dictset_value);
1964         Py_DECREF(tmp_dictset_value); 1826         Py_DECREF(tmp_dictset_value);
1965         if (tmp_res != 0) { 1827         if (tmp_res != 0) {
1966             assert(ERROR_OCCURRED()); 1828             assert(ERROR_OCCURRED());
1967 1829
1968             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1830             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
2031             nuitka_bool tmp_condition_result_6; 1893             nuitka_bool tmp_condition_result_6;
2032             PyObject *tmp_compexpr_left_1; 1894             PyObject *tmp_compexpr_left_1;
2033             PyObject *tmp_compexpr_right_1; 1895             PyObject *tmp_compexpr_right_1;
2034             CHECK_OBJECT(tmp_class_creation_1__bases); 1896             CHECK_OBJECT(tmp_class_creation_1__bases);
2035             tmp_compexpr_left_1 = tmp_class_creation_1__bases; 1897             tmp_compexpr_left_1 = tmp_class_creation_1__bases;
n 2036             tmp_compexpr_right_1 = mod_consts[11]; n 1898             tmp_compexpr_right_1 = mod_consts[10];
2037             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1); 1899             tmp_condition_result_6 = RICH_COMPARE_NE_NBOOL_OBJECT_TUPLE(tmp_compexpr_left_1, tmp_compexpr_right_1);
2038             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) { 1900             if (tmp_condition_result_6 == NUITKA_BOOL_EXCEPTION) {
2039                 assert(ERROR_OCCURRED()); 1901                 assert(ERROR_OCCURRED());
2040 1902
2041                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1903                 FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
2051                 goto branch_no_4; 1913                 goto branch_no_4;
2052             } 1914             }
2053             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED); 1915             assert(tmp_condition_result_6 != NUITKA_BOOL_UNASSIGNED);
2054         } 1916         }
2055         branch_yes_4:; 1917         branch_yes_4:;
n 2056         tmp_dictset_value = mod_consts[11]; n 1918         tmp_dictset_value = mod_consts[10];
2057         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[23], tmp_dictset_value); 1919         tmp_res = PyObject_SetItem(locals___main__$$$class__1_C_22, mod_consts[23], tmp_dictset_value);
2058         if (tmp_res != 0) { 1920         if (tmp_res != 0) {
2059             assert(ERROR_OCCURRED()); 1921             assert(ERROR_OCCURRED());
2060 1922
2061             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb); 1923             FETCH_ERROR_OCCURRED(&exception_type, &exception_value, &exception_tb);
2233         PyObject *tmp_level_value_1; 2095         PyObject *tmp_level_value_1;
2234         tmp_name_value_1 = mod_consts[26]; 2096         tmp_name_value_1 = mod_consts[26];
2235         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__; 2097         tmp_globals_arg_value_1 = (PyObject *)moduledict___main__;
2236         tmp_locals_arg_value_1 = Py_None; 2098         tmp_locals_arg_value_1 = Py_None;
2237         tmp_fromlist_value_1 = Py_None; 2099         tmp_fromlist_value_1 = Py_None;
t 2238         tmp_level_value_1 = mod_consts[13]; t 2100         tmp_level_value_1 = mod_consts[12];
2239         frame_b768db7e0d2d94a9e81af97be1b8576f->m_frame.f_lineno = 49; 2101         frame_b768db7e0d2d94a9e81af97be1b8576f->m_frame.f_lineno = 49;
2240         tmp_assign_source_15 = IMPORT_MODULE5(tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1, tmp_level_value_1); 2102         tmp_assign_source_15 = IMPORT_MODULE5(tmp_name_value_1, tmp_globals_arg_value_1, tmp_locals_arg_value_1, tmp_fromlist_value_1, tmp_level_value_1);
2241         assert(!(tmp_assign_source_15 == NULL)); 2103         assert(!(tmp_assign_source_15 == NULL));
2242         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[26], tmp_assign_source_15); 2104         UPDATE_STRING_DICT1(moduledict___main__, (Nuitka_StringObject *)mod_consts[26], tmp_assign_source_15);
2243     } 2105     }