Skip to content

Commit e317c63

Browse files
authored
cgen: prefix builtin APIs with builtin__ (#25264)
1 parent f073169 commit e317c63

44 files changed

Lines changed: 988 additions & 573 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎vlib/builtin/linux_bare/libc_impl.v‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import dlmalloc
44

55
__global global_allocator dlmalloc.Dlmalloc
66

7+
@[export: 'memcpy']
78
@[unsafe]
89
pub fn memcpy(dest voidptr, src voidptr, n usize) voidptr {
910
dest_ := unsafe { &u8(dest) }
@@ -22,6 +23,7 @@ fn __malloc(n usize) voidptr {
2223
return unsafe { global_allocator.malloc(n) }
2324
}
2425

26+
@[export: 'strlen']
2527
@[unsafe]
2628
fn strlen(_s voidptr) usize {
2729
s := unsafe { &u8(_s) }
@@ -30,6 +32,7 @@ fn strlen(_s voidptr) usize {
3032
return usize(i)
3133
}
3234

35+
@[export: 'realloc']
3336
@[unsafe]
3437
fn realloc(old_area voidptr, new_size usize) voidptr {
3538
if old_area == 0 {
@@ -50,6 +53,7 @@ fn realloc(old_area voidptr, new_size usize) voidptr {
5053
}
5154
}
5255

56+
@[export: 'memset']
5357
@[unsafe]
5458
fn memset(s voidptr, c int, n usize) voidptr {
5559
mut s_ := unsafe { &char(s) }
@@ -61,6 +65,7 @@ fn memset(s voidptr, c int, n usize) voidptr {
6165
return unsafe { s }
6266
}
6367

68+
@[export: 'memmove']
6469
@[unsafe]
6570
fn memmove(dest voidptr, src voidptr, n usize) voidptr {
6671
dest_ := unsafe { &u8(dest) }
@@ -95,6 +100,7 @@ fn getchar() int {
95100
return int(x)
96101
}
97102

103+
@[export: 'memcmp']
98104
fn memcmp(a voidptr, b voidptr, n usize) int {
99105
a_ := unsafe { &u8(a) }
100106
b_ := unsafe { &u8(b) }

‎vlib/builtin/string_interpolation.v‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -721,22 +721,22 @@ pub const si_g64_code = '0xfe0f'
721721

722722
@[inline]
723723
pub fn str_intp_sq(in_str string) string {
724-
return 'str_intp(2, _MOV((StrIntpData[]){{_S("\'"), ${si_s_code}, {.d_s = ${in_str}}},{_S("\'"), 0, {.d_c = 0 }}}))'
724+
return 'builtin__str_intp(2, _MOV((StrIntpData[]){{_S("\'"), ${si_s_code}, {.d_s = ${in_str}}},{_S("\'"), 0, {.d_c = 0 }}}))'
725725
}
726726

727727
@[inline]
728728
pub fn str_intp_rune(in_str string) string {
729-
return 'str_intp(2, _MOV((StrIntpData[]){{_S("\`"), ${si_s_code}, {.d_s = ${in_str}}},{_S("\`"), 0, {.d_c = 0 }}}))'
729+
return 'builtin__str_intp(2, _MOV((StrIntpData[]){{_S("\`"), ${si_s_code}, {.d_s = ${in_str}}},{_S("\`"), 0, {.d_c = 0 }}}))'
730730
}
731731

732732
@[inline]
733733
pub fn str_intp_g32(in_str string) string {
734-
return 'str_intp(1, _MOV((StrIntpData[]){{_SLIT0, ${si_g32_code}, {.d_f32 = ${in_str} }}}))'
734+
return 'builtin__str_intp(1, _MOV((StrIntpData[]){{_SLIT0, ${si_g32_code}, {.d_f32 = ${in_str} }}}))'
735735
}
736736

737737
@[inline]
738738
pub fn str_intp_g64(in_str string) string {
739-
return 'str_intp(1, _MOV((StrIntpData[]){{_SLIT0, ${si_g64_code}, {.d_f64 = ${in_str} }}}))'
739+
return 'builtin__str_intp(1, _MOV((StrIntpData[]){{_SLIT0, ${si_g64_code}, {.d_f64 = ${in_str} }}}))'
740740
}
741741

742742
// replace %% with the in_str
@@ -752,12 +752,12 @@ pub fn str_intp_sub(base_str string, in_str string) string {
752752
st_str := base_str[..index]
753753
if index + 2 < base_str.len {
754754
en_str := base_str[index + 2..]
755-
res_str := 'str_intp(2, _MOV((StrIntpData[]){{_S("${st_str}"), ${si_s_code}, {.d_s = ${in_str} }},{_S("${en_str}"), 0, {.d_c = 0}}}))'
755+
res_str := 'builtin__str_intp(2, _MOV((StrIntpData[]){{_S("${st_str}"), ${si_s_code}, {.d_s = ${in_str} }},{_S("${en_str}"), 0, {.d_c = 0}}}))'
756756
st_str.free()
757757
en_str.free()
758758
return res_str
759759
}
760-
res2_str := 'str_intp(1, _MOV((StrIntpData[]){{_S("${st_str}"), ${si_s_code}, {.d_s = ${in_str} }}}))'
760+
res2_str := 'builtin__str_intp(1, _MOV((StrIntpData[]){{_S("${st_str}"), ${si_s_code}, {.d_s = ${in_str} }}}))'
761761
st_str.free()
762762
return res2_str
763763
}

‎vlib/v/gen/c/array.v‎

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ fn (mut g Gen) array_init(node ast.ArrayInit, var_name string) {
3737
elem_styp := g.styp(elem_type.typ)
3838
noscan := g.check_noscan(elem_type.typ)
3939
if elem_type.unaliased_sym.kind == .function {
40-
g.write('new_array_from_c_array(${len}, ${len}, sizeof(voidptr), _MOV((voidptr[${len}]){')
40+
g.write('builtin__new_array_from_c_array(${len}, ${len}, sizeof(voidptr), _MOV((voidptr[${len}]){')
4141
} else {
42-
g.write('new_array_from_c_array${noscan}(${len}, ${len}, sizeof(${elem_styp}), _MOV((${elem_styp}[${len}]){')
42+
g.write('builtin__new_array_from_c_array${noscan}(${len}, ${len}, sizeof(${elem_styp}), _MOV((${elem_styp}[${len}]){')
4343
}
4444
if len > 8 {
4545
g.writeln('')
@@ -53,7 +53,7 @@ fn (mut g Gen) array_init(node ast.ArrayInit, var_name string) {
5353
if is_iface_or_sumtype {
5454
g.expr_with_cast(expr, expr_type, node.elem_type)
5555
} else {
56-
g.write('string_clone(')
56+
g.write('builtin__string_clone(')
5757
g.expr(expr)
5858
g.write(')')
5959
}
@@ -305,11 +305,11 @@ fn (mut g Gen) array_init_with_fields(node ast.ArrayInit, elem_type Type, is_amp
305305
g.write('${ret_typ} ${past.tmp_var} =')
306306
}
307307
if is_default_array {
308-
g.write('__new_array_with_array_default${noscan}(')
308+
g.write('builtin____new_array_with_array_default${noscan}(')
309309
} else if is_default_map {
310-
g.write('__new_array_with_map_default${noscan}(')
310+
g.write('builtin____new_array_with_map_default${noscan}(')
311311
} else {
312-
g.write('__new_array_with_default${noscan}(')
312+
g.write('builtin____new_array_with_default${noscan}(')
313313
}
314314
if node.has_len {
315315
g.expr(node.len_expr)
@@ -375,13 +375,13 @@ fn (mut g Gen) array_init_with_fields(node ast.ArrayInit, elem_type Type, is_amp
375375
return
376376
}
377377
if is_default_array {
378-
g.write('__new_array_with_array_default${noscan}(')
378+
g.write('builtin____new_array_with_array_default${noscan}(')
379379
} else if is_default_map {
380-
g.write('__new_array_with_map_default${noscan}(')
380+
g.write('builtin____new_array_with_map_default${noscan}(')
381381
} else if needs_more_defaults {
382-
g.write('__new_array_with_multi_default${noscan}(')
382+
g.write('builtin____new_array_with_multi_default${noscan}(')
383383
} else {
384-
g.write('__new_array_with_default${noscan}(')
384+
g.write('builtin____new_array_with_default${noscan}(')
385385
}
386386
if node.has_len {
387387
g.expr(node.len_expr)
@@ -419,7 +419,7 @@ fn (mut g Gen) array_init_with_fields(node ast.ArrayInit, elem_type Type, is_amp
419419
line := g.go_before_last_stmt().trim_space()
420420
g.empty_line = true
421421

422-
g.write('${elem_styp}* ${tmp} = (${elem_styp}*) _v_malloc((')
422+
g.write('${elem_styp}* ${tmp} = (${elem_styp}*) builtin___v_malloc((')
423423
g.expr(node.len_expr)
424424
g.writeln(') * sizeof(${elem_styp}));')
425425
ind := g.new_tmp_var()
@@ -553,7 +553,7 @@ fn (mut g Gen) gen_array_map(node ast.CallExpr) {
553553
has_infix_left_var_name := g.write_prepared_tmp_value(past.tmp_var, node, ret_styp,
554554
'{0}')
555555
if left_is_array {
556-
g.writeln('${past.tmp_var} = __new_array${noscan}(0, ${past.tmp_var}_len, sizeof(${ret_elem_styp}));\n')
556+
g.writeln('${past.tmp_var} = builtin____new_array${noscan}(0, ${past.tmp_var}_len, sizeof(${ret_elem_styp}));\n')
557557
}
558558

559559
mut closure_var := ''
@@ -667,7 +667,7 @@ fn (mut g Gen) gen_array_map(node ast.CallExpr) {
667667
}
668668
}
669669
if left_is_array {
670-
g.writeln2(';', 'array_push${noscan}((array*)&${past.tmp_var}, &${tmp_map_expr_result_name});')
670+
g.writeln2(';', 'builtin__array_push${noscan}((array*)&${past.tmp_var}, &${tmp_map_expr_result_name});')
671671
} else {
672672
g.writeln2(';', '${past.tmp_var}[${i}] = ${tmp_map_expr_result_name};')
673673
}
@@ -706,11 +706,11 @@ fn (mut g Gen) gen_array_sorted(node ast.CallExpr) {
706706
false
707707
}
708708
if !deref_field {
709-
g.write('${atype} ${past.tmp_var} = array_clone_to_depth(ADDR(${atype},')
709+
g.write('${atype} ${past.tmp_var} = builtin__array_clone_to_depth(ADDR(${atype},')
710710
g.expr(node.left)
711711
g.writeln('), ${depth});')
712712
} else {
713-
g.write('${atype} ${past.tmp_var} = array_clone_to_depth(')
713+
g.write('${atype} ${past.tmp_var} = builtin__array_clone_to_depth(')
714714
g.expr(node.left)
715715
g.writeln(', ${depth});')
716716
}
@@ -827,9 +827,19 @@ fn (mut g Gen) gen_array_sort(node ast.CallExpr) {
827827
stype_arg := g.styp(elem_type)
828828
g.sort_fn_definitions.writeln('VV_LOC ${g.static_modifier} int ${compare_fn}(${stype_arg}* a, ${stype_arg}* b) {')
829829
c_condition := if comparison_type.sym.has_method('<') {
830-
'${g.styp(comparison_type.typ)}__lt(${left_expr}, ${right_expr})'
830+
method_name := if comparison_type.sym.is_builtin() {
831+
'builtin__${g.styp(comparison_type.typ)}__lt'
832+
} else {
833+
'${g.styp(comparison_type.typ)}__lt'
834+
}
835+
'${method_name}(${left_expr}, ${right_expr})'
831836
} else if comparison_type.unaliased_sym.has_method('<') {
832-
'${g.styp(comparison_type.unaliased)}__lt(${left_expr}, ${right_expr})'
837+
method_name := if comparison_type.unaliased_sym.is_builtin() {
838+
'builtin__${g.styp(comparison_type.unaliased)}__lt'
839+
} else {
840+
'${g.styp(comparison_type.unaliased)}__lt'
841+
}
842+
'${method_name}(${left_expr}, ${right_expr})'
833843
} else if use_lambda {
834844
'${lambda_fn_name}(a, b)'
835845
} else {
@@ -971,7 +981,7 @@ fn (mut g Gen) gen_array_filter(node ast.CallExpr) {
971981
elem_type_str := g.styp(info.elem_type)
972982
noscan := g.check_noscan(info.elem_type)
973983
has_infix_left_var_name := g.write_prepared_tmp_value(past.tmp_var, node, styp, '{0}')
974-
g.writeln('${past.tmp_var} = __new_array${noscan}(0, ${past.tmp_var}_len, sizeof(${elem_type_str}));\n')
984+
g.writeln('${past.tmp_var} = builtin____new_array${noscan}(0, ${past.tmp_var}_len, sizeof(${elem_type_str}));\n')
975985

976986
mut expr := node.args[0].expr
977987
var_name := g.get_array_expr_param_name(mut expr)
@@ -1034,7 +1044,7 @@ fn (mut g Gen) gen_array_filter(node ast.CallExpr) {
10341044
g.expr(expr)
10351045
}
10361046
}
1037-
g.writeln2(') {', '\tarray_push${noscan}((array*)&${past.tmp_var}, &${var_name});')
1047+
g.writeln2(') {', '\tbuiltin__array_push${noscan}((array*)&${past.tmp_var}, &${var_name});')
10381048
g.writeln('}')
10391049
g.indent--
10401050
g.writeln('}')
@@ -1058,9 +1068,9 @@ fn (mut g Gen) gen_array_insert(node ast.CallExpr) {
10581068
noscan := g.check_noscan(left_info.elem_type)
10591069
addr := if node.left_type.is_ptr() { '' } else { '&' }
10601070
if is_arg2_array {
1061-
g.write('array_insert_many${noscan}(${addr}')
1071+
g.write('builtin__array_insert_many${noscan}(${addr}')
10621072
} else {
1063-
g.write('array_insert${noscan}(${addr}')
1073+
g.write('builtin__array_insert${noscan}(${addr}')
10641074
}
10651075
g.expr(node.left)
10661076
g.write(', ')
@@ -1076,7 +1086,7 @@ fn (mut g Gen) gen_array_insert(node ast.CallExpr) {
10761086
&& node.args[1].expr !in [ast.IndexExpr, ast.CallExpr, ast.StringLiteral, ast.StringInterLiteral, ast.InfixExpr]
10771087
g.write(', &(${elem_type_str}[]){')
10781088
if needs_clone {
1079-
g.write('string_clone(')
1089+
g.write('builtin__string_clone(')
10801090
}
10811091
g.expr_with_cast(node.args[1].expr, node.args[1].typ, left_info.elem_type)
10821092
if needs_clone {
@@ -1097,9 +1107,9 @@ fn (mut g Gen) gen_array_prepend(node ast.CallExpr) {
10971107
noscan := g.check_noscan(left_info.elem_type)
10981108
addr := if node.left_type.is_ptr() { '' } else { '&' }
10991109
if is_arg_array {
1100-
g.write('array_prepend_many${noscan}(${addr}')
1110+
g.write('builtin__array_prepend_many${noscan}(${addr}')
11011111
} else {
1102-
g.write('array_prepend${noscan}(${addr}')
1112+
g.write('builtin__array_prepend${noscan}(${addr}')
11031113
}
11041114
g.expr(node.left)
11051115
if is_arg_array {
@@ -1164,7 +1174,7 @@ fn (mut g Gen) gen_array_contains_methods() {
11641174
fn_builder.writeln('${g.static_non_parallel}bool ${fn_name}(${left_type_str} a, ${elem_type_str} v) {')
11651175
fn_builder.writeln('\tfor (int i = 0; i < a.len; ++i) {')
11661176
if elem_kind == .string {
1167-
fn_builder.writeln('\t\tif (fast_string_eq(((string*)a.data)[i], v)) {')
1177+
fn_builder.writeln('\t\tif (builtin__fast_string_eq(((string*)a.data)[i], v)) {')
11681178
} else if elem_kind in [.array, .array_fixed] && elem_is_not_ptr {
11691179
ptr_typ := g.equality_fn(elem_type)
11701180
fn_builder.writeln('\t\tif (${ptr_typ}_arr_eq(((${elem_type_str}*)a.data)[i], v)) {')
@@ -1206,7 +1216,7 @@ fn (mut g Gen) gen_array_contains_methods() {
12061216
fn_builder.writeln('${g.static_non_parallel}bool ${fn_name}(${left_type_str} a, ${elem_type_str} v) {')
12071217
fn_builder.writeln('\tfor (int i = 0; i < ${size}; ++i) {')
12081218
if elem_kind == .string {
1209-
fn_builder.writeln('\t\tif (fast_string_eq(a[i], v)) {')
1219+
fn_builder.writeln('\t\tif (builtin__fast_string_eq(a[i], v)) {')
12101220
} else if elem_kind in [.array, .array_fixed] && elem_is_not_ptr {
12111221
ptr_typ := g.equality_fn(left_info.elem_type)
12121222
fn_builder.writeln('\t\tif (${ptr_typ}_arr_eq(a[i], v)) {')
@@ -1313,7 +1323,7 @@ fn (mut g Gen) gen_array_index_methods() {
13131323
fn_builder.writeln('\t${elem_type_str}* pelem = a.data;')
13141324
fn_builder.writeln('\tfor (int i = 0; i < a.len; ++i, ++pelem) {')
13151325
if elem_sym.kind == .string {
1316-
fn_builder.writeln('\t\tif (fast_string_eq(*pelem, v)) {')
1326+
fn_builder.writeln('\t\tif (builtin__fast_string_eq(*pelem, v)) {')
13171327
} else if elem_sym.kind in [.array, .array_fixed] && !info.elem_type.is_ptr() {
13181328
ptr_typ := g.equality_fn(info.elem_type)
13191329
fn_builder.writeln('\t\tif (${ptr_typ}_arr_eq(*pelem, v)) {')
@@ -1356,7 +1366,7 @@ fn (mut g Gen) gen_array_index_methods() {
13561366
fn_builder.writeln('${g.static_non_parallel}int ${fn_name}(${left_type_str} a, ${elem_type_str} v) {')
13571367
fn_builder.writeln('\tfor (int i = 0; i < ${info.size}; ++i) {')
13581368
if elem_sym.kind == .string {
1359-
fn_builder.writeln('\t\tif (fast_string_eq(a[i], v)) {')
1369+
fn_builder.writeln('\t\tif (builtin__fast_string_eq(a[i], v)) {')
13601370
} else if elem_sym.kind in [.array, .array_fixed] && !info.elem_type.is_ptr() {
13611371
ptr_typ := g.equality_fn(info.elem_type)
13621372
fn_builder.writeln('\t\tif (${ptr_typ}_arr_eq(a[i], v)) {')

‎vlib/v/gen/c/assert.v‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ fn (mut g Gen) assert_stmt(original_assert_statement ast.AssertStmt) {
5858
g.decrement_inside_ternary()
5959
g.writeln(' {')
6060
metaname_panic := g.gen_assert_metainfo(node, .panic)
61-
g.writeln('\t__print_assert_failure(&${metaname_panic});')
61+
g.writeln('\tbuiltin____print_assert_failure(&${metaname_panic});')
6262
g.gen_assert_postfailure_mode(node)
6363
g.writeln('}')
6464
}
@@ -125,7 +125,7 @@ fn (mut g Gen) gen_assert_postfailure_mode(node ast.AssertStmt) {
125125
}
126126
g.writeln2('\t// TODO', '\t// Maybe print all vars in a test function if it fails?')
127127
if g.pref.assert_failure_mode != .continues {
128-
g.writeln('\t_v_panic(_S("Assertion failed..."));')
128+
g.writeln('\tbuiltin___v_panic(_S("Assertion failed..."));')
129129
}
130130
}
131131

@@ -241,7 +241,7 @@ fn (mut g Gen) gen_assert_single_expr(expr ast.Expr, typ ast.Type) {
241241
}
242242
}
243243
if should_clone {
244-
g.write('string_clone(')
244+
g.write('builtin__string_clone(')
245245
}
246246
g.gen_expr_to_string(expr, typ)
247247
if should_clone {

0 commit comments

Comments
 (0)