aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2017-10-30 10:38:24 +0100
committerGitHub <[email protected]>2017-10-30 10:38:24 +0100
commit5c05e738eadcd0b6239b287adb536847da65bba1 (patch)
tree7268af6888f2eb9b53e39a903ebc8241b0595906 /erts/emulator/beam
parent7b2a7fe7cf4011bed318925675d2e96abf8f76ec (diff)
parent696f47b64c8ad5da71cbffd8fecf0f3bae1e7466 (diff)
downloadotp-5c05e738eadcd0b6239b287adb536847da65bba1.tar.gz
otp-5c05e738eadcd0b6239b287adb536847da65bba1.tar.bz2
otp-5c05e738eadcd0b6239b287adb536847da65bba1.zip
Merge pull request #1610 from bjorng/bjorn/erts/is_builtin/ERL-500/OTP-14713
Correct erlang:is_builtin/3 for apply/2 and yield/0
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r--erts/emulator/beam/beam_emu.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c
index aa94fbf536..60d0008d8f 100644
--- a/erts/emulator/beam/beam_emu.c
+++ b/erts/emulator/beam/beam_emu.c
@@ -3199,13 +3199,16 @@ erts_is_builtin(Eterm Mod, Eterm Name, int arity)
Export e;
Export* ep;
- if (Mod == am_erlang && Name == am_apply && arity == 3) {
- /*
- * Special case. apply/3 is built-in (implemented in C),
- * but implemented in a different way than all other
- * BIFs.
- */
- return 1;
+ if (Mod == am_erlang) {
+ /*
+ * Special case for built-in functions that are implemented
+ * as instructions as opposed to SNIFs.
+ */
+ if (Name == am_apply && (arity == 2 || arity == 3)) {
+ return 1;
+ } else if (Name == am_yield && arity == 0) {
+ return 1;
+ }
}
e.info.mfa.module = Mod;