8141132: JEP 254: Compact Strings
Summary: Adopt a more space-efficient internal representation for strings.
Reviewed-by: alanb, bdelsart, coleenp, iklam, jiangli, jrose, kevinw, naoto, pliden, roland, smarks, twisti
Contributed-by: Brent Christian <brent.christian@oracle.com>, Vivek Deshpande <vivek.r.deshpande@intel.com>, Tobias Hartmann <tobias.hartmann@oracle.com>, Charlie Hunt <charlie.hunt@oracle.com>, Vladimir Kozlov <vladimir.kozlov@oracle.com>, Roger Riggs <roger.riggs@oracle.com>, Xueming Shen <xueming.shen@oracle.com>, Aleksey Shipilev <aleksey.shipilev@oracle.com>, Sandhya Viswanathan <sandhya.viswanathan@intel.com>
## Copyright (c) 2011, 2015, 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.#include LauncherCommon.gmk################################################################################# On windows, the debuginfo files get the same name as for java.dll. Build# into another dir and copy selectively so debuginfo for java.dll isn't# overwritten.$(eval $(call SetupLauncher,java, \ -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES,,,user32.lib comctl32.lib, \ $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/jli_static.lib, $(JAVA_RC_FLAGS), \ $(JAVA_VERSION_INFO_RESOURCE), $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/java_objs,true))$(SUPPORT_OUTPUTDIR)/modules_cmds/java.base/java$(EXE_SUFFIX): $(BUILD_LAUNCHER_java) $(MKDIR) -p $(@D) $(RM) $@ $(CP) $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/java_objs$(OUTPUT_SUBDIR)/java$(EXE_SUFFIX) $@TARGETS += $(SUPPORT_OUTPUTDIR)/modules_cmds/java.base/java$(EXE_SUFFIX)ifeq ($(OPENJDK_TARGET_OS), windows) $(eval $(call SetupLauncher,javaw, \ -DJAVAW -DEXPAND_CLASSPATH_WILDCARDS -DENABLE_ARG_FILES,,,user32.lib comctl32.lib, \ $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/jli_static.lib, $(JAVA_RC_FLAGS), \ $(JAVA_VERSION_INFO_RESOURCE),,true))endif$(eval $(call SetupLauncher,keytool, \ -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.security.tools.keytool.Main"$(COMMA) }'))################################################################################BUILD_JEXEC :=BUILD_JEXEC_SRC :=BUILD_JEXEC_INC :=BUILD_JEXEC_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base$(OPENJDK_TARGET_CPU_LIBDIR)## UNHANDLED:# - COMPILE_APPROACH = normal### jdk/make/java/Makefile#ifeq ($(OPENJDK_TARGET_OS), solaris) ifeq ($(OPENJDK_TARGET_CPU_BITS), 32) BUILD_JEXEC := 1 endifendififeq ($(OPENJDK_TARGET_OS), linux) BUILD_JEXEC := 1endif # OPENJDK_TARGET_OS## jdk/make/java/jexec/Makefile#ifeq ($(BUILD_JEXEC), 1) ifeq ($(OPENJDK_TARGET_OS), windows) else ifeq ($(OPENJDK_TARGET_OS), macosx) BUILD_JEXEC_SRC := $(JDK_TOPDIR)/src/java.base/macosx/native/launcher else BUILD_JEXEC_SRC := $(JDK_TOPDIR)/src/java.base/unix/native/launcher endif ifeq ($(OPENJDK_TARGET_OS), linux) BUILD_JEXEC_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base BUILD_JEXEC_INC += -I$(JDK_TOPDIR)/src/java.base/share/native/libjli endifendif## Note that the two Makefile's seems to contradict each other,# and that src/macosx/bin/jexec.c seems unused#ifneq ($(BUILD_JEXEC_SRC), ) $(eval $(call SetupNativeCompilation,BUILD_JEXEC, \ SRC := $(BUILD_JEXEC_SRC), \ INCLUDE_FILES := jexec.c, \ OPTIMIZATION := LOW, \ CFLAGS := $(CFLAGS_JDKEXE) \ $(BUILD_JEXEC_INC), \ CFLAGS_linux := -fPIC, \ CFLAGS_solaris := -KPIC, \ LDFLAGS := $(LDFLAGS_JDKEXE) \ $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \ OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/jexec_obj, \ OUTPUT_DIR := $(BUILD_JEXEC_DST_DIR), \ DEBUG_SYMBOLS := true, \ PROGRAM := jexec)) TARGETS += $(BUILD_JEXEC)endif################################################################################BUILD_JSPAWNHELPER :=BUILD_JSPAWNHELPER_SRC := $(JDK_TOPDIR)/src/java.base/unix/native/jspawnhelperJSPAWNHELPER_CFLAGS := -I$(JDK_TOPDIR)/src/java.base/unix/native/libjavaBUILD_JSPAWNHELPER_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base$(OPENJDK_TARGET_CPU_LIBDIR)LINK_JSPAWNHELPER_OBJECTS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc.oBUILD_JSPAWNHELPER_LDFLAGS :=ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris aix), ) BUILD_JSPAWNHELPER := 1endififeq ($(OPENJDK_TARGET_OS), macosx) BUILD_JSPAWNHELPER_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/java.baseendififeq ($(OPENJDK_TARGET_CPU_BITS), 64) BUILD_JSPAWNHELPER_LDFLAGS += $(COMPILER_TARGET_BITS_FLAG)64endififeq ($(BUILD_JSPAWNHELPER), 1) $(eval $(call SetupNativeCompilation,BUILD_JSPAWNHELPER, \ SRC := $(BUILD_JSPAWNHELPER_SRC), \ INCLUDE_FILES := jspawnhelper.c, \ OPTIMIZATION := LOW, \ CFLAGS := $(CFLAGS_JDKEXE) $(JSPAWNHELPER_CFLAGS), \ LDFLAGS := $(LDFLAGS_JDKEXE) $(BUILD_JSPAWNHELPER_LDFLAGS), \ LIBS := $(LINK_JSPAWNHELPER_OBJECTS), \ OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/jspawnhelper, \ OUTPUT_DIR := $(BUILD_JSPAWNHELPER_DST_DIR), \ PROGRAM := jspawnhelper)) $(BUILD_JSPAWNHELPER): $(LINK_JSPAWNHELPER_OBJECTS) TARGETS += $(BUILD_JSPAWNHELPER)endif################################################################################