mirror of
https://github.com/odin-lang/Odin.git
synced 2026-04-18 12:30:28 +00:00
Minimize the size of runtime.Source_Code_Location to use i32 instead of int
This commit is contained in:
@@ -1286,9 +1286,9 @@ fmt_value :: proc(fi: ^Info, v: any, verb: rune) {
|
||||
case runtime.Source_Code_Location:
|
||||
io.write_string(fi.writer, a.file_path);
|
||||
io.write_byte(fi.writer, '(');
|
||||
io.write_int(fi.writer, a.line);
|
||||
io.write_int(fi.writer, int(a.line));
|
||||
io.write_byte(fi.writer, ':');
|
||||
io.write_int(fi.writer, a.column);
|
||||
io.write_int(fi.writer, int(a.column));
|
||||
io.write_byte(fi.writer, ')');
|
||||
return;
|
||||
|
||||
|
||||
@@ -246,7 +246,7 @@ args__: []cstring;
|
||||
|
||||
Source_Code_Location :: struct {
|
||||
file_path: string,
|
||||
line, column: int,
|
||||
line, column: i32,
|
||||
procedure: string,
|
||||
}
|
||||
|
||||
|
||||
@@ -17,11 +17,11 @@ type_assertion_trap :: proc "contextless" () -> ! {
|
||||
}
|
||||
|
||||
|
||||
bounds_check_error :: proc "contextless" (file: string, line, column: int, index, count: int) {
|
||||
bounds_check_error :: proc "contextless" (file: string, line, column: i32, index, count: int) {
|
||||
if 0 <= index && index < count {
|
||||
return;
|
||||
}
|
||||
handle_error :: proc "contextless" (file: string, line, column: int, index, count: int) {
|
||||
handle_error :: proc "contextless" (file: string, line, column: i32, index, count: int) {
|
||||
context = default_context();
|
||||
print_caller_location(Source_Code_Location{file, line, column, ""});
|
||||
print_string(" Index ");
|
||||
@@ -34,7 +34,7 @@ bounds_check_error :: proc "contextless" (file: string, line, column: int, index
|
||||
handle_error(file, line, column, index, count);
|
||||
}
|
||||
|
||||
slice_handle_error :: proc "contextless" (file: string, line, column: int, lo, hi: int, len: int) -> ! {
|
||||
slice_handle_error :: proc "contextless" (file: string, line, column: i32, lo, hi: int, len: int) -> ! {
|
||||
context = default_context();
|
||||
print_caller_location(Source_Code_Location{file, line, column, ""});
|
||||
print_string(" Invalid slice indices: ");
|
||||
@@ -47,25 +47,25 @@ slice_handle_error :: proc "contextless" (file: string, line, column: int, lo, h
|
||||
bounds_trap();
|
||||
}
|
||||
|
||||
slice_expr_error_hi :: proc "contextless" (file: string, line, column: int, hi: int, len: int) {
|
||||
slice_expr_error_hi :: proc "contextless" (file: string, line, column: i32, hi: int, len: int) {
|
||||
if 0 <= hi && hi <= len {
|
||||
return;
|
||||
}
|
||||
slice_handle_error(file, line, column, 0, hi, len);
|
||||
}
|
||||
|
||||
slice_expr_error_lo_hi :: proc "contextless" (file: string, line, column: int, lo, hi: int, len: int) {
|
||||
slice_expr_error_lo_hi :: proc "contextless" (file: string, line, column: i32, lo, hi: int, len: int) {
|
||||
if 0 <= lo && lo <= len && lo <= hi && hi <= len {
|
||||
return;
|
||||
}
|
||||
slice_handle_error(file, line, column, lo, hi, len);
|
||||
}
|
||||
|
||||
dynamic_array_expr_error :: proc "contextless" (file: string, line, column: int, low, high, max: int) {
|
||||
dynamic_array_expr_error :: proc "contextless" (file: string, line, column: i32, low, high, max: int) {
|
||||
if 0 <= low && low <= high && high <= max {
|
||||
return;
|
||||
}
|
||||
handle_error :: proc "contextless" (file: string, line, column: int, low, high, max: int) {
|
||||
handle_error :: proc "contextless" (file: string, line, column: i32, low, high, max: int) {
|
||||
context = default_context();
|
||||
print_caller_location(Source_Code_Location{file, line, column, ""});
|
||||
print_string(" Invalid dynamic array values: ");
|
||||
@@ -81,11 +81,11 @@ dynamic_array_expr_error :: proc "contextless" (file: string, line, column: int,
|
||||
}
|
||||
|
||||
|
||||
type_assertion_check :: proc "contextless" (ok: bool, file: string, line, column: int, from, to: typeid) {
|
||||
type_assertion_check :: proc "contextless" (ok: bool, file: string, line, column: i32, from, to: typeid) {
|
||||
if ok {
|
||||
return;
|
||||
}
|
||||
handle_error :: proc "contextless" (file: string, line, column: int, from, to: typeid) {
|
||||
handle_error :: proc "contextless" (file: string, line, column: i32, from, to: typeid) {
|
||||
context = default_context();
|
||||
print_caller_location(Source_Code_Location{file, line, column, ""});
|
||||
print_string(" Invalid type assertion from ");
|
||||
@@ -98,7 +98,7 @@ type_assertion_check :: proc "contextless" (ok: bool, file: string, line, column
|
||||
handle_error(file, line, column, from, to);
|
||||
}
|
||||
|
||||
type_assertion_check2 :: proc "contextless" (ok: bool, file: string, line, column: int, from, to: typeid, from_data: rawptr) {
|
||||
type_assertion_check2 :: proc "contextless" (ok: bool, file: string, line, column: i32, from, to: typeid, from_data: rawptr) {
|
||||
if ok {
|
||||
return;
|
||||
}
|
||||
@@ -130,7 +130,7 @@ type_assertion_check2 :: proc "contextless" (ok: bool, file: string, line, colum
|
||||
return id;
|
||||
}
|
||||
|
||||
handle_error :: proc "contextless" (file: string, line, column: int, from, to: typeid, from_data: rawptr) {
|
||||
handle_error :: proc "contextless" (file: string, line, column: i32, from, to: typeid, from_data: rawptr) {
|
||||
context = default_context();
|
||||
|
||||
actual := variant_type(from, from_data);
|
||||
|
||||
32
src/ir.cpp
32
src/ir.cpp
@@ -6420,8 +6420,8 @@ irValue *ir_emit_union_cast(irProcedure *proc, irValue *value, Type *type, Token
|
||||
args[0] = ok;
|
||||
|
||||
args[1] = ir_find_or_add_entity_string(proc->module, get_file_path_string(pos.file_id));
|
||||
args[2] = ir_const_int(pos.line);
|
||||
args[3] = ir_const_int(pos.column);
|
||||
args[2] = ir_const_i32(pos.line);
|
||||
args[3] = ir_const_i32(pos.column);
|
||||
|
||||
args[4] = ir_typeid(proc->module, src_type);
|
||||
args[5] = ir_typeid(proc->module, dst_type);
|
||||
@@ -6480,8 +6480,8 @@ irAddr ir_emit_any_cast_addr(irProcedure *proc, irValue *value, Type *type, Toke
|
||||
args[0] = ok;
|
||||
|
||||
args[1] = ir_find_or_add_entity_string(proc->module, get_file_path_string(pos.file_id));
|
||||
args[2] = ir_const_int(pos.line);
|
||||
args[3] = ir_const_int(pos.column);
|
||||
args[2] = ir_const_i32(pos.line);
|
||||
args[3] = ir_const_i32(pos.column);
|
||||
|
||||
args[4] = any_typeid;
|
||||
args[5] = dst_typeid;
|
||||
@@ -6677,8 +6677,8 @@ void ir_emit_bounds_check(irProcedure *proc, Token token, irValue *index, irValu
|
||||
|
||||
gbAllocator a = ir_allocator();
|
||||
irValue *file = ir_find_or_add_entity_string(proc->module, get_file_path_string(token.pos.file_id));
|
||||
irValue *line = ir_const_int(token.pos.line);
|
||||
irValue *column = ir_const_int(token.pos.column);
|
||||
irValue *line = ir_const_i32(token.pos.line);
|
||||
irValue *column = ir_const_i32(token.pos.column);
|
||||
|
||||
|
||||
auto args = array_make<irValue *>(ir_allocator(), 5);
|
||||
@@ -6701,8 +6701,8 @@ void ir_emit_slice_bounds_check(irProcedure *proc, Token token, irValue *low, ir
|
||||
|
||||
gbAllocator a = ir_allocator();
|
||||
irValue *file = ir_find_or_add_entity_string(proc->module, get_file_path_string(token.pos.file_id));
|
||||
irValue *line = ir_const_int(token.pos.line);
|
||||
irValue *column = ir_const_int(token.pos.column);
|
||||
irValue *line = ir_const_i32(token.pos.line);
|
||||
irValue *column = ir_const_i32(token.pos.column);
|
||||
high = ir_emit_conv(proc, high, t_int);
|
||||
|
||||
if (!lower_value_used) {
|
||||
@@ -6740,8 +6740,8 @@ void ir_emit_dynamic_array_bounds_check(irProcedure *proc, Token token, irValue
|
||||
|
||||
gbAllocator a = ir_allocator();
|
||||
irValue *file = ir_find_or_add_entity_string(proc->module, get_file_path_string(token.pos.file_id));
|
||||
irValue *line = ir_const_int(token.pos.line);
|
||||
irValue *column = ir_const_int(token.pos.column);
|
||||
irValue *line = ir_const_i32(token.pos.line);
|
||||
irValue *column = ir_const_i32(token.pos.column);
|
||||
low = ir_emit_conv(proc, low, t_int);
|
||||
high = ir_emit_conv(proc, high, t_int);
|
||||
|
||||
@@ -7078,8 +7078,8 @@ irValue *ir_emit_source_code_location(irProcedure *proc, String procedure, Token
|
||||
gbAllocator a = ir_allocator();
|
||||
irValue *v = ir_alloc_value(irValue_SourceCodeLocation);
|
||||
v->SourceCodeLocation.file = ir_find_or_add_entity_string(proc->module, get_file_path_string(pos.file_id));
|
||||
v->SourceCodeLocation.line = ir_const_int(pos.line);
|
||||
v->SourceCodeLocation.column = ir_const_int(pos.column);
|
||||
v->SourceCodeLocation.line = ir_const_i32(pos.line);
|
||||
v->SourceCodeLocation.column = ir_const_i32(pos.column);
|
||||
v->SourceCodeLocation.procedure = ir_find_or_add_entity_string(proc->module, procedure);
|
||||
return v;
|
||||
}
|
||||
@@ -8260,8 +8260,8 @@ irValue *ir_build_expr_internal(irProcedure *proc, Ast *expr) {
|
||||
args[0] = ok;
|
||||
|
||||
args[1] = ir_find_or_add_entity_string(proc->module, get_file_path_string(pos.file_id));
|
||||
args[2] = ir_const_int(pos.line);
|
||||
args[3] = ir_const_int(pos.column);
|
||||
args[2] = ir_const_i32(pos.line);
|
||||
args[3] = ir_const_i32(pos.column);
|
||||
|
||||
args[4] = ir_typeid(proc->module, src_type);
|
||||
args[5] = ir_typeid(proc->module, dst_type);
|
||||
@@ -8285,8 +8285,8 @@ irValue *ir_build_expr_internal(irProcedure *proc, Ast *expr) {
|
||||
args[0] = ok;
|
||||
|
||||
args[1] = ir_find_or_add_entity_string(proc->module, get_file_path_string(pos.file_id));
|
||||
args[2] = ir_const_int(pos.line);
|
||||
args[3] = ir_const_int(pos.column);
|
||||
args[2] = ir_const_i32(pos.line);
|
||||
args[3] = ir_const_i32(pos.column);
|
||||
|
||||
args[4] = any_id;
|
||||
args[5] = id;
|
||||
|
||||
@@ -1426,9 +1426,9 @@ void ir_print_value(irFileBuffer *f, irModule *m, irValue *value, Type *type_hin
|
||||
ir_write_byte(f, '{');
|
||||
ir_print_type(f, m, t_string); ir_write_byte(f, ' '); ir_print_value(f, m, file, t_string);
|
||||
ir_write_string(f, str_lit(", "));
|
||||
ir_print_type(f, m, t_int); ir_write_byte(f, ' '); ir_print_value(f, m, line, t_int);
|
||||
ir_print_type(f, m, t_i32); ir_write_byte(f, ' '); ir_print_value(f, m, line, t_i32);
|
||||
ir_write_string(f, str_lit(", "));
|
||||
ir_print_type(f, m, t_int); ir_write_byte(f, ' '); ir_print_value(f, m, column, t_int);
|
||||
ir_print_type(f, m, t_i32); ir_write_byte(f, ' '); ir_print_value(f, m, column, t_i32);
|
||||
ir_write_string(f, str_lit(", "));
|
||||
ir_print_type(f, m, t_string); ir_write_byte(f, ' '); ir_print_value(f, m, procedure, t_string);
|
||||
ir_write_byte(f, '}');
|
||||
|
||||
@@ -186,8 +186,8 @@ void lb_emit_bounds_check(lbProcedure *p, Token token, lbValue index, lbValue le
|
||||
len = lb_emit_conv(p, len, t_int);
|
||||
|
||||
lbValue file = lb_find_or_add_entity_string(p->module, get_file_path_string(token.pos.file_id));
|
||||
lbValue line = lb_const_int(p->module, t_int, token.pos.line);
|
||||
lbValue column = lb_const_int(p->module, t_int, token.pos.column);
|
||||
lbValue line = lb_const_int(p->module, t_i32, token.pos.line);
|
||||
lbValue column = lb_const_int(p->module, t_i32, token.pos.column);
|
||||
|
||||
auto args = array_make<lbValue>(permanent_allocator(), 5);
|
||||
args[0] = file;
|
||||
@@ -208,8 +208,8 @@ void lb_emit_slice_bounds_check(lbProcedure *p, Token token, lbValue low, lbValu
|
||||
}
|
||||
|
||||
lbValue file = lb_find_or_add_entity_string(p->module, get_file_path_string(token.pos.file_id));
|
||||
lbValue line = lb_const_int(p->module, t_int, token.pos.line);
|
||||
lbValue column = lb_const_int(p->module, t_int, token.pos.column);
|
||||
lbValue line = lb_const_int(p->module, t_i32, token.pos.line);
|
||||
lbValue column = lb_const_int(p->module, t_i32, token.pos.column);
|
||||
high = lb_emit_conv(p, high, t_int);
|
||||
|
||||
if (!lower_value_used) {
|
||||
@@ -5415,8 +5415,8 @@ lbValue lb_emit_source_code_location(lbProcedure *p, String const &procedure, To
|
||||
|
||||
LLVMValueRef fields[4] = {};
|
||||
fields[0]/*file*/ = lb_find_or_add_entity_string(p->module, get_file_path_string(pos.file_id)).value;
|
||||
fields[1]/*line*/ = lb_const_int(m, t_int, pos.line).value;
|
||||
fields[2]/*column*/ = lb_const_int(m, t_int, pos.column).value;
|
||||
fields[1]/*line*/ = lb_const_int(m, t_i32, pos.line).value;
|
||||
fields[2]/*column*/ = lb_const_int(m, t_i32, pos.column).value;
|
||||
fields[3]/*procedure*/ = lb_find_or_add_entity_string(p->module, procedure).value;
|
||||
|
||||
lbValue res = {};
|
||||
@@ -9510,8 +9510,8 @@ lbValue lb_emit_union_cast(lbProcedure *p, lbValue value, Type *type, TokenPos p
|
||||
args[0] = ok;
|
||||
|
||||
args[1] = lb_const_string(m, get_file_path_string(pos.file_id));
|
||||
args[2] = lb_const_int(m, t_int, pos.line);
|
||||
args[3] = lb_const_int(m, t_int, pos.column);
|
||||
args[2] = lb_const_int(m, t_i32, pos.line);
|
||||
args[3] = lb_const_int(m, t_i32, pos.column);
|
||||
|
||||
args[4] = lb_typeid(m, src_type);
|
||||
args[5] = lb_typeid(m, dst_type);
|
||||
@@ -9572,8 +9572,8 @@ lbAddr lb_emit_any_cast_addr(lbProcedure *p, lbValue value, Type *type, TokenPos
|
||||
args[0] = ok;
|
||||
|
||||
args[1] = lb_const_string(m, get_file_path_string(pos.file_id));
|
||||
args[2] = lb_const_int(m, t_int, pos.line);
|
||||
args[3] = lb_const_int(m, t_int, pos.column);
|
||||
args[2] = lb_const_int(m, t_i32, pos.line);
|
||||
args[3] = lb_const_int(m, t_i32, pos.column);
|
||||
|
||||
args[4] = any_typeid;
|
||||
args[5] = dst_typeid;
|
||||
@@ -9878,8 +9878,8 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) {
|
||||
args[0] = ok;
|
||||
|
||||
args[1] = lb_find_or_add_entity_string(p->module, get_file_path_string(pos.file_id));
|
||||
args[2] = lb_const_int(p->module, t_int, pos.line);
|
||||
args[3] = lb_const_int(p->module, t_int, pos.column);
|
||||
args[2] = lb_const_int(p->module, t_i32, pos.line);
|
||||
args[3] = lb_const_int(p->module, t_i32, pos.column);
|
||||
|
||||
args[4] = lb_typeid(p->module, src_type);
|
||||
args[5] = lb_typeid(p->module, dst_type);
|
||||
@@ -9903,8 +9903,8 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) {
|
||||
args[0] = ok;
|
||||
|
||||
args[1] = lb_find_or_add_entity_string(p->module, get_file_path_string(pos.file_id));
|
||||
args[2] = lb_const_int(p->module, t_int, pos.line);
|
||||
args[3] = lb_const_int(p->module, t_int, pos.column);
|
||||
args[2] = lb_const_int(p->module, t_i32, pos.line);
|
||||
args[3] = lb_const_int(p->module, t_i32, pos.column);
|
||||
|
||||
args[4] = any_id;
|
||||
args[5] = id;
|
||||
|
||||
Reference in New Issue
Block a user