Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions compiler/compiler_generate.c2
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,7 @@ fn void Compiler.generate(Compiler* c, const char* target_name, const char* outp
console.debug("generating C");
u64 gen3 = utils.now();

string_list.List asm_files;
asm_files.init(c.auxPool);
string_list.List asm_files.init(c.auxPool);
for (u32 i=0; i<c.target.numAsmFiles(); i++) {
const file_list.File* file = c.target.getAsmFile(i);
asm_files.add(file.name);
Expand Down
6 changes: 2 additions & 4 deletions examples/event/main.c2
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,9 @@ fn void timeout_func(void*) {
}

public fn i32 main() {
logger.Base logbase;
logbase.init(logger.Level.Info, unistd.isatty(1), true);
logger.Base logbase.init(logger.Level.Info, unistd.isatty(1), true);

logger.Log log;
log.init(&logbase, "main");
logger.Log log.init(&logbase, "main");
mainlog = &log;

log.info("starting");
Expand Down
3 changes: 1 addition & 2 deletions examples/json_parser/main.c2
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,7 @@ public fn i32 main(i32 argc, char** argv) {
parser.destroy();

#if 0
json.Builder builder;
builder.init(1024);
json.Builder builder.init(1024);
builder.addArray(nil);
builder.addNumber(nil, 2);
builder.addValue(nil, "19223201");
Expand Down
9 changes: 3 additions & 6 deletions examples/list/main.c2
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,8 @@ fn void Module.addDep(Module* m, Module* dep) {
}

fn void check(Element* all, Module* top) {
Element todo;
Element done;
todo.init();
done.init();
Element todo.init();
Element done.init();

i32 max_depth = (i32)all.size();
top.list.remove();
Expand Down Expand Up @@ -88,8 +86,7 @@ fn void check(Element* all, Module* top) {
public fn i32 main() {
printf("this program orders a DAG by depth, using List\n");

Element modules;
modules.init();
Element modules.init();

Module* a = createModule(&modules, "A");
Module* b = createModule(&modules, "B");
Expand Down
9 changes: 3 additions & 6 deletions examples/logger/main.c2
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,10 @@ import logger;
import unistd;

public fn i32 main(i32 argc, char** argv) {
logger.Base logbase;
bool relative_times = (argc == 2 && !*argv[1] == 'r');
logbase.init(logger.Level.Info, unistd.isatty(1), relative_times);
logger.Base logbase.init(logger.Level.Info, unistd.isatty(1), relative_times);

logger.Log log;
log.init(&logbase, "main");
logger.Log log.init(&logbase, "main");

log.info("call this example with an extra argument to show relative times");
log.debug("debug msg");
Expand All @@ -32,8 +30,7 @@ public fn i32 main(i32 argc, char** argv) {
log.error("Error number %d", 10);

// meanwhile in another component..
logger.Log log2;
log2.init(&logbase, "server");
logger.Log log2.init(&logbase, "server");
log2.setLevel(logger.Level.Debug);
log2.info("got new connection");
log2.debug("client connected from %s, fd %d", "127.0.0.1", 34);
Expand Down
3 changes: 1 addition & 2 deletions examples/lua/main.c2
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ public fn i32 main(i32 argc, char** argv) {
const char* scriptName = "lua/script1.lua";
if (argc == 2) scriptName = argv[1];

script.LuaState ls;
ls.init();
script.LuaState ls.init();

lua.atpanic(ls.l, atpanic);
ls.registerFunc("startScript", script.startScript);
Expand Down
3 changes: 1 addition & 2 deletions examples/multicast/receiver.c2
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ const u16 MULTICAST_PORT = 12345;
public fn i32 main() {
events.Base* evbase = events.Base.create();

Receiver receiver;
receiver.init(evbase, MULTICAST_IP, MULTICAST_PORT);
Receiver receiver.init(evbase, MULTICAST_IP, MULTICAST_PORT);

u8 ret = evbase.mainloop();

Expand Down
3 changes: 1 addition & 2 deletions examples/multicast/sender.c2
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ const u16 MULTICAST_PORT = 12345;


public fn i32 main() {
Sender sender;
sender.init(MULTICAST_IP, MULTICAST_PORT);
Sender sender.init(MULTICAST_IP, MULTICAST_PORT);

u32 nr = 0;
while (1) {
Expand Down
9 changes: 3 additions & 6 deletions generator/ir/ir_generator.c2
Original file line number Diff line number Diff line change
Expand Up @@ -377,8 +377,7 @@ fn void Generator.emitGlobalStructInit(Generator* gen, const Expr* e) {
StructTypeDecl* std = st.getDecl();

if (ile.hasDesignators()) {
FieldStructLayouter layouter;
layouter.init(gen, std.getSize(), std.getDesigMemberCount());
FieldStructLayouter layouter.init(gen, std.getSize(), std.getDesigMemberCount());
for (u32 i=0; i<num_values; i++) {
FieldDesignatedInitExpr* fdi = (FieldDesignatedInitExpr*)values[i];
const FieldInitField* fif = fdi.getMemberInfo();
Expand All @@ -388,8 +387,7 @@ fn void Generator.emitGlobalStructInit(Generator* gen, const Expr* e) {
}
layouter.finalize();
} else {
BasicStructLayouter layouter;
layouter.init(gen, std.getLayout());
BasicStructLayouter layouter.init(gen, std.getLayout());
for (u32 i=0; i<num_values; i++) layouter.add(i, values[i]);
layouter.finalize();
}
Expand Down Expand Up @@ -597,8 +595,7 @@ public fn void generate(const char* target,
return;
}

Generator gen;
gen.init(sm, astPool, targetInfo, buildInfo, target, ir_dir, enable_asserts, print, print_all);
Generator gen.init(sm, astPool, targetInfo, buildInfo, target, ir_dir, enable_asserts, print, print_all);
gen.mainFunc = mainFunc;

// TODO also generate source libs, inline functions for interface files
Expand Down
9 changes: 3 additions & 6 deletions generator/ir/ir_generator_binop.c2
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,7 @@ fn void Generator.emitLogicalAnd(Generator* gen, ir.Ref* result, const Expr* e)
ir.Ref left;
gen.emitExpr(&left, b.getLHS());

ir.Ref zero;
zero.init(RefKind.Value, 0);
ir.Ref zero.init(RefKind.Value, 0);

ir.Ref cond1 = c.addBinaryInstr(InstrKind.CmpNe, left, zero);

Expand Down Expand Up @@ -217,8 +216,7 @@ fn void Generator.emitLogicalOr(Generator* gen, ir.Ref* result, const Expr* e) {
ir.Ref left;
gen.emitExpr(&left, b.getLHS());

ir.Ref zero;
zero.init(RefKind.Value, 0);
ir.Ref zero.init(RefKind.Value, 0);

ir.Ref cond1 = gen.ctx.addBinaryInstr(InstrKind.CmpNe, left, zero);

Expand All @@ -244,8 +242,7 @@ fn void Generator.emitLogicalOr(Generator* gen, ir.Ref* result, const Expr* e) {
c.endBlock();
c.startBlock(join_blk);

ir.Ref one;
one.init(RefKind.Value, 1);
ir.Ref one.init(RefKind.Value, 1);

*result = gen.ctx.addPhi2Instr(block1, one, false_blk, cond2);
}
Expand Down
30 changes: 10 additions & 20 deletions generator/ir/ir_generator_expr.c2
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ fn void Generator.emitExpr(Generator* gen, ir.Ref* result, const Expr* e) {
StringLiteral* s = (StringLiteral*)e;

SymbolId id = gen.ctx.addStringLiteral(gen.createStringVar(), gen.idx2name(s.getText()), s.getSize());
ir.Ref ref;
ref.init(RefKind.Symbol, id);
ir.Ref ref.init(RefKind.Symbol, id);
*result = ref;
break;
case Nil:
Expand Down Expand Up @@ -165,8 +164,7 @@ fn void Generator.emitIdentifier(Generator* gen, ir.Ref* result, const Expr* e)

fn void Generator.emitSymbol(Generator* gen, ir.Ref* result, Decl* d) {
SymbolId sid = gen.createSymbol(d);
ir.Ref ref;
ref.init(RefKind.Symbol, sid);
ir.Ref ref.init(RefKind.Symbol, sid);
*result = ref;
}

Expand All @@ -181,8 +179,7 @@ fn void Generator.emitVarDecl(Generator* gen, ir.Ref* result, Decl* d) {
gen_idx = gen.ctx.addGlobalVar(gen.createLocalName(d), qt.getAlignment(), gen.isExternal(d));
d.setGenIdx(gen_idx);
}
ir.Ref ref;
ref.init(RefKind.Symbol, gen_idx);
ir.Ref ref.init(RefKind.Symbol, gen_idx);
*result = ref;
} else if (vd.isLocal() || vd.isParameter()) {
StackVar* var = gen.locals.find(vd);
Expand Down Expand Up @@ -245,8 +242,7 @@ fn void Generator.emitUnaryOperator(Generator* gen, ir.Ref* result, const Expr*
ir.Ref left_val = gen.ctx.addLoadInstr(t, left);

// add/sub
ir.Ref value;
value.init(RefKind.Value, 1);
ir.Ref value.init(RefKind.Value, 1);
InstrKind k;
if (uo.getOpcode() == PostInc || uo.getOpcode() == PreInc) {
k = InstrKind.Add;
Expand Down Expand Up @@ -277,8 +273,7 @@ fn void Generator.emitUnaryOperator(Generator* gen, ir.Ref* result, const Expr*
// Expr like '-f' still come here, where f is non-CTV
assert(!e.isCtv());
// emit: sub 0, <expr>
ir.Ref left;
left.init(RefKind.Value, 0);
ir.Ref left.init(RefKind.Value, 0);
ir.Ref right;
gen.emitExpr(&right, uo.getInner());
*result = gen.ctx.addBinaryInstr(InstrKind.Sub, left, right);
Expand All @@ -296,13 +291,11 @@ fn void Generator.emitUnaryOperator(Generator* gen, ir.Ref* result, const Expr*
gen.emitExpr(&lhs, uo.getInner());

// convert integer to bool: compare to 0
ir.Ref zero;
zero.init(RefKind.Value, 0);
ir.Ref zero.init(RefKind.Value, 0);
ir.Ref rhs = gen.ctx.addBinaryInstr(InstrKind.CmpNe, lhs, zero);

// invert: xor with 1
ir.Ref one;
one.init(RefKind.Value, 1);
ir.Ref one.init(RefKind.Value, 1);
rhs = gen.ctx.addBinaryInstr(InstrKind.Xor, rhs, one);

// TODO zext i1 -> i32
Expand Down Expand Up @@ -386,8 +379,7 @@ fn void Generator.emitCond(Generator* gen, const Expr* e, BlockId true_blk, Bloc
break;
}
gen.emitExpr(&ref, e);
ir.Ref zero;
zero.init(RefKind.Value, 0);
ir.Ref zero.init(RefKind.Value, 0);
ir.Ref cond = gen.ctx.addBinaryInstr(InstrKind.CmpNe, ref, zero);
c.addJmpIfInstr(cond, true_blk, false_blk);
c.endBlock();
Expand All @@ -401,8 +393,7 @@ fn void Generator.emitAssignCond(Generator* gen, ir.Type t, ir.Ref lhs, ir.Ref r
// store a, %x
// icmp ne %x, 0
c.addStoreInstr(t, rhs, lhs);
ir.Ref zero;
zero.init(RefKind.Value, 0);
ir.Ref zero.init(RefKind.Value, 0);
ir.Ref cond = gen.ctx.addBinaryInstr(InstrKind.CmpNe, rhs, zero);
c.addJmpIfInstr(cond, left, right);
c.endBlock();
Expand Down Expand Up @@ -574,8 +565,7 @@ fn void Generator.emitStructInitExpr(Generator* gen, const StackVar* var, const
}

if (ile.hasDesignators()) {
FieldStructLayouter layouter;
layouter.init(gen, std.getSize(), std.getDesigMemberCount());
FieldStructLayouter layouter.init(gen, std.getSize(), std.getDesigMemberCount());
for (u32 i=0; i<num_values; i++) {
FieldDesignatedInitExpr* fdi = (FieldDesignatedInitExpr*)values[i];
const FieldInitField* fif = fdi.getMemberInfo();
Expand Down
8 changes: 4 additions & 4 deletions ir/context.c2
Original file line number Diff line number Diff line change
Expand Up @@ -561,15 +561,15 @@ public fn Ref Context.addIntegerConstant(Context* c, i64 size) {
// if signed value fits in 27 bits, store it in Ref directly
const i32 min_27bits = -0x3FFFFFF-1;
const i32 max_27_bits = 0x3FFFFFF;
Ref ref;
if (size >= min_27bits && size <= max_27_bits) {
ref.init(RefKind.Value, (u32)size);
Ref ref.init(RefKind.Value, (u32)size);
return ref;
} else {
Constant constant = { .ivalue = size }
u32 idx = c.constants.add(&constant);
ref.init(RefKind.Integer, idx);
Ref ref.init(RefKind.Integer, idx);
return ref;
}
return ref;
}

public fn void Context.addComment(Context* c, const char* text) {
Expand Down