@@ -514,13 +514,15 @@ static void emit_native_delete_id(emit_t *emit, qstr qstr) {
514514}
515515
516516static void emit_native_label_assign (emit_t * emit , int l ) {
517+ emit_pre (emit );
517518 // need to commit stack because we can jump here from elsewhere
518519 need_stack_settled (emit );
519520#if N_X64
520521 asm_x64_label_assign (emit -> as , l );
521522#elif N_THUMB
522523 asm_thumb_label_assign (emit -> as , l );
523524#endif
525+ emit_post (emit );
524526}
525527
526528static void emit_native_import_name (emit_t * emit , qstr qstr ) {
@@ -577,8 +579,10 @@ static void emit_native_load_const_int(emit_t *emit, qstr qstr) {
577579}
578580
579581static void emit_native_load_const_dec (emit_t * emit , qstr qstr ) {
580- // not supported for viper (although, could support floats in future)
581- assert (0 );
582+ // for viper, a float/complex is just a Python object
583+ emit_pre (emit );
584+ emit_call_with_imm_arg (emit , RT_F_LOAD_CONST_DEC , rt_load_const_dec , qstr , REG_ARG_1 );
585+ emit_post_push_reg (emit , VTYPE_PYOBJ , REG_RET );
582586}
583587
584588static void emit_native_load_const_id (emit_t * emit , qstr qstr ) {
@@ -903,7 +907,7 @@ static void emit_native_setup_loop(emit_t *emit, int label) {
903907}
904908
905909static void emit_native_break_loop (emit_t * emit , int label ) {
906- assert ( 0 );
910+ emit_native_jump ( emit , label ); // TODO properly
907911}
908912static void emit_native_continue_loop (emit_t * emit , int label ) {
909913 assert (0 );
0 commit comments