Skip to content
Merged
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
34 changes: 27 additions & 7 deletions msingi/mkusanyaji/mkaguzi.swa
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ W0 wigo_sukuma() {
kama (wigo_vidokezo_idadi < 256) {
wigo_vidokezo[wigo_vidokezo_idadi] = wigo_idadi;
wigo_vidokezo_idadi = wigo_vidokezo_idadi + 1;
} sivyo {
andika_stderr("KOSA: kina cha kitanzi/tawi (wigo_vidokezo) kimejaa (kikomo 256) — kazi ina viwango vingi mno vya kutagusana vya {}\n");
mkaguzi_makosa = mkaguzi_makosa + 1;
}
}

Expand All @@ -57,6 +60,9 @@ W0 wigo_ongeza(N8* jina, N32 enc) {
ast_pool[ast_pool_wapi + i] = 0;
ast_pool_wapi = ast_pool_wapi + i + 1;
wigo_idadi = wigo_idadi + 1;
} sivyo {
andika_stderr("KOSA: jedwali la vigezo vya wigo (wigo_idadi) limejaa (kikomo 256) kwenye kigezo '%s' — kazi ina vigezo/vitambulisho vingi mno vinavyoonekana kwa wakati mmoja\n", jina);
mkaguzi_makosa = mkaguzi_makosa + 1;
}
}

