   result = new GE.ChipVisitorResult()
   GE.transformersLogger = GE.makeLogFunction(path, result.logMessages)
 
-  # TODO: compile expressions ahead of time
-  evaluationContext = new GE.EvaluationContext(constants, bindings)
+  evaluationContext = GE.makeEvaluationContext(constants, bindings)
   GE.fillPinDefDefaults(processor.pinDefs)
-  evaluatedPins = GE.evaluateInputPinExpressions(path, evaluationContext, processor.pinDefs, chip.pins)
+  evaluatedPins = GE.evaluateInputPinExpressions(path, constants, evaluationContext, processor.pinDefs, chip.pins)
 
   try
     methodResult = processor.update(evaluatedPins, constants.transformers, GE.transformersLogger)

  # TODO: compile expressions ahead of time
  evaluationContext = new GE.EvaluationContext(constants, bindings)
  GE.fillPinDefDefaults(switchChip.pinDefs)
  evaluatedPins = GE.evaluateInputPinExpressions(path, evaluationContext, switchChip.pinDefs, chip.pins)

  # check which children should be activated
  activeChildren = null

  return result

GE.visitEmitterChip = (path, chip, constants, bindings) ->
  evaluationContext = GE.makeEvaluationContext(constants, bindings)

  # Return "DONE" signal, so it can be put in sequences
