Changeset e5ba1d in git


Ignore:
Timestamp:
Jan 9, 2014, 12:54:22 PM (10 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'c5facdfddea2addfd91babd8b9019161dea4b695')
Children:
beed2eef2f5fae68a9e7e7ed0f4a9e7710549aa9f3b5e047e9ab225a25b5204d8ea8b5782b3e3267
Parents:
453510f6a321819066be0f51b5747f45bece4d95
git-author:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2014-01-09 12:54:22+01:00
git-committer:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2014-01-09 12:56:00+01:00
Message:
fix: ring dep. for multiple return results
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • Singular/iplib.cc

    r453510f re5ba1d  
    419419    err=iiAllStart(pi,pi->data.s.body,BT_proc,pi->data.s.body_lineno-(v!=NULL));
    420420
     421#ifdef USE_IILOCALRING
     422#if 0
     423  if(procstack->cRing != iiLocalRing[myynest]) Print("iiMake_proc: 1 ring not saved procs:%x, iiLocal:%x\n",procstack->cRing, iiLocalRing[myynest]);
     424#endif
     425    if (iiLocalRing[myynest-1] != currRing)
     426    {
     427      if (iiRETURNEXPR.RingDependend())
     428      {
     429        //idhdl hn;
     430        const char *n;
     431        const char *o;
     432        idhdl nh=NULL, oh=NULL;
     433        if (iiLocalRing[myynest-1]!=NULL)
     434          oh=rFindHdl(iiLocalRing[myynest-1],NULL, NULL);
     435        if (oh!=NULL)          o=oh->id;
     436        else                   o="none";
     437        if (currRing!=NULL)
     438          nh=rFindHdl(currRing,NULL, NULL);
     439        if (nh!=NULL)          n=nh->id;
     440        else                   n="none";
     441        Werror("ring change during procedure call: %s -> %s (level %d)",o,n,myynest);
     442        iiRETURNEXPR.CleanUp();
     443        err=TRUE;
     444      }
     445      currRing=iiLocalRing[myynest-1];
     446    }
     447    if ((currRing==NULL)
     448    && (currRingHdl!=NULL))
     449      currRing=IDRING(currRingHdl);
     450    else
     451    if ((currRing!=NULL) &&
     452      ((currRingHdl==NULL)||(IDRING(currRingHdl)!=currRing)
     453       ||(IDLEV(currRingHdl)>=myynest-1)))
     454    {
     455      rSetHdl(rFindHdl(currRing,NULL, NULL));
     456      iiLocalRing[myynest-1]=NULL;
     457    }
     458#else /* USE_IILOCALRING */
     459    if (procstack->cRing != currRing)
     460    {
     461      //if (procstack->cRingHdl!=NULL)
     462      //Print("procstack:%s,",IDID(procstack->cRingHdl));
     463      //if (currRingHdl!=NULL)
     464      //Print(" curr:%s\n",IDID(currRingHdl));
     465      //Print("pr:%x, curr: %x\n",procstack->cRing,currRing);
     466      if (iiRETURNEXPR.RingDependend())
     467      {
     468        //idhdl hn;
     469        char *n;
     470        char *o;
     471        if (procstack->cRing!=NULL)
     472        {
     473          //PrintS("reset ring\n");
     474          procstack->cRingHdl=rFindHdl(procstack->cRing,NULL, NULL);
     475          if (procstack->cRingHdl==NULL)
     476            procstack->cRingHdl=
     477              rFindHdl(procstack->cRing,NULL,procstack->currPack->idroot);
     478          if (procstack->cRingHdl==NULL)
     479            procstack->cRingHdl=
     480              rFindHdl(procstack->cRing,NULL,basePack->idroot);
     481          o=IDID(procstack->cRingHdl);
     482          currRing=procstack->cRing;
     483          currRingHdl=procstack->cRingHdl;
     484        }
     485        else                            o="none";
     486        if (currRing!=NULL)             n=IDID(currRingHdl);
     487        else                            n="none";
     488        if (currRing==NULL)
     489        {
     490          Werror("ring change during procedure call: %s -> %s",o,n);
     491          iiRETURNEXPR.CleanUp();
     492          err=TRUE;
     493        }
     494      }
     495      if (procstack->cRingHdl!=NULL)
     496      {
     497        rSetHdl(procstack->cRingHdl);
     498      }
     499      else
     500      { currRingHdl=NULL; currRing=NULL; }
     501    }
     502#endif /* USE_IILOCALRING */
    421503    //Print("kill locals for %s (level %d)\n",IDID(pn),myynest);
    422504    killlocals(myynest);
     
    560642    //iiRETURNEXPR.Init(); //done by CleanUp
    561643  }
    562 #ifdef USE_IILOCALRING
    563 #if 0
    564   if(procstack->cRing != iiLocalRing[myynest]) Print("iiMake_proc: 1 ring not saved procs:%x, iiLocal:%x\n",procstack->cRing, iiLocalRing[myynest]);
    565 #endif
    566   if (iiLocalRing[myynest] != currRing)
    567   {
    568     if (currRing!=NULL)
    569     {
    570       if (iiRETURNEXPR.RingDependend())
    571       {
    572         //idhdl hn;
    573         const char *n;
    574         const char *o;
    575         idhdl nh=NULL, oh=NULL;
    576         if (iiLocalRing[myynest]!=NULL)
    577           oh=rFindHdl(iiLocalRing[myynest],NULL, NULL);
    578         if (oh!=NULL)          o=oh->id;
    579         else                   o="none";
    580         if (currRing!=NULL)
    581           nh=rFindHdl(currRing,NULL, NULL);
    582         if (nh!=NULL)          n=nh->id;
    583         else                   n="none";
    584         Werror("ring change during procedure call: %s -> %s (level %d)",o,n,myynest);
    585         iiRETURNEXPR.CleanUp();
    586         err=TRUE;
    587       }
    588     }
    589     currRing=iiLocalRing[myynest];
    590   }
    591   if ((currRing==NULL)
    592   && (currRingHdl!=NULL))
    593     currRing=IDRING(currRingHdl);
    594   else
    595   if ((currRing!=NULL) &&
    596     ((currRingHdl==NULL)||(IDRING(currRingHdl)!=currRing)
    597      ||(IDLEV(currRingHdl)>=myynest)))
    598   {
    599     rSetHdl(rFindHdl(currRing,NULL, NULL));
    600     iiLocalRing[myynest]=NULL;
    601   }
    602 #else /* USE_IILOCALRING */
    603   if (procstack->cRing != currRing)
    604   {
    605     //if (procstack->cRingHdl!=NULL)
    606     //Print("procstack:%s,",IDID(procstack->cRingHdl));
    607     //if (currRingHdl!=NULL)
    608     //Print(" curr:%s\n",IDID(currRingHdl));
    609     //Print("pr:%x, curr: %x\n",procstack->cRing,currRing);
    610     if (iiRETURNEXPR.RingDependend())
    611     {
    612       //idhdl hn;
    613       char *n;
    614       char *o;
    615       if (procstack->cRing!=NULL)
    616       {
    617         //PrintS("reset ring\n");
    618         procstack->cRingHdl=rFindHdl(procstack->cRing,NULL, NULL);
    619         if (procstack->cRingHdl==NULL)
    620           procstack->cRingHdl=
    621            rFindHdl(procstack->cRing,NULL,procstack->currPack->idroot);
    622         if (procstack->cRingHdl==NULL)
    623           procstack->cRingHdl=
    624            rFindHdl(procstack->cRing,NULL,basePack->idroot);
    625         o=IDID(procstack->cRingHdl);
    626         currRing=procstack->cRing;
    627         currRingHdl=procstack->cRingHdl;
    628       }
    629       else                            o="none";
    630       if (currRing!=NULL)             n=IDID(currRingHdl);
    631       else                            n="none";
    632       if (currRing==NULL)
    633       {
    634         Werror("ring change during procedure call: %s -> %s",o,n);
    635         iiRETURNEXPR.CleanUp();
    636         err=TRUE;
    637       }
    638     }
    639     if (procstack->cRingHdl!=NULL)
    640     {
    641       rSetHdl(procstack->cRingHdl);
    642     }
    643     else
    644     { currRingHdl=NULL; currRing=NULL; }
    645   }
    646 #endif /* USE_IILOCALRING */
    647644  if (iiCurrArgs!=NULL)
    648645  {
  • Singular/ipshell.cc

    r453510f re5ba1d  
    55495549        sLastPrinted.CleanUp();
    55505550      }
    5551       if ((myynest>0) && (iiRETURNEXPR.RingDependend()))
    5552       {
    5553         WerrorS("return value depends on local ring variable (export missing ?)");
    5554         iiRETURNEXPR.CleanUp();
    5555       }
     5551      //if ((myynest>0) && (iiRETURNEXPR.RingDependend()))
     5552      //{
     5553      //  WerrorS("return value depends on local ring variable (export missing ?)");
     5554      //  iiRETURNEXPR.CleanUp();
     5555      //}
    55565556      currRing=NULL;
    55575557      currRingHdl=NULL;
  • Tst/Short/bug_23.res.gz.uu

    r453510f re5ba1d  
    1 begin 640 bug_23.res.gz
    2 M'XL("![O2SP``V)U9U\R,RYR97,`O5*Q3L,P$-WS%4\50U)5+FE3$$1-)<12
    3 M"3&T[*V3F&(IV);ME$B(?^?25"X,K"RV[[WSNW=G;U\>U\\`T@)/ZP>,O/.L
    4 MD>4HC[9G9E:`P)U4TL=)'O4[B@)E>]C-YDR)#^8\]R%]7B"<,X;I%*T3-;Q&
    5 M9;E["]R"P5A=P<1)P&X8/D-PRVBQ4AU@E]>3;E*;BZ>[$R=\:U7<)0%/4X:O
    6 M$)#QT_7-YI)`[FKQ"F.6IF^&5%9G'1QYTPIBC5"U@U9H=,6;0>+(K>1E(Q"+
    7 MSFCK\2Z=ZXE5,F@(:[6%KJK66NI6*@P5&ZD$5;W'_J????"3_?9#TQJ/*9$P
    8 AFC/I&T/`?]G,_K2Y&/Y`_]"MB],DOXJ^`6OV7CDY`@``
     1begin 644 bug_23.res.gz
     2M'XL("!>+SE(``V)U9U\R,RYR97,`O9)/3\(P&,;O?(HGQ,-&L#@8&EF8B?%"
     3M8CR`=]BZ,IHT7=.U2F+\[K[;3-&#5R]MW^?]]WO;[EZ?-B\`DAS/FT>,7>N8
     4MDN4X&^V^/?,<).ZEEBZ*LU&W(\]1^GH_7S`MWEGK"A?"%SG".668S>!;4<$U
     5MX+9H3\&W9#"VX3!1'+1;AH]@W#%:K-0U[/IF>IY6YL)TW_N$\U9'YSCH2<+P
     6M&0P"[].WVTL`T57B"&/6IAN&JCP,0?Q4Z%J@\KW5D0DZ"_!"J165P#550Z3$
     7MFU!(XB%36-M8-)Q[:VE&J4%F*8X-)0X=E=2"NJYP^,E["#SI;QZZK<F$`DFC
     8@>^Y`#`G_A9G^B;D<_D#WT+Z-DCB[&GT!KV)*!SD"````
    99`
    1010end
  • Tst/Short/bug_23.stat

    r453510f re5ba1d  
    1 1 >> tst_memory_0 :: 1011609374:2002012110:2-0-2:ix86-Linux:nepomuck:279196 1292524760:3120- 13145 :3-1-2:ix86-Linux:mamawutz:300096
    2 1 >> tst_memory_1 :: 1011609374:2002012110:2-0-2:ix86-Linux:nepomuck:816256 1292524760:3120- 13145 :3-1-2:ix86-Linux:mamawutz:794332
    3 1 >> tst_memory_2 :: 1011609374:2002012110:2-0-2:ix86-Linux:nepomuck:816256 1292524760:3120- 13145 :3-1-2:ix86-Linux:mamawutz:827116
    4 1 >> tst_timer_1 :: 1011609374:2002012110:2-0-2:ix86-Linux:nepomuck:3 1292524760:3120- 13145 :3-1-2:ix86-Linux:mamawutz:9
     11 >> tst_memory_0 :: 1389267735:3170:3-1-7:ix86-Linux:mamawutz:284412
     21 >> tst_memory_1 :: 1389267735:3170:3-1-7:ix86-Linux:mamawutz:2342736
     31 >> tst_memory_2 :: 1389267735:3170:3-1-7:ix86-Linux:mamawutz:2383708
     41 >> tst_timer_1 :: 1389267735:3170:3-1-7:ix86-Linux:mamawutz:2
  • Tst/Short/bug_26.res.gz.uu

    r453510f re5ba1d  
    1 begin 640 bug_26.res.gz
    2 M'XL(""/9Y$@``V)U9U\R-BYR97,`39#!:L,P$$3O_HHA]&!?1.6FH=34@=)+
    3 MH/22WA/'7LR"*IF5G`9*_[UR8N1>).WL2F\T^\^WW0<`7>-]]XI5\$$9/JVJ
    4 M;#]WRAI1/+#ED!=5-NVH:YS&_E!NE*5OY4,3TOA#C71>*PSB6GCNM<Z+I#\J
    5 M_*1BH^(B;'O(`GV:1.ZH,>"72]+U_768PB@VYV+12X7?5$0+,['*XOAVOH!S
    6 M8T9"1P/9SL-9&-=&P)5];H2;DR'D=!F<!'RQ]U-C6]S>(!$G<&T[BE`'MKCA
    7 D#%N*R&<<_QL[)C/K)0\=_SU%.>4U^EP7U5WV!V,A6MR``0``
     1begin 644 bug_26.res.gz
     2M'XL("""+SE(``V)U9U\R-BYR97,`35#!2L0P%+SW*X;%0W,PF.ZZR!8CB)<%
     3M\;+>=]OT60,AD3110?QWD^V2>DG>3.:]F;S#Z]/^!8"0>-X_8A6FP(WN5VUU
     4MN+PT$HD\:JM#S=HJWY`2?1R/S99;^N)3Z$*1KR5*O>'X\$YATJ,0-2O\+<=/
     5M`5N>#J_M"+^8WF52#]09Z/OOPHN;LYA"]+;6;.$;CM\"4H2+8ULE^<,\7;UW
     6M=B0,\8QR+DHU077&[&"=)5Q+>-2&/LE`L+F7O'<>3JGH/0W0%@GV].92ZVQH
     7D=&H5ZQU._Z.=2IS-LA&1?IZ7F3<6IUJP]JKZ`RL!O&B"`0``
    88`
    99end
  • Tst/Short/bug_26.stat

    r453510f re5ba1d  
    1 1 >> tst_memory_0 :: 1222957347:3100-2008100209:3-1-0:ix86-Linux:nepomuck:159460 1292524760:3120- 13145 :3-1-2:ix86-Linux:mamawutz:171360
    2 1 >> tst_memory_1 :: 1222957347:3100-2008100209:3-1-0:ix86-Linux:nepomuck:701572 1292524760:3120- 13145 :3-1-2:ix86-Linux:mamawutz:794624
    3 1 >> tst_memory_2 :: 1222957347:3100-2008100209:3-1-0:ix86-Linux:nepomuck:836740 1292524760:3120- 13145 :3-1-2:ix86-Linux:mamawutz:794624
    4 1 >> tst_timer_1 :: 1222957347:3100-2008100209:3-1-0:ix86-Linux:nepomuck:4 1292524760:3120- 13145 :3-1-2:ix86-Linux:mamawutz:4
     11 >> tst_memory_0 :: 1389267744:3170:3-1-7:ix86-Linux:mamawutz:155676
     21 >> tst_memory_1 :: 1389267744:3170:3-1-7:ix86-Linux:mamawutz:2342912
     31 >> tst_memory_2 :: 1389267744:3170:3-1-7:ix86-Linux:mamawutz:2342912
     41 >> tst_timer_1 :: 1389267744:3170:3-1-7:ix86-Linux:mamawutz:2
Note: See TracChangeset for help on using the changeset viewer.