Merge
This commit is contained in:
commit
15aa5e3a57
@ -283,9 +283,9 @@ $(DTRACE.o): $(DTRACE).d $(JVMOFFS).h $(JVMOFFS)Index.h $(DTraced_Files)
|
||||
$(QUIETLY) $(DTRACE_PROG) $(DTRACE_OPTS) -C -I. -G -xlazyload -o $@ -s $(DTRACE).d \
|
||||
$(DTraced_Files) ||\
|
||||
STATUS=$$?;\
|
||||
if [ x"$$STATUS" = x"1" -a \
|
||||
x`uname -r` = x"5.10" -a \
|
||||
x`uname -p` = x"sparc" ]; then\
|
||||
if [ x"$$STATUS" = x"1" ]; then \
|
||||
if [ x`uname -r` = x"5.10" -a \
|
||||
x`uname -p` = x"sparc" ]; then\
|
||||
echo "*****************************************************************";\
|
||||
echo "* If you are building server compiler, and the error message is ";\
|
||||
echo "* \"incorrect ELF machine type...\", you have run into solaris bug ";\
|
||||
@ -294,6 +294,20 @@ $(DTRACE.o): $(DTRACE).d $(JVMOFFS).h $(JVMOFFS)Index.h $(DTraced_Files)
|
||||
echo "* environment variable HOTSPOT_DISABLE_DTRACE_PROBES to disable ";\
|
||||
echo "* dtrace probes for this build.";\
|
||||
echo "*****************************************************************";\
|
||||
elif [ x`uname -r` = x"5.10" ]; then\
|
||||
echo "*****************************************************************";\
|
||||
echo "* If you are seeing 'syntax error near \"umpiconninfo_t\"' on Solaris";\
|
||||
echo "* 10, try doing 'cd /usr/lib/dtrace && gzip mpi.d' as root, ";\
|
||||
echo "* or set the environment variable HOTSPOT_DISABLE_DTRACE_PROBES";\
|
||||
echo "* to disable dtrace probes for this build.";\
|
||||
echo "*****************************************************************";\
|
||||
else \
|
||||
echo "*****************************************************************";\
|
||||
echo "* If you cannot fix dtrace build issues, try to ";\
|
||||
echo "* set the environment variable HOTSPOT_DISABLE_DTRACE_PROBES";\
|
||||
echo "* to disable dtrace probes for this build.";\
|
||||
echo "*****************************************************************";\
|
||||
fi; \
|
||||
fi;\
|
||||
exit $$STATUS
|
||||
# Since some DTraced_Files are in LIBJVM.o and they are touched by this
|
||||
|
@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
REM
|
||||
REM Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
REM Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
REM
|
||||
REM This code is free software; you can redistribute it and/or modify it
|
||||
@ -148,7 +148,7 @@ echo HotSpotJDKDist=%HotSpotJDKDist%
|
||||
|
||||
REM This is now safe to do.
|
||||
:copyfiles
|
||||
for /D %%i in (compiler1, compiler2, tiered, core) do (
|
||||
for /D %%i in (compiler1, compiler2, tiered ) do (
|
||||
if NOT EXIST %HotSpotBuildSpace%\%%i\generated mkdir %HotSpotBuildSpace%\%%i\generated
|
||||
copy %HotSpotWorkSpace%\make\windows\projectfiles\%%i\* %HotSpotBuildSpace%\%%i\generated > NUL
|
||||
)
|
||||
@ -156,7 +156,7 @@ copy %HotSpotWorkSpace%\make\windows\projectfiles\%%i\* %HotSpotBuildSpace%\%%i\
|
||||
REM force regneration of ProjectFile
|
||||
if exist %ProjectFile% del %ProjectFile%
|
||||
|
||||
for /D %%i in (compiler1, compiler2, tiered, core) do (
|
||||
for /D %%i in (compiler1, compiler2, tiered ) do (
|
||||
echo -- %%i --
|
||||
echo # Generated file! > %HotSpotBuildSpace%\%%i\local.make
|
||||
echo # Changing a variable below and then deleting %ProjectFile% will cause >> %HotSpotBuildSpace%\%%i\local.make
|
||||
|
@ -73,19 +73,17 @@ done
|
||||
|
||||
BASE_PATHS="${BASE_PATHS} ${GENERATED}/jvmtifiles ${GENERATED}/tracefiles"
|
||||
|
||||
if [ -d "${ALTSRC}/share/vm/jfr" ]; then
|
||||
BASE_PATHS="${BASE_PATHS} ${ALTSRC}/share/vm/jfr"
|
||||
if [ -d "${ALTSRC}/share/vm/jfr/buffers" ]; then
|
||||
BASE_PATHS="${BASE_PATHS} ${ALTSRC}/share/vm/jfr/buffers"
|
||||
fi
|
||||
|
||||
BASE_PATHS="${BASE_PATHS} ${COMMONSRC}/share/vm/prims/wbtestmethods"
|
||||
|
||||
CORE_PATHS="${BASE_PATHS}"
|
||||
# shared is already in BASE_PATHS. Should add vm/memory but that one is also in BASE_PATHS.
|
||||
if [ -d "${ALTSRC}/share/vm/gc_implementation" ]; then
|
||||
CORE_PATHS="${CORE_PATHS} `$FIND ${ALTSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`"
|
||||
BASE_PATHS="${BASE_PATHS} `$FIND ${ALTSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`"
|
||||
fi
|
||||
CORE_PATHS="${CORE_PATHS} `$FIND ${COMMONSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`"
|
||||
BASE_PATHS="${BASE_PATHS} `$FIND ${COMMONSRC}/share/vm/gc_implementation ! -name gc_implementation -prune -type d \! -name shared`"
|
||||
|
||||
if [ -d "${ALTSRC}/share/vm/c1" ]; then
|
||||
COMPILER1_PATHS="${ALTSRC}/share/vm/c1"
|
||||
@ -104,12 +102,11 @@ COMPILER2_PATHS="${COMPILER2_PATHS} ${GENERATED}/adfiles"
|
||||
|
||||
# Include dirs per type.
|
||||
case "${TYPE}" in
|
||||
"core") Src_Dirs="${CORE_PATHS}" ;;
|
||||
"compiler1") Src_Dirs="${CORE_PATHS} ${COMPILER1_PATHS}" ;;
|
||||
"compiler2") Src_Dirs="${CORE_PATHS} ${COMPILER2_PATHS}" ;;
|
||||
"tiered") Src_Dirs="${CORE_PATHS} ${COMPILER1_PATHS} ${COMPILER2_PATHS}" ;;
|
||||
"zero") Src_Dirs="${CORE_PATHS}" ;;
|
||||
"shark") Src_Dirs="${CORE_PATHS}" ;;
|
||||
"compiler1") Src_Dirs="${BASE_PATHS} ${COMPILER1_PATHS}" ;;
|
||||
"compiler2") Src_Dirs="${BASE_PATHS} ${COMPILER2_PATHS}" ;;
|
||||
"tiered") Src_Dirs="${BASE_PATHS} ${COMPILER1_PATHS} ${COMPILER2_PATHS}" ;;
|
||||
"zero") Src_Dirs="${BASE_PATHS}" ;;
|
||||
"shark") Src_Dirs="${BASE_PATHS}" ;;
|
||||
esac
|
||||
|
||||
COMPILER2_SPECIFIC_FILES="opto libadt bcEscapeAnalyzer.cpp c2_* runtime_*"
|
||||
@ -122,7 +119,6 @@ Src_Files_EXCLUDE="jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp"
|
||||
|
||||
# Exclude per type.
|
||||
case "${TYPE}" in
|
||||
"core") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;;
|
||||
"compiler1") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER2_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES} ciTypeFlow.cpp" ;;
|
||||
"compiler2") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${COMPILER1_SPECIFIC_FILES} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES}" ;;
|
||||
"tiered") Src_Files_EXCLUDE="${Src_Files_EXCLUDE} ${ZERO_SPECIFIC_FILES} ${SHARK_SPECIFIC_FILES}" ;;
|
||||
@ -149,9 +145,17 @@ for e in ${Src_Dirs}; do
|
||||
Src_Files="${Src_Files}`findsrc ${e}` "
|
||||
done
|
||||
|
||||
Obj_Files=
|
||||
Obj_Files=" "
|
||||
for e in ${Src_Files}; do
|
||||
Obj_Files="${Obj_Files}${e%\.[!.]*}.obj "
|
||||
o="${e%\.[!.]*}.obj"
|
||||
set +e
|
||||
chk=`expr "${Obj_Files}" : ".* $o"`
|
||||
set -e
|
||||
if [ "$chk" != 0 ]; then
|
||||
echo "# INFO: skipping duplicate $o"
|
||||
continue
|
||||
fi
|
||||
Obj_Files="${Obj_Files}$o "
|
||||
done
|
||||
|
||||
echo Obj_Files=${Obj_Files}
|
||||
|
@ -44,10 +44,11 @@ ProjectCreatorSources=\
|
||||
|
||||
# This is only used internally
|
||||
ProjectCreatorIncludesPRIVATE=\
|
||||
-relativeInclude src\closed\share\vm \
|
||||
-relativeInclude src\closed\os\windows\vm \
|
||||
-relativeInclude src\closed\os_cpu\windows_$(Platform_arch)\vm \
|
||||
-relativeInclude src\closed\cpu\$(Platform_arch)\vm \
|
||||
-relativeAltSrcInclude src\closed \
|
||||
-altRelativeInclude share\vm \
|
||||
-altRelativeInclude os\windows\vm \
|
||||
-altRelativeInclude os_cpu\windows_$(Platform_arch)\vm \
|
||||
-altRelativeInclude cpu\$(Platform_arch)\vm \
|
||||
-relativeInclude src\share\vm \
|
||||
-relativeInclude src\share\vm\precompiled \
|
||||
-relativeInclude src\share\vm\prims\wbtestmethods \
|
||||
@ -91,7 +92,7 @@ ProjectCreatorIDEOptions = \
|
||||
-disablePch getThread_windows_$(Platform_arch).cpp \
|
||||
-disablePch_compiler2 opcodes.cpp
|
||||
|
||||
# Common options for the IDE builds for core, c1, and c2
|
||||
# Common options for the IDE builds for c1, and c2
|
||||
ProjectCreatorIDEOptions=\
|
||||
$(ProjectCreatorIDEOptions) \
|
||||
-sourceBase $(HOTSPOTWORKSPACE) \
|
||||
@ -157,19 +158,11 @@ ProjectCreatorIDEOptionsIgnoreCompiler2=\
|
||||
-ignoreFile_TARGET ciTypeFlow.hpp \
|
||||
-ignoreFile_TARGET $(Platform_arch_model).ad
|
||||
|
||||
##################################################
|
||||
# Without compiler(core) specific options
|
||||
##################################################
|
||||
ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
|
||||
$(ProjectCreatorIDEOptionsIgnoreCompiler1:TARGET=core) \
|
||||
$(ProjectCreatorIDEOptionsIgnoreCompiler2:TARGET=core)
|
||||
|
||||
##################################################
|
||||
# Client(C1) compiler specific options
|
||||
##################################################
|
||||
ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
|
||||
-define_compiler1 COMPILER1 \
|
||||
-ignorePath_compiler1 core \
|
||||
$(ProjectCreatorIDEOptionsIgnoreCompiler2:TARGET=compiler1)
|
||||
|
||||
##################################################
|
||||
@ -178,7 +171,6 @@ $(ProjectCreatorIDEOptionsIgnoreCompiler2:TARGET=compiler1)
|
||||
#NOTE! This list must be kept in sync with GENERATED_NAMES in adlc.make.
|
||||
ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
|
||||
-define_compiler2 COMPILER2 \
|
||||
-ignorePath_compiler2 core \
|
||||
-additionalFile_compiler2 $(Platform_arch_model).ad \
|
||||
-additionalFile_compiler2 ad_$(Platform_arch_model).cpp \
|
||||
-additionalFile_compiler2 ad_$(Platform_arch_model).hpp \
|
||||
|
@ -90,25 +90,25 @@ $(TraceOutDir)/traceTypes.hpp: $(TraceSrcDir)/trace.xml $(TraceSrcDir)/traceType
|
||||
!if "$(OPENJDK)" == "true"
|
||||
|
||||
$(TraceOutDir)/traceEventClasses.hpp: $(TraceSrcDir)/trace.xml $(TraceSrcDir)/traceEventClasses.xsl $(XML_DEPS)
|
||||
@echo Generating $@
|
||||
@echo Generating OpenJDK $@
|
||||
@$(XSLT) -IN $(TraceSrcDir)/trace.xml -XSL $(TraceSrcDir)/traceEventClasses.xsl -OUT $(TraceOutDir)/traceEventClasses.hpp
|
||||
|
||||
!else
|
||||
|
||||
$(TraceOutDir)/traceEventClasses.hpp: $(TraceSrcDir)/trace.xml $(TraceAltSrcDir)/traceEventClasses.xsl $(XML_DEPS)
|
||||
@echo Generating $@
|
||||
@echo Generating AltSrc $@
|
||||
@$(XSLT) -IN $(TraceSrcDir)/trace.xml -XSL $(TraceAltSrcDir)/traceEventClasses.xsl -OUT $(TraceOutDir)/traceEventClasses.hpp
|
||||
|
||||
$(TraceOutDir)/traceProducer.cpp: $(TraceSrcDir)/trace.xml $(TraceAltSrcDir)/traceProducer.xsl $(XML_DEPS)
|
||||
@echo Generating $@
|
||||
@echo Generating AltSrc $@
|
||||
@$(XSLT) -IN $(TraceSrcDir)/trace.xml -XSL $(TraceAltSrcDir)/traceProducer.xsl -OUT $(TraceOutDir)/traceProducer.cpp
|
||||
|
||||
$(TraceOutDir)/traceRequestables.hpp: $(TraceSrcDir)/trace.xml $(TraceAltSrcDir)/traceRequestables.xsl $(XML_DEPS)
|
||||
@echo Generating $@
|
||||
@echo Generating AltSrc $@
|
||||
@$(XSLT) -IN $(TraceSrcDir)/trace.xml -XSL $(TraceAltSrcDir)/traceRequestables.xsl -OUT $(TraceOutDir)/traceRequestables.hpp
|
||||
|
||||
$(TraceOutDir)/traceEventControl.hpp: $(TraceSrcDir)/trace.xml $(TraceAltSrcDir)/traceEventControl.xsl $(XML_DEPS)
|
||||
@echo Generating $@
|
||||
@echo Generating AltSrc $@
|
||||
@$(XSLT) -IN $(TraceSrcDir)/trace.xml -XSL $(TraceAltSrcDir)/traceEventControl.xsl -OUT $(TraceOutDir)/traceEventControl.hpp
|
||||
|
||||
!endif
|
||||
|
@ -36,10 +36,6 @@ CXX_FLAGS=$(CXX_FLAGS) /D "PRODUCT"
|
||||
CXX_FLAGS=$(CXX_FLAGS) /D "ASSERT"
|
||||
!endif
|
||||
|
||||
!if "$(Variant)" == "core"
|
||||
# No need to define anything, CORE is defined as !COMPILER1 && !COMPILER2
|
||||
!endif
|
||||
|
||||
!if "$(Variant)" == "compiler1"
|
||||
CXX_FLAGS=$(CXX_FLAGS) /D "COMPILER1"
|
||||
!endif
|
||||
|
@ -1887,6 +1887,27 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
|
||||
if (ProfileInterpreter) {
|
||||
__ set_method_data_pointer_for_bcp();
|
||||
}
|
||||
|
||||
#if INCLUDE_JVMTI
|
||||
if (EnableInvokeDynamic) {
|
||||
Label L_done;
|
||||
|
||||
__ ldub(Address(Lbcp, 0), G1_scratch); // Load current bytecode
|
||||
__ cmp_and_br_short(G1_scratch, Bytecodes::_invokestatic, Assembler::notEqual, Assembler::pn, L_done);
|
||||
|
||||
// The member name argument must be restored if _invokestatic is re-executed after a PopFrame call.
|
||||
// Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL.
|
||||
|
||||
__ call_VM(G1_scratch, CAST_FROM_FN_PTR(address, InterpreterRuntime::member_name_arg_or_null), I0, Lmethod, Lbcp);
|
||||
|
||||
__ br_null(G1_scratch, false, Assembler::pn, L_done);
|
||||
__ delayed()->nop();
|
||||
|
||||
__ st_ptr(G1_scratch, Lesp, wordSize);
|
||||
__ bind(L_done);
|
||||
}
|
||||
#endif // INCLUDE_JVMTI
|
||||
|
||||
// Resume bytecode interpretation at the current bcp
|
||||
__ dispatch_next(vtos);
|
||||
// end of JVMTI PopFrame support
|
||||
|
@ -1920,6 +1920,29 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
|
||||
__ get_thread(thread);
|
||||
__ movl(Address(thread, JavaThread::popframe_condition_offset()), JavaThread::popframe_inactive);
|
||||
|
||||
#if INCLUDE_JVMTI
|
||||
if (EnableInvokeDynamic) {
|
||||
Label L_done;
|
||||
const Register local0 = rdi;
|
||||
|
||||
__ cmpb(Address(rsi, 0), Bytecodes::_invokestatic);
|
||||
__ jcc(Assembler::notEqual, L_done);
|
||||
|
||||
// The member name argument must be restored if _invokestatic is re-executed after a PopFrame call.
|
||||
// Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL.
|
||||
|
||||
__ get_method(rdx);
|
||||
__ movptr(rax, Address(local0, 0));
|
||||
__ call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::member_name_arg_or_null), rax, rdx, rsi);
|
||||
|
||||
__ testptr(rax, rax);
|
||||
__ jcc(Assembler::zero, L_done);
|
||||
|
||||
__ movptr(Address(rbx, 0), rax);
|
||||
__ bind(L_done);
|
||||
}
|
||||
#endif // INCLUDE_JVMTI
|
||||
|
||||
__ dispatch_next(vtos);
|
||||
// end of PopFrame support
|
||||
|
||||
|
@ -1929,6 +1929,29 @@ void TemplateInterpreterGenerator::generate_throw_exception() {
|
||||
__ movl(Address(r15_thread, JavaThread::popframe_condition_offset()),
|
||||
JavaThread::popframe_inactive);
|
||||
|
||||
#if INCLUDE_JVMTI
|
||||
if (EnableInvokeDynamic) {
|
||||
Label L_done;
|
||||
const Register local0 = r14;
|
||||
|
||||
__ cmpb(Address(r13, 0), Bytecodes::_invokestatic);
|
||||
__ jcc(Assembler::notEqual, L_done);
|
||||
|
||||
// The member name argument must be restored if _invokestatic is re-executed after a PopFrame call.
|
||||
// Detect such a case in the InterpreterRuntime function and return the member name argument, or NULL.
|
||||
|
||||
__ get_method(rdx);
|
||||
__ movptr(rax, Address(local0, 0));
|
||||
__ call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::member_name_arg_or_null), rax, rdx, r13);
|
||||
|
||||
__ testptr(rax, rax);
|
||||
__ jcc(Assembler::zero, L_done);
|
||||
|
||||
__ movptr(Address(rbx, 0), rax);
|
||||
__ bind(L_done);
|
||||
}
|
||||
#endif // INCLUDE_JVMTI
|
||||
|
||||
__ dispatch_next(vtos);
|
||||
// end of PopFrame support
|
||||
|
||||
|
@ -58,8 +58,8 @@ class EntryFrame : public ZeroFrame {
|
||||
JavaCallWrapper* call_wrapper,
|
||||
TRAPS);
|
||||
public:
|
||||
JavaCallWrapper *call_wrapper() const {
|
||||
return (JavaCallWrapper *) value_of_word(call_wrapper_off);
|
||||
JavaCallWrapper **call_wrapper() const {
|
||||
return (JavaCallWrapper **) addr_of_word(call_wrapper_off);
|
||||
}
|
||||
|
||||
public:
|
||||
|
@ -141,7 +141,7 @@ inline intptr_t* frame::id() const {
|
||||
return fp();
|
||||
}
|
||||
|
||||
inline JavaCallWrapper* frame::entry_frame_call_wrapper() const {
|
||||
inline JavaCallWrapper** frame::entry_frame_call_wrapper_addr() const {
|
||||
return zero_entryframe()->call_wrapper();
|
||||
}
|
||||
|
||||
|
@ -176,6 +176,19 @@ class StubGenerator: public StubCodeGenerator {
|
||||
StubRoutines::_oop_arraycopy;
|
||||
}
|
||||
|
||||
static int SafeFetch32(int *adr, int errValue) {
|
||||
int value = errValue;
|
||||
value = *adr;
|
||||
return value;
|
||||
}
|
||||
|
||||
static intptr_t SafeFetchN(intptr_t *adr, intptr_t errValue) {
|
||||
intptr_t value = errValue;
|
||||
value = *adr;
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
void generate_initial() {
|
||||
// Generates all stubs and initializes the entry points
|
||||
|
||||
@ -225,6 +238,15 @@ class StubGenerator: public StubCodeGenerator {
|
||||
|
||||
// arraycopy stubs used by compilers
|
||||
generate_arraycopy_stubs();
|
||||
|
||||
// Safefetch stubs.
|
||||
StubRoutines::_safefetch32_entry = CAST_FROM_FN_PTR(address, StubGenerator::SafeFetch32);
|
||||
StubRoutines::_safefetch32_fault_pc = NULL;
|
||||
StubRoutines::_safefetch32_continuation_pc = NULL;
|
||||
|
||||
StubRoutines::_safefetchN_entry = CAST_FROM_FN_PTR(address, StubGenerator::SafeFetchN);
|
||||
StubRoutines::_safefetchN_fault_pc = NULL;
|
||||
StubRoutines::_safefetchN_continuation_pc = NULL;
|
||||
}
|
||||
|
||||
public:
|
||||
|
@ -445,14 +445,14 @@ AttachOperation* AttachListener::dequeue() {
|
||||
|
||||
void AttachListener::vm_start() {
|
||||
char fn[UNIX_PATH_MAX];
|
||||
struct stat64 st;
|
||||
struct stat st;
|
||||
int ret;
|
||||
|
||||
int n = snprintf(fn, UNIX_PATH_MAX, "%s/.java_pid%d",
|
||||
os::get_temp_directory(), os::current_process_id());
|
||||
assert(n < (int)UNIX_PATH_MAX, "java_pid file name buffer overflow");
|
||||
|
||||
RESTARTABLE(::stat64(fn, &st), ret);
|
||||
RESTARTABLE(::stat(fn, &st), ret);
|
||||
if (ret == 0) {
|
||||
ret = ::unlink(fn);
|
||||
if (ret == -1) {
|
||||
|
@ -410,16 +410,6 @@ extern "C" {
|
||||
int SpinPause() {
|
||||
}
|
||||
|
||||
int SafeFetch32(int *adr, int errValue) {
|
||||
int value = errValue;
|
||||
value = *adr;
|
||||
return value;
|
||||
}
|
||||
intptr_t SafeFetchN(intptr_t *adr, intptr_t errValue) {
|
||||
intptr_t value = errValue;
|
||||
value = *adr;
|
||||
return value;
|
||||
}
|
||||
|
||||
void _Copy_conjoint_jshorts_atomic(jshort* from, jshort* to, size_t count) {
|
||||
if (from > to) {
|
||||
|
@ -142,6 +142,69 @@ class BuildConfig {
|
||||
return rv;
|
||||
}
|
||||
|
||||
// Returns true if the specified path refers to a relative alternate
|
||||
// source file. RelativeAltSrcInclude is usually "src\closed".
|
||||
public static boolean matchesRelativeAltSrcInclude(String path) {
|
||||
String relativeAltSrcInclude =
|
||||
getFieldString(null, "RelativeAltSrcInclude");
|
||||
Vector<String> v = getFieldVector(null, "AltRelativeInclude");
|
||||
for (String pathPart : v) {
|
||||
if (path.contains(relativeAltSrcInclude + Util.sep + pathPart)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Returns the relative alternate source file for the specified path.
|
||||
// Null is returned if the specified path does not have a matching
|
||||
// alternate source file.
|
||||
public static String getMatchingRelativeAltSrcFile(String path) {
|
||||
Vector<String> v = getFieldVector(null, "RelativeAltSrcFileList");
|
||||
if (v == null) {
|
||||
return null;
|
||||
}
|
||||
for (String pathPart : v) {
|
||||
if (path.endsWith(pathPart)) {
|
||||
String relativeAltSrcInclude =
|
||||
getFieldString(null, "RelativeAltSrcInclude");
|
||||
return relativeAltSrcInclude + Util.sep + pathPart;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Returns true if the specified path has a matching alternate
|
||||
// source file.
|
||||
public static boolean matchesRelativeAltSrcFile(String path) {
|
||||
return getMatchingRelativeAltSrcFile(path) != null;
|
||||
}
|
||||
|
||||
// Track the specified alternate source file. The source file is
|
||||
// tracked without the leading .*<sep><RelativeAltSrcFileList><sep>
|
||||
// part to make matching regular source files easier.
|
||||
public static void trackRelativeAltSrcFile(String path) {
|
||||
String pattern = getFieldString(null, "RelativeAltSrcInclude") +
|
||||
Util.sep;
|
||||
int altSrcInd = path.indexOf(pattern);
|
||||
if (altSrcInd == -1) {
|
||||
// not an AltSrc path
|
||||
return;
|
||||
}
|
||||
|
||||
altSrcInd += pattern.length();
|
||||
if (altSrcInd >= path.length()) {
|
||||
// not a valid AltSrc path
|
||||
return;
|
||||
}
|
||||
|
||||
String altSrcFile = path.substring(altSrcInd);
|
||||
Vector v = getFieldVector(null, "RelativeAltSrcFileList");
|
||||
if (v == null || !v.contains(altSrcFile)) {
|
||||
addFieldVector(null, "RelativeAltSrcFileList", altSrcFile);
|
||||
}
|
||||
}
|
||||
|
||||
void addTo(Hashtable ht, String key, String value) {
|
||||
ht.put(expandFormat(key), expandFormat(value));
|
||||
}
|
||||
@ -272,8 +335,19 @@ class BuildConfig {
|
||||
|
||||
private Vector getSourceIncludes() {
|
||||
Vector<String> rv = new Vector<String>();
|
||||
Vector<String> ri = new Vector<String>();
|
||||
String sourceBase = getFieldString(null, "SourceBase");
|
||||
|
||||
// add relative alternate source include values:
|
||||
String relativeAltSrcInclude =
|
||||
getFieldString(null, "RelativeAltSrcInclude");
|
||||
Vector<String> asri = new Vector<String>();
|
||||
collectRelevantVectors(asri, "AltRelativeInclude");
|
||||
for (String f : asri) {
|
||||
rv.add(sourceBase + Util.sep + relativeAltSrcInclude +
|
||||
Util.sep + f);
|
||||
}
|
||||
|
||||
Vector<String> ri = new Vector<String>();
|
||||
collectRelevantVectors(ri, "RelativeInclude");
|
||||
for (String f : ri) {
|
||||
rv.add(sourceBase + Util.sep + f);
|
||||
@ -541,35 +615,6 @@ class TieredProductConfig extends ProductConfig {
|
||||
}
|
||||
}
|
||||
|
||||
class CoreDebugConfig extends GenericDebugNonKernelConfig {
|
||||
String getOptFlag() {
|
||||
return getCI().getNoOptFlag();
|
||||
}
|
||||
|
||||
CoreDebugConfig() {
|
||||
initNames("core", "debug", "jvm.dll");
|
||||
init(getIncludes(), getDefines());
|
||||
}
|
||||
}
|
||||
|
||||
class CoreFastDebugConfig extends GenericDebugNonKernelConfig {
|
||||
String getOptFlag() {
|
||||
return getCI().getOptFlag();
|
||||
}
|
||||
|
||||
CoreFastDebugConfig() {
|
||||
initNames("core", "fastdebug", "jvm.dll");
|
||||
init(getIncludes(), getDefines());
|
||||
}
|
||||
}
|
||||
|
||||
class CoreProductConfig extends ProductConfig {
|
||||
CoreProductConfig() {
|
||||
initNames("core", "product", "jvm.dll");
|
||||
init(getIncludes(), getDefines());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
abstract class CompilerInterface {
|
||||
abstract Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir);
|
||||
|
@ -1,3 +1,27 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2013, 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.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
import static java.nio.file.FileVisitResult.CONTINUE;
|
||||
|
||||
import java.io.IOException;
|
||||
@ -21,6 +45,8 @@ public class FileTreeCreatorVC10 extends FileTreeCreator {
|
||||
boolean usePch = false;
|
||||
boolean disablePch = false;
|
||||
boolean useIgnore = false;
|
||||
boolean isAltSrc = false; // only needed as a debugging crumb
|
||||
boolean isReplacedByAltSrc = false;
|
||||
String fileName = file.getFileName().toString();
|
||||
|
||||
// TODO hideFile
|
||||
@ -30,6 +56,26 @@ public class FileTreeCreatorVC10 extends FileTreeCreator {
|
||||
usePch = true;
|
||||
}
|
||||
|
||||
String fileLoc = vcProjLocation.relativize(file).toString();
|
||||
|
||||
// isAltSrc and isReplacedByAltSrc applies to all configs for a file
|
||||
if (BuildConfig.matchesRelativeAltSrcInclude(
|
||||
file.toAbsolutePath().toString())) {
|
||||
// current file is an alternate source file so track it
|
||||
isAltSrc = true;
|
||||
BuildConfig.trackRelativeAltSrcFile(
|
||||
file.toAbsolutePath().toString());
|
||||
} else if (BuildConfig.matchesRelativeAltSrcFile(
|
||||
file.toAbsolutePath().toString())) {
|
||||
// current file is a regular file that matches an alternate
|
||||
// source file so yack about replacing the regular file
|
||||
isReplacedByAltSrc = true;
|
||||
System.out.println("INFO: alternate source file '" +
|
||||
BuildConfig.getMatchingRelativeAltSrcFile(
|
||||
file.toAbsolutePath().toString()) +
|
||||
"' replaces '" + fileLoc + "'");
|
||||
}
|
||||
|
||||
for (BuildConfig cfg : allConfigs) {
|
||||
if (cfg.lookupHashFieldInContext("IgnoreFile", fileName) != null) {
|
||||
useIgnore = true;
|
||||
@ -58,9 +104,8 @@ public class FileTreeCreatorVC10 extends FileTreeCreator {
|
||||
}
|
||||
|
||||
String tagName = wg.getFileTagFromSuffix(fileName);
|
||||
String fileLoc = vcProjLocation.relativize(file).toString();
|
||||
|
||||
if (!useIgnore && !disablePch && !usePch) {
|
||||
if (!useIgnore && !disablePch && !usePch && !isReplacedByAltSrc) {
|
||||
wg.tag(tagName, new String[] { "Include", fileLoc});
|
||||
} else {
|
||||
wg.startTag(
|
||||
@ -78,6 +123,11 @@ public class FileTreeCreatorVC10 extends FileTreeCreator {
|
||||
if (disablePch) {
|
||||
wg.tag("PrecompiledHeader", "Condition", "'$(Configuration)|$(Platform)'=='" + cfg.get("Name") + "'");
|
||||
}
|
||||
if (isReplacedByAltSrc) {
|
||||
wg.tagData("ExcludedFromBuild", "true", "Condition",
|
||||
"'$(Configuration)|$(Platform)'=='" +
|
||||
cfg.get("Name") + "'");
|
||||
}
|
||||
}
|
||||
wg.endTag();
|
||||
}
|
||||
@ -137,6 +187,4 @@ public class FileTreeCreatorVC10 extends FileTreeCreator {
|
||||
public void writeFileTree() throws IOException {
|
||||
Files.walkFileTree(this.startDir, this);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 2013, 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
|
||||
@ -39,10 +39,15 @@ public class ProjectCreator {
|
||||
+ "jvm.dll; no trailing slash>");
|
||||
System.err.println(" If any of the above are specified, "
|
||||
+ "they must all be.");
|
||||
System.err.println(" Note: if '-altRelativeInclude' option below is "
|
||||
+ "used, then the '-relativeAltSrcInclude' option must be used "
|
||||
+ "to specify the alternate source dir, e.g., 'src\\closed'");
|
||||
System.err.println(" Additional, optional arguments, which can be "
|
||||
+ "specified multiple times:");
|
||||
System.err.println(" -absoluteInclude <string containing absolute "
|
||||
+ "path to include directory>");
|
||||
System.err.println(" -altRelativeInclude <string containing "
|
||||
+ "alternate include directory relative to -envVar>");
|
||||
System.err.println(" -relativeInclude <string containing include "
|
||||
+ "directory relative to -envVar>");
|
||||
System.err.println(" -define <preprocessor flag to be #defined "
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 2013, 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
|
||||
@ -140,10 +140,17 @@ public abstract class WinGammaPlatform {
|
||||
"already exist>");
|
||||
System.err.println(" If any of the above are specified, "+
|
||||
"they must all be.");
|
||||
System.err.println(" Note: if '-altRelativeInclude' option below " +
|
||||
"is used, then the '-relativeAltSrcInclude' " +
|
||||
"option must be used to specify the alternate " +
|
||||
"source dir, e.g., 'src\\closed'");
|
||||
System.err.println(" Additional, optional arguments, which can be " +
|
||||
"specified multiple times:");
|
||||
System.err.println(" -absoluteInclude <string containing absolute " +
|
||||
"path to include directory>");
|
||||
System.err.println(" -altRelativeInclude <string containing " +
|
||||
"alternate include directory relative to " +
|
||||
"-sourceBase>");
|
||||
System.err.println(" -relativeInclude <string containing include " +
|
||||
"directory relative to -sourceBase>");
|
||||
System.err.println(" -define <preprocessor flag to be #defined " +
|
||||
@ -343,6 +350,12 @@ public abstract class WinGammaPlatform {
|
||||
HsArgHandler.VECTOR
|
||||
),
|
||||
|
||||
new HsArgRule("-altRelativeInclude",
|
||||
"AltRelativeInclude",
|
||||
null,
|
||||
HsArgHandler.VECTOR
|
||||
),
|
||||
|
||||
new HsArgRule("-relativeInclude",
|
||||
"RelativeInclude",
|
||||
null,
|
||||
@ -355,6 +368,12 @@ public abstract class WinGammaPlatform {
|
||||
HsArgHandler.VECTOR
|
||||
),
|
||||
|
||||
new HsArgRule("-relativeAltSrcInclude",
|
||||
"RelativeAltSrcInclude",
|
||||
null,
|
||||
HsArgHandler.STRING
|
||||
),
|
||||
|
||||
new HsArgRule("-relativeSrcInclude",
|
||||
"RelativeSrcInclude",
|
||||
null,
|
||||
@ -560,10 +579,6 @@ public abstract class WinGammaPlatform {
|
||||
allConfigs.add(new TieredFastDebugConfig());
|
||||
allConfigs.add(new TieredProductConfig());
|
||||
|
||||
allConfigs.add(new CoreDebugConfig());
|
||||
allConfigs.add(new CoreFastDebugConfig());
|
||||
allConfigs.add(new CoreProductConfig());
|
||||
|
||||
return allConfigs;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,27 @@
|
||||
/*
|
||||
* Copyright (c) 2011, 2013, 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.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
@ -24,7 +48,7 @@ public class WinGammaPlatformVC10 extends WinGammaPlatformVC7 {
|
||||
public void writeProjectFile(String projectFileName, String projectName,
|
||||
Vector<BuildConfig> allConfigs) throws IOException {
|
||||
System.out.println();
|
||||
System.out.print(" Writing .vcxproj file: " + projectFileName);
|
||||
System.out.println(" Writing .vcxproj file: " + projectFileName);
|
||||
|
||||
String projDir = Util.normalize(new File(projectFileName).getParent());
|
||||
|
||||
@ -114,7 +138,7 @@ public class WinGammaPlatformVC10 extends WinGammaPlatformVC7 {
|
||||
|
||||
endTag();
|
||||
printWriter.close();
|
||||
System.out.println(" Done.");
|
||||
System.out.println(" Done writing .vcxproj file.");
|
||||
|
||||
writeFilterFile(projectFileName, projectName, allConfigs, projDir);
|
||||
writeUserFile(projectFileName, allConfigs);
|
||||
|
@ -2557,6 +2557,26 @@ void java_lang_ref_SoftReference::set_clock(jlong value) {
|
||||
*offset = value;
|
||||
}
|
||||
|
||||
// Support for java_lang_invoke_DirectMethodHandle
|
||||
|
||||
int java_lang_invoke_DirectMethodHandle::_member_offset;
|
||||
|
||||
oop java_lang_invoke_DirectMethodHandle::member(oop dmh) {
|
||||
oop member_name = NULL;
|
||||
bool is_dmh = dmh->is_oop() && java_lang_invoke_DirectMethodHandle::is_instance(dmh);
|
||||
assert(is_dmh, "a DirectMethodHandle oop is expected");
|
||||
if (is_dmh) {
|
||||
member_name = dmh->obj_field(member_offset_in_bytes());
|
||||
}
|
||||
return member_name;
|
||||
}
|
||||
|
||||
void java_lang_invoke_DirectMethodHandle::compute_offsets() {
|
||||
Klass* klass_oop = SystemDictionary::DirectMethodHandle_klass();
|
||||
if (klass_oop != NULL && EnableInvokeDynamic) {
|
||||
compute_offset(_member_offset, klass_oop, vmSymbols::member_name(), vmSymbols::java_lang_invoke_MemberName_signature());
|
||||
}
|
||||
}
|
||||
|
||||
// Support for java_lang_invoke_MethodHandle
|
||||
|
||||
@ -3205,6 +3225,7 @@ void JavaClasses::compute_offsets() {
|
||||
java_lang_ThreadGroup::compute_offsets();
|
||||
if (EnableInvokeDynamic) {
|
||||
java_lang_invoke_MethodHandle::compute_offsets();
|
||||
java_lang_invoke_DirectMethodHandle::compute_offsets();
|
||||
java_lang_invoke_MemberName::compute_offsets();
|
||||
java_lang_invoke_LambdaForm::compute_offsets();
|
||||
java_lang_invoke_MethodType::compute_offsets();
|
||||
|
@ -976,6 +976,32 @@ class java_lang_invoke_MethodHandle: AllStatic {
|
||||
static int form_offset_in_bytes() { return _form_offset; }
|
||||
};
|
||||
|
||||
// Interface to java.lang.invoke.DirectMethodHandle objects
|
||||
|
||||
class java_lang_invoke_DirectMethodHandle: AllStatic {
|
||||
friend class JavaClasses;
|
||||
|
||||
private:
|
||||
static int _member_offset; // the MemberName of this DMH
|
||||
|
||||
static void compute_offsets();
|
||||
|
||||
public:
|
||||
// Accessors
|
||||
static oop member(oop mh);
|
||||
|
||||
// Testers
|
||||
static bool is_subclass(Klass* klass) {
|
||||
return klass->is_subclass_of(SystemDictionary::DirectMethodHandle_klass());
|
||||
}
|
||||
static bool is_instance(oop obj) {
|
||||
return obj != NULL && is_subclass(obj->klass());
|
||||
}
|
||||
|
||||
// Accessors for code generation:
|
||||
static int member_offset_in_bytes() { return _member_offset; }
|
||||
};
|
||||
|
||||
// Interface to java.lang.invoke.LambdaForm objects
|
||||
// (These are a private interface for managing adapter code generation.)
|
||||
|
||||
|
@ -151,6 +151,7 @@ class SymbolPropertyTable;
|
||||
do_klass(reflect_CallerSensitive_klass, sun_reflect_CallerSensitive, Opt ) \
|
||||
\
|
||||
/* support for dynamic typing; it's OK if these are NULL in earlier JDKs */ \
|
||||
do_klass(DirectMethodHandle_klass, java_lang_invoke_DirectMethodHandle, Opt ) \
|
||||
do_klass(MethodHandle_klass, java_lang_invoke_MethodHandle, Pre_JSR292 ) \
|
||||
do_klass(MemberName_klass, java_lang_invoke_MemberName, Pre_JSR292 ) \
|
||||
do_klass(MethodHandleNatives_klass, java_lang_invoke_MethodHandleNatives, Pre_JSR292 ) \
|
||||
|
@ -255,6 +255,7 @@
|
||||
/* Support for JSR 292 & invokedynamic (JDK 1.7 and above) */ \
|
||||
template(java_lang_invoke_CallSite, "java/lang/invoke/CallSite") \
|
||||
template(java_lang_invoke_ConstantCallSite, "java/lang/invoke/ConstantCallSite") \
|
||||
template(java_lang_invoke_DirectMethodHandle, "java/lang/invoke/DirectMethodHandle") \
|
||||
template(java_lang_invoke_MutableCallSite, "java/lang/invoke/MutableCallSite") \
|
||||
template(java_lang_invoke_VolatileCallSite, "java/lang/invoke/VolatileCallSite") \
|
||||
template(java_lang_invoke_MethodHandle, "java/lang/invoke/MethodHandle") \
|
||||
@ -352,6 +353,7 @@
|
||||
template(thread_id_name, "tid") \
|
||||
template(newInstance0_name, "newInstance0") \
|
||||
template(limit_name, "limit") \
|
||||
template(member_name, "member") \
|
||||
template(forName_name, "forName") \
|
||||
template(forName0_name, "forName0") \
|
||||
template(isJavaIdentifierStart_name, "isJavaIdentifierStart") \
|
||||
|
@ -1209,3 +1209,26 @@ IRT_LEAF(void, InterpreterRuntime::popframe_move_outgoing_args(JavaThread* threa
|
||||
size_of_arguments * Interpreter::stackElementSize);
|
||||
IRT_END
|
||||
#endif
|
||||
|
||||
#if INCLUDE_JVMTI
|
||||
// This is a support of the JVMTI PopFrame interface.
|
||||
// Make sure it is an invokestatic of a polymorphic intrinsic that has a member_name argument
|
||||
// and return it as a vm_result so that it can be reloaded in the list of invokestatic parameters.
|
||||
// The dmh argument is a reference to a DirectMethoHandle that has a member name field.
|
||||
IRT_ENTRY(void, InterpreterRuntime::member_name_arg_or_null(JavaThread* thread, address dmh,
|
||||
Method* method, address bcp))
|
||||
Bytecodes::Code code = Bytecodes::code_at(method, bcp);
|
||||
if (code != Bytecodes::_invokestatic) {
|
||||
return;
|
||||
}
|
||||
ConstantPool* cpool = method->constants();
|
||||
int cp_index = Bytes::get_native_u2(bcp + 1) + ConstantPool::CPCACHE_INDEX_TAG;
|
||||
Symbol* cname = cpool->klass_name_at(cpool->klass_ref_index_at(cp_index));
|
||||
Symbol* mname = cpool->name_ref_at(cp_index);
|
||||
|
||||
if (MethodHandles::has_member_arg(cname, mname)) {
|
||||
oop member_name = java_lang_invoke_DirectMethodHandle::member((oop)dmh);
|
||||
thread->set_vm_result(member_name);
|
||||
}
|
||||
IRT_END
|
||||
#endif // INCLUDE_JVMTI
|
||||
|
@ -95,6 +95,9 @@ class InterpreterRuntime: AllStatic {
|
||||
static void create_exception(JavaThread* thread, char* name, char* message);
|
||||
static void create_klass_exception(JavaThread* thread, char* name, oopDesc* obj);
|
||||
static address exception_handler_for_exception(JavaThread* thread, oopDesc* exception);
|
||||
#if INCLUDE_JVMTI
|
||||
static void member_name_arg_or_null(JavaThread* thread, address dmh, Method* m, address bcp);
|
||||
#endif
|
||||
static void throw_pending_exception(JavaThread* thread);
|
||||
|
||||
// Statics & fields
|
||||
|
@ -53,9 +53,6 @@ case "$OS" in
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
NULL=NUL
|
||||
PS=";"
|
||||
FS="\\"
|
||||
echo "Test passed; only valid for Linux"
|
||||
exit 0;
|
||||
;;
|
||||
@ -87,14 +84,16 @@ ${TESTJAVA}${FS}bin${FS}java -cp ${THIS_DIR} Test test-rw
|
||||
|
||||
echo
|
||||
echo Test changing of stack protection:
|
||||
echo ${TESTJAVA}${FS}bin${FS}java -cp ${THIS_DIR} Test test-rw
|
||||
echo ${TESTJAVA}${FS}bin${FS}java -cp ${THIS_DIR} Test test-rwx
|
||||
${TESTJAVA}${FS}bin${FS}java -cp ${THIS_DIR} Test test-rwx
|
||||
JAVA_RETVAL=$?
|
||||
|
||||
if [ "$?" == "0" ]
|
||||
if [ "$JAVA_RETVAL" == "0" ]
|
||||
then
|
||||
echo
|
||||
echo ${TESTJAVA}${FS}bin${FS}java -cp ${THIS_DIR} TestMT test-rwx
|
||||
${TESTJAVA}${FS}bin${FS}java -cp ${THIS_DIR} TestMT test-rwx
|
||||
JAVA_RETVAL=$?
|
||||
fi
|
||||
|
||||
exit $?
|
||||
exit $JAVA_RETVAL
|
||||
|
Loading…
x
Reference in New Issue
Block a user