summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Bernstein <ruby@bernsteinbear.com>2025-08-15 10:54:13 -0400
committerMax Bernstein <tekknolagi@gmail.com>2025-08-18 09:03:31 -0700
commit33224236e1a2f813bfb7ca56322a44853310f1d6 (patch)
treea2547a6dd6df5a9befbacc11fd6054f94d436c26
parentc663fe1eed36fec59dc3359576a63d39bb484efe (diff)
ZJIT: Refine type of Defined
-rw-r--r--zjit/src/hir.rs8
1 files changed, 4 insertions, 4 deletions
diff --git a/zjit/src/hir.rs b/zjit/src/hir.rs
index ecb5a37e1f..a2304e4cae 100644
--- a/zjit/src/hir.rs
+++ b/zjit/src/hir.rs
@@ -1330,7 +1330,7 @@ impl Function {
Insn::SendWithoutBlockDirect { .. } => types::BasicObject,
Insn::Send { .. } => types::BasicObject,
Insn::InvokeBuiltin { return_type, .. } => return_type.unwrap_or(types::BasicObject),
- Insn::Defined { .. } => types::BasicObject,
+ Insn::Defined { pushval, .. } => Type::from_value(*pushval).union(types::NilClass),
Insn::DefinedIvar { .. } => types::BasicObject,
Insn::GetConstantPath { .. } => types::BasicObject,
Insn::ArrayMax { .. } => types::BasicObject,
@@ -4204,10 +4204,10 @@ mod tests {
fn test@<compiled>:2:
bb0(v0:BasicObject):
v2:NilClass = Const Value(nil)
- v4:BasicObject = Defined constant, v2
- v6:BasicObject = Defined func, v0
+ v4:StringExact|NilClass = Defined constant, v2
+ v6:StringExact|NilClass = Defined func, v0
v7:NilClass = Const Value(nil)
- v9:BasicObject = Defined global-variable, v7
+ v9:StringExact|NilClass = Defined global-variable, v7
v11:ArrayExact = NewArray v4, v6, v9
Return v11
"#]]);