eXept Software AG Logo

Smalltalk/X Webserver

Documentation of class 'CheapBlock':

Home

Documentation
www.exept.de
Everywhere
for:
[back]

Class: CheapBlock


Inheritance:

   Object
   |
   +--ExecutableFunction
      |
      +--CompiledCode
         |
         +--Block
            |
            +--CheapBlock
               |
               +--VarArgCheapBlock

Package:
stx:libbasic
Category:
Kernel-Methods
Version:
rev: 1.26 date: 2017/06/23 08:59:10
user: stefan
file: CheapBlock.st directory: libbasic
module: stx stc-classLibrary: libbasic
Author:
Claus Gittinger

Description:


CheapBlocks are blocks which do not need their home-context
(i.e. blocks that do not access any method arguments 
 or method locals).

CheapBlocks are never created explicitely; the only creation
is done by the compilers, when some sourceCode is compiled to either
machine or byteCode, and the generated block is found to neither access
any variables from its homeContext nor does a method-return.
CheapBlocks create less overhead to the runtime system, in that they
do not keep the creating context from being reclaimed (but, don't expect
too much of a difference ;-)

Since they have no reference to the home, they must store their
creating method explicitely - otherwise, the system had no 
chance of finding the source-position of the block.

[Instance variables:]

  selfValue   <Object>          copied self value
                                (if it's a copying block)

  method      <Method>          method where block was created 

NOTICE: layout known by runtime system and compiler - do not change


Related information:

    Block
    Context
    Method
    [contexts, stacks & unwinding]

Class protocol:

queries
o  isBuiltInClass
return true if this class is known by the run-time-system.
Here, true is returned for myself, false for subclasses.


Instance protocol:

accessing
o  homeMethod
return the receiver's home method.
That's the method where the block was created.

o  selfValue
return the copied self

o  setMethod: aMethod
set the receiver's home method.
This is a private entry for the compiler

conversion
o  asVarArgBlock
convert myself into a varArg block;
this one has 1 formal argument, which gets the list
of actual arguments when evaluated.

printing & storing
o  printOn: aStream
append a a printed representation of the block to aStream

testing
o  isCheapBlock



ST/X 7.1.0.0; WebServer 1.663 at exept.de:8081; Fri, 20 Jul 2018 06:30:43 GMT