Lines Matching defs:obj
1045 F(RefTest, const Value& obj, const Value& rtt, Value* result) \
1046 F(RefCast, const Value& obj, const Value& rtt, Value* result) \
1047 F(AssertNull, const Value& obj, Value* result) \
1048 F(BrOnCast, const Value& obj, const Value& rtt, Value* result_on_branch, \
1050 F(BrOnCastFail, const Value& obj, const Value& rtt, \
4027 bool TypeCheckAlwaysFails(Value obj, Value rtt) {
4029 obj.type, this->module_) &&
4030 !IsSubtypeOf(obj.type,
4035 // Checks it {obj} is a nominal type which is a subtype of {rtt}'s index, thus
4037 bool TypeCheckAlwaysSucceeds(Value obj, Value rtt) {
4038 return obj.type.has_index() &&
4039 this->module_->has_supertype(obj.type.ref_index()) &&
4040 IsSubtypeOf(obj.type,
4448 // "Tests whether {obj}'s runtime type is a runtime subtype of {rtt}."
4465 Value obj = Peek(1);
4467 if (!VALIDATE(IsSubtypeOf(obj.type, kWasmFuncRef, this->module_) ||
4468 IsSubtypeOf(obj.type,
4471 obj.type.is_bottom())) {
4472 PopTypeError(0, obj, "subtype of (ref null func) or (ref null data)");
4478 if (V8_UNLIKELY(TypeCheckAlwaysSucceeds(obj, rtt))) {
4482 if (obj.type.is_nullable()) {
4485 CALL_INTERFACE(UnOp, kExprRefAsNonNull, obj, &value);
4490 } else if (V8_UNLIKELY(TypeCheckAlwaysFails(obj, rtt))) {
4495 CALL_INTERFACE(RefTest, obj, rtt, &value);
4521 Value obj = Peek(1);
4522 if (!VALIDATE(IsSubtypeOf(obj.type, kWasmFuncRef, this->module_) ||
4523 IsSubtypeOf(obj.type,
4526 obj.type.is_bottom())) {
4527 PopTypeError(0, obj, "subtype of (ref null func) or (ref null data)");
4535 obj.type.is_bottom()
4537 : obj.type.nullability()));
4541 if (V8_UNLIKELY(TypeCheckAlwaysSucceeds(obj, rtt))) {
4545 CALL_INTERFACE(Forward, obj, &value);
4546 } else if (V8_UNLIKELY(TypeCheckAlwaysFails(obj, rtt))) {
4549 if (obj.type.is_nullable()) {
4550 // Drop rtt from the stack, then assert that obj is null.
4552 CALL_INTERFACE(AssertNull, obj, &value);
4560 CALL_INTERFACE(RefCast, obj, rtt, &value);
4593 Value obj = Peek(1);
4594 if (!VALIDATE(IsSubtypeOf(obj.type, kWasmFuncRef, this->module_) ||
4595 IsSubtypeOf(obj.type,
4598 obj.type.is_bottom())) {
4599 PopTypeError(0, obj, "subtype of (ref null func) or (ref null data)");
4613 Drop(2); // {obj} and {rtt}.
4627 if (V8_UNLIKELY(TypeCheckAlwaysSucceeds(obj, rtt))) {
4629 CALL_INTERFACE(Forward, obj, value_on_branch);
4631 if (obj.type.is_nullable()) {
4632 CALL_INTERFACE(BrOnNonNull, obj, branch_depth.depth);
4640 } else if (V8_LIKELY(!TypeCheckAlwaysFails(obj, rtt))) {
4641 CALL_INTERFACE(BrOnCast, obj, rtt, value_on_branch,
4649 Push(obj); // Restore stack state on fallthrough.
4678 Value obj = Peek(1);
4679 if (!VALIDATE(IsSubtypeOf(obj.type, kWasmFuncRef, this->module_) ||
4680 IsSubtypeOf(obj.type,
4683 obj.type.is_bottom())) {
4684 PopTypeError(0, obj, "subtype of (ref null func) or (ref null data)");
4696 // when the branch is taken. In this case, we leave {obj} on the stack
4708 if (V8_UNLIKELY(TypeCheckAlwaysFails(obj, rtt))) {
4717 } else if (V8_UNLIKELY(TypeCheckAlwaysSucceeds(obj, rtt))) {
4721 if (obj.type.is_nullable()) {
4722 CALL_INTERFACE(BrOnNull, obj, branch_depth.depth, true,
4726 // Drop {obj} in the interface.
4730 CALL_INTERFACE(BrOnCastFail, obj, rtt, &result_on_fallthrough,
4737 Drop(obj);
4837 Value obj = Peek(0, 0, kWasmAnyRef);
4838 Drop(obj);
4856 CALL_INTERFACE(BrOnFunc, obj, value_on_branch, branch_depth.depth);
4858 CALL_INTERFACE(BrOnData, obj, value_on_branch, branch_depth.depth);
4860 CALL_INTERFACE(BrOnArray, obj, value_on_branch, branch_depth.depth);
4862 CALL_INTERFACE(BrOnI31, obj, value_on_branch, branch_depth.depth);
4867 Push(obj); // Restore stack state on fallthrough.
4890 Value obj = Peek(0, 0, kWasmAnyRef);
4903 CALL_INTERFACE(BrOnNonFunc, obj, &value_on_fallthrough,
4906 CALL_INTERFACE(BrOnNonData, obj, &value_on_fallthrough,
4909 CALL_INTERFACE(BrOnNonArray, obj, &value_on_fallthrough,
4912 CALL_INTERFACE(BrOnNonI31, obj, &value_on_fallthrough,
4917 Drop(obj);