--- old/src/share/vm/oops/methodDataOop.hpp 2011-06-27 11:58:56.180255000 -0700 +++ new/src/share/vm/oops/methodDataOop.hpp 2011-06-27 11:58:55.896016000 -0700 @@ -74,8 +74,8 @@ private: // Every data layout begins with a header. This header // contains a tag, which is used to indicate the size/layout - // of the data, 4 bits of flags, which can be used in any way, - // 4 bits of trap history (none/one reason/many reasons), + // of the data, 3 bits of flags, which can be used in any way, + // 5 bits of trap history (none/one reason/many reasons), // and a bci, which is used to tie this piece of data to a // specific bci in the bytecodes. union { @@ -118,14 +118,14 @@ }; enum { - // The _struct._flags word is formatted as [trap_state:4 | flags:4]. - // The trap state breaks down further as [recompile:1 | reason:3]. + // The _struct._flags word is formatted as [trap_state:5 | flags:3]. + // The trap state breaks down further as [recompile:1 | reason:4]. // This further breakdown is defined in deoptimization.cpp. // See Deoptimization::trap_state_reason for an assert that // trap_bits is big enough to hold reasons < Reason_RECORDED_LIMIT. // // The trap_state is collected only if ProfileTraps is true. - trap_bits = 1+3, // 3: enough to distinguish [0..Reason_RECORDED_LIMIT]. + trap_bits = 1+4, // 4: enough to distinguish [0..Reason_RECORDED_LIMIT]. trap_shift = BitsPerByte - trap_bits, trap_mask = right_n_bits(trap_bits), trap_mask_in_place = (trap_mask << trap_shift),