From e4052a25d740feb793c4e16dbeb11ac5e3984b7b Mon Sep 17 00:00:00 2001 From: Michel Hermier Date: Thu, 8 Apr 2021 07:54:49 +0200 Subject: [PATCH] wren/vm: Add `wrenIsFalsyValue`. (#866) --- src/vm/wren_vm.c | 6 +++--- src/vm/wren_vm.h | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/vm/wren_vm.c b/src/vm/wren_vm.c index dd8a8b63..c53f2090 100644 --- a/src/vm/wren_vm.c +++ b/src/vm/wren_vm.c @@ -1140,7 +1140,7 @@ static WrenInterpretResult runInterpreter(WrenVM* vm, register ObjFiber* fiber) uint16_t offset = READ_SHORT(); Value condition = POP(); - if (IS_FALSE(condition) || IS_NULL(condition)) ip += offset; + if (wrenIsFalsyValue(condition)) ip += offset; DISPATCH(); } @@ -1149,7 +1149,7 @@ static WrenInterpretResult runInterpreter(WrenVM* vm, register ObjFiber* fiber) uint16_t offset = READ_SHORT(); Value condition = PEEK(); - if (IS_FALSE(condition) || IS_NULL(condition)) + if (wrenIsFalsyValue(condition)) { // Short-circuit the right hand side. ip += offset; @@ -1167,7 +1167,7 @@ static WrenInterpretResult runInterpreter(WrenVM* vm, register ObjFiber* fiber) uint16_t offset = READ_SHORT(); Value condition = PEEK(); - if (IS_FALSE(condition) || IS_NULL(condition)) + if (wrenIsFalsyValue(condition)) { // Discard the condition and evaluate the right hand side. DROP(); diff --git a/src/vm/wren_vm.h b/src/vm/wren_vm.h index 46bbc544..7ab74c9e 100644 --- a/src/vm/wren_vm.h +++ b/src/vm/wren_vm.h @@ -243,4 +243,9 @@ static inline bool wrenIsLocalName(const char* name) return name[0] >= 'a' && name[0] <= 'z'; } +static inline bool wrenIsFalsyValue(Value value) +{ + return IS_FALSE(value) || IS_NULL(value); +} + #endif