Expand Down Expand Up @@ -165,13 +171,18 @@ N32 mkaguzi_angalia(N32 mzizi) {
global_idadi = 0;
N32 gn = ast_kushoto[mzizi];
wakati (gn != -1) {
kama (ast_aina[gn] == 35 && global_idadi < 1024) {
global_jina_off[global_idadi] = ast_jina_off[ast_kushoto[gn]];
N32 genc = ast_thamani[gn];
// Safu: usemi unapaswa kuiona kama kielekezi (anwani ya msingi)
kama (ast_tiga[gn] != -1) { genc = genc + 1; }
global_aina[global_idadi] = genc;
global_idadi = global_idadi + 1;
kama (ast_aina[gn] == 35) {
kama (global_idadi < 1024) {
global_jina_off[global_idadi] = ast_jina_off[ast_kushoto[gn]];
N32 genc = ast_thamani[gn];
// Safu: usemi unapaswa kuiona kama kielekezi (anwani ya msingi)
kama (ast_tiga[gn] != -1) { genc = genc + 1; }
global_aina[global_idadi] = genc;
global_idadi = global_idadi + 1;
} sivyo {
andika_stderr("KOSA: jedwali la vigezo vya ulimwengu (global_idadi) limejaa (kikomo 1024) — mradi una vigezo vya ulimwengu vingi mno\n");
mkaguzi_makosa = mkaguzi_makosa + 1;
}
}
gn = ast_nne[gn];
}
Expand All @@ -183,6 +194,9 @@ N32 mkaguzi_angalia(N32 mzizi) {
kama (muundo_count < 1024) {
muundo_nodes[muundo_count] = node;
muundo_count = muundo_count + 1;
} sivyo {
andika_stderr("KOSA: akiba ya nodi za miundo (muundo_nodes) imejaa (kikomo 1024) — graph ya husisha ina aina za muundo nyingi mno\n");
mkaguzi_makosa = mkaguzi_makosa + 1;
}
}
node = ast_nne[node];
Expand Down Expand Up @@ -242,6 +256,9 @@ W0 mkaguzi_sajili_kazi(N32 kazi_node) {
kama (kazi_param_enc_wapi < 4096) {
kazi_param_enc[kazi_param_enc_wapi] = ast_thamani[p];
kazi_param_enc_wapi = kazi_param_enc_wapi + 1;
} sivyo {
andika_stderr("kosa [%s]: jedwali la aina za hoja bapa (kazi_param_enc) limejaa (kikomo 4096) — mradi una hoja nyingi mno kwa jumla, kwenye kazi zote\n", jina);
mkaguzi_makosa = mkaguzi_makosa + 1;
}
pc = pc + 1;
p = ast_kulia[p];
Expand Down Expand Up @@ -283,6 +300,9 @@ W0 mkaguzi_sajili_kazi(N32 kazi_node) {
kazi_ret_jina_off[kazi_ret_idadi] = off;
kazi_ret_aina[kazi_ret_idadi] = ast_thamani[kazi_node];
kazi_ret_idadi = kazi_ret_idadi + 1;
} sivyo {
andika_stderr("kosa [%s]: jedwali la aina za kurudi za kazi (kazi_ret_idadi) limejaa (kikomo 1024) — mradi una kazi nyingi mno\n", jina);
mkaguzi_makosa = mkaguzi_makosa + 1;
}
}

Expand Down
11 changes: 10 additions & 1 deletion msingi/mkusanyaji/msambazaji.swa
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,14 @@ muundo Msambazaji {
// -------------------------------------------------------
N32 node_mpya(N32 aina, N32 thamani, N32 kushoto, N32 kulia) {
kama (ast_idadi >= 1048576) {
andika_stderr("; DEB: HITILAFU node_mpya imefurika! idadi=%d aina=%d\n", ast_idadi, aina);
// MUHIMU: kama muundo_nodes[1024] (#189) na kazi_jina_pool[131072]
// (#197), dimbwi hili ni jedwali linaloendana na UKUBWA WA MRADI —
// faili kubwa la kweli (mfano Dominion) huweza kulifikia. Wito
// huu unarudisha -1 KWA MAKUSUDI (badala ya kuandika nje ya
// mipaka), LAKINI waitaji wengi wa node_mpya() bado hawaangalii
// matokeo haya kabla ya kuyatumia kama faharisi ya AST -- angalia
// lugha-swa/swa#199 kwa maelezo kamili ya hatari hii.
andika_stderr("KOSA: akiba ya nodi za AST (ast_aina/ast_thamani/...) imejaa (idadi=%d, aina ya nodi iliyoshindwa=%d) — chanzo (baada ya kutatua husisha zote) ni kikubwa mno kwa kikomo cha 1048576\n", ast_idadi, aina);
rudisha -1;
}
N32 idx = ast_idadi;
Expand Down Expand Up @@ -2242,6 +2249,8 @@ N32 changanua_muundo(Msambazaji* p) {
muundo_ukubwa_jina[muundo_ukubwa_idadi] = ast_pool + ast_jina_off[name];
muundo_ukubwa_val[muundo_ukubwa_idadi] = running_offset;
muundo_ukubwa_idadi = muundo_ukubwa_idadi + 1;
} sivyo {
andika_stderr("KOSA: akiba ya ukubwa wa miundo (muundo_ukubwa_jina/val) imejaa (kikomo 1024) — muundo '%s' na zinazofuata hazitapata ukubwa sahihi\n", ast_pool + ast_jina_off[name]);
}
rudisha mnode;
}
Expand Down
29 changes: 29 additions & 0 deletions msingi/mkusanyaji/uzalishaji.swa
Original file line number Diff line number Diff line change
Expand Up @@ -1165,6 +1165,8 @@ W0 andika_rela_ulimwengu(N32 urekebishaji_idx) {
rela_nje_id[rela_idadi] = -1; // alama: sio nje
rela_ulimwengu_idx[rela_idadi] = urekebishaji_idx;
rela_idadi = rela_idadi + 1;
} sivyo {
andika_stderr("KOSA: jedwali la urekebishaji (rela_*) limejaa (kikomo 65536) — anwani hii haitarekebishwa sahihi\n");
}
}

Expand Down Expand Up @@ -1738,6 +1740,8 @@ W0 lebo_hifadhi(N8* jina, N32 ret_enc) {
lebo_nafasi[lebo_idadi] = bafa_text_wapi;
lebo_ret_enc[lebo_idadi] = ret_enc;
lebo_idadi = lebo_idadi + 1;
} sivyo {
andika_stderr("KOSA: jedwali la lebo za kazi (lebo_*) limejaa (kikomo 2048) kwenye kazi '%s' — mradi una kazi nyingi mno\n", jina);
}
}

Expand Down Expand Up @@ -2243,6 +2247,7 @@ N32 pata_au_unda_nje(N8* jina) {
nje_idadi = nje_idadi + 1;
rudisha nje_idadi - 1;
}
andika_stderr("KOSA: jedwali la alama za nje (nje_*) limejaa (kikomo 2048) kwa alama '%s'\n", jina);
rudisha -1;
}

Expand Down Expand Up @@ -2284,6 +2289,9 @@ N32 kusanya_herufi(N8* raw) {
}

