diff options
author | Björn Gustavsson <[email protected]> | 2017-10-30 10:38:24 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2017-10-30 10:38:24 +0100 |
commit | 5c05e738eadcd0b6239b287adb536847da65bba1 (patch) | |
tree | 7268af6888f2eb9b53e39a903ebc8241b0595906 /erts/emulator/beam | |
parent | 7b2a7fe7cf4011bed318925675d2e96abf8f76ec (diff) | |
parent | 696f47b64c8ad5da71cbffd8fecf0f3bae1e7466 (diff) | |
download | otp-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.c | 17 |
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; |