Skip to content

Commit b7fa8c4

Browse files
committed
Simplify code in JobC.resolve()
1 parent 80d22ab commit b7fa8c4

1 file changed

Lines changed: 28 additions & 29 deletions

File tree

N2A/src/gov/sandia/n2a/backend/c/JobC.java

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public class JobC extends Thread
8383

8484
public MNode job;
8585
protected EquationSet digestedModel;
86-
protected ExponentContext exponentContext;
86+
public ExponentContext exponentContext;
8787
protected MVolatile params;
8888

8989
public Host env;
@@ -5843,7 +5843,7 @@ public void renderEquation (RendererC context, EquationEntry e)
58435843
break;
58445844
case Variable.MULTIPLY:
58455845
// raw exponent = exponentV + exponentExpression
5846-
// shift = raw - exponentV = expnentExpression
5846+
// shift = raw - exponentV = exponentExpression
58475847
shift = e.expression.exponentNext;
58485848
if (shift != 0 && fixedPoint)
58495849
{
@@ -6480,17 +6480,18 @@ public String resolve (VariableReference r, RendererC context, boolean lvalue)
64806480
public String resolve (VariableReference r, RendererC context, boolean lvalue, String base, boolean logical)
64816481
{
64826482
if (r == null || r.variable == null) return "unresolved";
6483+
Variable v = r.variable;
64836484

64846485
// Because $live has some rather complex access rules, take special care to ensure
64856486
// that it always returns false when either $connect or $init are true.
6486-
if (r.variable.name.equals ("$live") && r.variable.container == context.part)
6487+
if (v.name.equals ("$live") && v.container == context.part)
64876488
{
64886489
if (context.part.getConnect () || context.part.getInit ()) return "0";
64896490
}
64906491

6491-
if (r.variable.hasAttribute ("constant") && ! lvalue) // A constant will always be an rvalue, unless it is being loaded into a local variable (special case for $t').
6492+
if (v.hasAttribute ("constant") && ! lvalue) // A constant will always be an rvalue, unless it is being loaded into a local variable (special case for $t').
64926493
{
6493-
EquationEntry e = r.variable.equations.first ();
6494+
EquationEntry e = v.equations.first ();
64946495
StringBuilder temp = context.result;
64956496
StringBuilder result = new StringBuilder ();
64966497
context.result = result;
@@ -6501,77 +6502,75 @@ public String resolve (VariableReference r, RendererC context, boolean lvalue, S
65016502

65026503
String containers = resolveContainer (r, context, base);
65036504

6504-
if (r.variable.hasAttribute ("instance"))
6505+
if (v.hasAttribute ("instance"))
65056506
{
65066507
return stripDereference (containers);
65076508
}
65086509

65096510
String name = "";
6510-
BackendDataC bed = (BackendDataC) r.variable.container.backendData; // NOT context.bed !
6511-
if (r.variable.hasAttribute ("preexistent"))
6511+
BackendDataC vbed = (BackendDataC) v.container.backendData; // NOT context.bed !
6512+
if (v.hasAttribute ("preexistent"))
65126513
{
6513-
String vname = r.variable.name;
6514-
if (! vname.startsWith ("$"))
6514+
if (! v.name.startsWith ("$"))
65156515
{
6516-
return vname; // most likely a local variable, for example "rc" in mapIndex()
6516+
return v.name; // most likely a local variable, for example "rc" in mapIndex()
65176517
}
65186518
else
65196519
{
6520-
int vorder = r.variable.order;
6521-
if (vname.equals ("$t"))
6520+
if (v.name.equals ("$t"))
65226521
{
6523-
if (! lvalue && vorder == 0)
6522+
if (! lvalue && v.order == 0)
65246523
{
65256524
name = SIMULATOR + "currentEvent->t";
65266525
}
65276526
// For lvalue, fall through to the main case below.
65286527
// Higher orders of $t should not be "preexistent". They are handled below.
65296528
}
6530-
else if (vname.equals ("$n"))
6529+
else if (v.name.equals ("$n"))
65316530
{
6532-
if (! lvalue && vorder == 0)
6531+
if (! lvalue && v.order == 0)
65336532
{
65346533
name = "n";
65356534
}
65366535
}
65376536
}
65386537
}
6539-
if (r.variable.name.equals ("$live"))
6538+
if (v.name.equals ("$live"))
65406539
{
65416540
if (lvalue) return "unresolved";
6542-
if (r.variable.hasAttribute ("accessor")) return containers + "getLive ()";
6541+
if (v.hasAttribute ("accessor")) return containers + "getLive ()";
65436542

65446543
// Not "constant" or "accessor", so must be direct access.
6545-
if (logical) return "(" + bed.getFlag (containers + "flags", false, bed.liveFlag) + ")";
6546-
else return "((" + bed.getFlag (containers + "flags", false, bed.liveFlag) + ") ? 1 : 0)";
6544+
if (logical) return "(" + vbed.getFlag (containers + "flags", false, vbed.liveFlag) + ")";
6545+
else return "((" + vbed.getFlag (containers + "flags", false, vbed.liveFlag) + ") ? 1 : 0)";
65476546
}
6548-
else if (r.variable.hasAttribute ("accessor"))
6547+
else if (v.hasAttribute ("accessor"))
65496548
{
6550-
if (r.variable.name.equals ("$t") && r.variable.order == 1 && ! lvalue) // $t'
6549+
if (v.name.equals ("$t") && v.order == 1 && ! lvalue) // $t'
65516550
{
65526551
return containers + "getDt ()";
65536552
}
65546553
return "unresolved"; // Only $live and $t' can have "accessor" attribute.
65556554
}
6556-
if (r.variable.name.endsWith (".$count"))
6555+
if (v.name.endsWith (".$count"))
65576556
{
65586557
if (lvalue) return "unresolved";
6559-
String alias = r.variable.name.substring (0, r.variable.name.lastIndexOf ("."));
6560-
name = mangle (alias) + "->" + prefix (r.variable.container) + "_" + mangle (alias) + "_count";
6558+
String alias = v.name.substring (0, v.name.lastIndexOf ("."));
6559+
name = mangle (alias) + "->" + prefix (v.container) + "_" + mangle (alias) + "_count";
65616560
}
65626561
if (name.length () == 0)
65636562
{
65646563
// Write to buffered value, except during init phase.
6565-
if (lvalue && ! context.part.getInit () && (bed.globalBuffered.contains (r.variable) || bed.localBuffered.contains (r.variable)))
6564+
if (lvalue && ! context.part.getInit () && (vbed.globalBuffered.contains (v) || vbed.localBuffered.contains (v)))
65666565
{
6567-
name = mangle ("next_", r.variable);
6566+
name = mangle ("next_", v);
65686567
}
65696568
else
65706569
{
6571-
name = mangle (r.variable);
6570+
name = mangle (v);
65726571
}
65736572
}
6574-
if (r.variable.hasAttribute ("MatrixPointer") && ! lvalue)
6573+
if (v.hasAttribute ("MatrixPointer") && ! lvalue)
65756574
{
65766575
return "(* " + containers + name + ")"; // Actually stored as a pointer
65776576
}

0 commit comments

Comments
 (0)