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.27 date: 2021/01/20 14:24:19
user: cg
file: CheapBlock.st directory: libbasic
module: stx stc-classLibrary: libbasic

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

copyright

COPYRIGHT (c) 1994 by Claus Gittinger All Rights Reserved This software is furnished under a license and may be used only in accordance with the terms of that license and with the inclusion of the above copyright notice. This software may not be provided or otherwise made available to, or used by, any other person. No title to or ownership of the software is hereby transferred.

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.

Usage example(s):

     |b|

     b := [:argList | argList printCR] asVarArgBlock.
     b value.
     b value:'arg1' value:'arg2' value:'arg3' value:'arg4'

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

testing
o  isCheapBlock



ST/X 7.7.0.0; WebServer 1.702 at 20f6060372b9.unknown:8081; Sat, 27 Jul 2024 04:05:47 GMT