appears in a routine that has an attached formal argument a with the exp r same handler as i.e., . exp, A call appearing in the context of a routine in is valid if and only if x.f(a) r C both: is controlled, and x base class exports feature to and the actual arguments conform in x’s f C, number and type to formal arguments of f. Result type combinator: What is the type of a query call x.f(…)? Argument type combinator: What is the expected actual argument type in x.f(a)? Expanded objects are always attached and non-separate, and both type combinators preserve expanded types. traitors can be handled by object tests. An object test succeeds if the run-time type of its source conforms in all of detachability, locality, and class type to the type of its target. Genericity Entities of generic types may be separate, e.g. separate LIST[BOOK] Actual generic parameters may be separate, e.g. LIST[separate BOOK] All combinations are meaningful and useful. Lock Passing If a call occurs in a routine where one or more are controlled, the client’s x.f(a1,…,an) r ai handler (the processor executing passes all currently held locks to the handler of and waits r) x, until terminates (synchronous). f Lock passing combinations Contracts Precondition We have already seen that preconditions express the necessary requirement for a correct feature application, and that it is viewed as a synchronization mechanism: A called feature cannot be executed unless the precondition A violated precondition delays the feature’s execution.
exp appears in a routine r that has an attached formal argument a with the same handler as exp, i.e., . A call x.f(a) appearing in the context of a routine r in C is valid if and only if both: x is controlled, and x’s base class exports feature f to C, and the actual arguments conform in number and type to formal arguments of f. Result type combinator: What is the type of a query call x.f(…)? Argument type combinator: What is the expected actual argument type in x.f(a)? Expanded objects are always attached and non-separate, and both type combinators preserve expanded types. traitors can be handled by object tests. An object test succeeds if the run-time type of its source conforms in all of detachability, locality, and class type to the type of its target. Genericity Entities of generic types may be separate, e.g. separate LIST[BOOK] Actual generic parameters may be separate, e.g. LIST[separate BOOK] All combinations are meaningful and useful. Lock Passing If a call x.f(a1,…,an) occurs in a routine r where one or more ai are controlled, the client’s handler (the processor executing r) passes all currently held locks to the handler of x, and waits until f terminates (synchronous). Lock passing combinations Contracts Precondition We have already seen that preconditions express the necessary requirement for a correct feature application, and that it is viewed as a synchronization mechanism: A called feature cannot be executed unless the precondition A violated precondition delays the feature’s execution.
ccc-src.docx