@InProceedings{shao98:callcc,
  author =	 {Zhong Shao and Valery Trifonov},
  title =	 {Type-directed Continuation Allocation},
  booktitle =	 {Second International Workshop on Types in Compilation}
  publisher =    {Springer-Verlag},
  series =       {Lecture Notes in Computer Science},
  volume =       {1473},
  pages =	 {116-135},
  year =	 1998,
  address =	 {Kyoto, Japan},
  month =	 {March},
  abstract =	 {  
  Suppose we translate two different source languages, $L_1$ and
  $L_2$, into the same intermediate language; can they safely
  interoperate in the same address space and under the same runtime
  system? If $L_1$ supports first-class continuations (call/cc) and
  $L_2$ does not, can $L_2$ programs call arbitrary $L_1$ functions?
  Would the fact of possibly calling $L_1$ impose restrictions on the
  implementation strategy of $L_2$?  Can we compile $L_1$ functions
  that do not invoke call/cc using more efficient techniques borrowed
  from the $L_2$ implementation? Our view is that the implementation
  of a common intermediate language ought to support the so-called
  \emph{pay-as-you-go efficiency}: first-order monomorphic functions
  should be compiled as efficiently as in C and assembly languages,
  even though they may be passed to arbitrary polymorphic functions
  that support advanced control primitives (e.g.~call/cc). In this
  paper we present a typed intermediate language with effect and
  resource annotations, ensuring the safety of inter-language calls
  while allowing the compiler to choose continuation allocation
  strategies.}
}
