diff -r 3262e31fc6b7 -r 815df0732142 jdk/makefiles/gensrc/GensrcBuffer.gmk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/makefiles/gensrc/GensrcBuffer.gmk Tue Oct 15 13:06:45 2013 +0200 @@ -0,0 +1,380 @@ +# +# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +GENSRC_BUFFER := + +GENSRC_BUFFER_TMP := $(JDK_OUTPUTDIR)/gensrc +GENSRC_BUFFER_DST := $(JDK_OUTPUTDIR)/gensrc/java/nio + +GENSRC_BUFFER_SRC := $(JDK_TOPDIR)/src/share/classes/java/nio + +### + +$(GENSRC_BUFFER_DST)/_the.buffer.dir: + $(ECHO) "Generating buffer classes" + $(MKDIR) -p $(@D) + $(TOUCH) $@ + +define fixRw + $1_RW := $2 + $1_rwkey := rw + ifeq (R, $2) + $1_rwkey := ro + endif +endef + +define typesAndBits + # param 1 target + # param 2 type + # param 3 BO + $1_a := a + $1_A := A + + $1_type := $2 + + ifeq ($2, byte) + $1_x := b + $1_Type := Byte + $1_fulltype := byte + $1_Fulltype := Byte + $1_category := integralType + $1_LBPV := 0 + endif + + ifeq ($2, char) + $1_x := c + $1_Type := Char + $1_fulltype := character + $1_Fulltype := Character + $1_category := integralType + $1_streams := streamableType + $1_streamtype := int + $1_Streamtype := Int + $1_LBPV := 1 + endif + + ifeq ($2, short) + $1_x := s + $1_Type := Short + $1_fulltype := short + $1_Fulltype := Short + $1_category := integralType + $1_LBPV := 1 + endif + + ifeq ($2, int) + $1_a := an + $1_A := An + $1_x := i + $1_Type := Int + $1_fulltype := integer + $1_Fulltype := Integer + $1_category := integralType + $1_LBPV := 2 + endif + + ifeq ($2, long) + $1_x := l + $1_Type := Long + $1_fulltype := long + $1_Fulltype := Long + $1_category := integralType + $1_LBPV := 3 + endif + + ifeq ($2, float) + $1_x := f + $1_Type := Float + $1_fulltype := float + $1_Fulltype := Float + $1_category := floatingPointType + $1_LBPV := 2 + endif + + ifeq ($2, double) + $1_x := d + $1_Type := Double + $1_fulltype := double + $1_Fulltype := Double + $1_category := floatingPointType + $1_LBPV := 3 + endif + + $1_Swaptype := $$($1_Type) + $1_memtype := $2 + $1_Memtype := $$($1_Type) + + ifeq ($2, float) + $1_memtype := int + $1_Memtype := Int + ifneq ($3, U) + $1_Swaptype := Int + $1_fromBits := Float.intBitsToFloat + $1_toBits := Float.floatToRawIntBits + endif + endif + + ifeq ($2, double) + $1_memtype := long + $1_Memtype := Long + ifneq ($3, U) + $1_Swaptype := Long + $1_fromBits := Double.longBitsToDouble + $1_toBits := Double.doubleToRawLongBits + endif + endif + + ifeq ($3, S) + $1_swap := Bits.swap + endif +endef + +define genBinOps + # param 1 target + # param 2 type + # param 3 BO + # param 4 RW + # param 5 nbytes + # param 6 nbytesButOne + $(call typesAndBits,$1,$2,$3) + $(call fixRw,$1,$4) + $1_nbytes := $5 + $1_nbytesButOne := $6 + $1_CMD := $(TOOL_SPP) \ + -Dtype=$$($1_type) \ + -DType=$$($1_Type) \ + -Dfulltype=$$($1_fulltype) \ + -Dmemtype=$$($1_memtype) \ + -DMemtype=$$($1_Memtype) \ + -DfromBits=$$($1_fromBits) \ + -DtoBits=$$($1_toBits) \ + -DLG_BYTES_PER_VALUE=$$($1_LBPV) \ + -DBYTES_PER_VALUE="(1 << $$($1_LBPV))" \ + -Dnbytes=$$($1_nbytes) \ + -DnbytesButOne=$$($1_nbytesButOne) \ + -DRW=$$($1_RW) \ + -K$$($1_rwkey) \ + -Da=$$($1_a) \ + -be +endef + +define SetupGenBuffer + # param 1 is for output file + # param 2 is template dependency + # param 3-9 are named args. + # type := + # BIN := + # RW := Mutability (R)ead-only (W)ritable + # BO := (U)nswapped/(S)wapped/(L)ittle/(B)ig + # + $(if $3,$1_$(strip $3)) + $(if $4,$1_$(strip $4)) + $(if $5,$1_$(strip $5)) + $(if $6,$1_$(strip $6)) + $(if $7,$1_$(strip $7)) + $(if $8,$1_$(strip $8)) + $(if $9,$1_$(strip $9)) + $(if $(10),$1_$(strip $(10))) + $(if $(11),$1_$(strip $(11))) + $(if $(12),$1_$(strip $(12))) + $(if $(13),$1_$(strip $(13))) + $(if $(14),$1_$(strip $(14))) + $(foreach i,3 4 5 6 7 8 9 10 11 12 13 14 15,$(if $($i),$1_$(strip $($i)))$(NEWLINE)) + $(call LogSetupMacroEntry,SetupGenBuffer($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15)) + $(if $(16),$(error Internal makefile error: Too many arguments to SetupGenBuffer, please update GensrcBuffer.gmk)) + + $(call fixRw,$1,$$($1_RW)) + $(call typesAndBits,$1,$$($1_type),$$($1_BO)) + + $1_DST := $(GENSRC_BUFFER_DST)/$1.java + $1_SRC := $(GENSRC_BUFFER_SRC)/$(strip $2).java.template + $1_SRC_BIN := $(GENSRC_BUFFER_SRC)/$(strip $2)-bin.java.template + + $1_DEP := $$($1_SRC) + ifneq ($$($1_BIN), 1) + $1_DEP := $$($1_SRC) + $1_OUT := $$($1_DST) + else + $1_DEP += $$($1_SRC) $$($1_SRC_BIN) + $1_OUT := $(GENSRC_BUFFER_DST)/$1.binop.0.java + endif + + ifeq ($$($1_BIN), 1) + $(call genBinOps,$1_char,char,$$($1_BO),$$($1_RW),two,one) + $(call genBinOps,$1_short,short,$$($1_BO),$$($1_RW),two,one) + $(call genBinOps,$1_int,int,$$($1_BO),$$($1_RW),four,three) + $(call genBinOps,$1_long,long,$$($1_BO),$$($1_RW),eight,seven) + $(call genBinOps,$1_float,float,$$($1_BO),$$($1_RW),four,three) + $(call genBinOps,$1_double,double,$$($1_BO),$$($1_RW),eight,seven) + endif + + $$($1_DST): $$($1_DEP) $(GENSRC_BUFFER_DST)/_the.buffer.dir + $(TOOL_SPP) < $$($1_SRC) > $$($1_OUT).tmp \ + -K$$($1_type) \ + -K$$($1_category) \ + -K$$($1_streams) \ + -Dtype=$$($1_type) \ + -DType=$$($1_Type) \ + -Dfulltype=$$($1_fulltype) \ + -DFulltype=$$($1_Fulltype) \ + -Dstreamtype=$$($1_streamtype) \ + -DStreamtype=$$($1_Streamtype) \ + -Dx=$$($1_x) \ + -Dmemtype=$$($1_memtype) \ + -DMemtype=$$($1_Memtype) \ + -DSwaptype=$$($1_Swaptype) \ + -DfromBits=$$($1_fromBits) \ + -DtoBits=$$($1_toBits) \ + -DLG_BYTES_PER_VALUE=$$($1_LBPV) \ + -DBYTES_PER_VALUE="(1 << $$($1_LBPV))" \ + -DBO=$$($1_BO) \ + -Dswap=$$($1_swap) \ + -DRW=$$($1_RW) \ + -K$$($1_rwkey) \ + -Da=$$($1_a) \ + -DA=$$($1_A) \ + -Kbo$$($1_BO) + $(MV) $$($1_OUT).tmp $$($1_OUT) + # Do the extra bin thing + ifeq ($$($1_BIN), 1) + $(SED) -e '/#BIN/,$$$$d' < $$($1_OUT) > $$($1_DST).tmp + $(RM) $$($1_OUT) + $$($1_char_CMD) < $$($1_SRC_BIN) >> $$($1_DST).tmp + $$($1_short_CMD) < $$($1_SRC_BIN) >> $$($1_DST).tmp + $$($1_int_CMD) < $$($1_SRC_BIN) >> $$($1_DST).tmp + $$($1_long_CMD) < $$($1_SRC_BIN) >> $$($1_DST).tmp + $$($1_float_CMD) < $$($1_SRC_BIN) >> $$($1_DST).tmp + $$($1_double_CMD) < $$($1_SRC_BIN) >> $$($1_DST).tmp + $(PRINTF) "}\n" >> $$($1_DST).tmp + mv $$($1_DST).tmp $$($1_DST) + endif + + GENSRC_BUFFER += $$($1_DST) + +endef + +### + +X_BUF := X-Buffer + +$(eval $(call SetupGenBuffer,ByteBuffer, $(X_BUF), type:=byte, BIN:=1)) +$(eval $(call SetupGenBuffer,CharBuffer, $(X_BUF), type:=char)) +$(eval $(call SetupGenBuffer,ShortBuffer, $(X_BUF), type:=short)) +$(eval $(call SetupGenBuffer,IntBuffer, $(X_BUF), type:=int)) +$(eval $(call SetupGenBuffer,LongBuffer, $(X_BUF), type:=long)) +$(eval $(call SetupGenBuffer,FloatBuffer, $(X_BUF), type:=float)) +$(eval $(call SetupGenBuffer,DoubleBuffer,$(X_BUF), type:=double)) + +# Buffers whose contents are heap-allocated +# +HEAP_X_BUF := Heap-X-Buffer + +$(eval $(call SetupGenBuffer,HeapByteBuffer, $(HEAP_X_BUF), type:=byte)) +$(eval $(call SetupGenBuffer,HeapByteBufferR, $(HEAP_X_BUF), type:=byte, RW:=R)) +$(eval $(call SetupGenBuffer,HeapCharBuffer, $(HEAP_X_BUF), type:=char)) +$(eval $(call SetupGenBuffer,HeapCharBufferR, $(HEAP_X_BUF), type:=char, RW:=R)) +$(eval $(call SetupGenBuffer,HeapShortBuffer, $(HEAP_X_BUF), type:=short)) +$(eval $(call SetupGenBuffer,HeapShortBufferR, $(HEAP_X_BUF), type:=short, RW:=R)) +$(eval $(call SetupGenBuffer,HeapIntBuffer, $(HEAP_X_BUF), type:=int)) +$(eval $(call SetupGenBuffer,HeapIntBufferR, $(HEAP_X_BUF), type:=int, RW:=R)) +$(eval $(call SetupGenBuffer,HeapLongBuffer, $(HEAP_X_BUF), type:=long)) +$(eval $(call SetupGenBuffer,HeapLongBufferR, $(HEAP_X_BUF), type:=long, RW:=R)) +$(eval $(call SetupGenBuffer,HeapFloatBuffer, $(HEAP_X_BUF), type:=float)) +$(eval $(call SetupGenBuffer,HeapFloatBufferR, $(HEAP_X_BUF), type:=float, RW:=R)) +$(eval $(call SetupGenBuffer,HeapDoubleBuffer, $(HEAP_X_BUF), type:=double)) +$(eval $(call SetupGenBuffer,HeapDoubleBufferR,$(HEAP_X_BUF), type:=double, RW:=R)) + +# Direct byte buffer +# +DIRECT_X_BUF := Direct-X-Buffer + +$(eval $(call SetupGenBuffer,DirectByteBuffer, $(DIRECT_X_BUF), type:=byte, BIN:=1)) +$(eval $(call SetupGenBuffer,DirectByteBufferR,$(DIRECT_X_BUF), type:=byte, BIN:=1, RW:=R)) + +# Unswapped views of direct byte buffers +# +$(eval $(call SetupGenBuffer,DirectCharBufferU, $(DIRECT_X_BUF), type:=char, BO:=U)) +$(eval $(call SetupGenBuffer,DirectCharBufferRU, $(DIRECT_X_BUF), type:=char, RW:=R, BO:=U)) +$(eval $(call SetupGenBuffer,DirectShortBufferU, $(DIRECT_X_BUF), type:=short, BO:=U)) +$(eval $(call SetupGenBuffer,DirectShortBufferRU, $(DIRECT_X_BUF), type:=short, RW:=R, BO:=U)) +$(eval $(call SetupGenBuffer,DirectIntBufferU, $(DIRECT_X_BUF), type:=int, BO:=U)) +$(eval $(call SetupGenBuffer,DirectIntBufferRU, $(DIRECT_X_BUF), type:=int, RW:=R, BO:=U)) +$(eval $(call SetupGenBuffer,DirectLongBufferU, $(DIRECT_X_BUF), type:=long, BO:=U)) +$(eval $(call SetupGenBuffer,DirectLongBufferRU, $(DIRECT_X_BUF), type:=long, RW:=R, BO:=U)) +$(eval $(call SetupGenBuffer,DirectFloatBufferU, $(DIRECT_X_BUF), type:=float, BO:=U)) +$(eval $(call SetupGenBuffer,DirectFloatBufferRU, $(DIRECT_X_BUF), type:=float, RW:=R, BO:=U)) +$(eval $(call SetupGenBuffer,DirectDoubleBufferU, $(DIRECT_X_BUF), type:=double, BO:=U)) +$(eval $(call SetupGenBuffer,DirectDoubleBufferRU,$(DIRECT_X_BUF), type:=double, RW:=R, BO:=U)) + +# Swapped views of direct byte buffers +# +$(eval $(call SetupGenBuffer,DirectCharBufferS, $(DIRECT_X_BUF), type:=char, BO:=S)) +$(eval $(call SetupGenBuffer,DirectCharBufferRS, $(DIRECT_X_BUF), type:=char, RW:=R, BO:=S)) +$(eval $(call SetupGenBuffer,DirectShortBufferS, $(DIRECT_X_BUF), type:=short, BO:=S)) +$(eval $(call SetupGenBuffer,DirectShortBufferRS, $(DIRECT_X_BUF), type:=short, RW:=R, BO:=S)) +$(eval $(call SetupGenBuffer,DirectIntBufferS, $(DIRECT_X_BUF), type:=int, BO:=S)) +$(eval $(call SetupGenBuffer,DirectIntBufferRS, $(DIRECT_X_BUF), type:=int, RW:=R, BO:=S)) +$(eval $(call SetupGenBuffer,DirectLongBufferS, $(DIRECT_X_BUF), type:=long, BO:=S)) +$(eval $(call SetupGenBuffer,DirectLongBufferRS, $(DIRECT_X_BUF), type:=long, RW:=R, BO:=S)) +$(eval $(call SetupGenBuffer,DirectFloatBufferS, $(DIRECT_X_BUF), type:=float, BO:=S)) +$(eval $(call SetupGenBuffer,DirectFloatBufferRS, $(DIRECT_X_BUF), type:=float, RW:=R, BO:=S)) +$(eval $(call SetupGenBuffer,DirectDoubleBufferS, $(DIRECT_X_BUF), type:=double, BO:=S)) +$(eval $(call SetupGenBuffer,DirectDoubleBufferRS,$(DIRECT_X_BUF), type:=double, RW:=R, BO:=S)) + +# Big-endian views of byte buffers +# +BYTE_X_BUF := ByteBufferAs-X-Buffer + +$(eval $(call SetupGenBuffer,ByteBufferAsCharBufferB, $(BYTE_X_BUF), type:=char, BO:=B)) +$(eval $(call SetupGenBuffer,ByteBufferAsCharBufferRB, $(BYTE_X_BUF), type:=char, RW:=R, BO:=B)) +$(eval $(call SetupGenBuffer,ByteBufferAsShortBufferB, $(BYTE_X_BUF), type:=short, BO:=B)) +$(eval $(call SetupGenBuffer,ByteBufferAsShortBufferRB, $(BYTE_X_BUF), type:=short, RW:=R, BO:=B)) +$(eval $(call SetupGenBuffer,ByteBufferAsIntBufferB, $(BYTE_X_BUF), type:=int, BO:=B)) +$(eval $(call SetupGenBuffer,ByteBufferAsIntBufferRB, $(BYTE_X_BUF), type:=int, RW:=R, BO:=B)) +$(eval $(call SetupGenBuffer,ByteBufferAsLongBufferB, $(BYTE_X_BUF), type:=long, BO:=B)) +$(eval $(call SetupGenBuffer,ByteBufferAsLongBufferRB, $(BYTE_X_BUF), type:=long, RW:=R, BO:=B)) +$(eval $(call SetupGenBuffer,ByteBufferAsFloatBufferB, $(BYTE_X_BUF), type:=float, BO:=B)) +$(eval $(call SetupGenBuffer,ByteBufferAsFloatBufferRB, $(BYTE_X_BUF), type:=float, RW:=R, BO:=B)) +$(eval $(call SetupGenBuffer,ByteBufferAsDoubleBufferB, $(BYTE_X_BUF), type:=double, BO:=B)) +$(eval $(call SetupGenBuffer,ByteBufferAsDoubleBufferRB,$(BYTE_X_BUF), type:=double, RW:=R, BO:=B)) + +# Little-endian views of byte buffers +# +$(eval $(call SetupGenBuffer,ByteBufferAsCharBufferL, $(BYTE_X_BUF), type:=char, BO:=L)) +$(eval $(call SetupGenBuffer,ByteBufferAsCharBufferRL, $(BYTE_X_BUF), type:=char, RW:=R, BO:=L)) +$(eval $(call SetupGenBuffer,ByteBufferAsShortBufferL, $(BYTE_X_BUF), type:=short, BO:=L)) +$(eval $(call SetupGenBuffer,ByteBufferAsShortBufferRL, $(BYTE_X_BUF), type:=short, RW:=R, BO:=L)) +$(eval $(call SetupGenBuffer,ByteBufferAsIntBufferL, $(BYTE_X_BUF), type:=int, BO:=L)) +$(eval $(call SetupGenBuffer,ByteBufferAsIntBufferRL, $(BYTE_X_BUF), type:=int, RW:=R, BO:=L)) +$(eval $(call SetupGenBuffer,ByteBufferAsLongBufferL, $(BYTE_X_BUF), type:=long, BO:=L)) +$(eval $(call SetupGenBuffer,ByteBufferAsLongBufferRL, $(BYTE_X_BUF), type:=long, RW:=R, BO:=L)) +$(eval $(call SetupGenBuffer,ByteBufferAsFloatBufferL, $(BYTE_X_BUF), type:=float, BO:=L)) +$(eval $(call SetupGenBuffer,ByteBufferAsFloatBufferRL, $(BYTE_X_BUF), type:=float, RW:=R, BO:=L)) +$(eval $(call SetupGenBuffer,ByteBufferAsDoubleBufferL, $(BYTE_X_BUF), type:=double, BO:=L)) +$(eval $(call SetupGenBuffer,ByteBufferAsDoubleBufferRL,$(BYTE_X_BUF), type:=double, RW:=R, BO:=L)) + +### + +$(GENSRC_BUFFER): $(BUILD_TOOLS)