// Ongeza mpya — badilisha utorokaji wakati wa kunakili
kama (str_idadi >= 1024 || str_buf_wapi + len + 1 >= 16384) {
andika_stderr("KOSA: jedwali la mfuatano halisi (str_*) limejaa (kikomo cha idadi 1024, au bafa ya baiti 16384) — mfuatano huu hautahifadhiwa sahihi\n");
}
kama (str_idadi < 1024 && str_buf_wapi + len + 1 < 16384) {
N32 o = str_buf_wapi;
N32 j = 0; // faharisi ya chanzo
Expand Down Expand Up @@ -2735,6 +2743,12 @@ W0 uzalishaji_wito(N32 node, N32 kazi_node) {
kama (ast_aina[a] == 45) { hoja_enc[hoja_idadi] = ast_nne[a]; } // HALISI_D: enc iko ast_nne
kama (ast_aina[a] == 4) { hoja_enc[hoja_idadi] = ast_nne[a]; } // AST_NAMBARI: enc iko ast_nne (thamani iko ast_thamani)
hoja_idadi = hoja_idadi + 1;
} sivyo {
// Ulinzi wa ziada: mkaguzi.swa tayari inakataa wito wenye
// hoja zaidi ya 16 kabla ya kufika hapa (kikomo hiki cha 32
// hakipaswi kufikiwa kwa kawaida) -- kama ujumbe huu
// umeonekana, njia ya ukaguzi imepitwa mahali fulani.
andika_stderr("KOSA: bafa ya hoja za wito (hoja_nodes/hoja_enc) imejaa (kikomo 32) — hii haipaswi kutokea, mkaguzi anapaswa kuwa amekataa wito huu tayari\n");
}
a = ast_tiga[a]; // hoja inayofuata kupitia ast_tiga
}
Expand Down Expand Up @@ -2977,6 +2991,8 @@ W0 uzalishaji_wito(N32 node, N32 kazi_node) {
rela_text_off[rela_idadi] = bafa_text_wapi;
rela_nje_id[rela_idadi] = nje_id;
rela_idadi = rela_idadi + 1;
} sivyo {
andika_stderr("KOSA: jedwali la urekebishaji (rela_*) limejaa (kikomo 65536) — wito wa '%s' hautarekebishwa sahihi\n", callee);
}
andika_neno4(0);
}
Expand Down Expand Up @@ -3570,6 +3586,8 @@ W0 uzalishaji_achilia(N32 node, N32 kazi_node) {
rela_text_off[rela_idadi] = bafa_text_wapi;
rela_nje_id[rela_idadi] = nje_id;
rela_idadi = rela_idadi + 1;
} sivyo {
andika_stderr("KOSA: jedwali la urekebishaji (rela_*) limejaa (kikomo 65536) — wito wa 'free' hautarekebishwa sahihi\n");
}
andika_neno4(0);
}
Expand All @@ -3591,6 +3609,8 @@ W0 uzalishaji_badili(N32 node, N32 kazi_node) {
rela_text_off[rela_idadi] = bafa_text_wapi;
rela_nje_id[rela_idadi] = nje_id;
rela_idadi = rela_idadi + 1;
} sivyo {
andika_stderr("KOSA: jedwali la urekebishaji (rela_*) limejaa (kikomo 65536) — wito wa 'realloc' hautarekebishwa sahihi\n");
}
andika_neno4(0);
}
Expand Down Expand Up @@ -4399,6 +4419,10 @@ W0 uzalishaji_anwani_ya(N32 node, N32 kazi_node) {
andika_neno4(0);
rudisha;
}
// MUHIMU: bila ujumbe huu, `&jina_la_kazi` ingekuwa 0 (null)
// KIMYA badala ya anwani halisi — tofauti na kuruka usajili tu
// (kama majedwali mengine), hapa msimbo WA UONGO unazalishwa.
andika_stderr("KOSA: jedwali la anwani za kazi (anwani_kazi_*) limejaa (kikomo 512) kwa '&%s' — anwani itakuwa 0 (null) kimakosa\n", jina);
andika_xor_eax_eax();
rudisha;
}
Expand Down Expand Up @@ -5462,6 +5486,9 @@ W0 uzalishaji_kuu(N32 mzizi, N32 hali_exe) {
// 0b. Kusanya vigezo vya ulimwengu (pre-scan)
N32 gn = ast_kushoto[mzizi];
wakati (gn != -1) {
kama (ast_aina[gn] == 35 && data_ulimwengu_idadi >= 1024) { // AST_TANGAZO_ULIMWENGU
andika_stderr("KOSA: jedwali la data la ulimwengu (data_ulimwengu_*) limejaa (kikomo 1024) — kigezo hiki cha ulimwengu hakitatolewa sahihi\n");
}
kama (ast_aina[gn] == 35 && data_ulimwengu_idadi < 1024) { // AST_TANGAZO_ULIMWENGU
N32 name_n = ast_kushoto[gn];
N32 enc = ast_thamani[gn]; // usimbaji wa aina (sasa umejaa!)
Expand Down Expand Up @@ -5593,6 +5620,8 @@ W0 uzalishaji_kuu(N32 mzizi, N32 hali_exe) {
anwani_data_pos[anwani_data_idadi] = bafa_data_wapi;
anwani_data_jina[anwani_data_idadi] = ast_pool + ast_jina_off[val];
anwani_data_idadi = anwani_data_idadi + 1;
} sivyo {
andika_stderr("KOSA: jedwali la anwani za data (anwani_data_*) limejaa (kikomo 512)\n");
}
N32 k = 0;
wakati (k < 8) {
Expand Down
Loading