From b2315777d1106a8ae6652acfc0507ac2fd510fc5 Mon Sep 17 00:00:00 2001 From: "Wolfgang (Blub) Bumiller" Date: Fri, 24 Aug 2012 19:52:06 +0200 Subject: [PATCH] cache the IMMEDIATE string in the builder directly --- ir.c | 14 +++++++++++++- ir.h | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ir.c b/ir.c index 7af6979..133aca5 100644 --- a/ir.c +++ b/ir.c @@ -168,6 +168,7 @@ ir_builder* ir_builder_new(const char *modulename) MEM_VECTOR_INIT(self, fields); MEM_VECTOR_INIT(self, filenames); MEM_VECTOR_INIT(self, filestrings); + self->str_immediate = 0; self->name = NULL; if (!ir_builder_set_name(self, modulename)) { mem_d(self); @@ -2679,7 +2680,18 @@ static bool ir_builder_gen_global(ir_builder *self, ir_value *global, bool isloc def.type = global->vtype; def.offset = code_globals_elements; - def.name = global->code.name = code_genstring(global->name); + + if (global->name) { + if (global->name[0] == '#') { + if (!self->str_immediate) + self->str_immediate = code_genstring("IMMEDIATE"); + def.name = global->code.name = self->str_immediate; + } + else + def.name = global->code.name = code_genstring(global->name); + } + else + def.name = 0; switch (global->vtype) { diff --git a/ir.h b/ir.h index 825f6a7..1059c6e 100644 --- a/ir.h +++ b/ir.h @@ -308,6 +308,8 @@ typedef struct ir_builder_s MEM_VECTOR_MAKE(const char*, filenames); MEM_VECTOR_MAKE(qcint, filestrings); + /* we cache the #IMMEDIATE string here */ + qcint str_immediate; } ir_builder; ir_builder* ir_builder_new(const char *modulename); -- 2.39.2