112 |
113 |
113 // Primary constructor |
114 // Primary constructor |
114 // |
115 // |
115 Direct$Type$Buffer$RW$(int cap) { // package-private |
116 Direct$Type$Buffer$RW$(int cap) { // package-private |
116 #if[rw] |
117 #if[rw] |
117 super(-1, 0, cap, cap, false); |
118 super(-1, 0, cap, cap); |
118 boolean pa = VM.isDirectMemoryPageAligned(); |
119 boolean pa = VM.isDirectMemoryPageAligned(); |
119 int ps = Bits.pageSize(); |
120 int ps = Bits.pageSize(); |
120 long size = Math.max(1L, (long)cap + (pa ? ps : 0)); |
121 long size = Math.max(1L, (long)cap + (pa ? ps : 0)); |
121 Bits.reserveMemory(size, cap); |
122 Bits.reserveMemory(size, cap); |
122 |
123 |
143 #if[rw] |
144 #if[rw] |
144 |
145 |
145 // Invoked only by JNI: NewDirectByteBuffer(void*, long) |
146 // Invoked only by JNI: NewDirectByteBuffer(void*, long) |
146 // |
147 // |
147 private Direct$Type$Buffer(long addr, int cap) { |
148 private Direct$Type$Buffer(long addr, int cap) { |
148 super(-1, 0, cap, cap, false); |
149 super(-1, 0, cap, cap); |
149 address = addr; |
150 address = addr; |
150 cleaner = null; |
151 cleaner = null; |
151 } |
152 } |
152 |
153 |
153 #end[rw] |
154 #end[rw] |
154 |
155 |
155 // For memory-mapped buffers -- invoked by FileChannelImpl via reflection |
156 // For memory-mapped buffers -- invoked by FileChannelImpl via reflection |
156 // |
157 // |
157 protected Direct$Type$Buffer$RW$(int cap, long addr, Runnable unmapper) { |
158 protected Direct$Type$Buffer$RW$(int cap, long addr, |
158 #if[rw] |
159 FileDescriptor fd, |
159 super(-1, 0, cap, cap, true); |
160 Runnable unmapper) |
|
161 { |
|
162 #if[rw] |
|
163 super(-1, 0, cap, cap, fd); |
160 address = addr; |
164 address = addr; |
161 viewedBuffer = null; |
165 viewedBuffer = null; |
162 cleaner = Cleaner.create(this, unmapper); |
166 cleaner = Cleaner.create(this, unmapper); |
163 #else[rw] |
167 #else[rw] |
164 super(cap, addr, unmapper); |
168 super(cap, addr, fd, unmapper); |
165 #end[rw] |
169 #end[rw] |
166 } |
170 } |
167 |
171 |
168 #end[byte] |
172 #end[byte] |
169 |
173 |