# HG changeset patch # User kevinw # Date 1348138155 25200 # Node ID 8440414b0fd8f4dbc2c05a1ef668c839b7285fc0 # Parent 6af8f3562069afd6f348ac938422f3d282c78210# Parent 2c527daec02c54332663c24f8a2f93a0daca5fce Merge diff -r 6af8f3562069 -r 8440414b0fd8 make/bsd/Makefile --- a/make/bsd/Makefile Wed Sep 19 15:24:32 2012 +0100 +++ b/make/bsd/Makefile Thu Sep 20 03:49:15 2012 -0700 @@ -288,42 +288,54 @@ $(TARGETS_C2): $(SUBDIRS_C2) cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install endif $(TARGETS_TIERED): $(SUBDIRS_TIERED) cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install endif $(TARGETS_C1): $(SUBDIRS_C1) cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install endif $(TARGETS_CORE): $(SUBDIRS_CORE) cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install endif $(TARGETS_ZERO): $(SUBDIRS_ZERO) cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install endif $(TARGETS_SHARK): $(SUBDIRS_SHARK) cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install endif diff -r 6af8f3562069 -r 8440414b0fd8 make/bsd/makefiles/launcher.make --- a/make/bsd/makefiles/launcher.make Wed Sep 19 15:24:32 2012 +0100 +++ b/make/bsd/makefiles/launcher.make Thu Sep 20 03:49:15 2012 -0700 @@ -101,7 +101,7 @@ $(LAUNCHER): $(OBJS) $(LIBJVM) $(LAUNCHER_MAPFILE) $(QUIETLY) echo Linking launcher... $(QUIETLY) $(LINK_LAUNCHER/PRE_HOOK) - $(QUIETLY) $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(OBJS) $(LIBS_LAUNCHER) + $(QUIETLY) $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(sort $(OBJS)) $(LIBS_LAUNCHER) $(QUIETLY) $(LINK_LAUNCHER/POST_HOOK) # Sign the launcher with the development certificate (if present) so that it can be used # to run JStack, JInfo, et al. diff -r 6af8f3562069 -r 8440414b0fd8 make/bsd/makefiles/vm.make --- a/make/bsd/makefiles/vm.make Wed Sep 19 15:24:32 2012 +0100 +++ b/make/bsd/makefiles/vm.make Thu Sep 20 03:49:15 2012 -0700 @@ -311,7 +311,7 @@ echo Linking vm...; \ $(LINK_LIB.CXX/PRE_HOOK) \ $(LINK_VM) $(LD_SCRIPT_FLAG) \ - $(LFLAGS_VM) -o $@ $(LIBJVM.o) $(LIBS_VM); \ + $(LFLAGS_VM) -o $@ $(sort $(LIBJVM.o)) $(LIBS_VM); \ $(LINK_LIB.CXX/POST_HOOK) \ rm -f $@.1; ln -s $@ $@.1; \ [ -f $(LIBJVM_G) ] || { ln -s $@ $(LIBJVM_G); ln -s $@.1 $(LIBJVM_G).1; }; \ diff -r 6af8f3562069 -r 8440414b0fd8 make/defs.make --- a/make/defs.make Wed Sep 19 15:24:32 2012 +0100 +++ b/make/defs.make Thu Sep 20 03:49:15 2012 -0700 @@ -332,6 +332,9 @@ EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jmm.h +# By default, run Queens test after building +TEST_IN_BUILD ?= true + ifndef JAVASE_EMBEDDED EXPORT_LIST += $(EXPORT_INCLUDE_DIR)/jfr.h endif diff -r 6af8f3562069 -r 8440414b0fd8 make/linux/Makefile --- a/make/linux/Makefile Wed Sep 19 15:24:32 2012 +0100 +++ b/make/linux/Makefile Thu Sep 20 03:49:15 2012 -0700 @@ -288,42 +288,54 @@ $(TARGETS_C2): $(SUBDIRS_C2) cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install endif $(TARGETS_TIERED): $(SUBDIRS_TIERED) cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install endif $(TARGETS_C1): $(SUBDIRS_C1) cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install endif $(TARGETS_CORE): $(SUBDIRS_CORE) cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install endif $(TARGETS_ZERO): $(SUBDIRS_ZERO) cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install endif $(TARGETS_SHARK): $(SUBDIRS_SHARK) cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install endif diff -r 6af8f3562069 -r 8440414b0fd8 make/linux/makefiles/launcher.make --- a/make/linux/makefiles/launcher.make Wed Sep 19 15:24:32 2012 +0100 +++ b/make/linux/makefiles/launcher.make Thu Sep 20 03:49:15 2012 -0700 @@ -82,7 +82,7 @@ $(LAUNCHER): $(OBJS) $(LIBJVM) $(LAUNCHER_MAPFILE) $(QUIETLY) echo Linking launcher... $(QUIETLY) $(LINK_LAUNCHER/PRE_HOOK) - $(QUIETLY) $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(OBJS) $(LIBS_LAUNCHER) + $(QUIETLY) $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(sort $(OBJS)) $(LIBS_LAUNCHER) $(QUIETLY) $(LINK_LAUNCHER/POST_HOOK) $(LAUNCHER): $(LAUNCHER_SCRIPT) diff -r 6af8f3562069 -r 8440414b0fd8 make/linux/makefiles/vm.make --- a/make/linux/makefiles/vm.make Wed Sep 19 15:24:32 2012 +0100 +++ b/make/linux/makefiles/vm.make Thu Sep 20 03:49:15 2012 -0700 @@ -320,7 +320,7 @@ echo Linking vm...; \ $(LINK_LIB.CXX/PRE_HOOK) \ $(LINK_VM) $(LD_SCRIPT_FLAG) \ - $(LFLAGS_VM) -o $@ $(LIBJVM.o) $(LIBS_VM); \ + $(LFLAGS_VM) -o $@ $(sort $(LIBJVM.o)) $(LIBS_VM); \ $(LINK_LIB.CXX/POST_HOOK) \ rm -f $@.1; ln -s $@ $@.1; \ [ -f $(LIBJVM_G) ] || { ln -s $@ $(LIBJVM_G); ln -s $@.1 $(LIBJVM_G).1; }; \ diff -r 6af8f3562069 -r 8440414b0fd8 make/solaris/Makefile --- a/make/solaris/Makefile Wed Sep 19 15:24:32 2012 +0100 +++ b/make/solaris/Makefile Thu Sep 20 03:49:15 2012 -0700 @@ -237,35 +237,45 @@ $(TARGETS_C2): $(SUBDIRS_C2) cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install endif $(TARGETS_TIERED): $(SUBDIRS_TIERED) cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install endif $(TARGETS_C1): $(SUBDIRS_C1) cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install endif $(TARGETS_CORE): $(SUBDIRS_CORE) cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install endif $(TARGETS_KERNEL): $(SUBDIRS_KERNEL) cd $(OSNAME)_$(BUILDARCH)_kernel/$(patsubst %kernel,%,$@) && $(MAKE) $(MFLAGS) +ifeq ($(TEST_IN_BUILD),true) cd $(OSNAME)_$(BUILDARCH)_kernel/$(patsubst %kernel,%,$@) && ./test_gamma +endif ifdef INSTALL cd $(OSNAME)_$(BUILDARCH)_kernel/$(patsubst %kernel,%,$@) && $(MAKE) $(MFLAGS) install endif diff -r 6af8f3562069 -r 8440414b0fd8 make/solaris/makefiles/launcher.make --- a/make/solaris/makefiles/launcher.make Wed Sep 19 15:24:32 2012 +0100 +++ b/make/solaris/makefiles/launcher.make Thu Sep 20 03:49:15 2012 -0700 @@ -96,7 +96,7 @@ ifeq ($(filter -sbfast -xsbfast, $(CFLAGS_BROWSE)),) $(QUIETLY) echo Linking launcher... $(QUIETLY) $(LINK_LAUNCHER/PRE_HOOK) - $(QUIETLY) $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(OBJS) $(LIBS_LAUNCHER) + $(QUIETLY) $(LINK_LAUNCHER) $(LFLAGS_LAUNCHER) -o $@ $(sort $(OBJS)) $(LIBS_LAUNCHER) $(QUIETLY) $(LINK_LAUNCHER/POST_HOOK) endif # filter -sbfast -xsbfast diff -r 6af8f3562069 -r 8440414b0fd8 make/solaris/makefiles/vm.make --- a/make/solaris/makefiles/vm.make Wed Sep 19 15:24:32 2012 +0100 +++ b/make/solaris/makefiles/vm.make Thu Sep 20 03:49:15 2012 -0700 @@ -288,7 +288,7 @@ ifeq ($(filter -sbfast -xsbfast, $(CFLAGS_BROWSE)),) @echo Linking vm... $(QUIETLY) $(LINK_LIB.CXX/PRE_HOOK) - $(QUIETLY) $(LINK_VM) $(LFLAGS_VM) -o $@ $(LIBJVM.o) $(LIBS_VM) + $(QUIETLY) $(LINK_VM) $(LFLAGS_VM) -o $@ $(sort $(LIBJVM.o)) $(LIBS_VM) $(QUIETLY) $(LINK_LIB.CXX/POST_HOOK) $(QUIETLY) rm -f $@.1 && ln -s $@ $@.1 $(QUIETLY) [ -f $(LIBJVM_G) ] || ln -s $@ $(LIBJVM_G) diff -r 6af8f3562069 -r 8440414b0fd8 src/share/vm/prims/jvmtiClassFileReconstituter.cpp --- a/src/share/vm/prims/jvmtiClassFileReconstituter.cpp Wed Sep 19 15:24:32 2012 +0100 +++ b/src/share/vm/prims/jvmtiClassFileReconstituter.cpp Thu Sep 20 03:49:15 2012 -0700 @@ -43,7 +43,7 @@ #ifdef TARGET_ARCH_ppc # include "bytes_ppc.hpp" #endif -// FIXME: add Deprecated, LVTT attributes +// FIXME: add Deprecated attribute // FIXME: fix Synthetic attribute // FIXME: per Serguei, add error return handling for ConstantPool::copy_cpool_bytes() @@ -135,6 +135,7 @@ u2 line_num_cnt = 0; int stackmap_len = 0; int local_variable_table_length = 0; + int local_variable_type_table_length = 0; // compute number and length of attributes int attr_count = 0; @@ -171,8 +172,8 @@ } if (method->has_localvariable_table()) { local_variable_table_length = method->localvariable_table_length(); - ++attr_count; if (local_variable_table_length != 0) { + ++attr_count; // Compute the size of the local variable table attribute (VM stores raw): // LocalVariableTable_attribute { // u2 attribute_name_index; @@ -186,6 +187,31 @@ // u2 index; // } attr_size += 2 + 4 + 2 + local_variable_table_length * (2 + 2 + 2 + 2 + 2); + + // Local variables with generic signatures must have LVTT entries + LocalVariableTableElement *elem = method->localvariable_table_start(); + for (int idx = 0; idx < local_variable_table_length; idx++) { + if (elem[idx].signature_cp_index != 0) { + local_variable_type_table_length++; + } + } + + if (local_variable_type_table_length != 0) { + ++attr_count; + // Compute the size of the local variable type table attribute (VM stores raw): + // LocalVariableTypeTable_attribute { + // u2 attribute_name_index; + // u4 attribute_length; + // u2 local_variable_type_table_length; + // { + // u2 start_pc; + // u2 length; + // u2 name_index; + // u2 signature_index; + // u2 index; + // } + attr_size += 2 + 4 + 2 + local_variable_type_table_length * (2 + 2 + 2 + 2 + 2); + } } } @@ -223,6 +249,9 @@ if (local_variable_table_length != 0) { write_local_variable_table_attribute(method, local_variable_table_length); } + if (local_variable_type_table_length != 0) { + write_local_variable_type_table_attribute(method, local_variable_type_table_length); + } } // Write Exceptions attribute @@ -387,7 +416,7 @@ } } -// Write LineNumberTable attribute +// Write LocalVariableTable attribute // JVMSpec| LocalVariableTable_attribute { // JVMSpec| u2 attribute_name_index; // JVMSpec| u4 attribute_length; @@ -417,6 +446,39 @@ } } +// Write LocalVariableTypeTable attribute +// JVMSpec| LocalVariableTypeTable_attribute { +// JVMSpec| u2 attribute_name_index; +// JVMSpec| u4 attribute_length; +// JVMSpec| u2 local_variable_type_table_length; +// JVMSpec| { u2 start_pc; +// JVMSpec| u2 length; +// JVMSpec| u2 name_index; +// JVMSpec| u2 signature_index; +// JVMSpec| u2 index; +// JVMSpec| } local_variable_type_table[local_variable_type_table_length]; +// JVMSpec| } +void JvmtiClassFileReconstituter::write_local_variable_type_table_attribute(methodHandle method, u2 num_entries) { + write_attribute_name_index("LocalVariableTypeTable"); + write_u4(2 + num_entries * (2 + 2 + 2 + 2 + 2)); + write_u2(num_entries); + + LocalVariableTableElement *elem = method->localvariable_table_start(); + for (int j=0; jlocalvariable_table_length(); j++) { + if (elem->signature_cp_index > 0) { + // Local variable has a generic signature - write LVTT attribute entry + write_u2(elem->start_bci); + write_u2(elem->length); + write_u2(elem->name_cp_index); + write_u2(elem->signature_cp_index); + write_u2(elem->slot); + num_entries--; + } + elem++; + } + assert(num_entries == 0, "just checking"); +} + // Write stack map table attribute // JSR-202| StackMapTable_attribute { // JSR-202| u2 attribute_name_index; diff -r 6af8f3562069 -r 8440414b0fd8 src/share/vm/prims/jvmtiClassFileReconstituter.hpp --- a/src/share/vm/prims/jvmtiClassFileReconstituter.hpp Wed Sep 19 15:24:32 2012 +0100 +++ b/src/share/vm/prims/jvmtiClassFileReconstituter.hpp Thu Sep 20 03:49:15 2012 -0700 @@ -120,6 +120,7 @@ u2 line_number_table_entries(methodHandle method); void write_line_number_table_attribute(methodHandle method, u2 num_entries); void write_local_variable_table_attribute(methodHandle method, u2 num_entries); + void write_local_variable_type_table_attribute(methodHandle method, u2 num_entries); void write_stackmap_table_attribute(methodHandle method, int stackmap_table_len); u2 inner_classes_attribute_length(); void write_inner_classes_attribute(int length);