From ab73553bf2ef21269d87ae7f2013f4bdb26a388b Mon Sep 17 00:00:00 2001 From: Leonardo de Moura Date: Sat, 9 Mar 2019 12:40:43 -0800 Subject: [PATCH] chore(boot): update --- src/boot/init/data/char/basic.cpp | 106 +++++ src/boot/init/data/string/basic.cpp | 462 +++++++++++++++++-- src/boot/init/lean/extern.cpp | 4 +- src/boot/init/lean/name_mangling.cpp | 4 +- src/boot/init/lean/parser/string_literal.cpp | 4 +- src/boot/init/lean/parser/token.cpp | 8 +- 6 files changed, 547 insertions(+), 41 deletions(-) diff --git a/src/boot/init/data/char/basic.cpp b/src/boot/init/data/char/basic.cpp index 7ca0aa424e..67f65f3b1d 100644 --- a/src/boot/init/data/char/basic.cpp +++ b/src/boot/init/data/char/basic.cpp @@ -45,6 +45,7 @@ obj* uint32_to_nat(uint32); } uint8 l_char_dec__lt(uint32, uint32); obj* l_char_is__lower___boxed(obj*); +uint32 l_char_utf8__size(uint32); obj* l_char_decidable__eq___boxed(obj*, obj*); obj* l_char_inhabited___boxed; uint8 l_char_dec__le(uint32, uint32); @@ -56,6 +57,7 @@ uint32 uint32_of_nat(obj*); } obj* l_char_to__nat(uint32); obj* l_char_is__alpha___boxed(obj*); +obj* l_char_utf8__size___boxed(obj*); obj* l_char_has__sizeof(uint32 x_0) { _start: { @@ -73,6 +75,110 @@ x_2 = l_char_has__sizeof(x_1); return x_2; } } +uint32 l_char_utf8__size(uint32 x_0) { +_start: +{ +uint32 x_1; uint32 x_2; uint32 x_3; uint32 x_4; uint8 x_5; +x_1 = 1; +x_2 = 128; +x_3 = x_0 & x_2; +x_4 = 0; +x_5 = x_3 == x_4; +if (x_5 == 0) +{ +uint32 x_6; uint32 x_7; uint32 x_8; uint8 x_9; +x_6 = 224; +x_7 = x_0 & x_6; +x_8 = 192; +x_9 = x_7 == x_8; +if (x_9 == 0) +{ +uint32 x_10; uint32 x_11; uint8 x_12; +x_10 = 240; +x_11 = x_0 & x_10; +x_12 = x_11 == x_6; +if (x_12 == 0) +{ +uint32 x_13; uint32 x_14; uint8 x_15; +x_13 = 248; +x_14 = x_0 & x_13; +x_15 = x_14 == x_10; +if (x_15 == 0) +{ +uint32 x_16; uint32 x_17; uint8 x_18; +x_16 = 252; +x_17 = x_0 & x_16; +x_18 = x_17 == x_13; +if (x_18 == 0) +{ +uint32 x_19; uint32 x_20; uint32 x_21; uint8 x_22; +x_19 = 6; +x_20 = 254; +x_21 = x_0 & x_20; +x_22 = x_21 == x_16; +if (x_22 == 0) +{ +uint32 x_23; uint8 x_24; +x_23 = 255; +x_24 = x_0 == x_23; +if (x_24 == 0) +{ +return x_4; +} +else +{ +return x_1; +} +} +else +{ +return x_19; +} +} +else +{ +uint32 x_25; +x_25 = 5; +return x_25; +} +} +else +{ +uint32 x_26; +x_26 = 4; +return x_26; +} +} +else +{ +uint32 x_27; +x_27 = 3; +return x_27; +} +} +else +{ +uint32 x_28; +x_28 = 2; +return x_28; +} +} +else +{ +return x_1; +} +} +} +obj* l_char_utf8__size___boxed(obj* x_0) { +_start: +{ +uint32 x_1; uint32 x_2; obj* x_3; +x_1 = lean::unbox_uint32(x_0); +x_2 = l_char_utf8__size(x_1); +x_3 = lean::box_uint32(x_2); +return x_3; +} +} obj* _init_l_char_has__lt() { _start: { diff --git a/src/boot/init/data/string/basic.cpp b/src/boot/init/data/string/basic.cpp index 19eb593ae5..0d5e3897dc 100644 --- a/src/boot/init/data/string/basic.cpp +++ b/src/boot/init/data/string/basic.cpp @@ -16,20 +16,23 @@ typedef lean::uint32 uint32; typedef lean::uint64 uint64; #endif obj* l_string_iterator_next___boxed(obj*); obj* l_string_backn(obj*, obj*); +usize l___private_init_data_string_basic_2__utf8__byte__size__aux(obj*, usize); obj* l_string_iterator_prevn(obj*, obj*); namespace lean { obj* string_iterator_prev_to_string(obj*); } +usize l___private_init_data_string_basic_2__utf8__byte__size__aux___main(obj*, usize); uint32 l_string_front(obj*); uint8 l_char_is__whitespace(uint32); -obj* l___private_init_data_string_basic_2__trim__right__aux(obj*, obj*); +obj* l___private_init_data_string_basic_5__utf8__extract__aux_u_2081___main(obj*, usize, usize, usize); obj* l_string_iterator_prev__to__string___boxed(obj*); -obj* l___private_init_data_string_basic_1__trim__left__aux___main(obj*, obj*); +obj* l___private_init_data_string_basic_7__trim__right__aux___main(obj*, obj*); obj* l_string_pushn___boxed(obj*, obj*, obj*); namespace lean { obj* nat_add(obj*, obj*); } obj* l_string_has__lt; +obj* l___private_init_data_string_basic_9__to__nat__core___main(obj*, obj*, obj*); obj* l_string_iterator_remaining___boxed(obj*); obj* l_string_iterator_forward(obj*, obj*); obj* l_string_decidable__eq; @@ -43,18 +46,31 @@ obj* l_string_iterator_has__next___boxed(obj*); obj* l_nat_repeat__core___main___at_string_pushn___spec__1(uint32, obj*, obj*, obj*); obj* l_string_iterator_extract__core(obj*, obj*); obj* l_string_back___boxed(obj*); +obj* l___private_init_data_string_basic_4__utf8__extract__aux_u_2082(obj*, usize, usize); +namespace lean { +obj* string_utf8_extract(obj*, usize, usize); +} namespace lean { obj* string_iterator_next(obj*); } +namespace lean { +usize string_utf8_next(obj*, usize); +} +namespace lean { +usize string_utf8_byte_size(obj*); +} obj* l_string_singleton___boxed(obj*); +usize l___private_init_data_string_basic_1__csize(uint32); namespace lean { obj* string_length(obj*); } obj* l_string_front___boxed(obj*); +usize l_string_utf8__begin; uint8 l_string_is__empty(obj*); namespace lean { uint32 string_iterator_curr(obj*); } +obj* l___private_init_data_string_basic_9__to__nat__core(obj*, obj*, obj*); namespace lean { obj* string_iterator_set_curr(obj*, uint32); } @@ -62,9 +78,10 @@ namespace lean { obj* string_append(obj*, obj*); } obj* l_string_iterator_insert___boxed(obj*, obj*); -obj* l___private_init_data_string_basic_4__to__nat__core(obj*, obj*, obj*); obj* l_string_pop__back(obj*); +uint32 l___private_init_data_string_basic_3__utf8__get__aux___main(obj*, usize, usize); obj* l_string_intercalate(obj*, obj*); +obj* l___private_init_data_string_basic_3__utf8__get__aux___main___boxed(obj*, obj*, obj*); namespace lean { uint8 string_dec_lt(obj*, obj*); } @@ -77,7 +94,9 @@ namespace lean { obj* string_iterator_extract(obj*, obj*); } uint32 l_string_back(obj*); +obj* l_string_utf8__begin___boxed; obj* l_option_get__or__else___main___rarg(obj*, obj*); +obj* l___private_init_data_string_basic_4__utf8__extract__aux_u_2082___main___boxed(obj*, obj*, obj*); namespace lean { obj* string_data(obj*); } @@ -87,6 +106,9 @@ obj* l_string_to__nat(obj*); namespace lean { uint8 string_iterator_has_next(obj*); } +obj* l___private_init_data_string_basic_8__line__column__aux(obj*, obj*, obj*); +obj* l_string_utf8__at__end___boxed(obj*, obj*); +obj* l___private_init_data_string_basic_9__to__nat__core___main___closed__1; namespace lean { uint8 nat_dec_eq(obj*, obj*); } @@ -96,18 +118,19 @@ obj* string_iterator_remaining_to_string(obj*); obj* l_string_line__column(obj*, obj*); obj* l_string_iterator_nextn___main(obj*, obj*); obj* l_string_length___boxed(obj*); -obj* l___private_init_data_string_basic_2__trim__right__aux___main(obj*, obj*); obj* l_string_iterator_to__string___boxed(obj*); obj* l_string_iterator_remove___boxed(obj*, obj*); +obj* l___private_init_data_string_basic_2__utf8__byte__size__aux___main___boxed(obj*, obj*); obj* l_string_join___closed__1; +uint32 l___private_init_data_string_basic_3__utf8__get__aux(obj*, usize, usize); obj* l_list_foldl___main___at_string_join___spec__1(obj*, obj*); -obj* l___private_init_data_string_basic_1__trim__left__aux(obj*, obj*); obj* l_string_iterator_offset___boxed(obj*); -obj* l___private_init_data_string_basic_3__line__column__aux(obj*, obj*, obj*); +obj* l___private_init_data_string_basic_8__line__column__aux___main(obj*, obj*, obj*); namespace lean { obj* uint32_to_nat(uint32); } -obj* l___private_init_data_string_basic_3__line__column__aux___main(obj*, obj*, obj*); +obj* l___private_init_data_string_basic_6__trim__left__aux(obj*, obj*); +obj* l_string_utf8__get___boxed(obj*, obj*); obj* l_string_has__append; namespace lean { obj* string_iterator_prev(obj*); @@ -121,38 +144,52 @@ obj* l_list_intercalate___rarg(obj*, obj*); namespace lean { obj* string_iterator_offset(obj*); } +obj* l___private_init_data_string_basic_5__utf8__extract__aux_u_2081___boxed(obj*, obj*, obj*, obj*); +obj* l_string_utf8__byte__size___boxed(obj*); namespace lean { obj* string_mk(obj*); } obj* l_string_inhabited; +obj* l___private_init_data_string_basic_5__utf8__extract__aux_u_2081___main___boxed(obj*, obj*, obj*, obj*); obj* l_string_join(obj*); +obj* l___private_init_data_string_basic_2__utf8__byte__size__aux___boxed(obj*, obj*); uint8 l_string_iterator_decidable__rel(obj*, obj*); obj* l_string_push___boxed(obj*, obj*); obj* l_string_dec__eq___boxed(obj*, obj*); obj* l_string_mk__iterator___boxed(obj*); obj* l_string_iterator_decidable__rel___boxed(obj*, obj*); +obj* l_string_utf8__next___boxed(obj*, obj*); obj* l_list_has__dec__eq___main___at_string_iterator_extract__core___main___spec__1___boxed(obj*, obj*); obj* l_string_iterator_nextn(obj*, obj*); +obj* l___private_init_data_string_basic_1__csize___boxed(obj*); namespace lean { uint8 string_dec_eq(obj*, obj*); } obj* l_string_trim__right(obj*); obj* l_string_iterator_extract__core___main(obj*, obj*); +uint32 l_char_utf8__size(uint32); namespace lean { obj* string_iterator_insert(obj*, obj*); } +obj* l___private_init_data_string_basic_6__trim__left__aux___main(obj*, obj*); +obj* l___private_init_data_string_basic_3__utf8__get__aux___boxed(obj*, obj*, obj*); obj* l_char_to__string(uint32); namespace lean { obj* string_iterator_remaining(obj*); } namespace lean { +usize usize_of_nat(obj*); +} +namespace lean { obj* string_mk_iterator(obj*); } obj* l_list_map___main___at_string_intercalate___spec__1(obj*); +obj* l_string_utf8__extract___boxed(obj*, obj*, obj*); obj* l_string_has__sizeof; obj* l_string_to__list(obj*); obj* l_string_trim(obj*); uint8 l_list_has__dec__eq___main___at_string_iterator_extract__core___main___spec__1(obj*, obj*); +obj* l___private_init_data_string_basic_4__utf8__extract__aux_u_2082___main(obj*, usize, usize); obj* l_string_iterator_set__curr___boxed(obj*, obj*); obj* l_nat_repeat__core___main___at_string_pushn___spec__1___boxed(obj*, obj*, obj*, obj*); obj* l_string_iterator_prev___boxed(obj*); @@ -162,14 +199,12 @@ uint32 uint32_of_nat(obj*); namespace lean { obj* nat_mul(obj*, obj*); } -obj* l___private_init_data_string_basic_4__to__nat__core___main(obj*, obj*, obj*); obj* l_string_is__empty___boxed(obj*); namespace lean { uint8 string_iterator_has_prev(obj*); } obj* l_string_iterator_to__end___boxed(obj*); obj* l_string_iterator_extract___boxed(obj*, obj*); -obj* l___private_init_data_string_basic_4__to__nat__core___main___closed__1; namespace lean { obj* nat_sub(obj*, obj*); } @@ -177,13 +212,22 @@ obj* l_string_trim__left(obj*); namespace lean { obj* string_push(obj*, uint32); } +namespace lean { +uint32 string_utf8_get(obj*, usize); +} obj* l_string_str___boxed(obj*, obj*); +namespace lean { +uint8 string_utf8_at_end(obj*, usize); +} obj* l_string_iterator_remaining__to__string___boxed(obj*); +obj* l___private_init_data_string_basic_5__utf8__extract__aux_u_2081(obj*, usize, usize, usize); namespace lean { obj* string_iterator_to_string(obj*); } +obj* l___private_init_data_string_basic_7__trim__right__aux(obj*, obj*); obj* l_string_iterator_has__prev___boxed(obj*); obj* l_string_dec__lt___boxed(obj*, obj*); +obj* l___private_init_data_string_basic_4__utf8__extract__aux_u_2082___boxed(obj*, obj*, obj*); obj* l_string_join___boxed(obj*); obj* l_string_dec__eq___boxed(obj* x_0, obj* x_1) { _start: @@ -266,6 +310,359 @@ x_1 = lean::string_data(x_0); return x_1; } } +usize l___private_init_data_string_basic_1__csize(uint32 x_0) { +_start: +{ +uint32 x_1; usize x_2; +x_1 = l_char_utf8__size(x_0); +x_2 = x_1; +return x_2; +} +} +obj* l___private_init_data_string_basic_1__csize___boxed(obj* x_0) { +_start: +{ +uint32 x_1; usize x_2; obj* x_3; +x_1 = lean::unbox_uint32(x_0); +x_2 = l___private_init_data_string_basic_1__csize(x_1); +x_3 = lean::box_size_t(x_2); +return x_3; +} +} +usize l___private_init_data_string_basic_2__utf8__byte__size__aux___main(obj* x_0, usize x_1) { +_start: +{ +if (lean::obj_tag(x_0) == 0) +{ +return x_1; +} +else +{ +obj* x_2; obj* x_3; uint32 x_4; usize x_5; usize x_6; +x_2 = lean::cnstr_get(x_0, 0); +x_3 = lean::cnstr_get(x_0, 1); +x_4 = lean::unbox_uint32(x_2); +x_5 = l___private_init_data_string_basic_1__csize(x_4); +x_6 = x_1 + x_5; +x_0 = x_3; +x_1 = x_6; +goto _start; +} +} +} +obj* l___private_init_data_string_basic_2__utf8__byte__size__aux___main___boxed(obj* x_0, obj* x_1) { +_start: +{ +usize x_2; usize x_3; obj* x_4; +x_2 = lean::unbox_size_t(x_1); +x_3 = l___private_init_data_string_basic_2__utf8__byte__size__aux___main(x_0, x_2); +x_4 = lean::box_size_t(x_3); +lean::dec(x_0); +return x_4; +} +} +usize l___private_init_data_string_basic_2__utf8__byte__size__aux(obj* x_0, usize x_1) { +_start: +{ +usize x_2; +x_2 = l___private_init_data_string_basic_2__utf8__byte__size__aux___main(x_0, x_1); +return x_2; +} +} +obj* l___private_init_data_string_basic_2__utf8__byte__size__aux___boxed(obj* x_0, obj* x_1) { +_start: +{ +usize x_2; usize x_3; obj* x_4; +x_2 = lean::unbox_size_t(x_1); +x_3 = l___private_init_data_string_basic_2__utf8__byte__size__aux(x_0, x_2); +x_4 = lean::box_size_t(x_3); +lean::dec(x_0); +return x_4; +} +} +obj* l_string_utf8__byte__size___boxed(obj* x_0) { +_start: +{ +usize x_1; obj* x_2; +x_1 = lean::string_utf8_byte_size(x_0); +x_2 = lean::box_size_t(x_1); +lean::dec(x_0); +return x_2; +} +} +usize _init_l_string_utf8__begin() { +_start: +{ +usize x_0; +x_0 = 0; +return x_0; +} +} +obj* _init_l_string_utf8__begin___boxed() { +_start: +{ +usize x_0; obj* x_1; +x_0 = l_string_utf8__begin; +x_1 = lean::box_size_t(x_0); +return x_1; +} +} +uint32 l___private_init_data_string_basic_3__utf8__get__aux___main(obj* x_0, usize x_1, usize x_2) { +_start: +{ +if (lean::obj_tag(x_0) == 0) +{ +uint32 x_3; +x_3 = 65; +return x_3; +} +else +{ +obj* x_4; obj* x_5; uint8 x_6; +x_4 = lean::cnstr_get(x_0, 0); +x_5 = lean::cnstr_get(x_0, 1); +x_6 = x_1 == x_2; +if (x_6 == 0) +{ +uint32 x_7; usize x_8; usize x_9; +x_7 = lean::unbox_uint32(x_4); +x_8 = l___private_init_data_string_basic_1__csize(x_7); +x_9 = x_1 + x_8; +x_0 = x_5; +x_1 = x_9; +goto _start; +} +else +{ +uint32 x_11; +x_11 = lean::unbox_uint32(x_4); +return x_11; +} +} +} +} +obj* l___private_init_data_string_basic_3__utf8__get__aux___main___boxed(obj* x_0, obj* x_1, obj* x_2) { +_start: +{ +usize x_3; usize x_4; uint32 x_5; obj* x_6; +x_3 = lean::unbox_size_t(x_1); +x_4 = lean::unbox_size_t(x_2); +x_5 = l___private_init_data_string_basic_3__utf8__get__aux___main(x_0, x_3, x_4); +x_6 = lean::box_uint32(x_5); +lean::dec(x_0); +return x_6; +} +} +uint32 l___private_init_data_string_basic_3__utf8__get__aux(obj* x_0, usize x_1, usize x_2) { +_start: +{ +uint32 x_3; +x_3 = l___private_init_data_string_basic_3__utf8__get__aux___main(x_0, x_1, x_2); +return x_3; +} +} +obj* l___private_init_data_string_basic_3__utf8__get__aux___boxed(obj* x_0, obj* x_1, obj* x_2) { +_start: +{ +usize x_3; usize x_4; uint32 x_5; obj* x_6; +x_3 = lean::unbox_size_t(x_1); +x_4 = lean::unbox_size_t(x_2); +x_5 = l___private_init_data_string_basic_3__utf8__get__aux(x_0, x_3, x_4); +x_6 = lean::box_uint32(x_5); +lean::dec(x_0); +return x_6; +} +} +obj* l_string_utf8__get___boxed(obj* x_0, obj* x_1) { +_start: +{ +usize x_2; uint32 x_3; obj* x_4; +x_2 = lean::unbox_size_t(x_1); +x_3 = lean::string_utf8_get(x_0, x_2); +x_4 = lean::box_uint32(x_3); +lean::dec(x_0); +return x_4; +} +} +obj* l_string_utf8__next___boxed(obj* x_0, obj* x_1) { +_start: +{ +usize x_2; usize x_3; obj* x_4; +x_2 = lean::unbox_size_t(x_1); +x_3 = lean::string_utf8_next(x_0, x_2); +x_4 = lean::box_size_t(x_3); +lean::dec(x_0); +return x_4; +} +} +obj* l_string_utf8__at__end___boxed(obj* x_0, obj* x_1) { +_start: +{ +usize x_2; uint8 x_3; obj* x_4; +x_2 = lean::unbox_size_t(x_1); +x_3 = lean::string_utf8_at_end(x_0, x_2); +x_4 = lean::box(x_3); +lean::dec(x_0); +return x_4; +} +} +obj* l___private_init_data_string_basic_4__utf8__extract__aux_u_2082___main(obj* x_0, usize x_1, usize x_2) { +_start: +{ +if (lean::obj_tag(x_0) == 0) +{ +return x_0; +} +else +{ +obj* x_3; obj* x_5; obj* x_7; uint8 x_8; +x_3 = lean::cnstr_get(x_0, 0); +x_5 = lean::cnstr_get(x_0, 1); +if (lean::is_exclusive(x_0)) { + lean::cnstr_set(x_0, 0, lean::box(0)); + lean::cnstr_set(x_0, 1, lean::box(0)); + x_7 = x_0; +} else { + lean::inc(x_3); + lean::inc(x_5); + lean::dec(x_0); + x_7 = lean::box(0); +} +x_8 = x_1 == x_2; +if (x_8 == 0) +{ +uint32 x_9; usize x_10; usize x_11; obj* x_12; obj* x_13; +x_9 = lean::unbox_uint32(x_3); +x_10 = l___private_init_data_string_basic_1__csize(x_9); +x_11 = x_1 + x_10; +x_12 = l___private_init_data_string_basic_4__utf8__extract__aux_u_2082___main(x_5, x_11, x_2); +if (lean::is_scalar(x_7)) { + x_13 = lean::alloc_cnstr(1, 2, 0); +} else { + x_13 = x_7; +} +lean::cnstr_set(x_13, 0, x_3); +lean::cnstr_set(x_13, 1, x_12); +return x_13; +} +else +{ +obj* x_17; +lean::dec(x_7); +lean::dec(x_5); +lean::dec(x_3); +x_17 = lean::box(0); +return x_17; +} +} +} +} +obj* l___private_init_data_string_basic_4__utf8__extract__aux_u_2082___main___boxed(obj* x_0, obj* x_1, obj* x_2) { +_start: +{ +usize x_3; usize x_4; obj* x_5; +x_3 = lean::unbox_size_t(x_1); +x_4 = lean::unbox_size_t(x_2); +x_5 = l___private_init_data_string_basic_4__utf8__extract__aux_u_2082___main(x_0, x_3, x_4); +return x_5; +} +} +obj* l___private_init_data_string_basic_4__utf8__extract__aux_u_2082(obj* x_0, usize x_1, usize x_2) { +_start: +{ +obj* x_3; +x_3 = l___private_init_data_string_basic_4__utf8__extract__aux_u_2082___main(x_0, x_1, x_2); +return x_3; +} +} +obj* l___private_init_data_string_basic_4__utf8__extract__aux_u_2082___boxed(obj* x_0, obj* x_1, obj* x_2) { +_start: +{ +usize x_3; usize x_4; obj* x_5; +x_3 = lean::unbox_size_t(x_1); +x_4 = lean::unbox_size_t(x_2); +x_5 = l___private_init_data_string_basic_4__utf8__extract__aux_u_2082(x_0, x_3, x_4); +return x_5; +} +} +obj* l___private_init_data_string_basic_5__utf8__extract__aux_u_2081___main(obj* x_0, usize x_1, usize x_2, usize x_3) { +_start: +{ +if (lean::obj_tag(x_0) == 0) +{ +return x_0; +} +else +{ +obj* x_4; obj* x_6; uint8 x_8; +x_4 = lean::cnstr_get(x_0, 0); +lean::inc(x_4); +x_6 = lean::cnstr_get(x_0, 1); +lean::inc(x_6); +x_8 = x_1 == x_2; +if (x_8 == 0) +{ +uint32 x_10; usize x_11; usize x_12; +lean::dec(x_0); +x_10 = lean::unbox_uint32(x_4); +x_11 = l___private_init_data_string_basic_1__csize(x_10); +x_12 = x_1 + x_11; +x_0 = x_6; +x_1 = x_12; +goto _start; +} +else +{ +obj* x_16; +lean::dec(x_6); +lean::dec(x_4); +x_16 = l___private_init_data_string_basic_4__utf8__extract__aux_u_2082___main(x_0, x_1, x_3); +return x_16; +} +} +} +} +obj* l___private_init_data_string_basic_5__utf8__extract__aux_u_2081___main___boxed(obj* x_0, obj* x_1, obj* x_2, obj* x_3) { +_start: +{ +usize x_4; usize x_5; usize x_6; obj* x_7; +x_4 = lean::unbox_size_t(x_1); +x_5 = lean::unbox_size_t(x_2); +x_6 = lean::unbox_size_t(x_3); +x_7 = l___private_init_data_string_basic_5__utf8__extract__aux_u_2081___main(x_0, x_4, x_5, x_6); +return x_7; +} +} +obj* l___private_init_data_string_basic_5__utf8__extract__aux_u_2081(obj* x_0, usize x_1, usize x_2, usize x_3) { +_start: +{ +obj* x_4; +x_4 = l___private_init_data_string_basic_5__utf8__extract__aux_u_2081___main(x_0, x_1, x_2, x_3); +return x_4; +} +} +obj* l___private_init_data_string_basic_5__utf8__extract__aux_u_2081___boxed(obj* x_0, obj* x_1, obj* x_2, obj* x_3) { +_start: +{ +usize x_4; usize x_5; usize x_6; obj* x_7; +x_4 = lean::unbox_size_t(x_1); +x_5 = lean::unbox_size_t(x_2); +x_6 = lean::unbox_size_t(x_3); +x_7 = l___private_init_data_string_basic_5__utf8__extract__aux_u_2081(x_0, x_4, x_5, x_6); +return x_7; +} +} +obj* l_string_utf8__extract___boxed(obj* x_0, obj* x_1, obj* x_2) { +_start: +{ +usize x_3; usize x_4; obj* x_5; +x_3 = lean::unbox_size_t(x_1); +x_4 = lean::unbox_size_t(x_2); +x_5 = lean::string_utf8_extract(x_0, x_3, x_4); +lean::dec(x_0); +return x_5; +} +} obj* l_string_mk__iterator___boxed(obj* x_0) { _start: { @@ -1052,7 +1449,7 @@ lean::dec(x_4); return x_5; } } -obj* l___private_init_data_string_basic_1__trim__left__aux___main(obj* x_0, obj* x_1) { +obj* l___private_init_data_string_basic_6__trim__left__aux___main(obj* x_0, obj* x_1) { _start: { obj* x_2; uint8 x_3; @@ -1087,11 +1484,11 @@ return x_1; } } } -obj* l___private_init_data_string_basic_1__trim__left__aux(obj* x_0, obj* x_1) { +obj* l___private_init_data_string_basic_6__trim__left__aux(obj* x_0, obj* x_1) { _start: { obj* x_2; -x_2 = l___private_init_data_string_basic_1__trim__left__aux___main(x_0, x_1); +x_2 = l___private_init_data_string_basic_6__trim__left__aux___main(x_0, x_1); return x_2; } } @@ -1101,13 +1498,13 @@ _start: obj* x_1; obj* x_2; obj* x_3; obj* x_4; x_1 = lean::string_length(x_0); x_2 = lean::string_mk_iterator(x_0); -x_3 = l___private_init_data_string_basic_1__trim__left__aux___main(x_1, x_2); +x_3 = l___private_init_data_string_basic_6__trim__left__aux___main(x_1, x_2); x_4 = lean::string_iterator_remaining_to_string(x_3); lean::dec(x_3); return x_4; } } -obj* l___private_init_data_string_basic_2__trim__right__aux___main(obj* x_0, obj* x_1) { +obj* l___private_init_data_string_basic_7__trim__right__aux___main(obj* x_0, obj* x_1) { _start: { obj* x_2; uint8 x_3; @@ -1145,11 +1542,11 @@ return x_1; } } } -obj* l___private_init_data_string_basic_2__trim__right__aux(obj* x_0, obj* x_1) { +obj* l___private_init_data_string_basic_7__trim__right__aux(obj* x_0, obj* x_1) { _start: { obj* x_2; -x_2 = l___private_init_data_string_basic_2__trim__right__aux___main(x_0, x_1); +x_2 = l___private_init_data_string_basic_7__trim__right__aux___main(x_0, x_1); return x_2; } } @@ -1160,7 +1557,7 @@ obj* x_1; obj* x_2; obj* x_3; obj* x_4; obj* x_5; x_1 = lean::string_length(x_0); x_2 = lean::string_mk_iterator(x_0); x_3 = lean::string_iterator_to_end(x_2); -x_4 = l___private_init_data_string_basic_2__trim__right__aux___main(x_1, x_3); +x_4 = l___private_init_data_string_basic_7__trim__right__aux___main(x_1, x_3); x_5 = lean::string_iterator_prev_to_string(x_4); lean::dec(x_4); return x_5; @@ -1174,9 +1571,9 @@ x_1 = lean::string_length(x_0); x_2 = lean::string_mk_iterator(x_0); lean::inc(x_2); lean::inc(x_1); -x_5 = l___private_init_data_string_basic_1__trim__left__aux___main(x_1, x_2); +x_5 = l___private_init_data_string_basic_6__trim__left__aux___main(x_1, x_2); x_6 = lean::string_iterator_to_end(x_2); -x_7 = l___private_init_data_string_basic_2__trim__right__aux___main(x_1, x_6); +x_7 = l___private_init_data_string_basic_7__trim__right__aux___main(x_1, x_6); x_8 = lean::string_iterator_extract(x_5, x_7); lean::dec(x_7); lean::dec(x_5); @@ -1186,7 +1583,7 @@ lean::dec(x_8); return x_12; } } -obj* l___private_init_data_string_basic_3__line__column__aux___main(obj* x_0, obj* x_1, obj* x_2) { +obj* l___private_init_data_string_basic_8__line__column__aux___main(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_3; uint8 x_4; @@ -1272,11 +1669,11 @@ return x_2; } } } -obj* l___private_init_data_string_basic_3__line__column__aux(obj* x_0, obj* x_1, obj* x_2) { +obj* l___private_init_data_string_basic_8__line__column__aux(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_3; -x_3 = l___private_init_data_string_basic_3__line__column__aux___main(x_0, x_1, x_2); +x_3 = l___private_init_data_string_basic_8__line__column__aux___main(x_0, x_1, x_2); return x_3; } } @@ -1298,7 +1695,7 @@ _start: obj* x_2; obj* x_3; obj* x_4; x_2 = lean::string_mk_iterator(x_0); x_3 = l_string_line__column___closed__1; -x_4 = l___private_init_data_string_basic_3__line__column__aux___main(x_1, x_2, x_3); +x_4 = l___private_init_data_string_basic_8__line__column__aux___main(x_1, x_2, x_3); return x_4; } } @@ -1320,7 +1717,7 @@ x_2 = l_char_to__string(x_1); return x_2; } } -obj* _init_l___private_init_data_string_basic_4__to__nat__core___main___closed__1() { +obj* _init_l___private_init_data_string_basic_9__to__nat__core___main___closed__1() { _start: { uint32 x_0; obj* x_1; @@ -1329,7 +1726,7 @@ x_1 = lean::uint32_to_nat(x_0); return x_1; } } -obj* l___private_init_data_string_basic_4__to__nat__core___main(obj* x_0, obj* x_1, obj* x_2) { +obj* l___private_init_data_string_basic_9__to__nat__core___main(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_3; uint8 x_4; @@ -1349,7 +1746,7 @@ x_12 = lean::uint32_to_nat(x_8); x_13 = lean::nat_add(x_10, x_12); lean::dec(x_12); lean::dec(x_10); -x_16 = l___private_init_data_string_basic_4__to__nat__core___main___closed__1; +x_16 = l___private_init_data_string_basic_9__to__nat__core___main___closed__1; x_17 = lean::nat_sub(x_13, x_16); lean::dec(x_13); x_19 = lean::string_iterator_next(x_0); @@ -1366,11 +1763,11 @@ return x_2; } } } -obj* l___private_init_data_string_basic_4__to__nat__core(obj* x_0, obj* x_1, obj* x_2) { +obj* l___private_init_data_string_basic_9__to__nat__core(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_3; -x_3 = l___private_init_data_string_basic_4__to__nat__core___main(x_0, x_1, x_2); +x_3 = l___private_init_data_string_basic_9__to__nat__core___main(x_0, x_1, x_2); return x_3; } } @@ -1383,7 +1780,7 @@ x_2 = lean::string_mk_iterator(x_0); x_3 = lean::string_length(x_0); lean::dec(x_0); x_5 = lean::mk_nat_obj(0u); -x_6 = l___private_init_data_string_basic_4__to__nat__core___main(x_2, x_3, x_5); +x_6 = l___private_init_data_string_basic_9__to__nat__core___main(x_2, x_3, x_5); return x_6; } } @@ -1401,6 +1798,9 @@ void initialize_init_data_string_basic() { lean::mark_persistent(l_string_decidable__eq); l_string_has__lt = _init_l_string_has__lt(); lean::mark_persistent(l_string_has__lt); + l_string_utf8__begin = _init_l_string_utf8__begin(); + l_string_utf8__begin___boxed = _init_l_string_utf8__begin___boxed(); +lean::mark_persistent(l_string_utf8__begin___boxed); l_string_inhabited = _init_l_string_inhabited(); lean::mark_persistent(l_string_inhabited); l_string_has__sizeof = _init_l_string_has__sizeof(); @@ -1411,6 +1811,6 @@ lean::mark_persistent(l_string_has__append); lean::mark_persistent(l_string_join___closed__1); l_string_line__column___closed__1 = _init_l_string_line__column___closed__1(); lean::mark_persistent(l_string_line__column___closed__1); - l___private_init_data_string_basic_4__to__nat__core___main___closed__1 = _init_l___private_init_data_string_basic_4__to__nat__core___main___closed__1(); -lean::mark_persistent(l___private_init_data_string_basic_4__to__nat__core___main___closed__1); + l___private_init_data_string_basic_9__to__nat__core___main___closed__1 = _init_l___private_init_data_string_basic_9__to__nat__core___main___closed__1(); +lean::mark_persistent(l___private_init_data_string_basic_9__to__nat__core___main___closed__1); } diff --git a/src/boot/init/lean/extern.cpp b/src/boot/init/lean/extern.cpp index e3433acce8..4defeb1a5e 100644 --- a/src/boot/init/lean/extern.cpp +++ b/src/boot/init/lean/extern.cpp @@ -47,6 +47,7 @@ extern obj* l_list_repr__aux___main___rarg___closed__1; namespace lean { uint8 string_iterator_has_next(obj*); } +extern obj* l___private_init_data_string_basic_9__to__nat__core___main___closed__1; namespace lean { uint8 nat_dec_eq(obj*, obj*); } @@ -86,7 +87,6 @@ uint32 uint32_of_nat(obj*); obj* l_lean_expand__extern__entry___main(obj*, obj*); obj* l_lean_mk__simple__fn__call(obj*, obj*); obj* l_list_foldl___main___at_lean_mk__simple__fn__call___spec__1___boxed(obj*, obj*); -extern obj* l___private_init_data_string_basic_4__to__nat__core___main___closed__1; namespace lean { obj* nat_sub(obj*, obj*); } @@ -206,7 +206,7 @@ obj* x_23; uint32 x_24; obj* x_25; obj* x_26; obj* x_27; obj* x_29; obj* x_31; o x_23 = lean::string_iterator_next(x_2); x_24 = lean::string_iterator_curr(x_23); x_25 = lean::uint32_to_nat(x_24); -x_26 = l___private_init_data_string_basic_4__to__nat__core___main___closed__1; +x_26 = l___private_init_data_string_basic_9__to__nat__core___main___closed__1; x_27 = lean::nat_sub(x_25, x_26); lean::dec(x_25); x_29 = lean::nat_sub(x_27, x_6); diff --git a/src/boot/init/lean/name_mangling.cpp b/src/boot/init/lean/name_mangling.cpp index 0ba7f3f65b..12f98e3f37 100644 --- a/src/boot/init/lean/name_mangling.cpp +++ b/src/boot/init/lean/name_mangling.cpp @@ -87,6 +87,7 @@ obj* l_lean_parser_monad__parsec_str__core___at___private_init_lean_name__mangli namespace lean { uint8 string_iterator_has_next(obj*); } +extern obj* l___private_init_data_string_basic_9__to__nat__core___main___closed__1; namespace lean { uint8 nat_dec_eq(obj*, obj*); } @@ -134,7 +135,6 @@ namespace lean { obj* nat_mul(obj*, obj*); } obj* l___private_init_lean_parser_parsec_3__mk__string__result___rarg(obj*, obj*); -extern obj* l___private_init_data_string_basic_4__to__nat__core___main___closed__1; namespace lean { obj* nat_sub(obj*, obj*); } @@ -535,7 +535,7 @@ if (lean::is_exclusive(x_6)) { } x_14 = lean::unbox_uint32(x_7); x_15 = lean::uint32_to_nat(x_14); -x_16 = l___private_init_data_string_basic_4__to__nat__core___main___closed__1; +x_16 = l___private_init_data_string_basic_9__to__nat__core___main___closed__1; x_17 = lean::nat_sub(x_15, x_16); lean::dec(x_15); x_19 = l_lean_parser_parsec_result_mk__eps___rarg___closed__1; diff --git a/src/boot/init/lean/parser/string_literal.cpp b/src/boot/init/lean/parser/string_literal.cpp index 428b816449..9997a70088 100644 --- a/src/boot/init/lean/parser/string_literal.cpp +++ b/src/boot/init/lean/parser/string_literal.cpp @@ -74,6 +74,7 @@ namespace lean { uint8 string_iterator_has_next(obj*); } obj* l_lean_parser_monad__parsec_error___at_lean_parser_parse__quoted__char___spec__2(obj*, obj*, obj*); +extern obj* l___private_init_data_string_basic_9__to__nat__core___main___closed__1; namespace lean { uint8 nat_dec_eq(obj*, obj*); } @@ -124,7 +125,6 @@ obj* l_lean_parser_monad__parsec_error___at_lean_parser_parse__hex__digit___spec obj* l_lean_parser_monad__parsec_error___at_lean_parser_parse__hex__digit___spec__7___rarg___boxed(obj*, obj*, obj*, obj*, obj*, obj*); obj* l_lean_parser_parse__quoted__char___rarg___lambda__3(obj*, obj*, obj*, obj*, obj*); obj* l_lean_parser_monad__parsec_error___at_lean_parser_parse__hex__digit___spec__4___rarg___boxed(obj*, obj*, obj*, obj*, obj*, obj*); -extern obj* l___private_init_data_string_basic_4__to__nat__core___main___closed__1; namespace lean { obj* nat_sub(obj*, obj*); } @@ -352,7 +352,7 @@ x_5 = lean::cnstr_get(x_2, 1); lean::inc(x_5); lean::dec(x_2); x_8 = lean::uint32_to_nat(x_1); -x_9 = l___private_init_data_string_basic_4__to__nat__core___main___closed__1; +x_9 = l___private_init_data_string_basic_9__to__nat__core___main___closed__1; x_10 = lean::nat_sub(x_8, x_9); lean::dec(x_8); x_12 = lean::apply_2(x_5, lean::box(0), x_10); diff --git a/src/boot/init/lean/parser/token.cpp b/src/boot/init/lean/parser/token.cpp index ef9531bd56..74bb214727 100644 --- a/src/boot/init/lean/parser/token.cpp +++ b/src/boot/init/lean/parser/token.cpp @@ -402,6 +402,7 @@ obj* l_lean_parser_monad__parsec_str__core___at_lean_parser_detail__ident__suffi obj* l_lean_parser_number_has__view_x_27___lambda__2___closed__3; obj* l_lean_parser_raw_tokens___boxed(obj*, obj*, obj*, obj*, obj*, obj*, obj*); obj* l_lean_parser_symbol_tokens___rarg(obj*, obj*); +extern obj* l___private_init_data_string_basic_9__to__nat__core___main___closed__1; obj* l_lean_parser_parsec__t_lookahead___at___private_init_lean_parser_token_2__whitespace__aux___main___spec__4(obj*, obj*, obj*, obj*, obj*); obj* l_lean_parser_monad__parsec_error___at_lean_parser_number_x_27___spec__12(obj*); obj* l___private_init_lean_parser_parsec_4__take__while__aux___main___at_lean_parser_parse__hex__lit___spec__3(obj*, obj*, obj*); @@ -704,7 +705,6 @@ obj* l_lean_parser_string__lit_has__view_x_27; obj* l_lean_parser_monad__parsec_take__while__cont___at_lean_parser_detail__ident__part_parser_lean_parser_has__tokens___spec__6(uint32, obj*, obj*, obj*); obj* l_lean_parser_symbol___boxed(obj*); obj* l_lean_parser_detail__ident__part__escaped_has__view_x_27___lambda__2(obj*); -extern obj* l___private_init_data_string_basic_4__to__nat__core___main___closed__1; obj* l_lean_parser_raw___boxed(obj*); obj* l___private_init_lean_parser_token_1__finish__comment__block__aux(obj*, obj*, obj*, obj*, obj*); namespace lean { @@ -19430,7 +19430,7 @@ if (lean::is_exclusive(x_8)) { } x_20 = lean::unbox_uint32(x_13); x_21 = lean::uint32_to_nat(x_20); -x_22 = l___private_init_data_string_basic_4__to__nat__core___main___closed__1; +x_22 = l___private_init_data_string_basic_9__to__nat__core___main___closed__1; x_23 = lean::nat_sub(x_21, x_22); lean::dec(x_21); x_25 = l_lean_parser_parsec_result_mk__eps___rarg___closed__1; @@ -23775,7 +23775,7 @@ else { obj* x_17; obj* x_18; obj* x_19; obj* x_21; x_17 = lean::uint32_to_nat(x_9); -x_18 = l___private_init_data_string_basic_4__to__nat__core___main___closed__1; +x_18 = l___private_init_data_string_basic_9__to__nat__core___main___closed__1; x_19 = lean::nat_sub(x_17, x_18); lean::dec(x_17); x_21 = lean::nat_add(x_11, x_19); @@ -24562,7 +24562,7 @@ if (lean::is_exclusive(x_6)) { } x_14 = lean::unbox_uint32(x_7); x_15 = lean::uint32_to_nat(x_14); -x_16 = l___private_init_data_string_basic_4__to__nat__core___main___closed__1; +x_16 = l___private_init_data_string_basic_9__to__nat__core___main___closed__1; x_17 = lean::nat_sub(x_15, x_16); lean::dec(x_15); x_19 = l_lean_parser_parsec_result_mk__eps___rarg___closed__1;