diff options
author | Björn Gustavsson <[email protected]> | 2019-03-13 15:15:06 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2019-03-13 15:15:06 +0100 |
commit | ffa252a6e6a353acffb95130b44a89d6e286a7c6 (patch) | |
tree | 3add4f7a028980401df640e5d51b2506e83c96bf /erts/emulator/beam/bif.c | |
parent | bb522c71838f8b46425f4156ee2ed58d155e13b5 (diff) | |
parent | 2d2e78ad6e667655560a67e848153dbb218914f7 (diff) | |
download | otp-ffa252a6e6a353acffb95130b44a89d6e286a7c6.tar.gz otp-ffa252a6e6a353acffb95130b44a89d6e286a7c6.tar.bz2 otp-ffa252a6e6a353acffb95130b44a89d6e286a7c6.zip |
Merge pull request #2177 from bjorng/bjorn/erts/tail-recursive-bifs
Optimize tail-recursive calls of BIFs
OTP-15674
Diffstat (limited to 'erts/emulator/beam/bif.c')
-rw-r--r-- | erts/emulator/beam/bif.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/erts/emulator/beam/bif.c b/erts/emulator/beam/bif.c index 7faba35e1c..c102ddbee6 100644 --- a/erts/emulator/beam/bif.c +++ b/erts/emulator/beam/bif.c @@ -5165,6 +5165,12 @@ erts_schedule_bif(Process *proc, pc = i; mfa = &exp->info.mfa; } + else if (BeamIsOpCode(*i, op_call_bif_only_e)) { + /* Pointer to bif export in i+1 */ + exp = (Export *) i[1]; + pc = i; + mfa = &exp->info.mfa; + } else if (BeamIsOpCode(*i, op_apply_bif)) { /* Pointer to bif in i+1, and mfa in i-3 */ pc = c_p->cp; |