Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Create Legacy module for legacy YARV instructions
  • Loading branch information
kddnewton committed Nov 22, 2022
commit 8a0f1ecc1eae2943d50a3a86473ffc2c329e27be
24 changes: 12 additions & 12 deletions lib/syntax_tree/compiler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -870,18 +870,18 @@ def visit_defined(node)
case value
when Const
iseq.putnil
iseq.defined(YARV::Defined::CONST, name, "constant")
iseq.defined(YARV::Defined::TYPE_CONST, name, "constant")
when CVar
iseq.putnil
iseq.defined(YARV::Defined::CVAR, name, "class variable")
iseq.defined(YARV::Defined::TYPE_CVAR, name, "class variable")
when GVar
iseq.putnil
iseq.defined(YARV::Defined::GVAR, name, "global-variable")
iseq.defined(YARV::Defined::TYPE_GVAR, name, "global-variable")
when Ident
iseq.putobject("local-variable")
when IVar
iseq.putnil
iseq.defined(YARV::Defined::IVAR, name, "instance-variable")
iseq.defined(YARV::Defined::TYPE_IVAR, name, "instance-variable")
when Kw
case name
when :false
Expand All @@ -898,13 +898,13 @@ def visit_defined(node)
iseq.putself

name = node.value.value.value.to_sym
iseq.defined(YARV::Defined::FUNC, name, "method")
iseq.defined(YARV::Defined::TYPE_FUNC, name, "method")
when YieldNode
iseq.putnil
iseq.defined(YARV::Defined::YIELD, false, "yield")
iseq.defined(YARV::Defined::TYPE_YIELD, false, "yield")
when ZSuper
iseq.putnil
iseq.defined(YARV::Defined::ZSUPER, false, "super")
iseq.defined(YARV::Defined::TYPE_ZSUPER, false, "super")
else
iseq.putobject("expression")
end
Expand Down Expand Up @@ -1875,24 +1875,24 @@ def opassign_defined(node)
name = node.target.constant.value.to_sym

iseq.dup
iseq.defined(YARV::Defined::CONST_FROM, name, true)
iseq.defined(YARV::Defined::TYPE_CONST_FROM, name, true)
when TopConstField
name = node.target.constant.value.to_sym

iseq.putobject(Object)
iseq.dup
iseq.defined(YARV::Defined::CONST_FROM, name, true)
iseq.defined(YARV::Defined::TYPE_CONST_FROM, name, true)
when VarField
name = node.target.value.value.to_sym
iseq.putnil

case node.target.value
when Const
iseq.defined(YARV::Defined::CONST, name, true)
iseq.defined(YARV::Defined::TYPE_CONST, name, true)
when CVar
iseq.defined(YARV::Defined::CVAR, name, true)
iseq.defined(YARV::Defined::TYPE_CVAR, name, true)
when GVar
iseq.defined(YARV::Defined::GVAR, name, true)
iseq.defined(YARV::Defined::TYPE_GVAR, name, true)
end
end

Expand Down
4 changes: 2 additions & 2 deletions lib/syntax_tree/yarv.rb
Original file line number Diff line number Diff line change
Expand Up @@ -434,14 +434,14 @@ def getblockparamproxy(index, level)

def getclassvariable(name)
if RUBY_VERSION < "3.0"
push(GetClassVariableUncached.new(name))
push(Legacy::GetClassVariable.new(name))
else
push(GetClassVariable.new(name, inline_storage_for(name)))
end
end

def getconstant(name)
push(GetConstant.new(name))
push(Legacy::GetConstant.new(name))
end

def getglobal(name)
Expand Down
Loading