From 3de4ed1b4bce16fe4cf17446c3ef1397616469ce Mon Sep 17 00:00:00 2001 From: jochen Date: Mon, 15 Mar 1999 17:42:08 +0000 Subject: [PATCH] *** empty log message *** git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@414 379699f6-c40d-0410-875b-85095c16579e --- jode/doc/technical.texi | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/jode/doc/technical.texi b/jode/doc/technical.texi index 0aee289..8ec989a 100644 --- a/jode/doc/technical.texi +++ b/jode/doc/technical.texi @@ -15,16 +15,33 @@ This chapter contains information, how the decompiler works. @section Type checking and guessing @cindex Types, Conversions -The type class has the following operators: +The class jode.Type is the base class of all types (except MethodType). +A type under jode is really a set of types, since it sometimes cannot +know the exact type. A special type is Type.tError which represents the +empty set. + +A type has the following operators: + +@table @asis +@item getSubType +Get the set of types, that are implicitly (in bytecode) castable to one +of the types in this type set. + +@item getSuperType +Get the set of types, to which the types in this type set can be casted +without a bytecode cast. + +@item intersection +Get the intersection of the type sets. -getSubType -getSuperType -intersection (getCastHelper?) (getImplicitCast?) +@end table -reference types (classes, interfaces, arrays and null type) often appear -in ranges. They have the methods: +There are simple types, that can only casted to themself (like long, +float, double, void), 32 bit integer types (boolean, byte, char, short, +int) and reference types (classes, interfaces, arrays and null type). +There is also a type range to represent sets of reference types. createRangeType getSpecializedType @@ -41,7 +58,7 @@ ref1.intersection(ref2) = {IBCS}[] intersect {CSZ}[] = {CS}[] intersect - --> The byte code distinguishes five different types: