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.

[View source]

145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'opal/lib/opal/parser/patch.rb', line 145

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