@@ -3251,8 +3251,7 @@ class BytecodeGenerator extends RecursiveVisitor<Null> {
32513251 // correct noSuchMethod for method call.
32523252 if (checkForNull) {
32533253 asm.emitPush (receiverTemp);
3254- asm.emitCheckReceiverForNull (
3255- cp.addSelectorName (node.name, InvocationKind .method));
3254+ asm.emitNullCheck (cp.addSelectorName (node.name, InvocationKind .method));
32563255 }
32573256
32583257 _genInstanceCall (null , InvocationKind .getter, node.interfaceTarget,
@@ -3309,8 +3308,7 @@ class BytecodeGenerator extends RecursiveVisitor<Null> {
33093308 final int receiverTemp = locals.tempIndexInFrame (node);
33103309 _genArguments (node.receiver, args, storeReceiverToLocal: receiverTemp);
33113310 asm.emitPush (receiverTemp);
3312- asm.emitCheckReceiverForNull (
3313- cp.addSelectorName (node.name, InvocationKind .method));
3311+ asm.emitNullCheck (cp.addSelectorName (node.name, InvocationKind .method));
33143312 } else {
33153313 _genArguments (node.receiver, args);
33163314 }
@@ -3344,8 +3342,7 @@ class BytecodeGenerator extends RecursiveVisitor<Null> {
33443342 final int receiverTemp = locals.tempIndexInFrame (node);
33453343 asm.emitStoreLocal (receiverTemp);
33463344 asm.emitPush (receiverTemp);
3347- asm.emitCheckReceiverForNull (
3348- cp.addSelectorName (node.name, InvocationKind .getter));
3345+ asm.emitNullCheck (cp.addSelectorName (node.name, InvocationKind .getter));
33493346 }
33503347 _genDirectCall (directCall.target, argDesc, 1 , isGet: true , node: node);
33513348 } else {
@@ -3367,8 +3364,7 @@ class BytecodeGenerator extends RecursiveVisitor<Null> {
33673364 asm.emitStoreLocal (temp);
33683365 _generateNode (node.value);
33693366 asm.emitPush (temp);
3370- asm.emitCheckReceiverForNull (
3371- cp.addSelectorName (node.name, InvocationKind .setter));
3367+ asm.emitNullCheck (cp.addSelectorName (node.name, InvocationKind .setter));
33723368 } else {
33733369 _generateNode (node.value);
33743370 }
@@ -3477,6 +3473,15 @@ class BytecodeGenerator extends RecursiveVisitor<Null> {
34773473 }
34783474 }
34793475
3476+ @override
3477+ visitNullCheck (NullCheck node) {
3478+ _generateNode (node.operand);
3479+ final operandTemp = locals.tempIndexInFrame (node);
3480+ asm.emitStoreLocal (operandTemp);
3481+ asm.emitPush (operandTemp);
3482+ asm.emitNullCheck (cp.addObjectRef (null ));
3483+ }
3484+
34803485 @override
34813486 visitNullLiteral (NullLiteral node) {
34823487 asm.emitPushNull ();
0 commit comments