interprocess inlining

Thomas Lindgren <>
Thu Dec 5 17:20:16 CET 2002

> [exceptions in another process]

There is another book keeping issue as well:
primitives such as self(), process dictionary, etc.
must be changed while you are executing the code of
the other process. Likewise with the set of links,
monitors, and possibly other things. (Alternatively,
you can restrict yourself to not inlining such code.)

Second: it seems that the restriction that A may not
suspend while executing code from B is fairly
draconian: you can't, in principle, make a procedure
call inside the inlined code (p.5, top) since that
increments the reduction counter in ordinary BEAM. Or
am I missing something?

Third: another interesting issue, if we want to handle
more complex scenarios, is how to handle chained

- A sends to B
- B sends to C
- C sends to D

(perhaps C or D are really A; perhaps we suspend in
code belonging to C; etc.)

The paper[*] doesn't mention this issue, though it
seems technically to be permitted. (It should be said
I haven't read it closely.)

-- Thomas

[*] The same idea also seems to appear in the
following paper, which Sven-Olof mentions; at least
the difference is not obvious at a cursory read. Yet
the EUC'02 paper doesn't cite the earlier paper?
Perhaps someone can clarify?

E. Johansson, S.-O. Nyström. Profile-guided
optimization across process boundaries . In ACM
SIGPLAN Workshop on Dynamic and Adaptive Compilation
(Dynamo'00). Jan 18, 2000.

Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.

More information about the erlang-questions mailing list