Module: AST::Processor::Mixin

Defined in:
opal/lib/opal/parser/patch.rb

Instance Method Summary collapse

Instance Method Details

#process(node) ⇒ Object

This patch to #process removes a bit of dynamic abilities (removed call to node.to_ast) and it tries to optimize away the string operations and method existence check by caching them inside a processor.

This is the second most inefficient call in the compilation phase so an optimization may be warranted.



138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'opal/lib/opal/parser/patch.rb', line 138

def process(node)
  return if node.nil?

  @_on_handler_cache ||= {}
  type = node.type

  on_handler = @_on_handler_cache[type] ||= begin
    handler = :"on_#{type}"
    handler = :handler_missing unless respond_to?(handler)
    handler
  end

  send(on_handler, node) || node
end