View Issue Details

IDProjectCategoryView StatusLast Update
0000210ascendcompilerpublic2013-02-26 13:39
Assigned Toben 
Status assignedResolutionopen 
Product Version 
Target Version0.9.9Fixed in Version 
Summary0000210: ModifyTokenRelationPointers bug (from comment in relation.h)
DescriptionFrom 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.
TagsNo tags attached.




2006-05-24 05:50

administrator   ~0000352

Moving this to the next release.


2012-08-10 10:09

manager   ~0000896

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.

Issue History

Date Modified Username Field Change
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