[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
|