View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0000210||ascend||compiler||public||2006-01-24 09:17||2013-02-26 13:39|
|Target Version||0.9.9||Fixed in Version|
|Summary||0000210: ModifyTokenRelationPointers bug (from comment in relation.h)|
|Description||From line 376 in compiler/relation.h,|
* @bug This applies to ModifyTokenRelationPointers(),
* ModifyGlassBoxRelPointers(), and ModifyBlackBoxRelPointers() in
* compiler/relation.[ch]. A token relation which ends up merging
* two variables in its varlist will need to split off a copy of the
* token list if the token list is shared among relations. There are
* penalties to merging vars now, too.
|Tags||No tags attached.|
||Moving this to the next release.|
Due to the multiphase nature of the compiler, in normal usage all atom merges have happened before relations are compiled.
In the absence of script/gui-driven instance refinement (e.g. assigning a set/constant and restarting the compiler to process pending statements or requesting a part merge interactively or refining a model instance from one type to another (something the tk gui allows)), this bug cannot occur.
Workarounds: save instance values to file, edit model definitions, and instantiate target (merged, refined, whatever) type from scratch, then load values file.
Fixes: The brute force solution to handling reinstantiate is to destroy all phase2-6 artifacts (rel, when,etc) in the instance tree before a regular reinstantiate.
The less cpu intensive solution (for the compiler only, perhaps) is to collect all relations affected by atom merges as part of the atom merge process and reinstantiate those guts after the merge. This is more than mildly insanity inducing given the possibility that equations may have already been compiled all the way to C/asm and linked.
|2006-01-24 09:17||john||New Issue|
|2006-02-07 13:17||john||Target release||=> 1.0|
|2006-02-07 13:22||john||Target release||1.0 => 0.9.6|
|2006-05-24 05:50||john||Target release||0.9.6 => 1.0|
|2006-05-24 05:50||john||Note Added: 0000352|
|2006-05-24 05:50||john||Assigned To||=> ben|
|2006-05-24 05:50||john||Status||new => assigned|
|2010-03-23 18:30||john||Target Version||=> 1.0|
|2012-08-10 10:09||ben||Note Added: 0000896|
|2013-02-26 13:39||john||Target Version||1.0 => 0.9.9|