The Artima Developer Community
Sponsored Link

Inside the Java Virtual Machine
Errata for the First Edition

Advertisement

The following table contains a list of the errata about which I know. Thanks to Marcus Rimmer, who reported a few of these items, and especially to Antoine Trux, who reported probably 80% of them or more. Antoine must have really consumed the book with great intensity to find so many typos and other errors. (He also must have liked it.)

PageOops
x Starting with page 188, the pages shown in the table of contents are wrong
36 "the user interface" should be "user interface"
55 "So ,in the case of" should be "So in the case of"
79 "nondaemon" should be "non-daemon"
84 In Figure 5-4, lower "Primitive Types" should be "Reference Types"
84 "...false is represented by zero and true by any nonzero integer" is true of most (if not all) JVM implementations, but is not strictly required by the specification
84 "returnValue" should be "returnAddress"
85 In last paragraph, "returnValue" should be "returnAddress"
85 In Table 5-1, "returnValue" should be "returnAddress"
85 In Table 5-1, exponents need to be superscript. For example, -231 is supposed to be -231.
88 "//java.lang.ClassLoader" should be "// java.lang.ClassLoader"
94 Semicolon missing from last statement in code fragment, "public ClassLoader getClassLoader()"
105 "returnValue" should be "returnAddress"
105 In Figure 5-8, the first "ar[1][1]" should be "ar[0][1]," and the second "ar[0][0]" should be "ar[1][0]"
107 In Figure 5-9, top of left diagram, "type" (index 0) should be "int"
109 "returnType" should be "returnAddress"
110 The first "in local variable" should be "in local variable 0"
110 At the bottom of Figure 5-10, "operand atack" should be "operand stack"
111 "complete abnormally" should be "complete abruptly"
124 In line 2 of paragraph 2, "not all architecture's time slice" should be "not all architectures time slice"
129 "that supports JDK 1.1" should be "that supports JDK 1.0"
138 In Figure 6-2, "CONSTANT_Class" (middle block) should be "CONSTANT_Utf8"
140 In paragraph 3, line 3, "If the method is not abstract" should be "If the method is not abstract and not native"
142 In line 8 from bottom, "BaseType" should be in italics
143 In line 4, "<cc>>Z" should be "Z"
144 In line 7, "ArrayType" should be indented at same level as "ObjectType"
162 In Table 6-31, "classes_info" should be "inner_classes_info"
172 In legend of Figure 7-1, "class' lifetime" should be "class's lifetime"
178 In last paragraph, "boolean is implemented by an int, which gets set to zero (boolean false) by default" does not clearly indicate that the specification is mute on exactly how implementations must represent boolean values internally.
178 In legend of Table 7-1, "Default initial values for the primitive types" should be "Default initial values for the primitive and reference types". (Reference is not a primitive type.)
182 In paragraph 2, line 2, "If a class declares no class variable, it won't have a <clinit> method." should be: "If a class declares no class variables or static initializers, it won't have a <clinit> method." It is allowed for a class to have a static initializer even if it doesn't have any class variable.
184 "//here" should be "// here"
185 In paragraph 2, line 4, "invoking a class initialization method" should be "invoking an instance initialization method"
186 In comment in code, "active use of Parent" should be "active use of NewParent"
186 In paragraph 1, line 2, "Parent" should be "NewParent"
186 In paragraph 2, line 5, "the referring classes constant pool" should be "the referring class's constant pool"
186 In bottom code example, "Anger was initialized" should be "Angry was initialized"
187 In code fragment 1, line 6, "Invoking main() is an active use of Example4" should be "Invoking main() is an active use of Example3"
187 In paragraph 1, "Running the Example4 application" should be "Running the Example3 application"
189 "1 arraylength" should be one line lower, because it has a two-line comment that goes to the next line.
189 In last code fragment, line 6, "(length > 2)" should be "(length >= 2)"
191 In paragraph 1, line 5, "instructions at offset 23 and 33" should be "instructions at offset 24 and 33"
201 "light gray circles" should be "clear circles," and "dark gray rectangles" should be "gray rectangles"
211 "to nonarray class" should be "to a nonarray class"
213 "complete abnormally" should be "complete abruptly"
216 In paragraph 2, line 11, "so it have would been" should be "so it could have been"
227 In paragraph 1, line 12, "that methods that methods" should be "that methods"
228 "java.lang.Object" should be "java.lang.Object"
248 In code extract 1, the last else statement cannot be reached: the cases hours < 0 and hours > 24 are trapped by "else if (hours >= 22 || hours <= 3)"
260 In Figure 8-11, bottom-left box, first row "0" should be "o" (Letter 'o' instead of zero.)
266 In paragraph 3, line 4, "native pinter" should be "native pointer"
272 "all unreference objects" should be "all unreferenced objects"
298 "1 istore_0" and a few other instructions should be one line lower, because they have multi-line comments that continue onto subsequent lines.
317 In line 5 of the first paragraph, "one is encountered in the current int, it is changed to zero" should be "zero is encountered in the current int, it is changed to one" (In other words, the "one" and "zero" should be swapped.)
320 "any of the following forms" should be "any of the listed forms"
333 In line 7 of the second paragraph, "type, size, and offset" should be "class, name, and type"
333 In Table 15-3, the description of the putstatic opcode should be "sets static field, indicated by index, to value (taken from stack)"
333 In Table 15-3, the description of the getstatic opcode should be "pushes static field, indicated by index"
336 In legend of Table 15-7, "Getting an array" should be "Getting an array length"
340 "56 if_icmplt 18" should be one line lower, because it has a two-line comment that goes to the next line
340 In line 4 from the end, "The components of these five arrays" should be "The components of these twenty arrays"
341 On the top of page 341, the number of elements of the arrays is incorrectly expressed in terms of "dimensions": "the Java Virtual Machine creates 1 five-dimensional array of arrays, 5 four-dimensional array of arrays, 20 three-dimensional array of ints." should be "the Java Virtual Machine creates 1 five-element array of arrays, 5 four-element array of arrays, 20 three-element array of ints."
344 "continues as the target" should be "continues at the target"
345 In the third paragraph, "ints" should be "ints" in three places. (In other words, the s should be in normal, not code font.)
361 In line 3 of the first paragraph, "while" should be "for".
366 "1 ifeq 11" and a few other instructions should be one line lower, because they have multi-line comments that continue onto subsequent lines.
374 In paragraph 3, line 2, "invokevirtual for example methods" should be "invokevirtual for instance methods"
396 "passes through the door number two" should be "passes through door number two"

Sponsored Links



Google
  Web Artima.com   
Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use