[squeak-dev] The Trunk: Kernel-ul.540.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Jan 29 12:21:50 UTC 2011


Levente Uzonyi uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-ul.540.mcz

==================== Summary ====================

Name: Kernel-ul.540
Author: ul
Time: 29 January 2011, 1:21:18.82 pm
UUID: a66e5204-4090-2149-8c6a-d65fa1cc4dd3
Ancestors: Kernel-cmm.539

- updated CompiledMethod's comment as suggested by http://bugs.squeak.org/view.php?id=7570

=============== Diff against Kernel-cmm.539 ===============

Item was changed:
  ByteArray variableByteSubclass: #CompiledMethod
  	instanceVariableNames: ''
  	classVariableNames: 'LargeFrame SmallFrame'
  	poolDictionaries: ''
  	category: 'Kernel-Methods'!
  
+ !CompiledMethod commentStamp: 'ul 1/29/2011 13:18' prior: 0!
- !CompiledMethod commentStamp: 'ls 7/5/2003 13:48' prior: 0!
  My instances are methods suitable for interpretation by the virtual machine.  This is the only class in the system whose instances intermix both indexable pointer fields and indexable integer fields.
+ I'm a subclass of ByteArray to avoid duplicating some of ByteArray's methods, not because a CompiledMethod is-a ByteArray.
  
  	
  The current format of a CompiledMethod is as follows:
  
  	header (4 bytes)
  	literals (4 bytes each)
  	bytecodes  (variable)
  	trailer (variable)
  
  The header is a 30-bit integer with the following format:
  
  (index 0)	9 bits:	main part of primitive number   (#primitive)
  (index 9)	8 bits:	number of literals (#numLiterals)
  (index 17)	1 bit:	whether a large frame size is needed (#frameSize)
  (index 18)	6 bits:	number of temporary variables (#numTemps)
  (index 24)	4 bits:	number of arguments to the method (#numArgs)
  (index 28)	1 bit:	high-bit of primitive number (#primitive)
  (index 29)	1 bit:	flag bit, ignored by the VM  (#flag)
  
  
  The trailer has two variant formats.  In the first variant, the last byte is at least 252 and the last four bytes represent a source pointer into one of the sources files (see #sourcePointer).  In the second variant, the last byte is less than 252, and the last several bytes are a compressed version of the names of the method's temporary variables.  The number of bytes used for this purpose is the value of the last byte in the method.
  !




More information about the Squeak-dev mailing list