mirror of
https://github.com/openjdk/jdk.git
synced 2026-05-20 10:27:52 +00:00
Merge
This commit is contained in:
commit
ac54f240e8
2
.hgtags
2
.hgtags
@ -31,3 +31,5 @@ d52186ee770dac57950536cd00ccbfdef360b04c jdk7-b53
|
||||
15096652c4d48dfb9fc0b2cb135304db94c65ba0 jdk7-b54
|
||||
c8b275d62d6b0a980c510e839b70292245863e85 jdk7-b55
|
||||
a8134c4ee2cf451cf9b5e1609f39d83ecd53acc5 jdk7-b56
|
||||
b44f05654c26fcd1f995e712992f9b07ffd7c0c6 jdk7-b57
|
||||
d60a9ce3c3eabf28f5d50ae839d18be04a551bc2 jdk7-b58
|
||||
|
||||
@ -31,3 +31,5 @@ c235f4a8559d196879c56af80159f67ee5d0e720 jdk7-b53
|
||||
2ef382b1bbd58a68e668391c6145a4b2066c5b96 jdk7-b54
|
||||
aea0ace7a1e43619800931d42bbf69c579361c2d jdk7-b55
|
||||
ba12117a5e6c918578d6b2a8c693232a33289024 jdk7-b56
|
||||
ffd09e767dfa6d21466183a400f72cf62d53297f jdk7-b57
|
||||
59b497130f82ec809c245ffb5e521e3a5fabf8af jdk7-b58
|
||||
|
||||
@ -31,3 +31,5 @@ bec82237d694f9802b820fa11bbb4f7fa9bf8e77 jdk7-b52
|
||||
8130ac858d6789d5853d23044ba4a992afda574a jdk7-b54
|
||||
7a869f16ba83060c34b77620406cfa89d1cd7084 jdk7-b55
|
||||
553a664b807bb3a3c93f3b5a3c20ff0a90e08371 jdk7-b56
|
||||
972c6157fae57850694675da82fd58a17930db0a jdk7-b57
|
||||
2e3b8edab3ef55406494d3dd562e06882e6fc15e jdk7-b58
|
||||
|
||||
@ -46,6 +46,8 @@ CORBA_JMK_DIRECTORY=$(TOPDIR)/make/com/sun/corba/minclude/
|
||||
include $(CORBA_JMK_DIRECTORY)com_sun_corba_se_PortableActivationIDL.jmk
|
||||
include $(CORBA_JMK_DIRECTORY)com_sun_corba_se_impl_logging.jmk
|
||||
|
||||
FILES_java += com/sun/corba/se/org/omg/CORBA/ORB.java
|
||||
|
||||
#
|
||||
# Dirs
|
||||
#
|
||||
|
||||
@ -202,6 +202,10 @@ public class IDLNameTranslatorImpl implements IDLNameTranslator {
|
||||
private IDLNameTranslatorImpl(Class[] interfaces)
|
||||
{
|
||||
|
||||
SecurityManager s = System.getSecurityManager();
|
||||
if (s != null) {
|
||||
s.checkPermission(new DynamicAccessPermission("access"));
|
||||
}
|
||||
try {
|
||||
IDLTypesUtil idlTypesUtil = new IDLTypesUtil();
|
||||
for (int ctr=0; ctr<interfaces.length; ctr++)
|
||||
|
||||
@ -1,11 +1,35 @@
|
||||
/*
|
||||
* Copyright 1999 Sun Microsystems, Inc. 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. Sun designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* COMPONENT_NAME: idl.parser
|
||||
*
|
||||
*
|
||||
* ORIGINS: 27
|
||||
*
|
||||
* THIS PRODUCT CONTAINS RESTRICTED MATERIALS OF IBM
|
||||
* 5639-D57, (C) COPYRIGHT International Business Machines Corp., 1997, 1998
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
CORBA IDL
|
||||
|
||||
@ -1,11 +1,35 @@
|
||||
/*
|
||||
* Copyright 1999 Sun Microsystems, Inc. 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. Sun designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* COMPONENT_NAME: idl.parser
|
||||
*
|
||||
*
|
||||
* ORIGINS: 27
|
||||
*
|
||||
* THIS PRODUCT CONTAINS RESTRICTED MATERIALS OF IBM
|
||||
* 5639-D57, (C) COPYRIGHT International Business Machines Corp., 1997, 1998
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
CORBA IDL
|
||||
|
||||
@ -1,14 +1,38 @@
|
||||
/*
|
||||
* COMPONENT_NAME: idl.parser
|
||||
*
|
||||
* ORIGINS: 27
|
||||
* Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* THIS PRODUCT CONTAINS RESTRICTED MATERIALS OF IBM
|
||||
* 5639-D57, (C) COPYRIGHT International Business Machines Corp., 1997, 1998
|
||||
*
|
||||
* 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. Sun designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
CORBA 2.3 IDL
|
||||
/*
|
||||
* COMPONENT_NAME: idl.parser
|
||||
*
|
||||
* ORIGINS: 27
|
||||
*
|
||||
* 5639-D57, (C) COPYRIGHT International Business Machines Corp., 1997, 1998
|
||||
*
|
||||
*/
|
||||
|
||||
CORBA 2.3 IDL
|
||||
---------------
|
||||
|
||||
(1) <specification> <definition><specification'>
|
||||
@ -83,7 +107,7 @@ CORBA 2.3 IDL
|
||||
|
||||
(16) <vad> e
|
||||
<export> <vad>
|
||||
|
||||
|
||||
(17) <value_dcl> <value_header> "{" <value_element> <ve> "}"
|
||||
|
||||
(17) <ve> e
|
||||
@ -91,9 +115,9 @@ CORBA 2.3 IDL
|
||||
|
||||
(18) <value_header> "custom" "valuetype" <id> <value_inheritance_spec>
|
||||
"valuetype" <id> <value_inheritance_spec>
|
||||
"custom" "valuetype" <id>
|
||||
"valuetype" <id>
|
||||
|
||||
"custom" "valuetype" <id>
|
||||
"valuetype" <id>
|
||||
|
||||
(19) <value_inheritance_spec> <opt_inherits> <opt_supports>
|
||||
|
||||
(19) <opt_inherits> e
|
||||
@ -107,7 +131,7 @@ CORBA 2.3 IDL
|
||||
"supports" <interface_name> <interface_name_list>
|
||||
|
||||
(19) <interface_name_list> e
|
||||
"," <interface_name> <interface_name_list>
|
||||
"," <interface_name> <interface_name_list>
|
||||
|
||||
(20) <value_name> <scoped_name>
|
||||
|
||||
@ -121,7 +145,7 @@ CORBA 2.3 IDL
|
||||
(23) <init_dcl> "factory" <id> "(" ")"
|
||||
"factory" <id> "(" <init_param_dcls> ")"
|
||||
|
||||
(24) <init_param_dcls> <init_param_decl>
|
||||
(24) <init_param_dcls> <init_param_decl>
|
||||
<init_param_decl> "," <init_param_dcls>
|
||||
|
||||
(25) <init_param_dcl> <init_param_attribute> <param_type_spec> <simple_declarator>
|
||||
@ -349,7 +373,7 @@ CORBA 2.3 IDL
|
||||
|
||||
(87) <op_dcl''> e
|
||||
<context_expr>
|
||||
<raises_expr>
|
||||
<raises_expr>
|
||||
<raises_expr> <context_expr>
|
||||
|
||||
(88) <op_attribute> "oneway"
|
||||
@ -386,7 +410,7 @@ CORBA 2.3 IDL
|
||||
<wide_string_type>
|
||||
<scoped_name>
|
||||
|
||||
(96) <fixed_pt_type> "fixed" "<" <positive_int_const> "," <positive_int_const> ">"
|
||||
(96) <fixed_pt_type> "fixed" "<" <positive_int_const> "," <positive_int_const> ">"
|
||||
|
||||
(97) <fixed_pt_const_type> "fixed"
|
||||
|
||||
|
||||
@ -1,11 +1,35 @@
|
||||
/*
|
||||
* Copyright 1999 Sun Microsystems, Inc. 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. Sun designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* COMPONENT_NAME: idl.parser
|
||||
*
|
||||
*
|
||||
* ORIGINS: 27
|
||||
*
|
||||
* THIS PRODUCT CONTAINS RESTRICTED MATERIALS OF IBM
|
||||
* 5639-D57, (C) COPYRIGHT International Business Machines Corp., 1997, 1998
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
(1) <specification> <imports> <definition> <specification'> // CORBA3
|
||||
@ -98,7 +122,7 @@
|
||||
|
||||
(16) <vad> e
|
||||
<export> <vad>
|
||||
|
||||
|
||||
(17) <value_dcl> <value_header> "{" <value_element> <ve> "}"
|
||||
|
||||
(17) <ve> e
|
||||
@ -106,9 +130,9 @@
|
||||
|
||||
(18) <value_header> "custom" "valuetype" <id> <value_inheritance_spec>
|
||||
"valuetype" <id> <value_inheritance_spec>
|
||||
"custom" "valuetype" <id>
|
||||
"valuetype" <id>
|
||||
|
||||
"custom" "valuetype" <id>
|
||||
"valuetype" <id>
|
||||
|
||||
(19) <value_inheritance_spec> <opt_inherits> <opt_supports>
|
||||
|
||||
(19) <opt_inherits> e
|
||||
@ -122,7 +146,7 @@
|
||||
"supports" <interface_name> <interface_name_list>
|
||||
|
||||
(19) <interface_name_list> e
|
||||
"," <interface_name> <interface_name_list>
|
||||
"," <interface_name> <interface_name_list>
|
||||
|
||||
(20) <value_name> <scoped_name>
|
||||
|
||||
@ -136,7 +160,7 @@
|
||||
(23) <init_dcl> "factory" <id> "(" ")"
|
||||
"factory" <id> "(" <init_param_dcls> ")"
|
||||
|
||||
(24) <init_param_dcls> <init_param_dcl>
|
||||
(24) <init_param_dcls> <init_param_dcl>
|
||||
<init_param_dcl> "," <init_param_dcls>
|
||||
|
||||
(25) <init_param_dcl> <init_param_attribute> <param_type_spec> <simple_declarator>
|
||||
@ -351,7 +375,7 @@
|
||||
(85) <readonly_attr_spec> <readonly_attr_header> <readonly_attr_declarator> // CORBA3
|
||||
|
||||
(85) <readonly_attr_header> "readonly" "attribute" <param_type_spec> // CORBA3
|
||||
|
||||
|
||||
(85) <readonly_attr_declarator> <simple_declarator> <get_excep_expr> // CORBA3
|
||||
<simple_declarator> <sds> // CORBA3
|
||||
|
||||
@ -389,7 +413,7 @@
|
||||
|
||||
(87) <op_dcl''> e
|
||||
<context_expr>
|
||||
<raises_expr>
|
||||
<raises_expr>
|
||||
<raises_expr> <context_expr>
|
||||
|
||||
(88) <op_attribute> "oneway"
|
||||
@ -426,7 +450,7 @@
|
||||
<wide_string_type>
|
||||
<scoped_name>
|
||||
|
||||
(96) <fixed_pt_type> "fixed" "<" <positive_int_const> "," <positive_int_const> ">"
|
||||
(96) <fixed_pt_type> "fixed" "<" <positive_int_const> "," <positive_int_const> ">"
|
||||
|
||||
(97) <fixed_pt_const_type> "fixed"
|
||||
|
||||
@ -450,7 +474,7 @@
|
||||
|
||||
(204) <snames> e
|
||||
"," <scoped_name> <snames>
|
||||
|
||||
|
||||
(205) <component_inheritance_spec> ":" <scoped_name>
|
||||
|
||||
(206) <component_body> <component_export> <ces>
|
||||
@ -458,8 +482,8 @@
|
||||
(206) <ces> e
|
||||
<component_export> <ces>
|
||||
|
||||
(207) <component_export> <provides_dcl> ";"
|
||||
<uses_dcl> ";"
|
||||
(207) <component_export> <provides_dcl> ";"
|
||||
<uses_dcl> ";"
|
||||
<emits_dcl> ";"
|
||||
<publishes_dcl> ";"
|
||||
<consumes_dcl> ";"
|
||||
|
||||
@ -1,3 +1,28 @@
|
||||
#
|
||||
# Copyright 1999-2004 Sun Microsystems, Inc. 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. Sun designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
# CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
# have any questions.
|
||||
#
|
||||
|
||||
#
|
||||
# COMPONENT_NAME: idl.parser
|
||||
#
|
||||
|
||||
@ -1,3 +1,28 @@
|
||||
#
|
||||
# Copyright 1999-2005 Sun Microsystems, Inc. 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. Sun designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
# CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
# have any questions.
|
||||
#
|
||||
|
||||
#
|
||||
# COMPONENT_NAME: idl.parser
|
||||
#
|
||||
|
||||
@ -1,3 +1,28 @@
|
||||
#
|
||||
# Copyright 2005 Sun Microsystems, Inc. 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. Sun designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
# CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
# have any questions.
|
||||
#
|
||||
|
||||
#
|
||||
# COMPONENT_NAME: idl.parser
|
||||
#
|
||||
|
||||
@ -1,3 +1,28 @@
|
||||
#
|
||||
# Copyright 1999-2004 Sun Microsystems, Inc. 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. Sun designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
# CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
# have any questions.
|
||||
#
|
||||
|
||||
#
|
||||
# COMPONENT_NAME: idl.toJava
|
||||
#
|
||||
|
||||
@ -1,3 +1,28 @@
|
||||
#
|
||||
# Copyright 2001-2005 Sun Microsystems, Inc. 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. Sun designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
# CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
# have any questions.
|
||||
#
|
||||
|
||||
#
|
||||
# COMPONENT_NAME: idl.toJava
|
||||
#
|
||||
|
||||
@ -1,3 +1,28 @@
|
||||
#
|
||||
# Copyright 2005 Sun Microsystems, Inc. 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. Sun designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
# CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
# have any questions.
|
||||
#
|
||||
|
||||
#
|
||||
# COMPONENT_NAME: idl.toJava
|
||||
#
|
||||
|
||||
@ -31,3 +31,5 @@ dae503d9f04c1a11e182dbf7f770509c28dc0609 jdk7-b50
|
||||
fafab5d5349c7c066d677538db67a1ee0fb33bd2 jdk7-b54
|
||||
f8e839c086152da70d6ec5913ba6f9f509282e8d jdk7-b55
|
||||
a3fd9e40ff2e854f6169eb6d09d491a28634d04f jdk7-b56
|
||||
f4cbf78110c726919f46b59a3b054c54c7e889b4 jdk7-b57
|
||||
53d9bf689e80fcc76b221bbe6c5d58e08b80cbc6 jdk7-b58
|
||||
|
||||
@ -60,6 +60,14 @@ ifndef LDNOMAP
|
||||
LFLAGS_LIBSA = -Xlinker --version-script=mapfile
|
||||
endif
|
||||
|
||||
# If this is a --hash-style=gnu system, use --hash-style=both
|
||||
# The gnu .hash section won't work on some Linux systems like SuSE 10.
|
||||
_HAS_HASH_STYLE_GNU:=$(shell $(CC) -dumpspecs | grep -- '--hash-style=gnu')
|
||||
ifneq ($(_HAS_HASH_STYLE_GNU),)
|
||||
LDFLAGS_HASH_STYLE = -Wl,--hash-style=both
|
||||
endif
|
||||
LFLAGS_LIBSA += $(LDFLAGS_HASH_STYLE)
|
||||
|
||||
$(LIBSA): $(OBJS) mapfile
|
||||
if [ ! -d $(ARCH) ] ; then mkdir $(ARCH) ; fi
|
||||
$(GCC) -shared $(LFLAGS_LIBSA) -o $(LIBSA) $(OBJS) $(LIBS)
|
||||
|
||||
@ -306,8 +306,6 @@ public class HotSpotTypeDataBase extends BasicTypeDataBase {
|
||||
|
||||
entryAddr = entryAddr.addOffsetTo(intConstantEntryArrayStride);
|
||||
} while (nameAddr != null);
|
||||
String symbol = "heapOopSize"; // global int constant and value is initialized at runtime.
|
||||
addIntConstant(symbol, (int)lookupInProcess(symbol).getCIntegerAt(0, 4, false));
|
||||
}
|
||||
|
||||
private void readVMLongConstants() {
|
||||
|
||||
@ -318,11 +318,17 @@ public class VM {
|
||||
logMinObjAlignmentInBytes = db.lookupIntConstant("LogMinObjAlignmentInBytes").intValue();
|
||||
heapWordSize = db.lookupIntConstant("HeapWordSize").intValue();
|
||||
oopSize = db.lookupIntConstant("oopSize").intValue();
|
||||
heapOopSize = db.lookupIntConstant("heapOopSize").intValue();
|
||||
|
||||
intxType = db.lookupType("intx");
|
||||
uintxType = db.lookupType("uintx");
|
||||
boolType = (CIntegerType) db.lookupType("bool");
|
||||
|
||||
if (isCompressedOopsEnabled()) {
|
||||
// Size info for oops within java objects is fixed
|
||||
heapOopSize = (int)getIntSize();
|
||||
} else {
|
||||
heapOopSize = (int)getOopSize();
|
||||
}
|
||||
}
|
||||
|
||||
/** This could be used by a reflective runtime system */
|
||||
@ -343,13 +349,12 @@ public class VM {
|
||||
}
|
||||
soleInstance = new VM(db, debugger, debugger.getMachineDescription().isBigEndian());
|
||||
|
||||
debugger.putHeapConst(soleInstance.getHeapOopSize(), Universe.getNarrowOopBase(),
|
||||
Universe.getNarrowOopShift());
|
||||
|
||||
for (Iterator iter = vmInitializedObservers.iterator(); iter.hasNext(); ) {
|
||||
((Observer) iter.next()).update(null, null);
|
||||
}
|
||||
|
||||
debugger.putHeapConst(soleInstance.getHeapOopSize(), Universe.getNarrowOopBase(),
|
||||
Universe.getNarrowOopShift());
|
||||
}
|
||||
|
||||
/** This is used by the debugging system */
|
||||
|
||||
@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2009
|
||||
|
||||
HS_MAJOR_VER=16
|
||||
HS_MINOR_VER=0
|
||||
HS_BUILD_NUMBER=02
|
||||
HS_BUILD_NUMBER=03
|
||||
|
||||
JDK_MAJOR_VER=1
|
||||
JDK_MINOR_VER=7
|
||||
|
||||
@ -1,275 +0,0 @@
|
||||
#!echo "This is not a shell script"
|
||||
#
|
||||
# Copyright 2006-2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
# CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
# have any questions.
|
||||
#
|
||||
#
|
||||
|
||||
#############################################################################
|
||||
# Error
|
||||
error() # message
|
||||
{
|
||||
echo "ERROR: $1"
|
||||
exit 6
|
||||
}
|
||||
# Directory must exist
|
||||
dirMustExist() # dir name
|
||||
{
|
||||
if [ ! -d "$1" ] ; then
|
||||
error "Directory for $2 does not exist: $1"
|
||||
fi
|
||||
}
|
||||
# File must exist
|
||||
fileMustExist() # dir name
|
||||
{
|
||||
if [ ! -f "$1" ] ; then
|
||||
error "File for $2 does not exist: $1"
|
||||
fi
|
||||
}
|
||||
#############################################################################
|
||||
|
||||
# Should be set by JPRT as the 3 basic inputs
|
||||
bootdir="${ALT_BOOTDIR}"
|
||||
slashjava="${ALT_SLASH_JAVA}"
|
||||
jdk_import="${ALT_JDK_IMPORT_PATH}"
|
||||
|
||||
# Check input
|
||||
dirMustExist "${bootdir}" ALT_BOOTDIR
|
||||
dirMustExist "${slashjava}" ALT_SLASH_JAVA
|
||||
dirMustExist "${jdk_import}" ALT_JDK_IMPORT_PATH
|
||||
|
||||
# Uses 'uname -s', but only expect SunOS or Linux, assume Windows otherwise.
|
||||
osname=`uname -s`
|
||||
if [ "${osname}" = SunOS ] ; then
|
||||
|
||||
# SOLARIS: Sparc or X86
|
||||
osarch=`uname -p`
|
||||
if [ "${osarch}" = sparc ] ; then
|
||||
solaris_arch=sparc
|
||||
else
|
||||
solaris_arch=i386
|
||||
fi
|
||||
|
||||
if [ "${JPRT_SOLARIS_COMPILER_NAME}" != "" ] ; then
|
||||
compiler_name=${JPRT_SOLARIS_COMPILER_NAME}
|
||||
else
|
||||
if [ "${JPRT_JOB_PRODUCT_RELEASE}" = "jdk6" -o \
|
||||
"${JPRT_JOB_PRODUCT_RELEASE}" = "jdk6u10" -o \
|
||||
"${JPRT_JOB_PRODUCT_RELEASE}" = "jdk6u14" -o \
|
||||
"${JPRT_JOB_PRODUCT_RELEASE}" = "jdk6perf" ] ; then
|
||||
# All jdk6 builds use SS11
|
||||
compiler_name=SS11
|
||||
else
|
||||
compiler_name=SS12
|
||||
fi
|
||||
fi
|
||||
|
||||
# Get into path (make sure it matches ALT setting)
|
||||
compiler_path=${slashjava}/devtools/${solaris_arch}/SUNWspro/${compiler_name}/bin
|
||||
dirMustExist "${compiler_path}" COMPILER_PATH
|
||||
path4sdk=${compiler_path}
|
||||
|
||||
# Add basic solaris system paths
|
||||
path4sdk=${path4sdk}:/usr/ccs/bin:/usr/ccs/lib:/usr/bin:/bin:/usr/sfw/bin
|
||||
|
||||
# Get the previous JDK to be used to bootstrap the build
|
||||
path4sdk=${bootdir}/bin:${path4sdk}
|
||||
|
||||
# Find GNU make
|
||||
make=/usr/sfw/bin/gmake
|
||||
if [ ! -f ${make} ] ; then
|
||||
make=/opt/sfw/bin/gmake
|
||||
if [ ! -f ${make} ] ; then
|
||||
make=${slashjava}/devtools/${solaris_arch}/bin/gnumake
|
||||
fi
|
||||
fi
|
||||
fileMustExist "${make}" make
|
||||
|
||||
# File creation mask
|
||||
umask 002
|
||||
|
||||
elif [ "${osname}" = Linux ] ; then
|
||||
|
||||
# LINUX: X86, AMD64
|
||||
osarch=`uname -m`
|
||||
if [ "${osarch}" = i686 ] ; then
|
||||
linux_arch=i586
|
||||
elif [ "${osarch}" = x86_64 ] ; then
|
||||
linux_arch=amd64
|
||||
fi
|
||||
|
||||
# Get the compilers into path (make sure it matches ALT setting)
|
||||
compiler_path=/usr/bin
|
||||
dirMustExist "${compiler_path}" COMPILER_PATH
|
||||
path4sdk=${compiler_path}
|
||||
|
||||
# Add basic paths
|
||||
path4sdk=${path4sdk}:/usr/bin:/bin:/usr/sbin:/sbin
|
||||
|
||||
# Get the previous JDK to be used to bootstrap the build
|
||||
path4sdk=${bootdir}/bin:${path4sdk}
|
||||
|
||||
# Find GNU make
|
||||
make=/usr/bin/make
|
||||
fileMustExist "${make}" make
|
||||
|
||||
umask 002
|
||||
|
||||
else
|
||||
|
||||
# Windows: Differs on CYGWIN vs. MKS, and the compiler available.
|
||||
# Also, blanks in pathnames gives GNU make headaches, so anything placed
|
||||
# in any ALT_* variable should be the short windows dosname.
|
||||
|
||||
# WINDOWS: Install and use MKS or CYGWIN (should have already been done)
|
||||
# Assumption here is that you are in a shell window via MKS or cygwin.
|
||||
# MKS install should have defined the environment variable ROOTDIR.
|
||||
# We also need to figure out which one we have: X86, AMD64
|
||||
if [ "`echo ${PROCESSOR_IDENTIFIER} | fgrep AMD64`" != "" ] ; then
|
||||
windows_arch=amd64
|
||||
else
|
||||
windows_arch=i586
|
||||
fi
|
||||
|
||||
# We need to determine if we are running a CYGWIN shell or an MKS shell
|
||||
# (if uname isn't available, then it will be unix_toolset=unknown)
|
||||
unix_toolset=unknown
|
||||
if [ "`uname -a | fgrep Cygwin`" = "" -a -d "${ROOTDIR}" ] ; then
|
||||
# We kind of assume ROOTDIR is where MKS is and it's ok
|
||||
unix_toolset=MKS
|
||||
mkshome=`dosname -s "${ROOTDIR}"`
|
||||
# Utility to convert to short pathnames without spaces
|
||||
dosname="${mkshome}/mksnt/dosname -s"
|
||||
# Most unix utilities are in the mksnt directory of ROOTDIR
|
||||
unixcommand_path="${mkshome}/mksnt"
|
||||
path4sdk="${unixcommand_path}"
|
||||
dirMustExist "${unixcommand_path}" UNIXCOMMAND_PATH
|
||||
devtools_path="${slashjava}/devtools/win32/bin"
|
||||
path4sdk="${devtools_path};${path4sdk}"
|
||||
dirMustExist "${devtools_path}" DEVTOOLS_PATH
|
||||
# Find GNU make
|
||||
make="${devtools_path}/gnumake.exe"
|
||||
fileMustExist "${make}" make
|
||||
elif [ "`uname -a | fgrep Cygwin`" != "" -a -f /bin/cygpath ] ; then
|
||||
# For CYGWIN, uname will have "Cygwin" in it, and /bin/cygpath should exist
|
||||
unix_toolset=CYGWIN
|
||||
# Utility to convert to short pathnames without spaces
|
||||
dosname="/usr/bin/cygpath -a -m -s"
|
||||
# Most unix utilities are in the /usr/bin
|
||||
unixcommand_path="/usr/bin"
|
||||
path4sdk="${unixcommand_path}"
|
||||
dirMustExist "${unixcommand_path}" UNIXCOMMAND_PATH
|
||||
# Find GNU make
|
||||
make="${unixcommand_path}/make.exe"
|
||||
fileMustExist "${make}" make
|
||||
else
|
||||
echo "WARNING: Cannot figure out if this is MKS or CYGWIN"
|
||||
fi
|
||||
|
||||
# WINDOWS: Compiler setup (nasty part)
|
||||
# NOTE: You can use vcvars32.bat to set PATH, LIB, and INCLUDE.
|
||||
# NOTE: CYGWIN has a link.exe too, make sure the compilers are first
|
||||
if [ "${windows_arch}" = i586 ] ; then
|
||||
# 32bit Windows compiler settings
|
||||
# VisualStudio .NET 2003 VC++ 7.1 (VS71COMNTOOLS should be defined)
|
||||
vs_root=`${dosname} "${VS71COMNTOOLS}/../.."`
|
||||
# Fill in PATH, LIB, and INCLUDE (unset all others to make sure)
|
||||
vc7_root="${vs_root}/Vc7"
|
||||
compiler_path="${vc7_root}/bin"
|
||||
platform_sdk="${vc7_root}/PlatformSDK"
|
||||
# LIB and INCLUDE must use ; as a separator
|
||||
include4sdk="${vc7_root}/atlmfc/include"
|
||||
include4sdk="${include4sdk};${vc7_root}/include"
|
||||
include4sdk="${include4sdk};${platform_sdk}/include/prerelease"
|
||||
include4sdk="${include4sdk};${platform_sdk}/include"
|
||||
include4sdk="${include4sdk};${vs_root}/SDK/v1.1/include"
|
||||
lib4sdk="${vc7_root}/atlmfc/lib"
|
||||
lib4sdk="${lib4sdk};${vc7_root}/lib"
|
||||
lib4sdk="${lib4sdk};${platform_sdk}/lib/prerelease"
|
||||
lib4sdk="${lib4sdk};${platform_sdk}/lib"
|
||||
lib4sdk="${lib4sdk};${vs_root}/SDK/v1.1/lib"
|
||||
# Search path and DLL locating path
|
||||
# WARNING: CYGWIN has a link.exe too, make sure compilers are first
|
||||
path4sdk="${vs_root}/Common7/Tools/bin;${path4sdk}"
|
||||
path4sdk="${vs_root}/SDK/v1.1/bin;${path4sdk}"
|
||||
path4sdk="${vs_root}/Common7/Tools;${path4sdk}"
|
||||
path4sdk="${vs_root}/Common7/Tools/bin/prerelease;${path4sdk}"
|
||||
path4sdk="${vs_root}/Common7/IDE;${path4sdk}"
|
||||
path4sdk="${compiler_path};${path4sdk}"
|
||||
elif [ "${windows_arch}" = amd64 ] ; then
|
||||
# AMD64 64bit Windows compiler settings
|
||||
if [ "${MSSDK}" != "" ] ; then
|
||||
platform_sdk="${MSSDK}"
|
||||
else
|
||||
platform_sdk=`${dosname} "C:/Program Files/Microsoft Platform SDK/"`
|
||||
fi
|
||||
compiler_path="${platform_sdk}/Bin/win64/x86/AMD64"
|
||||
# LIB and INCLUDE must use ; as a separator
|
||||
include4sdk="${platform_sdk}/Include"
|
||||
include4sdk="${include4sdk};${platform_sdk}/Include/crt/sys"
|
||||
include4sdk="${include4sdk};${platform_sdk}/Include/mfc"
|
||||
include4sdk="${include4sdk};${platform_sdk}/Include/atl"
|
||||
include4sdk="${include4sdk};${platform_sdk}/Include/crt"
|
||||
lib4sdk="${platform_sdk}/Lib/AMD64"
|
||||
lib4sdk="${lib4sdk};${platform_sdk}/Lib/AMD64/atlmfc"
|
||||
# Search path and DLL locating path
|
||||
# WARNING: CYGWIN has a link.exe too, make sure compilers are first
|
||||
path4sdk="${platform_sdk}/bin;${path4sdk}"
|
||||
path4sdk="${compiler_path};${path4sdk}"
|
||||
fi
|
||||
# Export LIB and INCLUDE
|
||||
unset lib
|
||||
unset Lib
|
||||
LIB="${lib4sdk}"
|
||||
export LIB
|
||||
unset include
|
||||
unset Include
|
||||
INCLUDE="${include4sdk}"
|
||||
export INCLUDE
|
||||
# Set the ALT variable
|
||||
dirMustExist "${compiler_path}" COMPILER_PATH
|
||||
|
||||
# WINDOWS: Get the previous JDK to be used to bootstrap the build
|
||||
path4sdk="${bootdir}/bin;${path4sdk}"
|
||||
|
||||
# Turn all \\ into /, remove duplicates and trailing /
|
||||
slash_path="`echo ${path4sdk} | sed -e 's@\\\\@/@g' -e 's@//@/@g' -e 's@/$@@' -e 's@/;@;@g'`"
|
||||
|
||||
# For windows, it's hard to know where the system is, so we just add this
|
||||
# to PATH.
|
||||
path4sdk="${slash_path};${PATH}"
|
||||
|
||||
# Convert path4sdk to cygwin style
|
||||
if [ "${unix_toolset}" = CYGWIN ] ; then
|
||||
path4sdk="`/usr/bin/cygpath -p ${path4sdk}`"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# Export PATH setting
|
||||
PATH="${path4sdk}"
|
||||
export PATH
|
||||
|
||||
# Unset certain vars
|
||||
unset LD_LIBRARY_PATH
|
||||
unset LD_LIBRARY_PATH_32
|
||||
unset LD_LIBRARY_PATH_64
|
||||
|
||||
@ -70,10 +70,33 @@ jprt.my.solaris.x64.jdk6u10=solaris_x64_5.10
|
||||
jprt.my.solaris.x64.jdk6u14=solaris_x64_5.10
|
||||
jprt.my.solaris.x64=${jprt.my.solaris.x64.${jprt.tools.default.release}}
|
||||
|
||||
jprt.my.linux.i586=linux_i586
|
||||
jprt.my.linux.x64=linux_x64
|
||||
jprt.my.windows.i586=windows_i586
|
||||
jprt.my.windows.x64=windows_x64
|
||||
jprt.my.linux.i586.jdk7=linux_i586_2.6
|
||||
jprt.my.linux.i586.jdk6=linux_i586_2.4
|
||||
jprt.my.linux.i586.jdk6perf=linux_i586_2.4
|
||||
jprt.my.linux.i586.jdk6u10=linux_i586_2.4
|
||||
jprt.my.linux.i586.jdk6u14=linux_i586_2.4
|
||||
jprt.my.linux.i586=${jprt.my.linux.i586.${jprt.tools.default.release}}
|
||||
|
||||
jprt.my.linux.x64.jdk7=linux_x64_2.6
|
||||
jprt.my.linux.x64.jdk6=linux_x64_2.4
|
||||
jprt.my.linux.x64.jdk6perf=linux_x64_2.4
|
||||
jprt.my.linux.x64.jdk6u10=linux_x64_2.4
|
||||
jprt.my.linux.x64.jdk6u14=linux_x64_2.4
|
||||
jprt.my.linux.x64=${jprt.my.linux.x64.${jprt.tools.default.release}}
|
||||
|
||||
jprt.my.windows.i586.jdk7=windows_i586_5.0
|
||||
jprt.my.windows.i586.jdk6=windows_i586_5.0
|
||||
jprt.my.windows.i586.jdk6perf=windows_i586_5.0
|
||||
jprt.my.windows.i586.jdk6u10=windows_i586_5.0
|
||||
jprt.my.windows.i586.jdk6u14=windows_i586_5.0
|
||||
jprt.my.windows.i586=${jprt.my.windows.i586.${jprt.tools.default.release}}
|
||||
|
||||
jprt.my.windows.x64.jdk7=windows_x64_5.2
|
||||
jprt.my.windows.x64.jdk6=windows_x64_5.2
|
||||
jprt.my.windows.x64.jdk6perf=windows_x64_5.2
|
||||
jprt.my.windows.x64.jdk6u10=windows_x64_5.2
|
||||
jprt.my.windows.x64.jdk6u14=windows_x64_5.2
|
||||
jprt.my.windows.x64=${jprt.my.windows.x64.${jprt.tools.default.release}}
|
||||
|
||||
# Standard list of jprt build targets for this source tree
|
||||
|
||||
|
||||
@ -113,6 +113,11 @@ endif
|
||||
|
||||
OPT_CFLAGS/NOOPT=-O0
|
||||
|
||||
# 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation.
|
||||
ifneq "$(shell expr \( \( $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) = 3 \) \))" "0"
|
||||
OPT_CFLAGS/mulnode.o += -O0
|
||||
endif
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
# Linker flags
|
||||
|
||||
|
||||
@ -39,7 +39,7 @@ LIBJSIG_MAPFILE = $(MAKEFILES_DIR)/mapfile-vers-jsig
|
||||
# cause problems with interposing. See CR: 6466665
|
||||
# LFLAGS_JSIG += $(MAPFLAG:FILENAME=$(LIBJSIG_MAPFILE))
|
||||
|
||||
LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT
|
||||
LFLAGS_JSIG += -D_GNU_SOURCE -D_REENTRANT $(LDFLAGS_HASH_STYLE)
|
||||
|
||||
$(LIBJSIG): $(JSIGSRCDIR)/jsig.c $(LIBJSIG_MAPFILE)
|
||||
@echo Making signal interposition lib...
|
||||
|
||||
@ -51,7 +51,7 @@ checkAndBuildSA:
|
||||
$(MAKE) -f vm.make $(LIBSAPROC); \
|
||||
fi
|
||||
|
||||
SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE))
|
||||
SA_LFLAGS = $(MAPFLAG:FILENAME=$(SAMAPFILE)) $(LDFLAGS_HASH_STYLE)
|
||||
|
||||
$(LIBSAPROC): $(SASRCFILES) $(SAMAPFILE)
|
||||
$(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
|
||||
|
||||
@ -2314,7 +2314,8 @@ bool os::commit_memory(char* addr, size_t size, size_t alignment_hint,
|
||||
void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) { }
|
||||
|
||||
void os::free_memory(char *addr, size_t bytes) {
|
||||
uncommit_memory(addr, bytes);
|
||||
::mmap(addr, bytes, PROT_READ | PROT_WRITE,
|
||||
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0);
|
||||
}
|
||||
|
||||
void os::numa_make_global(char *addr, size_t bytes) {
|
||||
@ -2361,6 +2362,19 @@ char *os::scan_pages(char *start, char* end, page_info* page_expected, page_info
|
||||
extern "C" void numa_warn(int number, char *where, ...) { }
|
||||
extern "C" void numa_error(char *where) { }
|
||||
|
||||
|
||||
// If we are running with libnuma version > 2, then we should
|
||||
// be trying to use symbols with versions 1.1
|
||||
// If we are running with earlier version, which did not have symbol versions,
|
||||
// we should use the base version.
|
||||
void* os::Linux::libnuma_dlsym(void* handle, const char *name) {
|
||||
void *f = dlvsym(handle, name, "libnuma_1.1");
|
||||
if (f == NULL) {
|
||||
f = dlsym(handle, name);
|
||||
}
|
||||
return f;
|
||||
}
|
||||
|
||||
bool os::Linux::libnuma_init() {
|
||||
// sched_getcpu() should be in libc.
|
||||
set_sched_getcpu(CAST_TO_FN_PTR(sched_getcpu_func_t,
|
||||
@ -2370,19 +2384,19 @@ bool os::Linux::libnuma_init() {
|
||||
void *handle = dlopen("libnuma.so.1", RTLD_LAZY);
|
||||
if (handle != NULL) {
|
||||
set_numa_node_to_cpus(CAST_TO_FN_PTR(numa_node_to_cpus_func_t,
|
||||
dlsym(handle, "numa_node_to_cpus")));
|
||||
libnuma_dlsym(handle, "numa_node_to_cpus")));
|
||||
set_numa_max_node(CAST_TO_FN_PTR(numa_max_node_func_t,
|
||||
dlsym(handle, "numa_max_node")));
|
||||
libnuma_dlsym(handle, "numa_max_node")));
|
||||
set_numa_available(CAST_TO_FN_PTR(numa_available_func_t,
|
||||
dlsym(handle, "numa_available")));
|
||||
libnuma_dlsym(handle, "numa_available")));
|
||||
set_numa_tonode_memory(CAST_TO_FN_PTR(numa_tonode_memory_func_t,
|
||||
dlsym(handle, "numa_tonode_memory")));
|
||||
libnuma_dlsym(handle, "numa_tonode_memory")));
|
||||
set_numa_interleave_memory(CAST_TO_FN_PTR(numa_interleave_memory_func_t,
|
||||
dlsym(handle, "numa_interleave_memory")));
|
||||
libnuma_dlsym(handle, "numa_interleave_memory")));
|
||||
|
||||
|
||||
if (numa_available() != -1) {
|
||||
set_numa_all_nodes((unsigned long*)dlsym(handle, "numa_all_nodes"));
|
||||
set_numa_all_nodes((unsigned long*)libnuma_dlsym(handle, "numa_all_nodes"));
|
||||
// Create a cpu -> node mapping
|
||||
_cpu_to_node = new (ResourceObj::C_HEAP) GrowableArray<int>(0, true);
|
||||
rebuild_cpu_to_node_map();
|
||||
|
||||
@ -147,7 +147,7 @@ class Linux {
|
||||
|
||||
static void libpthread_init();
|
||||
static bool libnuma_init();
|
||||
|
||||
static void* libnuma_dlsym(void* handle, const char* name);
|
||||
// Minimum stack size a thread can be created with (allowing
|
||||
// the VM to completely create the thread and enter user code)
|
||||
static size_t min_stack_allowed;
|
||||
|
||||
@ -53,7 +53,9 @@ void ConcurrentG1RefineThread::traversalBasedRefinement() {
|
||||
ResourceMark rm;
|
||||
HandleMark hm;
|
||||
|
||||
if (TraceG1Refine) gclog_or_tty->print_cr("G1-Refine starting pass");
|
||||
if (G1TraceConcurrentRefinement) {
|
||||
gclog_or_tty->print_cr("G1-Refine starting pass");
|
||||
}
|
||||
_sts.join();
|
||||
bool no_sleep = _cg1r->refine();
|
||||
_sts.leave();
|
||||
@ -207,9 +209,9 @@ void ConcurrentG1RefineThread::run() {
|
||||
|
||||
|
||||
void ConcurrentG1RefineThread::yield() {
|
||||
if (TraceG1Refine) gclog_or_tty->print_cr("G1-Refine-yield");
|
||||
if (G1TraceConcurrentRefinement) gclog_or_tty->print_cr("G1-Refine-yield");
|
||||
_sts.yield("G1 refine");
|
||||
if (TraceG1Refine) gclog_or_tty->print_cr("G1-Refine-yield-end");
|
||||
if (G1TraceConcurrentRefinement) gclog_or_tty->print_cr("G1-Refine-yield-end");
|
||||
}
|
||||
|
||||
void ConcurrentG1RefineThread::stop() {
|
||||
@ -230,7 +232,7 @@ void ConcurrentG1RefineThread::stop() {
|
||||
Terminator_lock->wait();
|
||||
}
|
||||
}
|
||||
if (TraceG1Refine) gclog_or_tty->print_cr("G1-Refine-stop");
|
||||
if (G1TraceConcurrentRefinement) gclog_or_tty->print_cr("G1-Refine-stop");
|
||||
}
|
||||
|
||||
void ConcurrentG1RefineThread::print() {
|
||||
|
||||
@ -448,8 +448,8 @@ ConcurrentMark::ConcurrentMark(ReservedSpace rs,
|
||||
gclog_or_tty->print_cr("[global] init, heap start = "PTR_FORMAT", "
|
||||
"heap end = "PTR_FORMAT, _heap_start, _heap_end);
|
||||
|
||||
_markStack.allocate(G1CMStackSize);
|
||||
_regionStack.allocate(G1CMRegionStackSize);
|
||||
_markStack.allocate(G1MarkStackSize);
|
||||
_regionStack.allocate(G1MarkRegionStackSize);
|
||||
|
||||
// Create & start a ConcurrentMark thread.
|
||||
if (G1ConcMark) {
|
||||
@ -499,20 +499,21 @@ ConcurrentMark::ConcurrentMark(ReservedSpace rs,
|
||||
_marking_task_overhead = 1.0;
|
||||
} else {
|
||||
if (ParallelMarkingThreads > 0) {
|
||||
// notice that ParallelMarkingThreads overwrites G1MarkingOverheadPerc
|
||||
// notice that ParallelMarkingThreads overwrites G1MarkingOverheadPercent
|
||||
// if both are set
|
||||
|
||||
_parallel_marking_threads = ParallelMarkingThreads;
|
||||
_sleep_factor = 0.0;
|
||||
_marking_task_overhead = 1.0;
|
||||
} else if (G1MarkingOverheadPerc > 0) {
|
||||
} else if (G1MarkingOverheadPercent > 0) {
|
||||
// we will calculate the number of parallel marking threads
|
||||
// based on a target overhead with respect to the soft real-time
|
||||
// goal
|
||||
|
||||
double marking_overhead = (double) G1MarkingOverheadPerc / 100.0;
|
||||
double marking_overhead = (double) G1MarkingOverheadPercent / 100.0;
|
||||
double overall_cm_overhead =
|
||||
(double) G1MaxPauseTimeMS * marking_overhead / (double) G1TimeSliceMS;
|
||||
(double) MaxGCPauseMillis * marking_overhead /
|
||||
(double) GCPauseIntervalMillis;
|
||||
double cpu_ratio = 1.0 / (double) os::processor_count();
|
||||
double marking_thread_num = ceil(overall_cm_overhead / cpu_ratio);
|
||||
double marking_task_overhead =
|
||||
@ -1747,7 +1748,7 @@ void ConcurrentMark::cleanup() {
|
||||
g1h->increment_total_collections();
|
||||
|
||||
#ifndef PRODUCT
|
||||
if (G1VerifyConcMark) {
|
||||
if (VerifyDuringGC) {
|
||||
G1CollectedHeap::heap()->prepare_for_verify();
|
||||
G1CollectedHeap::heap()->verify(true,false);
|
||||
}
|
||||
|
||||
@ -136,9 +136,6 @@ void ConcurrentMarkThread::run() {
|
||||
iter++;
|
||||
if (!cm()->has_aborted()) {
|
||||
_cm->markFromRoots();
|
||||
} else {
|
||||
if (TraceConcurrentMark)
|
||||
gclog_or_tty->print_cr("CM-skip-mark-from-roots");
|
||||
}
|
||||
|
||||
double mark_end_time = os::elapsedVTime();
|
||||
@ -163,9 +160,6 @@ void ConcurrentMarkThread::run() {
|
||||
sprintf(verbose_str, "GC remark");
|
||||
VM_CGC_Operation op(&final_cl, verbose_str);
|
||||
VMThread::execute(&op);
|
||||
} else {
|
||||
if (TraceConcurrentMark)
|
||||
gclog_or_tty->print_cr("CM-skip-remark");
|
||||
}
|
||||
if (cm()->restart_for_overflow() &&
|
||||
G1TraceMarkStackOverflow) {
|
||||
@ -208,8 +202,6 @@ void ConcurrentMarkThread::run() {
|
||||
count_end_sec - count_start_sec);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-skip-end-game");
|
||||
}
|
||||
double end_time = os::elapsedVTime();
|
||||
_vtime_count_accum += (end_time - counting_start_time);
|
||||
@ -230,7 +222,6 @@ void ConcurrentMarkThread::run() {
|
||||
VM_CGC_Operation op(&cl_cl, verbose_str);
|
||||
VMThread::execute(&op);
|
||||
} else {
|
||||
if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-skip-cleanup");
|
||||
G1CollectedHeap::heap()->set_marking_complete();
|
||||
}
|
||||
|
||||
@ -287,9 +278,7 @@ void ConcurrentMarkThread::run() {
|
||||
|
||||
|
||||
void ConcurrentMarkThread::yield() {
|
||||
if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-yield");
|
||||
_sts.yield("Concurrent Mark");
|
||||
if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-yield-end");
|
||||
}
|
||||
|
||||
void ConcurrentMarkThread::stop() {
|
||||
@ -299,7 +288,6 @@ void ConcurrentMarkThread::stop() {
|
||||
while (!_has_terminated) {
|
||||
Terminator_lock->wait();
|
||||
}
|
||||
if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-stop");
|
||||
}
|
||||
|
||||
void ConcurrentMarkThread::print() {
|
||||
@ -314,12 +302,10 @@ void ConcurrentMarkThread::sleepBeforeNextCycle() {
|
||||
// below while the world is otherwise stopped.
|
||||
MutexLockerEx x(CGC_lock, Mutex::_no_safepoint_check_flag);
|
||||
while (!started()) {
|
||||
if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-sleeping");
|
||||
CGC_lock->wait(Mutex::_no_safepoint_check_flag);
|
||||
}
|
||||
set_in_progress();
|
||||
clear_started();
|
||||
if (TraceConcurrentMark) gclog_or_tty->print_cr("CM-starting");
|
||||
}
|
||||
|
||||
// Note: this method, although exported by the ConcurrentMarkSweepThread,
|
||||
|
||||
@ -528,7 +528,7 @@ HeapRegion* G1CollectedHeap::newAllocRegion_work(size_t word_size,
|
||||
res->zero_fill_state() == HeapRegion::Allocated)),
|
||||
"Non-young alloc Regions must be zero filled (and non-H)");
|
||||
|
||||
if (G1TraceRegions) {
|
||||
if (G1PrintRegions) {
|
||||
if (res != NULL) {
|
||||
gclog_or_tty->print_cr("new alloc region %d:["PTR_FORMAT", "PTR_FORMAT"], "
|
||||
"top "PTR_FORMAT,
|
||||
@ -2282,13 +2282,13 @@ void G1CollectedHeap::print_tracing_info() const {
|
||||
// to that.
|
||||
g1_policy()->print_tracing_info();
|
||||
}
|
||||
if (SummarizeG1RSStats) {
|
||||
if (G1SummarizeRSetStats) {
|
||||
g1_rem_set()->print_summary_info();
|
||||
}
|
||||
if (SummarizeG1ConcMark) {
|
||||
if (G1SummarizeConcurrentMark) {
|
||||
concurrent_mark()->print_summary_info();
|
||||
}
|
||||
if (SummarizeG1ZFStats) {
|
||||
if (G1SummarizeZFStats) {
|
||||
ConcurrentZFThread::print_summary_info();
|
||||
}
|
||||
g1_policy()->print_yg_surv_rate_info();
|
||||
@ -3255,7 +3255,7 @@ void G1CollectedHeap::handle_evacuation_failure_common(oop old, markOop m) {
|
||||
HeapRegion* r = heap_region_containing(old);
|
||||
if (!r->evacuation_failed()) {
|
||||
r->set_evacuation_failed(true);
|
||||
if (G1TraceRegions) {
|
||||
if (G1PrintRegions) {
|
||||
gclog_or_tty->print("evacuation failed in heap region "PTR_FORMAT" "
|
||||
"["PTR_FORMAT","PTR_FORMAT")\n",
|
||||
r, r->bottom(), r->end());
|
||||
@ -3466,7 +3466,7 @@ private:
|
||||
}
|
||||
|
||||
static size_t gclab_word_size() {
|
||||
return ParallelGCG1AllocBufferSize / HeapWordSize;
|
||||
return G1ParallelGCAllocBufferSize / HeapWordSize;
|
||||
}
|
||||
|
||||
static size_t bitmap_size_in_bits() {
|
||||
@ -3616,7 +3616,7 @@ private:
|
||||
|
||||
public:
|
||||
G1ParGCAllocBuffer() :
|
||||
ParGCAllocBuffer(ParallelGCG1AllocBufferSize / HeapWordSize),
|
||||
ParGCAllocBuffer(G1ParallelGCAllocBufferSize / HeapWordSize),
|
||||
_during_marking(G1CollectedHeap::heap()->mark_in_progress()),
|
||||
_bitmap(G1CollectedHeap::heap()->reserved_region().start()),
|
||||
_retired(false)
|
||||
@ -3812,14 +3812,14 @@ public:
|
||||
|
||||
HeapWord* obj = NULL;
|
||||
if (word_sz * 100 <
|
||||
(size_t)(ParallelGCG1AllocBufferSize / HeapWordSize) *
|
||||
(size_t)(G1ParallelGCAllocBufferSize / HeapWordSize) *
|
||||
ParallelGCBufferWastePct) {
|
||||
G1ParGCAllocBuffer* alloc_buf = alloc_buffer(purpose);
|
||||
add_to_alloc_buffer_waste(alloc_buf->words_remaining());
|
||||
alloc_buf->retire(false, false);
|
||||
|
||||
HeapWord* buf =
|
||||
_g1h->par_allocate_during_gc(purpose, ParallelGCG1AllocBufferSize / HeapWordSize);
|
||||
_g1h->par_allocate_during_gc(purpose, G1ParallelGCAllocBufferSize / HeapWordSize);
|
||||
if (buf == NULL) return NULL; // Let caller handle allocation failure.
|
||||
// Otherwise.
|
||||
alloc_buf->set_buf(buf);
|
||||
@ -4331,7 +4331,7 @@ public:
|
||||
_g1h->g1_policy()->record_obj_copy_time(i, elapsed_ms-term_ms);
|
||||
_g1h->g1_policy()->record_termination_time(i, term_ms);
|
||||
}
|
||||
if (G1UseSurvivorSpace) {
|
||||
if (G1UseSurvivorSpaces) {
|
||||
_g1h->g1_policy()->record_thread_age_table(pss.age_table());
|
||||
}
|
||||
_g1h->update_surviving_young_words(pss.surviving_young_words()+1);
|
||||
@ -4435,28 +4435,6 @@ g1_process_strong_roots(bool collecting_perm_gen,
|
||||
|
||||
// XXX What should this be doing in the parallel case?
|
||||
g1_policy()->record_collection_pause_end_CH_strong_roots();
|
||||
if (G1VerifyRemSet) {
|
||||
// :::: FIXME ::::
|
||||
// The stupid remembered set doesn't know how to filter out dead
|
||||
// objects, which the smart one does, and so when it is created
|
||||
// and then compared the number of entries in each differs and
|
||||
// the verification code fails.
|
||||
guarantee(false, "verification code is broken, see note");
|
||||
|
||||
// Let's make sure that the current rem set agrees with the stupidest
|
||||
// one possible!
|
||||
bool refs_enabled = ref_processor()->discovery_enabled();
|
||||
if (refs_enabled) ref_processor()->disable_discovery();
|
||||
StupidG1RemSet stupid(this);
|
||||
count_closure.n = 0;
|
||||
stupid.oops_into_collection_set_do(&count_closure, worker_i);
|
||||
int stupid_n = count_closure.n;
|
||||
count_closure.n = 0;
|
||||
g1_rem_set()->oops_into_collection_set_do(&count_closure, worker_i);
|
||||
guarantee(count_closure.n == stupid_n, "Old and new rem sets differ.");
|
||||
gclog_or_tty->print_cr("\nFound %d pointers in heap RS.", count_closure.n);
|
||||
if (refs_enabled) ref_processor()->enable_discovery();
|
||||
}
|
||||
if (scan_so != NULL) {
|
||||
scan_scan_only_set(scan_so, worker_i);
|
||||
}
|
||||
|
||||
@ -37,8 +37,9 @@ G1CollectedHeap::heap_region_containing(const void* addr) const {
|
||||
inline HeapRegion*
|
||||
G1CollectedHeap::heap_region_containing_raw(const void* addr) const {
|
||||
assert(_g1_reserved.contains(addr), "invariant");
|
||||
size_t index = ((intptr_t) addr - (intptr_t) _g1_reserved.start())
|
||||
>> HeapRegion::LogOfHRGrainBytes;
|
||||
size_t index = pointer_delta(addr, _g1_reserved.start(), 1)
|
||||
>> HeapRegion::LogOfHRGrainBytes;
|
||||
|
||||
HeapRegion* res = _hrs->at(index);
|
||||
assert(res == _hrs->addr_to_region(addr), "sanity");
|
||||
return res;
|
||||
|
||||
@ -136,7 +136,7 @@ G1CollectorPolicy::G1CollectorPolicy() :
|
||||
_scanned_cards_seq(new TruncatedSeq(TruncatedSeqLength)),
|
||||
_rs_lengths_seq(new TruncatedSeq(TruncatedSeqLength)),
|
||||
|
||||
_pause_time_target_ms((double) G1MaxPauseTimeMS),
|
||||
_pause_time_target_ms((double) MaxGCPauseMillis),
|
||||
|
||||
// </NEW PREDICTION>
|
||||
|
||||
@ -220,7 +220,7 @@ G1CollectorPolicy::G1CollectorPolicy() :
|
||||
_par_last_termination_times_ms = new double[_parallel_gc_threads];
|
||||
|
||||
// start conservatively
|
||||
_expensive_region_limit_ms = 0.5 * (double) G1MaxPauseTimeMS;
|
||||
_expensive_region_limit_ms = 0.5 * (double) MaxGCPauseMillis;
|
||||
|
||||
// <NEW PREDICTION>
|
||||
|
||||
@ -249,12 +249,12 @@ G1CollectorPolicy::G1CollectorPolicy() :
|
||||
|
||||
// </NEW PREDICTION>
|
||||
|
||||
double time_slice = (double) G1TimeSliceMS / 1000.0;
|
||||
double max_gc_time = (double) G1MaxPauseTimeMS / 1000.0;
|
||||
double time_slice = (double) GCPauseIntervalMillis / 1000.0;
|
||||
double max_gc_time = (double) MaxGCPauseMillis / 1000.0;
|
||||
guarantee(max_gc_time < time_slice,
|
||||
"Max GC time should not be greater than the time slice");
|
||||
_mmu_tracker = new G1MMUTrackerQueue(time_slice, max_gc_time);
|
||||
_sigma = (double) G1ConfidencePerc / 100.0;
|
||||
_sigma = (double) G1ConfidencePercent / 100.0;
|
||||
|
||||
// start conservatively (around 50ms is about right)
|
||||
_concurrent_mark_init_times_ms->add(0.05);
|
||||
@ -262,7 +262,7 @@ G1CollectorPolicy::G1CollectorPolicy() :
|
||||
_concurrent_mark_cleanup_times_ms->add(0.20);
|
||||
_tenuring_threshold = MaxTenuringThreshold;
|
||||
|
||||
if (G1UseSurvivorSpace) {
|
||||
if (G1UseSurvivorSpaces) {
|
||||
// if G1FixedSurvivorSpaceSize is 0 which means the size is not
|
||||
// fixed, then _max_survivor_regions will be calculated at
|
||||
// calculate_young_list_target_config during initialization
|
||||
@ -451,7 +451,7 @@ void G1CollectorPolicy::calculate_young_list_target_config(size_t rs_lengths) {
|
||||
guarantee( adaptive_young_list_length(), "pre-condition" );
|
||||
|
||||
double start_time_sec = os::elapsedTime();
|
||||
size_t min_reserve_perc = MAX2((size_t)2, (size_t)G1MinReservePerc);
|
||||
size_t min_reserve_perc = MAX2((size_t)2, (size_t)G1MinReservePercent);
|
||||
min_reserve_perc = MIN2((size_t) 50, min_reserve_perc);
|
||||
size_t reserve_regions =
|
||||
(size_t) ((double) min_reserve_perc * (double) _g1->n_regions() / 100.0);
|
||||
@ -1109,7 +1109,7 @@ void G1CollectorPolicy::record_collection_pause_start(double start_time_sec,
|
||||
_short_lived_surv_rate_group->record_scan_only_prefix(short_lived_so_length);
|
||||
tag_scan_only(short_lived_so_length);
|
||||
|
||||
if (G1UseSurvivorSpace) {
|
||||
if (G1UseSurvivorSpaces) {
|
||||
_survivors_age_table.clear();
|
||||
}
|
||||
|
||||
@ -1826,11 +1826,11 @@ void G1CollectorPolicy::record_collection_pause_end(bool abandoned) {
|
||||
_rs_lengths_seq->add((double) _max_rs_lengths);
|
||||
|
||||
double expensive_region_limit_ms =
|
||||
(double) G1MaxPauseTimeMS - predict_constant_other_time_ms();
|
||||
(double) MaxGCPauseMillis - predict_constant_other_time_ms();
|
||||
if (expensive_region_limit_ms < 0.0) {
|
||||
// this means that the other time was predicted to be longer than
|
||||
// than the max pause time
|
||||
expensive_region_limit_ms = (double) G1MaxPauseTimeMS;
|
||||
expensive_region_limit_ms = (double) MaxGCPauseMillis;
|
||||
}
|
||||
_expensive_region_limit_ms = expensive_region_limit_ms;
|
||||
|
||||
@ -2093,24 +2093,24 @@ void G1CollectorPolicy::update_recent_gc_times(double end_time_sec,
|
||||
}
|
||||
|
||||
double G1CollectorPolicy::recent_avg_time_for_pauses_ms() {
|
||||
if (_recent_pause_times_ms->num() == 0) return (double) G1MaxPauseTimeMS;
|
||||
if (_recent_pause_times_ms->num() == 0) return (double) MaxGCPauseMillis;
|
||||
else return _recent_pause_times_ms->avg();
|
||||
}
|
||||
|
||||
double G1CollectorPolicy::recent_avg_time_for_CH_strong_ms() {
|
||||
if (_recent_CH_strong_roots_times_ms->num() == 0)
|
||||
return (double)G1MaxPauseTimeMS/3.0;
|
||||
return (double)MaxGCPauseMillis/3.0;
|
||||
else return _recent_CH_strong_roots_times_ms->avg();
|
||||
}
|
||||
|
||||
double G1CollectorPolicy::recent_avg_time_for_G1_strong_ms() {
|
||||
if (_recent_G1_strong_roots_times_ms->num() == 0)
|
||||
return (double)G1MaxPauseTimeMS/3.0;
|
||||
return (double)MaxGCPauseMillis/3.0;
|
||||
else return _recent_G1_strong_roots_times_ms->avg();
|
||||
}
|
||||
|
||||
double G1CollectorPolicy::recent_avg_time_for_evac_ms() {
|
||||
if (_recent_evac_times_ms->num() == 0) return (double)G1MaxPauseTimeMS/3.0;
|
||||
if (_recent_evac_times_ms->num() == 0) return (double)MaxGCPauseMillis/3.0;
|
||||
else return _recent_evac_times_ms->avg();
|
||||
}
|
||||
|
||||
@ -2197,17 +2197,18 @@ G1CollectorPolicy::conservative_avg_survival_fraction_work(double avg,
|
||||
}
|
||||
|
||||
size_t G1CollectorPolicy::expansion_amount() {
|
||||
if ((int)(recent_avg_pause_time_ratio() * 100.0) > G1GCPct) {
|
||||
// We will double the existing space, or take G1ExpandByPctOfAvail % of
|
||||
// the available expansion space, whichever is smaller, bounded below
|
||||
// by a minimum expansion (unless that's all that's left.)
|
||||
if ((int)(recent_avg_pause_time_ratio() * 100.0) > G1GCPercent) {
|
||||
// We will double the existing space, or take
|
||||
// G1ExpandByPercentOfAvailable % of the available expansion
|
||||
// space, whichever is smaller, bounded below by a minimum
|
||||
// expansion (unless that's all that's left.)
|
||||
const size_t min_expand_bytes = 1*M;
|
||||
size_t reserved_bytes = _g1->g1_reserved_obj_bytes();
|
||||
size_t committed_bytes = _g1->capacity();
|
||||
size_t uncommitted_bytes = reserved_bytes - committed_bytes;
|
||||
size_t expand_bytes;
|
||||
size_t expand_bytes_via_pct =
|
||||
uncommitted_bytes * G1ExpandByPctOfAvail / 100;
|
||||
uncommitted_bytes * G1ExpandByPercentOfAvailable / 100;
|
||||
expand_bytes = MIN2(expand_bytes_via_pct, committed_bytes);
|
||||
expand_bytes = MAX2(expand_bytes, min_expand_bytes);
|
||||
expand_bytes = MIN2(expand_bytes, uncommitted_bytes);
|
||||
@ -2591,7 +2592,7 @@ size_t G1CollectorPolicy::max_regions(int purpose) {
|
||||
// Calculates survivor space parameters.
|
||||
void G1CollectorPolicy::calculate_survivors_policy()
|
||||
{
|
||||
if (!G1UseSurvivorSpace) {
|
||||
if (!G1UseSurvivorSpaces) {
|
||||
return;
|
||||
}
|
||||
if (G1FixedSurvivorSpaceSize == 0) {
|
||||
@ -2851,7 +2852,7 @@ record_concurrent_mark_cleanup_end(size_t freed_bytes,
|
||||
// estimate of the number of live bytes.
|
||||
void G1CollectorPolicy::
|
||||
add_to_collection_set(HeapRegion* hr) {
|
||||
if (G1TraceRegions) {
|
||||
if (G1PrintRegions) {
|
||||
gclog_or_tty->print_cr("added region to cset %d:["PTR_FORMAT", "PTR_FORMAT"], "
|
||||
"top "PTR_FORMAT", young %s",
|
||||
hr->hrs_index(), hr->bottom(), hr->end(),
|
||||
|
||||
@ -57,7 +57,7 @@ void G1MarkSweep::invoke_at_safepoint(ReferenceProcessor* rp,
|
||||
|
||||
mark_sweep_phase1(marked_for_unloading, clear_all_softrefs);
|
||||
|
||||
if (G1VerifyConcMark) {
|
||||
if (VerifyDuringGC) {
|
||||
G1CollectedHeap* g1h = G1CollectedHeap::heap();
|
||||
g1h->checkConcurrentMark();
|
||||
}
|
||||
|
||||
@ -180,6 +180,7 @@ class ScanRSClosure : public HeapRegionClosure {
|
||||
CardTableModRefBS *_ct_bs;
|
||||
int _worker_i;
|
||||
bool _try_claimed;
|
||||
size_t _min_skip_distance, _max_skip_distance;
|
||||
public:
|
||||
ScanRSClosure(OopsInHeapRegionClosure* oc, int worker_i) :
|
||||
_oc(oc),
|
||||
@ -191,6 +192,8 @@ public:
|
||||
_g1h = G1CollectedHeap::heap();
|
||||
_bot_shared = _g1h->bot_shared();
|
||||
_ct_bs = (CardTableModRefBS*) (_g1h->barrier_set());
|
||||
_min_skip_distance = 16;
|
||||
_max_skip_distance = 2 * _g1h->n_par_threads() * _min_skip_distance;
|
||||
}
|
||||
|
||||
void set_try_claimed() { _try_claimed = true; }
|
||||
@ -245,9 +248,13 @@ public:
|
||||
HeapRegionRemSetIterator* iter = _g1h->rem_set_iterator(_worker_i);
|
||||
hrrs->init_iterator(iter);
|
||||
size_t card_index;
|
||||
size_t skip_distance = 0, current_card = 0, jump_to_card = 0;
|
||||
while (iter->has_next(card_index)) {
|
||||
if (current_card < jump_to_card) {
|
||||
++current_card;
|
||||
continue;
|
||||
}
|
||||
HeapWord* card_start = _g1h->bot_shared()->address_for_index(card_index);
|
||||
|
||||
#if 0
|
||||
gclog_or_tty->print("Rem set iteration yielded card [" PTR_FORMAT ", " PTR_FORMAT ").\n",
|
||||
card_start, card_start + CardTableModRefBS::card_size_in_words);
|
||||
@ -257,20 +264,28 @@ public:
|
||||
assert(card_region != NULL, "Yielding cards not in the heap?");
|
||||
_cards++;
|
||||
|
||||
if (!card_region->in_collection_set()) {
|
||||
// If the card is dirty, then we will scan it during updateRS.
|
||||
if (!_ct_bs->is_card_claimed(card_index) &&
|
||||
!_ct_bs->is_card_dirty(card_index)) {
|
||||
assert(_ct_bs->is_card_clean(card_index) ||
|
||||
_ct_bs->is_card_claimed(card_index) ||
|
||||
_ct_bs->is_card_deferred(card_index),
|
||||
"Card is either clean, claimed or deferred");
|
||||
if (_ct_bs->claim_card(card_index))
|
||||
// If the card is dirty, then we will scan it during updateRS.
|
||||
if (!card_region->in_collection_set() && !_ct_bs->is_card_dirty(card_index)) {
|
||||
if (!_ct_bs->is_card_claimed(card_index) && _ct_bs->claim_card(card_index)) {
|
||||
scanCard(card_index, card_region);
|
||||
}
|
||||
} else if (_try_claimed) {
|
||||
if (jump_to_card == 0 || jump_to_card != current_card) {
|
||||
// We did some useful work in the previous iteration.
|
||||
// Decrease the distance.
|
||||
skip_distance = MAX2(skip_distance >> 1, _min_skip_distance);
|
||||
} else {
|
||||
// Previous iteration resulted in a claim failure.
|
||||
// Increase the distance.
|
||||
skip_distance = MIN2(skip_distance << 1, _max_skip_distance);
|
||||
}
|
||||
jump_to_card = current_card + skip_distance;
|
||||
}
|
||||
}
|
||||
++current_card;
|
||||
}
|
||||
if (!_try_claimed) {
|
||||
hrrs->set_iter_complete();
|
||||
}
|
||||
hrrs->set_iter_complete();
|
||||
return false;
|
||||
}
|
||||
// Set all cards back to clean.
|
||||
@ -508,7 +523,7 @@ HRInto_G1RemSet::oops_into_collection_set_do(OopsInHeapRegionClosure* oc,
|
||||
// and they are causing failures. When we resolve said race
|
||||
// conditions, we'll revert back to parallel remembered set
|
||||
// updating and scanning. See CRs 6677707 and 6677708.
|
||||
if (G1EnableParallelRSetUpdating || (worker_i == 0)) {
|
||||
if (G1ParallelRSetUpdatingEnabled || (worker_i == 0)) {
|
||||
updateRS(worker_i);
|
||||
scanNewRefsRS(oc, worker_i);
|
||||
} else {
|
||||
@ -517,7 +532,7 @@ HRInto_G1RemSet::oops_into_collection_set_do(OopsInHeapRegionClosure* oc,
|
||||
_g1p->record_update_rs_time(worker_i, 0.0);
|
||||
_g1p->record_scan_new_refs_time(worker_i, 0.0);
|
||||
}
|
||||
if (G1EnableParallelRSetScanning || (worker_i == 0)) {
|
||||
if (G1ParallelRSetScanningEnabled || (worker_i == 0)) {
|
||||
scanRS(oc, worker_i);
|
||||
} else {
|
||||
_g1p->record_scan_rs_start_time(worker_i, os::elapsedTime());
|
||||
|
||||
@ -28,87 +28,65 @@
|
||||
|
||||
#define G1_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw) \
|
||||
\
|
||||
product(intx, ParallelGCG1AllocBufferSize, 8*K, \
|
||||
product(intx, G1ParallelGCAllocBufferSize, 8*K, \
|
||||
"Size of parallel G1 allocation buffers in to-space.") \
|
||||
\
|
||||
product(intx, G1TimeSliceMS, 500, \
|
||||
"Time slice for MMU specification") \
|
||||
\
|
||||
product(intx, G1MaxPauseTimeMS, 200, \
|
||||
"Max GC time per MMU time slice") \
|
||||
\
|
||||
product(intx, G1ConfidencePerc, 50, \
|
||||
product(intx, G1ConfidencePercent, 50, \
|
||||
"Confidence level for MMU/pause predictions") \
|
||||
\
|
||||
product(intx, G1MarkingOverheadPerc, 0, \
|
||||
develop(intx, G1MarkingOverheadPercent, 0, \
|
||||
"Overhead of concurrent marking") \
|
||||
\
|
||||
product(bool, G1AccountConcurrentOverhead, false, \
|
||||
develop(bool, G1AccountConcurrentOverhead, false, \
|
||||
"Whether soft real-time compliance in G1 will take into account" \
|
||||
"concurrent overhead") \
|
||||
\
|
||||
product(intx, G1YoungGenSize, 0, \
|
||||
"Size of the G1 young generation, 0 is the adaptive policy") \
|
||||
\
|
||||
product(bool, G1Gen, true, \
|
||||
develop(bool, G1Gen, true, \
|
||||
"If true, it will enable the generational G1") \
|
||||
\
|
||||
develop(intx, G1GCPct, 10, \
|
||||
develop(intx, G1GCPercent, 10, \
|
||||
"The desired percent time spent on GC") \
|
||||
\
|
||||
product(intx, G1PolicyVerbose, 0, \
|
||||
develop(intx, G1PolicyVerbose, 0, \
|
||||
"The verbosity level on G1 policy decisions") \
|
||||
\
|
||||
develop(bool, G1UseHRIntoRS, true, \
|
||||
"Determines whether the 'advanced' HR Into rem set is used.") \
|
||||
\
|
||||
product(bool, G1VerifyRemSet, false, \
|
||||
"If true, verify the rem set functioning at each GC") \
|
||||
\
|
||||
product(bool, G1VerifyConcMark, false, \
|
||||
"If true, verify the conc marking code at full GC time") \
|
||||
\
|
||||
develop(intx, G1MarkingVerboseLevel, 0, \
|
||||
"Level (0-4) of verboseness of the marking code") \
|
||||
\
|
||||
develop(bool, G1VerifyConcMarkPrintReachable, true, \
|
||||
develop(bool, G1VerifyConcMarkPrintReachable, false, \
|
||||
"If conc mark verification fails, print reachable objects") \
|
||||
\
|
||||
develop(bool, G1TraceMarkStackOverflow, false, \
|
||||
"If true, extra debugging code for CM restart for ovflw.") \
|
||||
\
|
||||
product(bool, G1VerifyMarkingInEvac, false, \
|
||||
"If true, verify marking info during evacuation") \
|
||||
\
|
||||
develop(intx, G1PausesBtwnConcMark, -1, \
|
||||
"If positive, fixed number of pauses between conc markings") \
|
||||
\
|
||||
product(intx, G1EfficiencyPctCausesMark, 80, \
|
||||
"The cum gc efficiency since mark fall-off that causes " \
|
||||
"new marking") \
|
||||
\
|
||||
product(bool, TraceConcurrentMark, false, \
|
||||
"Trace concurrent mark") \
|
||||
\
|
||||
product(bool, SummarizeG1ConcMark, false, \
|
||||
diagnostic(bool, G1SummarizeConcurrentMark, false, \
|
||||
"Summarize concurrent mark info") \
|
||||
\
|
||||
product(bool, SummarizeG1RSStats, false, \
|
||||
diagnostic(bool, G1SummarizeRSetStats, false, \
|
||||
"Summarize remembered set processing info") \
|
||||
\
|
||||
product(bool, SummarizeG1ZFStats, false, \
|
||||
diagnostic(bool, G1SummarizeZFStats, false, \
|
||||
"Summarize zero-filling info") \
|
||||
\
|
||||
product(bool, TraceG1Refine, false, \
|
||||
develop(bool, G1TraceConcurrentRefinement, false, \
|
||||
"Trace G1 concurrent refinement") \
|
||||
\
|
||||
develop(bool, G1ConcMark, true, \
|
||||
"If true, run concurrent marking for G1") \
|
||||
\
|
||||
product(intx, G1CMStackSize, 2 * 1024 * 1024, \
|
||||
product(intx, G1MarkStackSize, 2 * 1024 * 1024, \
|
||||
"Size of the mark stack for concurrent marking.") \
|
||||
\
|
||||
product(intx, G1CMRegionStackSize, 1024 * 1024, \
|
||||
product(intx, G1MarkRegionStackSize, 1024 * 1024, \
|
||||
"Size of the region stack for concurrent marking.") \
|
||||
\
|
||||
develop(bool, G1ConcRefine, true, \
|
||||
@ -121,7 +99,7 @@
|
||||
"Number of heap regions of alloc ahead of starting collection " \
|
||||
"pause to start concurrent refinement (initially)") \
|
||||
\
|
||||
product(bool, G1SmoothConcRefine, true, \
|
||||
develop(bool, G1SmoothConcRefine, true, \
|
||||
"Attempts to smooth out the overhead of concurrent refinement") \
|
||||
\
|
||||
develop(bool, G1ConcZeroFill, true, \
|
||||
@ -157,7 +135,7 @@
|
||||
develop(bool, G1SATBPrintStubs, false, \
|
||||
"If true, print generated stubs for the SATB barrier") \
|
||||
\
|
||||
product(intx, G1ExpandByPctOfAvail, 20, \
|
||||
product(intx, G1ExpandByPercentOfAvailable, 20, \
|
||||
"When expanding, % of uncommitted space to claim.") \
|
||||
\
|
||||
develop(bool, G1RSBarrierRegionFilter, true, \
|
||||
@ -179,18 +157,9 @@
|
||||
"If true, verify that no dirty cards remain after RS log " \
|
||||
"processing.") \
|
||||
\
|
||||
product(intx, G1MinPausesBetweenMarks, 2, \
|
||||
"Number of inefficient pauses necessary to trigger marking.") \
|
||||
\
|
||||
product(intx, G1InefficientPausePct, 80, \
|
||||
"Threshold of an 'inefficient' pauses (as % of cum efficiency.") \
|
||||
\
|
||||
develop(bool, G1RSCountHisto, false, \
|
||||
"If true, print a histogram of RS occupancies after each pause") \
|
||||
\
|
||||
product(bool, G1TraceFileOverwrite, false, \
|
||||
"Allow the trace file to be overwritten") \
|
||||
\
|
||||
develop(intx, G1PrintRegionLivenessInfo, 0, \
|
||||
"When > 0, print the occupancies of the <n> best and worst" \
|
||||
"regions.") \
|
||||
@ -198,9 +167,6 @@
|
||||
develop(bool, G1PrintParCleanupStats, false, \
|
||||
"When true, print extra stats about parallel cleanup.") \
|
||||
\
|
||||
product(bool, G1DoAgeCohortChecks, false, \
|
||||
"When true, check well-formedness of age cohort structures.") \
|
||||
\
|
||||
develop(bool, G1DisablePreBarrier, false, \
|
||||
"Disable generation of pre-barrier (i.e., marking barrier) ") \
|
||||
\
|
||||
@ -214,17 +180,17 @@
|
||||
develop(intx, G1ConcRSLogCacheSize, 10, \
|
||||
"Log base 2 of the length of conc RS hot-card cache.") \
|
||||
\
|
||||
product(bool, G1ConcRSCountTraversals, false, \
|
||||
develop(bool, G1ConcRSCountTraversals, false, \
|
||||
"If true, gather data about the number of times CR traverses " \
|
||||
"cards ") \
|
||||
\
|
||||
product(intx, G1ConcRSHotCardLimit, 4, \
|
||||
develop(intx, G1ConcRSHotCardLimit, 4, \
|
||||
"The threshold that defines (>=) a hot card.") \
|
||||
\
|
||||
develop(bool, G1PrintOopAppls, false, \
|
||||
"When true, print applications of closures to external locs.") \
|
||||
\
|
||||
product(intx, G1LogRSRegionEntries, 7, \
|
||||
develop(intx, G1LogRSRegionEntries, 7, \
|
||||
"Log_2 of max number of regions for which we keep bitmaps.") \
|
||||
\
|
||||
develop(bool, G1RecordHRRSOops, false, \
|
||||
@ -254,11 +220,11 @@
|
||||
"It determines whether the system will calculate an optimum " \
|
||||
"scan-only set.") \
|
||||
\
|
||||
product(intx, G1MinReservePerc, 10, \
|
||||
product(intx, G1MinReservePercent, 10, \
|
||||
"It determines the minimum reserve we should have in the heap " \
|
||||
"to minimize the probability of promotion failure.") \
|
||||
\
|
||||
product(bool, G1TraceRegions, false, \
|
||||
diagnostic(bool, G1PrintRegions, false, \
|
||||
"If set G1 will print information on which regions are being " \
|
||||
"allocated and which are reclaimed.") \
|
||||
\
|
||||
@ -268,24 +234,24 @@
|
||||
develop(bool, G1HRRSFlushLogBuffersOnVerify, false, \
|
||||
"Forces flushing of log buffers before verification.") \
|
||||
\
|
||||
product(bool, G1UseSurvivorSpace, true, \
|
||||
product(bool, G1UseSurvivorSpaces, true, \
|
||||
"When true, use survivor space.") \
|
||||
\
|
||||
product(bool, G1FixedTenuringThreshold, false, \
|
||||
develop(bool, G1FixedTenuringThreshold, false, \
|
||||
"When set, G1 will not adjust the tenuring threshold") \
|
||||
\
|
||||
product(bool, G1FixedEdenSize, false, \
|
||||
develop(bool, G1FixedEdenSize, false, \
|
||||
"When set, G1 will not allocate unused survivor space regions") \
|
||||
\
|
||||
product(uintx, G1FixedSurvivorSpaceSize, 0, \
|
||||
develop(uintx, G1FixedSurvivorSpaceSize, 0, \
|
||||
"If non-0 is the size of the G1 survivor space, " \
|
||||
"otherwise SurvivorRatio is used to determine the size") \
|
||||
\
|
||||
experimental(bool, G1EnableParallelRSetUpdating, false, \
|
||||
experimental(bool, G1ParallelRSetUpdatingEnabled, false, \
|
||||
"Enables the parallelization of remembered set updating " \
|
||||
"during evacuation pauses") \
|
||||
\
|
||||
experimental(bool, G1EnableParallelRSetScanning, false, \
|
||||
experimental(bool, G1ParallelRSetScanningEnabled, false, \
|
||||
"Enables the parallelization of remembered set scanning " \
|
||||
"during evacuation pauses")
|
||||
|
||||
|
||||
@ -160,12 +160,6 @@ HeapWord* walk_mem_region_loop(ClosureType* cl, G1CollectedHeap* g1h,
|
||||
if (!g1h->is_obj_dead(cur_oop, hr)) {
|
||||
// Bottom lies entirely below top, so we can call the
|
||||
// non-memRegion version of oop_iterate below.
|
||||
#ifndef PRODUCT
|
||||
if (G1VerifyMarkingInEvac) {
|
||||
VerifyLiveClosure vl_cl(g1h);
|
||||
cur_oop->oop_iterate(&vl_cl);
|
||||
}
|
||||
#endif
|
||||
cur_oop->oop_iterate(cl);
|
||||
}
|
||||
cur = next_obj;
|
||||
@ -197,12 +191,6 @@ void HeapRegionDCTOC::walk_mem_region_with_cl(MemRegion mr,
|
||||
// or it was allocated after marking finished, then we add it. Otherwise
|
||||
// we can safely ignore the object.
|
||||
if (!g1h->is_obj_dead(oop(bottom), _hr)) {
|
||||
#ifndef PRODUCT
|
||||
if (G1VerifyMarkingInEvac) {
|
||||
VerifyLiveClosure vl_cl(g1h);
|
||||
oop(bottom)->oop_iterate(&vl_cl, mr);
|
||||
}
|
||||
#endif
|
||||
oop_size = oop(bottom)->oop_iterate(cl2, mr);
|
||||
} else {
|
||||
oop_size = oop(bottom)->size();
|
||||
@ -232,12 +220,6 @@ void HeapRegionDCTOC::walk_mem_region_with_cl(MemRegion mr,
|
||||
|
||||
// Last object. Need to do dead-obj filtering here too.
|
||||
if (!g1h->is_obj_dead(oop(bottom), _hr)) {
|
||||
#ifndef PRODUCT
|
||||
if (G1VerifyMarkingInEvac) {
|
||||
VerifyLiveClosure vl_cl(g1h);
|
||||
oop(bottom)->oop_iterate(&vl_cl, mr);
|
||||
}
|
||||
#endif
|
||||
oop(bottom)->oop_iterate(cl2, mr);
|
||||
}
|
||||
}
|
||||
@ -713,12 +695,12 @@ void HeapRegion::verify(bool allow_dirty) const {
|
||||
G1CollectedHeap::heap()->print();
|
||||
gclog_or_tty->print_cr("");
|
||||
}
|
||||
if (G1VerifyConcMark &&
|
||||
if (VerifyDuringGC &&
|
||||
G1VerifyConcMarkPrintReachable &&
|
||||
vl_cl.failures()) {
|
||||
g1->concurrent_mark()->print_prev_bitmap_reachable();
|
||||
}
|
||||
guarantee(!vl_cl.failures(), "should not have had any failures");
|
||||
guarantee(!vl_cl.failures(), "region verification failed");
|
||||
guarantee(p == top(), "end of last object must match end of space");
|
||||
}
|
||||
|
||||
|
||||
@ -128,6 +128,10 @@ Node *CMoveNode::is_cmove_id( PhaseTransform *phase, Node *cmp, Node *t, Node *f
|
||||
// Swapped Cmp is OK
|
||||
(phase->eqv(cmp->in(2),f) &&
|
||||
phase->eqv(cmp->in(1),t)) ) {
|
||||
// Give up this identity check for floating points because it may choose incorrect
|
||||
// value around 0.0 and -0.0
|
||||
if ( cmp->Opcode()==Op_CmpF || cmp->Opcode()==Op_CmpD )
|
||||
return NULL;
|
||||
// Check for "(t==f)?t:f;" and replace with "f"
|
||||
if( b->_test._test == BoolTest::eq )
|
||||
return f;
|
||||
|
||||
@ -298,8 +298,10 @@ static Node* long_by_long_mulhi(PhaseGVN* phase, Node* dividend, jlong magic_con
|
||||
|
||||
// 6732154: Construct both w1 and w2 before transforming, so t
|
||||
// doesn't go dead prematurely.
|
||||
w1 = phase->transform(w1);
|
||||
// 6837011: We need to transform w2 before w1 because the
|
||||
// transformation of w1 could return t.
|
||||
w2 = phase->transform(w2);
|
||||
w1 = phase->transform(w1);
|
||||
|
||||
// w1 = u0*v1 + w1;
|
||||
Node* u0v1 = phase->transform(new (phase->C, 3) MulLNode(u0, v1));
|
||||
|
||||
@ -1288,10 +1288,14 @@ void Arguments::set_g1_gc_flags() {
|
||||
Abstract_VM_Version::parallel_worker_threads());
|
||||
if (ParallelGCThreads == 0) {
|
||||
FLAG_SET_DEFAULT(ParallelGCThreads,
|
||||
Abstract_VM_Version::parallel_worker_threads
|
||||
());
|
||||
Abstract_VM_Version::parallel_worker_threads());
|
||||
}
|
||||
no_shared_spaces();
|
||||
|
||||
// Set the maximum pause time goal to be a reasonable default.
|
||||
if (FLAG_IS_DEFAULT(MaxGCPauseMillis)) {
|
||||
FLAG_SET_DEFAULT(MaxGCPauseMillis, 200);
|
||||
}
|
||||
}
|
||||
|
||||
void Arguments::set_server_heap_size() {
|
||||
|
||||
@ -60,6 +60,11 @@ jlong DTraceJSDT::activate(
|
||||
methodHandle h_method =
|
||||
methodHandle(THREAD, JNIHandles::resolve_jmethod_id(probe->method));
|
||||
nmethod* nm = AdapterHandlerLibrary::create_dtrace_nmethod(h_method);
|
||||
if (nm == NULL) {
|
||||
delete probes;
|
||||
THROW_MSG_0(vmSymbols::java_lang_RuntimeException(),
|
||||
"Unable to register DTrace probes (CodeCache: no room for DTrace nmethods).");
|
||||
}
|
||||
h_method()->set_not_compilable(CompLevel_highest_tier);
|
||||
h_method()->set_code(h_method, nm);
|
||||
probes->nmethod_at_put(count++, nm);
|
||||
|
||||
@ -1819,7 +1819,11 @@ class CommandLineFlags {
|
||||
"Decay factor to TenuredGenerationSizeIncrement") \
|
||||
\
|
||||
product(uintx, MaxGCPauseMillis, max_uintx, \
|
||||
"Adaptive size policy maximum GC pause time goal in msec") \
|
||||
"Adaptive size policy maximum GC pause time goal in msec, " \
|
||||
"or (G1 Only) the max. GC time per MMU time slice") \
|
||||
\
|
||||
product(intx, GCPauseIntervalMillis, 500, \
|
||||
"Time slice for MMU specification") \
|
||||
\
|
||||
product(uintx, MaxGCMinorPauseMillis, max_uintx, \
|
||||
"Adaptive size policy maximum GC minor pause time goal in msec") \
|
||||
|
||||
@ -1776,7 +1776,14 @@ const char* AdapterHandlerEntry::name = "I2C/C2I adapters";
|
||||
GrowableArray<uint64_t>* AdapterHandlerLibrary::_fingerprints = NULL;
|
||||
GrowableArray<AdapterHandlerEntry* >* AdapterHandlerLibrary::_handlers = NULL;
|
||||
const int AdapterHandlerLibrary_size = 16*K;
|
||||
u_char AdapterHandlerLibrary::_buffer[AdapterHandlerLibrary_size + 32];
|
||||
BufferBlob* AdapterHandlerLibrary::_buffer = NULL;
|
||||
|
||||
BufferBlob* AdapterHandlerLibrary::buffer_blob() {
|
||||
// Should be called only when AdapterHandlerLibrary_lock is active.
|
||||
if (_buffer == NULL) // Initialize lazily
|
||||
_buffer = BufferBlob::create("adapters", AdapterHandlerLibrary_size);
|
||||
return _buffer;
|
||||
}
|
||||
|
||||
void AdapterHandlerLibrary::initialize() {
|
||||
if (_fingerprints != NULL) return;
|
||||
@ -1812,7 +1819,9 @@ int AdapterHandlerLibrary::get_create_adapter_index(methodHandle method) {
|
||||
assert(ic_miss != NULL, "must have handler");
|
||||
|
||||
int result;
|
||||
NOT_PRODUCT(int code_size);
|
||||
BufferBlob *B = NULL;
|
||||
AdapterHandlerEntry* entry = NULL;
|
||||
uint64_t fingerprint;
|
||||
{
|
||||
MutexLocker mu(AdapterHandlerLibrary_lock);
|
||||
@ -1850,42 +1859,45 @@ int AdapterHandlerLibrary::get_create_adapter_index(methodHandle method) {
|
||||
|
||||
// Create I2C & C2I handlers
|
||||
ResourceMark rm;
|
||||
// Improve alignment slightly
|
||||
u_char *buf = (u_char*)(((intptr_t)_buffer + CodeEntryAlignment-1) & ~(CodeEntryAlignment-1));
|
||||
CodeBuffer buffer(buf, AdapterHandlerLibrary_size);
|
||||
short buffer_locs[20];
|
||||
buffer.insts()->initialize_shared_locs((relocInfo*)buffer_locs,
|
||||
sizeof(buffer_locs)/sizeof(relocInfo));
|
||||
MacroAssembler _masm(&buffer);
|
||||
|
||||
// Fill in the signature array, for the calling-convention call.
|
||||
int total_args_passed = method->size_of_parameters(); // All args on stack
|
||||
BufferBlob* buf = buffer_blob(); // the temporary code buffer in CodeCache
|
||||
if (buf != NULL) {
|
||||
CodeBuffer buffer(buf->instructions_begin(), buf->instructions_size());
|
||||
short buffer_locs[20];
|
||||
buffer.insts()->initialize_shared_locs((relocInfo*)buffer_locs,
|
||||
sizeof(buffer_locs)/sizeof(relocInfo));
|
||||
MacroAssembler _masm(&buffer);
|
||||
|
||||
BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType,total_args_passed);
|
||||
VMRegPair * regs = NEW_RESOURCE_ARRAY(VMRegPair ,total_args_passed);
|
||||
int i=0;
|
||||
if( !method->is_static() ) // Pass in receiver first
|
||||
sig_bt[i++] = T_OBJECT;
|
||||
for( SignatureStream ss(method->signature()); !ss.at_return_type(); ss.next()) {
|
||||
sig_bt[i++] = ss.type(); // Collect remaining bits of signature
|
||||
if( ss.type() == T_LONG || ss.type() == T_DOUBLE )
|
||||
sig_bt[i++] = T_VOID; // Longs & doubles take 2 Java slots
|
||||
// Fill in the signature array, for the calling-convention call.
|
||||
int total_args_passed = method->size_of_parameters(); // All args on stack
|
||||
|
||||
BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType,total_args_passed);
|
||||
VMRegPair * regs = NEW_RESOURCE_ARRAY(VMRegPair ,total_args_passed);
|
||||
int i=0;
|
||||
if( !method->is_static() ) // Pass in receiver first
|
||||
sig_bt[i++] = T_OBJECT;
|
||||
for( SignatureStream ss(method->signature()); !ss.at_return_type(); ss.next()) {
|
||||
sig_bt[i++] = ss.type(); // Collect remaining bits of signature
|
||||
if( ss.type() == T_LONG || ss.type() == T_DOUBLE )
|
||||
sig_bt[i++] = T_VOID; // Longs & doubles take 2 Java slots
|
||||
}
|
||||
assert( i==total_args_passed, "" );
|
||||
|
||||
// Now get the re-packed compiled-Java layout.
|
||||
int comp_args_on_stack;
|
||||
|
||||
// Get a description of the compiled java calling convention and the largest used (VMReg) stack slot usage
|
||||
comp_args_on_stack = SharedRuntime::java_calling_convention(sig_bt, regs, total_args_passed, false);
|
||||
|
||||
entry = SharedRuntime::generate_i2c2i_adapters(&_masm,
|
||||
total_args_passed,
|
||||
comp_args_on_stack,
|
||||
sig_bt,
|
||||
regs);
|
||||
|
||||
B = BufferBlob::create(AdapterHandlerEntry::name, &buffer);
|
||||
NOT_PRODUCT(code_size = buffer.code_size());
|
||||
}
|
||||
assert( i==total_args_passed, "" );
|
||||
|
||||
// Now get the re-packed compiled-Java layout.
|
||||
int comp_args_on_stack;
|
||||
|
||||
// Get a description of the compiled java calling convention and the largest used (VMReg) stack slot usage
|
||||
comp_args_on_stack = SharedRuntime::java_calling_convention(sig_bt, regs, total_args_passed, false);
|
||||
|
||||
AdapterHandlerEntry* entry = SharedRuntime::generate_i2c2i_adapters(&_masm,
|
||||
total_args_passed,
|
||||
comp_args_on_stack,
|
||||
sig_bt,
|
||||
regs);
|
||||
|
||||
B = BufferBlob::create(AdapterHandlerEntry::name, &buffer);
|
||||
if (B == NULL) {
|
||||
// CodeCache is full, disable compilation
|
||||
// Ought to log this but compile log is only per compile thread
|
||||
@ -1912,9 +1924,9 @@ int AdapterHandlerLibrary::get_create_adapter_index(methodHandle method) {
|
||||
tty->cr();
|
||||
tty->print_cr("i2c argument handler #%d for: %s %s (fingerprint = 0x%llx, %d bytes generated)",
|
||||
_handlers->length(), (method->is_static() ? "static" : "receiver"),
|
||||
method->signature()->as_C_string(), fingerprint, buffer.code_size() );
|
||||
method->signature()->as_C_string(), fingerprint, code_size );
|
||||
tty->print_cr("c2i argument handler starts at %p",entry->get_c2i_entry());
|
||||
Disassembler::decode(entry->get_i2c_entry(), entry->get_i2c_entry() + buffer.code_size());
|
||||
Disassembler::decode(entry->get_i2c_entry(), entry->get_i2c_entry() + code_size);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1982,42 +1994,44 @@ nmethod *AdapterHandlerLibrary::create_native_wrapper(methodHandle method) {
|
||||
return nm;
|
||||
}
|
||||
|
||||
// Improve alignment slightly
|
||||
u_char* buf = (u_char*)(((intptr_t)_buffer + CodeEntryAlignment-1) & ~(CodeEntryAlignment-1));
|
||||
CodeBuffer buffer(buf, AdapterHandlerLibrary_size);
|
||||
// Need a few relocation entries
|
||||
double locs_buf[20];
|
||||
buffer.insts()->initialize_shared_locs((relocInfo*)locs_buf, sizeof(locs_buf) / sizeof(relocInfo));
|
||||
MacroAssembler _masm(&buffer);
|
||||
ResourceMark rm;
|
||||
|
||||
// Fill in the signature array, for the calling-convention call.
|
||||
int total_args_passed = method->size_of_parameters();
|
||||
BufferBlob* buf = buffer_blob(); // the temporary code buffer in CodeCache
|
||||
if (buf != NULL) {
|
||||
CodeBuffer buffer(buf->instructions_begin(), buf->instructions_size());
|
||||
double locs_buf[20];
|
||||
buffer.insts()->initialize_shared_locs((relocInfo*)locs_buf, sizeof(locs_buf) / sizeof(relocInfo));
|
||||
MacroAssembler _masm(&buffer);
|
||||
|
||||
BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType,total_args_passed);
|
||||
VMRegPair * regs = NEW_RESOURCE_ARRAY(VMRegPair ,total_args_passed);
|
||||
int i=0;
|
||||
if( !method->is_static() ) // Pass in receiver first
|
||||
sig_bt[i++] = T_OBJECT;
|
||||
SignatureStream ss(method->signature());
|
||||
for( ; !ss.at_return_type(); ss.next()) {
|
||||
sig_bt[i++] = ss.type(); // Collect remaining bits of signature
|
||||
if( ss.type() == T_LONG || ss.type() == T_DOUBLE )
|
||||
sig_bt[i++] = T_VOID; // Longs & doubles take 2 Java slots
|
||||
// Fill in the signature array, for the calling-convention call.
|
||||
int total_args_passed = method->size_of_parameters();
|
||||
|
||||
BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType,total_args_passed);
|
||||
VMRegPair* regs = NEW_RESOURCE_ARRAY(VMRegPair,total_args_passed);
|
||||
int i=0;
|
||||
if( !method->is_static() ) // Pass in receiver first
|
||||
sig_bt[i++] = T_OBJECT;
|
||||
SignatureStream ss(method->signature());
|
||||
for( ; !ss.at_return_type(); ss.next()) {
|
||||
sig_bt[i++] = ss.type(); // Collect remaining bits of signature
|
||||
if( ss.type() == T_LONG || ss.type() == T_DOUBLE )
|
||||
sig_bt[i++] = T_VOID; // Longs & doubles take 2 Java slots
|
||||
}
|
||||
assert( i==total_args_passed, "" );
|
||||
BasicType ret_type = ss.type();
|
||||
|
||||
// Now get the compiled-Java layout as input arguments
|
||||
int comp_args_on_stack;
|
||||
comp_args_on_stack = SharedRuntime::java_calling_convention(sig_bt, regs, total_args_passed, false);
|
||||
|
||||
// Generate the compiled-to-native wrapper code
|
||||
nm = SharedRuntime::generate_native_wrapper(&_masm,
|
||||
method,
|
||||
total_args_passed,
|
||||
comp_args_on_stack,
|
||||
sig_bt,regs,
|
||||
ret_type);
|
||||
}
|
||||
assert( i==total_args_passed, "" );
|
||||
BasicType ret_type = ss.type();
|
||||
|
||||
// Now get the compiled-Java layout as input arguments
|
||||
int comp_args_on_stack;
|
||||
comp_args_on_stack = SharedRuntime::java_calling_convention(sig_bt, regs, total_args_passed, false);
|
||||
|
||||
// Generate the compiled-to-native wrapper code
|
||||
nm = SharedRuntime::generate_native_wrapper(&_masm,
|
||||
method,
|
||||
total_args_passed,
|
||||
comp_args_on_stack,
|
||||
sig_bt,regs,
|
||||
ret_type);
|
||||
}
|
||||
|
||||
// Must unlock before calling set_code
|
||||
@ -2077,18 +2091,20 @@ nmethod *AdapterHandlerLibrary::create_dtrace_nmethod(methodHandle method) {
|
||||
return nm;
|
||||
}
|
||||
|
||||
// Improve alignment slightly
|
||||
u_char* buf = (u_char*)
|
||||
(((intptr_t)_buffer + CodeEntryAlignment-1) & ~(CodeEntryAlignment-1));
|
||||
CodeBuffer buffer(buf, AdapterHandlerLibrary_size);
|
||||
// Need a few relocation entries
|
||||
double locs_buf[20];
|
||||
buffer.insts()->initialize_shared_locs(
|
||||
(relocInfo*)locs_buf, sizeof(locs_buf) / sizeof(relocInfo));
|
||||
MacroAssembler _masm(&buffer);
|
||||
ResourceMark rm;
|
||||
|
||||
// Generate the compiled-to-native wrapper code
|
||||
nm = SharedRuntime::generate_dtrace_nmethod(&_masm, method);
|
||||
BufferBlob* buf = buffer_blob(); // the temporary code buffer in CodeCache
|
||||
if (buf != NULL) {
|
||||
CodeBuffer buffer(buf->instructions_begin(), buf->instructions_size());
|
||||
// Need a few relocation entries
|
||||
double locs_buf[20];
|
||||
buffer.insts()->initialize_shared_locs(
|
||||
(relocInfo*)locs_buf, sizeof(locs_buf) / sizeof(relocInfo));
|
||||
MacroAssembler _masm(&buffer);
|
||||
|
||||
// Generate the compiled-to-native wrapper code
|
||||
nm = SharedRuntime::generate_dtrace_nmethod(&_masm, method);
|
||||
}
|
||||
}
|
||||
return nm;
|
||||
}
|
||||
|
||||
@ -557,12 +557,13 @@ class AdapterHandlerEntry : public CHeapObj {
|
||||
|
||||
class AdapterHandlerLibrary: public AllStatic {
|
||||
private:
|
||||
static u_char _buffer[]; // the temporary code buffer
|
||||
static BufferBlob* _buffer; // the temporary code buffer in CodeCache
|
||||
static GrowableArray<uint64_t>* _fingerprints; // the fingerprint collection
|
||||
static GrowableArray<AdapterHandlerEntry*> * _handlers; // the corresponding handlers
|
||||
enum {
|
||||
AbstractMethodHandler = 1 // special handler for abstract methods
|
||||
};
|
||||
static BufferBlob* buffer_blob();
|
||||
static void initialize();
|
||||
static int get_create_adapter_index(methodHandle method);
|
||||
static address get_i2c_entry( int index ) {
|
||||
|
||||
45
hotspot/test/compiler/6837011/Test6837011.java
Normal file
45
hotspot/test/compiler/6837011/Test6837011.java
Normal file
@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright 2009 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 6837011
|
||||
* @summary SIGSEGV in PhaseIdealLoop in 32bit jvm
|
||||
*
|
||||
* @run main/othervm -Xcomp -XX:CompileOnly=Test6837011.main Test6837011
|
||||
*/
|
||||
|
||||
public class Test6837011 {
|
||||
static boolean var_3 = true;
|
||||
|
||||
public static void main(String[] args) {
|
||||
double var_5;
|
||||
char var_7 = 1;
|
||||
double var_11 = 0;
|
||||
|
||||
do {
|
||||
var_11++;
|
||||
var_5 = (var_7 /= ( var_3 ? ~1L : 3 ) );
|
||||
} while (var_11 < 1);
|
||||
}
|
||||
}
|
||||
@ -31,3 +31,5 @@ e8837366d3fd72f7c7a47ebfdbd5106c16156f12 jdk7-b53
|
||||
946a9f0c493261fa6a010dc33e61b9b535ba80c1 jdk7-b54
|
||||
039945fba683ee6773a721e2bd4e449f6133769a jdk7-b55
|
||||
c197c6801271c60f9c9f5d18fcc95b59e76dcd54 jdk7-b56
|
||||
e4851e9f7be26fc52a628be06ffa8aaea0919bd7 jdk7-b57
|
||||
13bf67d8c6341b841d268985cabaf747f2652bc8 jdk7-b58
|
||||
|
||||
@ -1,792 +0,0 @@
|
||||
/*
|
||||
* reserved comment block
|
||||
* DO NOT REMOVE OR ALTER!
|
||||
*/
|
||||
/*
|
||||
* Copyright 1999-2004 The Apache Software Foundation.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
/*
|
||||
* $Id: XSLTProcessorApplet.java,v 1.2.4.1 2005/09/15 02:20:05 jeffsuttor Exp $
|
||||
*/
|
||||
package com.sun.org.apache.xalan.internal.client;
|
||||
|
||||
import java.applet.Applet;
|
||||
import java.awt.Graphics;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Enumeration;
|
||||
|
||||
import javax.xml.transform.Templates;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerConfigurationException;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
|
||||
import com.sun.org.apache.xalan.internal.res.XSLMessages;
|
||||
import com.sun.org.apache.xalan.internal.res.XSLTErrorResources;
|
||||
|
||||
/**
|
||||
* Provides applet host for the XSLT processor. To perform transformations on an HTML client:
|
||||
* <ol>
|
||||
* <li>Use an <applet> tag to embed this applet in the HTML client.</li>
|
||||
* <li>Use the DocumentURL and StyleURL PARAM tags or the {@link #setDocumentURL} and
|
||||
* {@link #setStyleURL} methods to specify the XML source document and XSL stylesheet.</li>
|
||||
* <li>Call the {@link #getHtmlText} method (or one of the transformToHtml() methods)
|
||||
* to perform the transformation and return the result as a String.</li>
|
||||
* </ol>
|
||||
*
|
||||
* This class extends Applet which ultimately causes this class to implement Serializable.
|
||||
* This is a serious restriction on this class. All fields that are not transient and not
|
||||
* static are written-out/read-in during serialization. So even private fields essentially
|
||||
* become part of the API. Developers need to take care when modifying fields.
|
||||
* @xsl.usage general
|
||||
*/
|
||||
public class XSLTProcessorApplet extends Applet
|
||||
{
|
||||
|
||||
/**
|
||||
* The stylesheet processor.
|
||||
* This field is now transient because a
|
||||
* javax.xml.transform.TransformerFactory from JAXP
|
||||
* makes no claims to be serializable.
|
||||
*/
|
||||
transient TransformerFactory m_tfactory = null;
|
||||
|
||||
/**
|
||||
* @serial
|
||||
*/
|
||||
private String m_styleURL;
|
||||
|
||||
/**
|
||||
* @serial
|
||||
*/
|
||||
private String m_documentURL;
|
||||
|
||||
// Parameter names. To change a name of a parameter, you need only make
|
||||
// a single change. Simply modify the value of the parameter string below.
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* @serial
|
||||
*/
|
||||
private final String PARAM_styleURL = "styleURL";
|
||||
|
||||
/**
|
||||
* @serial
|
||||
*/
|
||||
private final String PARAM_documentURL = "documentURL";
|
||||
|
||||
|
||||
// We'll keep the DOM trees around, so tell which trees
|
||||
// are cached.
|
||||
|
||||
/**
|
||||
* @serial
|
||||
*/
|
||||
private String m_styleURLOfCached = null;
|
||||
|
||||
/**
|
||||
* @serial
|
||||
*/
|
||||
private String m_documentURLOfCached = null;
|
||||
|
||||
/**
|
||||
* Save this for use on the worker thread; may not be necessary.
|
||||
* @serial
|
||||
*/
|
||||
private URL m_codeBase = null;
|
||||
|
||||
/**
|
||||
* @serial
|
||||
*/
|
||||
private String m_treeURL = null;
|
||||
|
||||
/**
|
||||
* DocumentBase URL
|
||||
* @serial
|
||||
*/
|
||||
private URL m_documentBase = null;
|
||||
|
||||
/**
|
||||
* Thread stuff for the trusted worker thread.
|
||||
*/
|
||||
transient private Thread m_callThread = null;
|
||||
|
||||
/**
|
||||
*/
|
||||
transient private TrustedAgent m_trustedAgent = null;
|
||||
|
||||
/**
|
||||
* Thread for running TrustedAgent.
|
||||
*/
|
||||
transient private Thread m_trustedWorker = null;
|
||||
|
||||
/**
|
||||
* Where the worker thread puts the HTML text.
|
||||
*/
|
||||
transient private String m_htmlText = null;
|
||||
|
||||
/**
|
||||
* Where the worker thread puts the document/stylesheet text.
|
||||
*/
|
||||
transient private String m_sourceText = null;
|
||||
|
||||
/**
|
||||
* Stylesheet attribute name and value that the caller can set.
|
||||
*/
|
||||
transient private String m_nameOfIDAttrOfElemToModify = null;
|
||||
|
||||
/**
|
||||
*/
|
||||
transient private String m_elemIdToModify = null;
|
||||
|
||||
/**
|
||||
*/
|
||||
transient private String m_attrNameToSet = null;
|
||||
|
||||
/**
|
||||
*/
|
||||
transient private String m_attrValueToSet = null;
|
||||
|
||||
/**
|
||||
* The XSLTProcessorApplet constructor takes no arguments.
|
||||
*/
|
||||
public XSLTProcessorApplet(){}
|
||||
|
||||
/**
|
||||
* Get basic information about the applet
|
||||
* @return A String with the applet name and author.
|
||||
*/
|
||||
public String getAppletInfo()
|
||||
{
|
||||
return "Name: XSLTProcessorApplet\r\n" + "Author: Scott Boag";
|
||||
}
|
||||
|
||||
/**
|
||||
* Get descriptions of the applet parameters.
|
||||
* @return A two-dimensional array of Strings with Name, Type, and Description
|
||||
* for each parameter.
|
||||
*/
|
||||
public String[][] getParameterInfo()
|
||||
{
|
||||
|
||||
String[][] info =
|
||||
{
|
||||
{ PARAM_styleURL, "String", "URL to an XSL stylesheet" },
|
||||
{ PARAM_documentURL, "String", "URL to an XML document" },
|
||||
};
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard applet initialization.
|
||||
*/
|
||||
public void init()
|
||||
{
|
||||
|
||||
// PARAMETER SUPPORT
|
||||
// The following code retrieves the value of each parameter
|
||||
// specified with the <PARAM> tag and stores it in a member
|
||||
// variable.
|
||||
//----------------------------------------------------------------------
|
||||
String param;
|
||||
|
||||
// styleURL: Parameter description
|
||||
//----------------------------------------------------------------------
|
||||
param = getParameter(PARAM_styleURL);
|
||||
|
||||
// stylesheet parameters
|
||||
m_parameters = new Hashtable();
|
||||
|
||||
if (param != null)
|
||||
setStyleURL(param);
|
||||
|
||||
// documentURL: Parameter description
|
||||
//----------------------------------------------------------------------
|
||||
param = getParameter(PARAM_documentURL);
|
||||
|
||||
if (param != null)
|
||||
setDocumentURL(param);
|
||||
|
||||
m_codeBase = this.getCodeBase();
|
||||
m_documentBase = this.getDocumentBase();
|
||||
|
||||
// If you use a ResourceWizard-generated "control creator" class to
|
||||
// arrange controls in your applet, you may want to call its
|
||||
// CreateControls() method from within this method. Remove the following
|
||||
// call to resize() before adding the call to CreateControls();
|
||||
// CreateControls() does its own resizing.
|
||||
//----------------------------------------------------------------------
|
||||
resize(320, 240);
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatically called when the HTML client containing the applet loads.
|
||||
* This method starts execution of the applet thread.
|
||||
*/
|
||||
public void start()
|
||||
{
|
||||
//check if user code's on the stack before invoking the worker thread
|
||||
boolean passed = false;
|
||||
try {
|
||||
java.security.AccessController.checkPermission(new java.security.AllPermission());
|
||||
} catch (SecurityException se) {
|
||||
//expected
|
||||
passed = true;
|
||||
}
|
||||
if (!passed) {
|
||||
throw new SecurityException("The XSLTProcessorApplet class must be extended and its method start() overridden.");
|
||||
}
|
||||
|
||||
m_trustedAgent = new TrustedAgent();
|
||||
Thread currentThread = Thread.currentThread();
|
||||
m_trustedWorker = new Thread(currentThread.getThreadGroup(),
|
||||
m_trustedAgent);
|
||||
m_trustedWorker.start();
|
||||
try
|
||||
{
|
||||
m_tfactory = TransformerFactory.newInstance();
|
||||
this.showStatus("Causing Transformer and Parser to Load and JIT...");
|
||||
|
||||
// Prime the pump so that subsequent transforms are faster.
|
||||
StringReader xmlbuf = new StringReader("<?xml version='1.0'?><foo/>");
|
||||
StringReader xslbuf = new StringReader(
|
||||
"<?xml version='1.0'?><xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'><xsl:template match='foo'><out/></xsl:template></xsl:stylesheet>");
|
||||
PrintWriter pw = new PrintWriter(new StringWriter());
|
||||
|
||||
synchronized (m_tfactory)
|
||||
{
|
||||
Templates templates = m_tfactory.newTemplates(new StreamSource(xslbuf));
|
||||
Transformer transformer = templates.newTransformer();
|
||||
transformer.transform(new StreamSource(xmlbuf), new StreamResult(pw));
|
||||
}
|
||||
System.out.println("Primed the pump!");
|
||||
this.showStatus("Ready to go!");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
this.showStatus("Could not prime the pump!");
|
||||
System.out.println("Could not prime the pump!");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Do not call; this applet contains no UI or visual components.
|
||||
*
|
||||
*/
|
||||
public void paint(Graphics g){}
|
||||
|
||||
/**
|
||||
* Automatically called when the HTML page containing the applet is no longer
|
||||
* on the screen. Stops execution of the applet thread.
|
||||
*/
|
||||
public void stop()
|
||||
{
|
||||
if (null != m_trustedWorker)
|
||||
{
|
||||
m_trustedWorker.stop();
|
||||
|
||||
// m_trustedWorker.destroy();
|
||||
m_trustedWorker = null;
|
||||
}
|
||||
|
||||
m_styleURLOfCached = null;
|
||||
m_documentURLOfCached = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleanup; called when applet is terminated and unloaded.
|
||||
*/
|
||||
public void destroy()
|
||||
{
|
||||
if (null != m_trustedWorker)
|
||||
{
|
||||
m_trustedWorker.stop();
|
||||
|
||||
// m_trustedWorker.destroy();
|
||||
m_trustedWorker = null;
|
||||
}
|
||||
m_styleURLOfCached = null;
|
||||
m_documentURLOfCached = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the URL to the XSL stylesheet that will be used
|
||||
* to transform the input XML. No processing is done yet.
|
||||
* @param urlString valid URL string for XSL stylesheet.
|
||||
*/
|
||||
public void setStyleURL(String urlString)
|
||||
{
|
||||
m_styleURL = urlString;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the URL to the XML document that will be transformed
|
||||
* with the XSL stylesheet. No processing is done yet.
|
||||
* @param urlString valid URL string for XML document.
|
||||
*/
|
||||
public void setDocumentURL(String urlString)
|
||||
{
|
||||
m_documentURL = urlString;
|
||||
}
|
||||
|
||||
/**
|
||||
* The processor keeps a cache of the source and
|
||||
* style trees, so call this method if they have changed
|
||||
* or you want to do garbage collection.
|
||||
*/
|
||||
public void freeCache()
|
||||
{
|
||||
m_styleURLOfCached = null;
|
||||
m_documentURLOfCached = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set an attribute in the stylesheet, which gives the ability
|
||||
* to have some dynamic selection control.
|
||||
* @param nameOfIDAttrOfElemToModify The name of an attribute to search for a unique id.
|
||||
* @param elemId The unique ID to look for.
|
||||
* @param attrName Once the element is found, the name of the attribute to set.
|
||||
* @param value The value to set the attribute to.
|
||||
*/
|
||||
public void setStyleSheetAttribute(String nameOfIDAttrOfElemToModify,
|
||||
String elemId, String attrName,
|
||||
String value)
|
||||
{
|
||||
m_nameOfIDAttrOfElemToModify = nameOfIDAttrOfElemToModify;
|
||||
m_elemIdToModify = elemId;
|
||||
m_attrNameToSet = attrName;
|
||||
m_attrValueToSet = value;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Stylesheet parameter key/value pair stored in a hashtable
|
||||
*/
|
||||
transient Hashtable m_parameters;
|
||||
|
||||
/**
|
||||
* Submit a stylesheet parameter.
|
||||
*
|
||||
* @param key stylesheet parameter key
|
||||
* @param expr the parameter expression to be submitted.
|
||||
* @see javax.xml.transform.Transformer#setParameter(String,Object)
|
||||
*/
|
||||
public void setStylesheetParam(String key, String expr)
|
||||
{
|
||||
m_parameters.put(key, expr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a String containing markup, escape the markup so it
|
||||
* can be displayed in the browser.
|
||||
*
|
||||
* @param s String to escape
|
||||
*
|
||||
* The escaped string.
|
||||
*/
|
||||
public String escapeString(String s)
|
||||
{
|
||||
StringBuffer sb = new StringBuffer();
|
||||
int length = s.length();
|
||||
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
char ch = s.charAt(i);
|
||||
|
||||
if ('<' == ch)
|
||||
{
|
||||
sb.append("<");
|
||||
}
|
||||
else if ('>' == ch)
|
||||
{
|
||||
sb.append(">");
|
||||
}
|
||||
else if ('&' == ch)
|
||||
{
|
||||
sb.append("&");
|
||||
}
|
||||
else if (0xd800 <= ch && ch < 0xdc00)
|
||||
{
|
||||
// UTF-16 surrogate
|
||||
int next;
|
||||
|
||||
if (i + 1 >= length)
|
||||
{
|
||||
throw new RuntimeException(
|
||||
XSLMessages.createMessage(
|
||||
XSLTErrorResources.ER_INVALID_UTF16_SURROGATE,
|
||||
new Object[]{ Integer.toHexString(ch) })); //"Invalid UTF-16 surrogate detected: "
|
||||
|
||||
//+Integer.toHexString(ch)+ " ?");
|
||||
}
|
||||
else
|
||||
{
|
||||
next = s.charAt(++i);
|
||||
|
||||
if (!(0xdc00 <= next && next < 0xe000))
|
||||
throw new RuntimeException(
|
||||
XSLMessages.createMessage(
|
||||
XSLTErrorResources.ER_INVALID_UTF16_SURROGATE,
|
||||
new Object[]{
|
||||
Integer.toHexString(ch) + " "
|
||||
+ Integer.toHexString(next) })); //"Invalid UTF-16 surrogate detected: "
|
||||
|
||||
//+Integer.toHexString(ch)+" "+Integer.toHexString(next));
|
||||
next = ((ch - 0xd800) << 10) + next - 0xdc00 + 0x00010000;
|
||||
}
|
||||
sb.append("&#x");
|
||||
sb.append(Integer.toHexString(next));
|
||||
sb.append(";");
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.append(ch);
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Assuming the stylesheet URL and the input XML URL have been set,
|
||||
* perform the transformation and return the result as a String.
|
||||
*
|
||||
* @return A string that contains the contents pointed to by the URL.
|
||||
*
|
||||
*/
|
||||
public String getHtmlText()
|
||||
{
|
||||
m_trustedAgent.m_getData = true;
|
||||
m_callThread = Thread.currentThread();
|
||||
try
|
||||
{
|
||||
synchronized (m_callThread)
|
||||
{
|
||||
m_callThread.wait();
|
||||
}
|
||||
}
|
||||
catch (InterruptedException ie)
|
||||
{
|
||||
System.out.println(ie.getMessage());
|
||||
}
|
||||
return m_htmlText;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an XML document (or stylesheet)
|
||||
*
|
||||
* @param treeURL valid URL string for the document.
|
||||
*
|
||||
* @return document
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
public String getTreeAsText(String treeURL) throws IOException
|
||||
{
|
||||
m_treeURL = treeURL;
|
||||
m_trustedAgent.m_getData = true;
|
||||
m_trustedAgent.m_getSource = true;
|
||||
m_callThread = Thread.currentThread();
|
||||
try
|
||||
{
|
||||
synchronized (m_callThread)
|
||||
{
|
||||
m_callThread.wait();
|
||||
}
|
||||
}
|
||||
catch (InterruptedException ie)
|
||||
{
|
||||
System.out.println(ie.getMessage());
|
||||
}
|
||||
return m_sourceText;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use a Transformer to copy the source document
|
||||
* to a StreamResult.
|
||||
*
|
||||
* @return the document as a string
|
||||
*/
|
||||
private String getSource() throws TransformerException
|
||||
{
|
||||
StringWriter osw = new StringWriter();
|
||||
PrintWriter pw = new PrintWriter(osw, false);
|
||||
String text = "";
|
||||
try
|
||||
{
|
||||
URL docURL = new URL(m_documentBase, m_treeURL);
|
||||
synchronized (m_tfactory)
|
||||
{
|
||||
Transformer transformer = m_tfactory.newTransformer();
|
||||
StreamSource source = new StreamSource(docURL.toString());
|
||||
StreamResult result = new StreamResult(pw);
|
||||
transformer.transform(source, result);
|
||||
text = osw.toString();
|
||||
}
|
||||
}
|
||||
catch (MalformedURLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
catch (Exception any_error)
|
||||
{
|
||||
any_error.printStackTrace();
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the XML source Tree as a text string suitable
|
||||
* for display in a browser. Note that this is for display of the
|
||||
* XML itself, not for rendering of HTML by the browser.
|
||||
*
|
||||
* @return XML source document as a string.
|
||||
* @throws Exception thrown if tree can not be converted.
|
||||
*/
|
||||
public String getSourceTreeAsText() throws Exception
|
||||
{
|
||||
return getTreeAsText(m_documentURL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the XSL style Tree as a text string suitable
|
||||
* for display in a browser. Note that this is for display of the
|
||||
* XML itself, not for rendering of HTML by the browser.
|
||||
*
|
||||
* @return The XSL stylesheet as a string.
|
||||
* @throws Exception thrown if tree can not be converted.
|
||||
*/
|
||||
public String getStyleTreeAsText() throws Exception
|
||||
{
|
||||
return getTreeAsText(m_styleURL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the HTML result Tree as a text string suitable
|
||||
* for display in a browser. Note that this is for display of the
|
||||
* XML itself, not for rendering of HTML by the browser.
|
||||
*
|
||||
* @return Transformation result as unmarked text.
|
||||
* @throws Exception thrown if tree can not be converted.
|
||||
*/
|
||||
public String getResultTreeAsText() throws Exception
|
||||
{
|
||||
return escapeString(getHtmlText());
|
||||
}
|
||||
|
||||
/**
|
||||
* Process a document and a stylesheet and return
|
||||
* the transformation result. If one of these is null, the
|
||||
* existing value (of a previous transformation) is not affected.
|
||||
*
|
||||
* @param doc URL string to XML document
|
||||
* @param style URL string to XSL stylesheet
|
||||
*
|
||||
* @return HTML transformation result
|
||||
*/
|
||||
public String transformToHtml(String doc, String style)
|
||||
{
|
||||
|
||||
if (null != doc)
|
||||
{
|
||||
m_documentURL = doc;
|
||||
}
|
||||
|
||||
if (null != style)
|
||||
{
|
||||
m_styleURL = style;
|
||||
}
|
||||
|
||||
return getHtmlText();
|
||||
}
|
||||
|
||||
/**
|
||||
* Process a document and a stylesheet and return
|
||||
* the transformation result. Use the xsl:stylesheet PI to find the
|
||||
* document, if one exists.
|
||||
*
|
||||
* @param doc URL string to XML document containing an xsl:stylesheet PI.
|
||||
*
|
||||
* @return HTML transformation result
|
||||
*/
|
||||
public String transformToHtml(String doc)
|
||||
{
|
||||
|
||||
if (null != doc)
|
||||
{
|
||||
m_documentURL = doc;
|
||||
}
|
||||
|
||||
m_styleURL = null;
|
||||
|
||||
return getHtmlText();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process the transformation.
|
||||
*
|
||||
* @return The transformation result as a string.
|
||||
*
|
||||
* @throws TransformerException
|
||||
*/
|
||||
private String processTransformation() throws TransformerException
|
||||
{
|
||||
String htmlData = null;
|
||||
this.showStatus("Waiting for Transformer and Parser to finish loading and JITing...");
|
||||
|
||||
synchronized (m_tfactory)
|
||||
{
|
||||
URL documentURL = null;
|
||||
URL styleURL = null;
|
||||
StringWriter osw = new StringWriter();
|
||||
PrintWriter pw = new PrintWriter(osw, false);
|
||||
StreamResult result = new StreamResult(pw);
|
||||
|
||||
this.showStatus("Begin Transformation...");
|
||||
try
|
||||
{
|
||||
documentURL = new URL(m_codeBase, m_documentURL);
|
||||
StreamSource xmlSource = new StreamSource(documentURL.toString());
|
||||
|
||||
styleURL = new URL(m_codeBase, m_styleURL);
|
||||
StreamSource xslSource = new StreamSource(styleURL.toString());
|
||||
|
||||
Transformer transformer = m_tfactory.newTransformer(xslSource);
|
||||
|
||||
|
||||
Enumeration m_keys = m_parameters.keys();
|
||||
while (m_keys.hasMoreElements()){
|
||||
Object key = m_keys.nextElement();
|
||||
Object expression = m_parameters.get(key);
|
||||
transformer.setParameter((String) key, expression);
|
||||
}
|
||||
transformer.transform(xmlSource, result);
|
||||
}
|
||||
catch (TransformerConfigurationException tfe)
|
||||
{
|
||||
tfe.printStackTrace();
|
||||
throw new RuntimeException(tfe.getMessage());
|
||||
}
|
||||
catch (MalformedURLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
|
||||
this.showStatus("Transformation Done!");
|
||||
htmlData = osw.toString();
|
||||
}
|
||||
return htmlData;
|
||||
}
|
||||
|
||||
/**
|
||||
* This class maintains a worker thread that that is
|
||||
* trusted and can do things like access data. You need
|
||||
* this because the thread that is called by the browser
|
||||
* is not trusted and can't access data from the URLs.
|
||||
*/
|
||||
class TrustedAgent implements Runnable
|
||||
{
|
||||
|
||||
/**
|
||||
* Specifies whether the worker thread should perform a transformation.
|
||||
*/
|
||||
public boolean m_getData = false;
|
||||
|
||||
/**
|
||||
* Specifies whether the worker thread should get an XML document or XSL stylesheet.
|
||||
*/
|
||||
public boolean m_getSource = false;
|
||||
|
||||
/**
|
||||
* The real work is done from here.
|
||||
*
|
||||
*/
|
||||
public void run()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
m_trustedWorker.yield();
|
||||
|
||||
if (m_getData) // Perform a transformation or get a document.
|
||||
{
|
||||
try
|
||||
{
|
||||
m_getData = false;
|
||||
m_htmlText = null;
|
||||
m_sourceText = null;
|
||||
if (m_getSource) // Get a document.
|
||||
{
|
||||
m_getSource = false;
|
||||
m_sourceText = getSource();
|
||||
}
|
||||
else // Perform a transformation.
|
||||
m_htmlText = processTransformation();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
finally
|
||||
{
|
||||
synchronized (m_callThread)
|
||||
{
|
||||
m_callThread.notify();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
m_trustedWorker.sleep(50);
|
||||
}
|
||||
catch (InterruptedException ie)
|
||||
{
|
||||
ie.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// For compatiblity with old serialized objects
|
||||
// We will change non-serialized fields and change methods
|
||||
// and not have this break us.
|
||||
private static final long serialVersionUID=4618876841979251422L;
|
||||
|
||||
// For compatibility when de-serializing old objects
|
||||
private void readObject(java.io.ObjectInputStream inStream) throws IOException, ClassNotFoundException
|
||||
{
|
||||
inStream.defaultReadObject();
|
||||
|
||||
// Needed assignment of non-serialized fields
|
||||
|
||||
// A TransformerFactory is not guaranteed to be serializable,
|
||||
// so we create one here
|
||||
m_tfactory = TransformerFactory.newInstance();
|
||||
}
|
||||
}
|
||||
@ -1,28 +0,0 @@
|
||||
<!--
|
||||
* reserved comment block
|
||||
* DO NOT REMOVE OR ALTER!
|
||||
-->
|
||||
<!--
|
||||
* Copyright 2000-2004 The Apache Software Foundation.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
-->
|
||||
<!-- $Id: package.html,v 1.1.2.1 2005/08/01 02:11:22 jeffsuttor Exp $ -->
|
||||
<html>
|
||||
<title>Xalan Client Package.</title>
|
||||
<body>
|
||||
<p>Implementation of Xalan applet.<p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
@ -31,3 +31,5 @@ b250218eb2e534384667ec73e3713e684667fd4c jdk7-b53
|
||||
50ea00dc5f143fe00025233e704903c37f8464aa jdk7-b54
|
||||
e0eebd978b830c09e7862cff3f77a914c15651c9 jdk7-b55
|
||||
0f7fbf85f7a1d9c027a863b9955c623352ed1292 jdk7-b56
|
||||
68257a5eb19afc11aee7eb19f7250f9b9eec7c05 jdk7-b57
|
||||
5fb4fbea81c3609916da00417fdd15dbd9e39e97 jdk7-b58
|
||||
|
||||
@ -145,6 +145,7 @@ public interface JClassContainer {
|
||||
* newly created Annotation Type Declaration
|
||||
* @exception JClassAlreadyExistsException
|
||||
* When the specified class/interface was already created.
|
||||
|
||||
*/
|
||||
public JDefinedClass _annotationTypeDeclaration(String name) throws JClassAlreadyExistsException;
|
||||
|
||||
@ -156,6 +157,7 @@ public interface JClassContainer {
|
||||
* newly created Enum
|
||||
* @exception JClassAlreadyExistsException
|
||||
* When the specified class/interface was already created.
|
||||
|
||||
*/
|
||||
public JDefinedClass _enum (String name) throws JClassAlreadyExistsException;
|
||||
|
||||
|
||||
@ -428,6 +428,7 @@ public class JDefinedClass
|
||||
* newly created Annotation Type Declaration
|
||||
* @exception JClassAlreadyExistsException
|
||||
* When the specified class/interface was already created.
|
||||
|
||||
*/
|
||||
public JDefinedClass _annotationTypeDeclaration(String name) throws JClassAlreadyExistsException {
|
||||
return _class (JMod.PUBLIC,name,ClassType.ANNOTATION_TYPE_DECL);
|
||||
|
||||
@ -33,17 +33,17 @@ package com.sun.codemodel.internal;
|
||||
*/
|
||||
public final class JForEach implements JStatement {
|
||||
|
||||
private final JType type;
|
||||
private final String var;
|
||||
private JBlock body = null; // lazily created
|
||||
private final JExpression collection;
|
||||
private final JType type;
|
||||
private final String var;
|
||||
private JBlock body = null; // lazily created
|
||||
private final JExpression collection;
|
||||
private final JVar loopVar;
|
||||
|
||||
public JForEach(JType vartype, String variable, JExpression collection) {
|
||||
public JForEach(JType vartype, String variable, JExpression collection) {
|
||||
|
||||
this.type = vartype;
|
||||
this.var = variable;
|
||||
this.collection = collection;
|
||||
this.type = vartype;
|
||||
this.var = variable;
|
||||
this.collection = collection;
|
||||
loopVar = new JVar(JMods.forVar(JMod.NONE), type, var, collection);
|
||||
}
|
||||
|
||||
@ -51,24 +51,24 @@ public final class JForEach implements JStatement {
|
||||
/**
|
||||
* Returns a reference to the loop variable.
|
||||
*/
|
||||
public JVar var() {
|
||||
return loopVar;
|
||||
}
|
||||
public JVar var() {
|
||||
return loopVar;
|
||||
}
|
||||
|
||||
public JBlock body() {
|
||||
if (body == null)
|
||||
body = new JBlock();
|
||||
return body;
|
||||
}
|
||||
public JBlock body() {
|
||||
if (body == null)
|
||||
body = new JBlock();
|
||||
return body;
|
||||
}
|
||||
|
||||
public void state(JFormatter f) {
|
||||
f.p("for (");
|
||||
f.g(type).id(var).p(": ").g(collection);
|
||||
f.p(')');
|
||||
if (body != null)
|
||||
f.g(body).nl();
|
||||
else
|
||||
f.p(';').nl();
|
||||
}
|
||||
public void state(JFormatter f) {
|
||||
f.p("for (");
|
||||
f.g(type).id(var).p(": ").g(collection);
|
||||
f.p(')');
|
||||
if (body != null)
|
||||
f.g(body).nl();
|
||||
else
|
||||
f.p(';').nl();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -38,49 +38,49 @@ import com.sun.codemodel.internal.util.ClassNameComparator;
|
||||
*/
|
||||
public class JMethod extends JGenerifiableImpl implements JDeclaration, JAnnotatable {
|
||||
|
||||
/**
|
||||
* Modifiers for this method
|
||||
*/
|
||||
private JMods mods;
|
||||
/**
|
||||
* Modifiers for this method
|
||||
*/
|
||||
private JMods mods;
|
||||
|
||||
/**
|
||||
* Return type for this method
|
||||
*/
|
||||
private JType type = null;
|
||||
/**
|
||||
* Return type for this method
|
||||
*/
|
||||
private JType type = null;
|
||||
|
||||
/**
|
||||
* Name of this method
|
||||
*/
|
||||
private String name = null;
|
||||
/**
|
||||
* Name of this method
|
||||
*/
|
||||
private String name = null;
|
||||
|
||||
/**
|
||||
* List of parameters for this method's declaration
|
||||
*/
|
||||
private final List<JVar> params = new ArrayList<JVar>();
|
||||
/**
|
||||
* List of parameters for this method's declaration
|
||||
*/
|
||||
private final List<JVar> params = new ArrayList<JVar>();
|
||||
|
||||
/**
|
||||
* Set of exceptions that this method may throw.
|
||||
/**
|
||||
* Set of exceptions that this method may throw.
|
||||
* A set instance lazily created.
|
||||
*/
|
||||
private Set<JClass> _throws;
|
||||
*/
|
||||
private Set<JClass> _throws;
|
||||
|
||||
/**
|
||||
* JBlock of statements that makes up the body this method
|
||||
*/
|
||||
private JBlock body = null;
|
||||
/**
|
||||
* JBlock of statements that makes up the body this method
|
||||
*/
|
||||
private JBlock body = null;
|
||||
|
||||
private JDefinedClass outer;
|
||||
private JDefinedClass outer;
|
||||
|
||||
/**
|
||||
* javadoc comments for this JMethod
|
||||
*/
|
||||
private JDocComment jdoc = null;
|
||||
/**
|
||||
* javadoc comments for this JMethod
|
||||
*/
|
||||
private JDocComment jdoc = null;
|
||||
|
||||
/**
|
||||
* Variable parameter for this method's varargs declaration
|
||||
* introduced in J2SE 1.5
|
||||
*/
|
||||
private JVar varParam = null;
|
||||
/**
|
||||
* Variable parameter for this method's varargs declaration
|
||||
* introduced in J2SE 1.5
|
||||
*/
|
||||
private JVar varParam = null;
|
||||
|
||||
/**
|
||||
* Annotations on this variable. Lazily created.
|
||||
@ -88,9 +88,9 @@ public class JMethod extends JGenerifiableImpl implements JDeclaration, JAnnotat
|
||||
private List<JAnnotationUse> annotations = null;
|
||||
|
||||
|
||||
private boolean isConstructor() {
|
||||
return type == null;
|
||||
}
|
||||
private boolean isConstructor() {
|
||||
return type == null;
|
||||
}
|
||||
|
||||
/** To set the default value for the
|
||||
* annotation member
|
||||
@ -98,40 +98,40 @@ public class JMethod extends JGenerifiableImpl implements JDeclaration, JAnnotat
|
||||
private JExpression defaultValue = null;
|
||||
|
||||
|
||||
/**
|
||||
* JMethod constructor
|
||||
*
|
||||
* @param mods
|
||||
* Modifiers for this method's declaration
|
||||
*
|
||||
* @param type
|
||||
* Return type for the method
|
||||
*
|
||||
* @param name
|
||||
* Name of this method
|
||||
*/
|
||||
JMethod(JDefinedClass outer, int mods, JType type, String name) {
|
||||
this.mods = JMods.forMethod(mods);
|
||||
this.type = type;
|
||||
this.name = name;
|
||||
this.outer = outer;
|
||||
}
|
||||
/**
|
||||
* JMethod constructor
|
||||
*
|
||||
* @param mods
|
||||
* Modifiers for this method's declaration
|
||||
*
|
||||
* @param type
|
||||
* Return type for the method
|
||||
*
|
||||
* @param name
|
||||
* Name of this method
|
||||
*/
|
||||
JMethod(JDefinedClass outer, int mods, JType type, String name) {
|
||||
this.mods = JMods.forMethod(mods);
|
||||
this.type = type;
|
||||
this.name = name;
|
||||
this.outer = outer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor constructor
|
||||
*
|
||||
* @param mods
|
||||
* Modifiers for this constructor's declaration
|
||||
*
|
||||
* @param _class
|
||||
* JClass containing this constructor
|
||||
*/
|
||||
JMethod(int mods, JDefinedClass _class) {
|
||||
this.mods = JMods.forMethod(mods);
|
||||
this.type = null;
|
||||
this.name = _class.name();
|
||||
this.outer = _class;
|
||||
}
|
||||
/**
|
||||
* Constructor constructor
|
||||
*
|
||||
* @param mods
|
||||
* Modifiers for this constructor's declaration
|
||||
*
|
||||
* @param _class
|
||||
* JClass containing this constructor
|
||||
*/
|
||||
JMethod(int mods, JDefinedClass _class) {
|
||||
this.mods = JMods.forMethod(mods);
|
||||
this.type = null;
|
||||
this.name = _class.name();
|
||||
this.outer = _class;
|
||||
}
|
||||
|
||||
private Set<JClass> getThrows() {
|
||||
if(_throws==null)
|
||||
@ -139,56 +139,56 @@ public class JMethod extends JGenerifiableImpl implements JDeclaration, JAnnotat
|
||||
return _throws;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an exception to the list of exceptions that this
|
||||
* method may throw.
|
||||
*
|
||||
* @param exception
|
||||
* Name of an exception that this method may throw
|
||||
*/
|
||||
public JMethod _throws(JClass exception) {
|
||||
/**
|
||||
* Add an exception to the list of exceptions that this
|
||||
* method may throw.
|
||||
*
|
||||
* @param exception
|
||||
* Name of an exception that this method may throw
|
||||
*/
|
||||
public JMethod _throws(JClass exception) {
|
||||
getThrows().add(exception);
|
||||
return this;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public JMethod _throws(Class exception) {
|
||||
return _throws(outer.owner().ref(exception));
|
||||
}
|
||||
public JMethod _throws(Class exception) {
|
||||
return _throws(outer.owner().ref(exception));
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the specified variable to the list of parameters
|
||||
* for this method signature.
|
||||
*
|
||||
* @param type
|
||||
* JType of the parameter being added
|
||||
*
|
||||
* @param name
|
||||
* Name of the parameter being added
|
||||
*
|
||||
* @return New parameter variable
|
||||
*/
|
||||
public JVar param(int mods, JType type, String name) {
|
||||
JVar v = new JVar(JMods.forVar(mods), type, name, null);
|
||||
params.add(v);
|
||||
return v;
|
||||
}
|
||||
/**
|
||||
* Add the specified variable to the list of parameters
|
||||
* for this method signature.
|
||||
*
|
||||
* @param type
|
||||
* JType of the parameter being added
|
||||
*
|
||||
* @param name
|
||||
* Name of the parameter being added
|
||||
*
|
||||
* @return New parameter variable
|
||||
*/
|
||||
public JVar param(int mods, JType type, String name) {
|
||||
JVar v = new JVar(JMods.forVar(mods), type, name, null);
|
||||
params.add(v);
|
||||
return v;
|
||||
}
|
||||
|
||||
public JVar param(JType type, String name) {
|
||||
return param(JMod.NONE, type, name);
|
||||
}
|
||||
public JVar param(JType type, String name) {
|
||||
return param(JMod.NONE, type, name);
|
||||
}
|
||||
|
||||
public JVar param(int mods, Class type, String name) {
|
||||
return param(mods, outer.owner()._ref(type), name);
|
||||
}
|
||||
public JVar param(int mods, Class type, String name) {
|
||||
return param(mods, outer.owner()._ref(type), name);
|
||||
}
|
||||
|
||||
public JVar param(Class type, String name) {
|
||||
return param(outer.owner()._ref(type), name);
|
||||
}
|
||||
public JVar param(Class type, String name) {
|
||||
return param(outer.owner()._ref(type), name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #varParam(JType, String)
|
||||
*/
|
||||
public JVar varParam(Class type, String name) {
|
||||
/**
|
||||
* @see #varParam(JType, String)
|
||||
*/
|
||||
public JVar varParam(Class type, String name) {
|
||||
return varParam(outer.owner()._ref(type),name);
|
||||
}
|
||||
|
||||
@ -210,25 +210,25 @@ public class JMethod extends JGenerifiableImpl implements JDeclaration, JAnnotat
|
||||
* method signature.
|
||||
*/
|
||||
public JVar varParam(JType type, String name) {
|
||||
if (!hasVarArgs()) {
|
||||
if (!hasVarArgs()) {
|
||||
|
||||
varParam =
|
||||
new JVar(
|
||||
JMods.forVar(JMod.NONE),
|
||||
type.array(),
|
||||
name,
|
||||
null);
|
||||
return varParam;
|
||||
} else {
|
||||
throw new IllegalStateException(
|
||||
"Cannot have two varargs in a method,\n"
|
||||
+ "Check if varParam method of JMethod is"
|
||||
+ " invoked more than once");
|
||||
new JVar(
|
||||
JMods.forVar(JMod.NONE),
|
||||
type.array(),
|
||||
name,
|
||||
null);
|
||||
return varParam;
|
||||
} else {
|
||||
throw new IllegalStateException(
|
||||
"Cannot have two varargs in a method,\n"
|
||||
+ "Check if varParam method of JMethod is"
|
||||
+ " invoked more than once");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an annotation to this variable.
|
||||
* @param clazz
|
||||
@ -256,17 +256,17 @@ public class JMethod extends JGenerifiableImpl implements JDeclaration, JAnnotat
|
||||
return TypedAnnotationWriter.create(clazz,this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if there are any varargs declared
|
||||
* for this method signature.
|
||||
*/
|
||||
public boolean hasVarArgs() {
|
||||
return this.varParam!=null;
|
||||
}
|
||||
/**
|
||||
* Check if there are any varargs declared
|
||||
* for this method signature.
|
||||
*/
|
||||
public boolean hasVarArgs() {
|
||||
return this.varParam!=null;
|
||||
}
|
||||
|
||||
public String name() {
|
||||
return name;
|
||||
}
|
||||
public String name() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes the name of the method.
|
||||
@ -276,11 +276,11 @@ public class JMethod extends JGenerifiableImpl implements JDeclaration, JAnnotat
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the return type.
|
||||
*/
|
||||
public JType type() {
|
||||
return type;
|
||||
}
|
||||
* Returns the return type.
|
||||
*/
|
||||
public JType type() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides the return type.
|
||||
@ -290,72 +290,72 @@ public class JMethod extends JGenerifiableImpl implements JDeclaration, JAnnotat
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the parameter types in an array.
|
||||
* @return
|
||||
* If there's no parameter, an empty array will be returned.
|
||||
*/
|
||||
public JType[] listParamTypes() {
|
||||
JType[] r = new JType[params.size()];
|
||||
for (int i = 0; i < r.length; i++)
|
||||
r[i] = params.get(i).type();
|
||||
return r;
|
||||
}
|
||||
* Returns all the parameter types in an array.
|
||||
* @return
|
||||
* If there's no parameter, an empty array will be returned.
|
||||
*/
|
||||
public JType[] listParamTypes() {
|
||||
JType[] r = new JType[params.size()];
|
||||
for (int i = 0; i < r.length; i++)
|
||||
r[i] = params.get(i).type();
|
||||
return r;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the varags parameter type.
|
||||
* @return
|
||||
* If there's no vararg parameter type, null will be returned.
|
||||
*/
|
||||
public JType listVarParamType() {
|
||||
if (varParam != null)
|
||||
return varParam.type();
|
||||
else
|
||||
return null;
|
||||
}
|
||||
/**
|
||||
* Returns the varags parameter type.
|
||||
* @return
|
||||
* If there's no vararg parameter type, null will be returned.
|
||||
*/
|
||||
public JType listVarParamType() {
|
||||
if (varParam != null)
|
||||
return varParam.type();
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the parameters in an array.
|
||||
* @return
|
||||
* If there's no parameter, an empty array will be returned.
|
||||
*/
|
||||
public JVar[] listParams() {
|
||||
return params.toArray(new JVar[params.size()]);
|
||||
}
|
||||
/**
|
||||
* Returns all the parameters in an array.
|
||||
* @return
|
||||
* If there's no parameter, an empty array will be returned.
|
||||
*/
|
||||
public JVar[] listParams() {
|
||||
return params.toArray(new JVar[params.size()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the variable parameter
|
||||
* @return
|
||||
* If there's no parameter, null will be returned.
|
||||
*/
|
||||
public JVar listVarParam() {
|
||||
return varParam;
|
||||
}
|
||||
/**
|
||||
* Returns the variable parameter
|
||||
* @return
|
||||
* If there's no parameter, null will be returned.
|
||||
*/
|
||||
public JVar listVarParam() {
|
||||
return varParam;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the method has the specified signature.
|
||||
*/
|
||||
public boolean hasSignature(JType[] argTypes) {
|
||||
JVar[] p = listParams();
|
||||
if (p.length != argTypes.length)
|
||||
return false;
|
||||
/**
|
||||
* Returns true if the method has the specified signature.
|
||||
*/
|
||||
public boolean hasSignature(JType[] argTypes) {
|
||||
JVar[] p = listParams();
|
||||
if (p.length != argTypes.length)
|
||||
return false;
|
||||
|
||||
for (int i = 0; i < p.length; i++)
|
||||
if (!p[i].type().equals(argTypes[i]))
|
||||
return false;
|
||||
for (int i = 0; i < p.length; i++)
|
||||
if (!p[i].type().equals(argTypes[i]))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the block that makes up body of this method
|
||||
*
|
||||
* @return Body of method
|
||||
*/
|
||||
public JBlock body() {
|
||||
if (body == null)
|
||||
body = new JBlock();
|
||||
return body;
|
||||
}
|
||||
/**
|
||||
* Get the block that makes up body of this method
|
||||
*
|
||||
* @return Body of method
|
||||
*/
|
||||
public JBlock body() {
|
||||
if (body == null)
|
||||
body = new JBlock();
|
||||
return body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify the default value for this annotation member
|
||||
@ -367,37 +367,37 @@ public class JMethod extends JGenerifiableImpl implements JDeclaration, JAnnotat
|
||||
this.defaultValue = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates, if necessary, and returns the class javadoc for this
|
||||
* JDefinedClass
|
||||
*
|
||||
* @return JDocComment containing javadocs for this class
|
||||
*/
|
||||
public JDocComment javadoc() {
|
||||
if (jdoc == null)
|
||||
jdoc = new JDocComment(owner());
|
||||
return jdoc;
|
||||
}
|
||||
/**
|
||||
* Creates, if necessary, and returns the class javadoc for this
|
||||
* JDefinedClass
|
||||
*
|
||||
* @return JDocComment containing javadocs for this class
|
||||
*/
|
||||
public JDocComment javadoc() {
|
||||
if (jdoc == null)
|
||||
jdoc = new JDocComment(owner());
|
||||
return jdoc;
|
||||
}
|
||||
|
||||
public void declare(JFormatter f) {
|
||||
if (jdoc != null)
|
||||
f.g(jdoc);
|
||||
public void declare(JFormatter f) {
|
||||
if (jdoc != null)
|
||||
f.g(jdoc);
|
||||
|
||||
if (annotations != null){
|
||||
for (JAnnotationUse a : annotations)
|
||||
f.g(a).nl();
|
||||
}
|
||||
|
||||
// declare the generics parameters
|
||||
super.declare(f);
|
||||
// declare the generics parameters
|
||||
super.declare(f);
|
||||
|
||||
f.g(mods);
|
||||
if (!isConstructor())
|
||||
f.g(type);
|
||||
f.id(name).p('(').i();
|
||||
f.g(mods);
|
||||
if (!isConstructor())
|
||||
f.g(type);
|
||||
f.id(name).p('(').i();
|
||||
// when parameters are printed in new lines, we want them to be indented.
|
||||
// there's a good chance no newlines happen, too, but just in case it does.
|
||||
boolean first = true;
|
||||
boolean first = true;
|
||||
for (JVar var : params) {
|
||||
if (!first)
|
||||
f.p(',');
|
||||
@ -406,33 +406,33 @@ public class JMethod extends JGenerifiableImpl implements JDeclaration, JAnnotat
|
||||
f.b(var);
|
||||
first = false;
|
||||
}
|
||||
if (hasVarArgs()) {
|
||||
if (!first)
|
||||
f.p(',');
|
||||
f.g(varParam.type().elementType());
|
||||
f.p("... ");
|
||||
f.id(varParam.name());
|
||||
}
|
||||
if (hasVarArgs()) {
|
||||
if (!first)
|
||||
f.p(',');
|
||||
f.g(varParam.type().elementType());
|
||||
f.p("... ");
|
||||
f.id(varParam.name());
|
||||
}
|
||||
|
||||
f.o().p(')');
|
||||
if (_throws!=null && !_throws.isEmpty()) {
|
||||
f.nl().i().p("throws").g(_throws).nl().o();
|
||||
}
|
||||
f.o().p(')');
|
||||
if (_throws!=null && !_throws.isEmpty()) {
|
||||
f.nl().i().p("throws").g(_throws).nl().o();
|
||||
}
|
||||
|
||||
if (defaultValue != null) {
|
||||
f.p("default ");
|
||||
f.g(defaultValue);
|
||||
}
|
||||
if (body != null) {
|
||||
f.s(body);
|
||||
} else if (
|
||||
!outer.isInterface() && !outer.isAnnotationTypeDeclaration() && !mods.isAbstract() && !mods.isNative()) {
|
||||
// Print an empty body for non-native, non-abstract methods
|
||||
f.s(new JBlock());
|
||||
} else {
|
||||
f.p(';').nl();
|
||||
if (body != null) {
|
||||
f.s(body);
|
||||
} else if (
|
||||
!outer.isInterface() && !outer.isAnnotationTypeDeclaration() && !mods.isAbstract() && !mods.isNative()) {
|
||||
// Print an empty body for non-native, non-abstract methods
|
||||
f.s(new JBlock());
|
||||
} else {
|
||||
f.p(';').nl();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
@ -447,10 +447,10 @@ public class JMethod extends JGenerifiableImpl implements JDeclaration, JAnnotat
|
||||
* @deprecated use {@link #mods()}
|
||||
*/
|
||||
public JMods getMods() {
|
||||
return mods;
|
||||
}
|
||||
return mods;
|
||||
}
|
||||
|
||||
protected JCodeModel owner() {
|
||||
return outer.owner();
|
||||
}
|
||||
protected JCodeModel owner() {
|
||||
return outer.owner();
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,17 +41,17 @@ public class JMods implements JGenerable {
|
||||
= JMod.FINAL;
|
||||
|
||||
private static int FIELD
|
||||
= (JMod.PUBLIC | JMod.PRIVATE | JMod.PROTECTED
|
||||
| JMod.STATIC | JMod.FINAL
|
||||
| JMod.TRANSIENT | JMod.VOLATILE);
|
||||
= (JMod.PUBLIC | JMod.PRIVATE | JMod.PROTECTED
|
||||
| JMod.STATIC | JMod.FINAL
|
||||
| JMod.TRANSIENT | JMod.VOLATILE);
|
||||
|
||||
private static int METHOD
|
||||
= (JMod.PUBLIC | JMod.PRIVATE | JMod.PROTECTED | JMod.FINAL
|
||||
| JMod.ABSTRACT | JMod.STATIC | JMod.NATIVE | JMod.SYNCHRONIZED);
|
||||
= (JMod.PUBLIC | JMod.PRIVATE | JMod.PROTECTED | JMod.FINAL
|
||||
| JMod.ABSTRACT | JMod.STATIC | JMod.NATIVE | JMod.SYNCHRONIZED);
|
||||
|
||||
private static int CLASS
|
||||
= (JMod.PUBLIC | JMod.PRIVATE | JMod.PROTECTED
|
||||
| JMod.STATIC | JMod.FINAL | JMod.ABSTRACT );
|
||||
= (JMod.PUBLIC | JMod.PRIVATE | JMod.PROTECTED
|
||||
| JMod.STATIC | JMod.FINAL | JMod.ABSTRACT );
|
||||
|
||||
private static int INTERFACE = JMod.PUBLIC;
|
||||
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* @(#)SingleByteEncoder.java 1.14 03/01/23
|
||||
* @(#)SingleByteEncoder.java 1.14 03/01/23
|
||||
*/
|
||||
|
||||
package com.sun.codemodel.internal.util;
|
||||
@ -51,109 +51,109 @@ abstract class SingleByteEncoder
|
||||
private final Surrogate.Parser sgp = new Surrogate.Parser();
|
||||
|
||||
protected SingleByteEncoder(Charset cs,
|
||||
short[] index1, String index2,
|
||||
int mask1, int mask2, int shift)
|
||||
short[] index1, String index2,
|
||||
int mask1, int mask2, int shift)
|
||||
{
|
||||
super(cs, 1.0f, 1.0f);
|
||||
this.index1 = index1;
|
||||
this.index2 = index2;
|
||||
this.mask1 = mask1;
|
||||
this.mask2 = mask2;
|
||||
this.shift = shift;
|
||||
super(cs, 1.0f, 1.0f);
|
||||
this.index1 = index1;
|
||||
this.index2 = index2;
|
||||
this.mask1 = mask1;
|
||||
this.mask2 = mask2;
|
||||
this.shift = shift;
|
||||
}
|
||||
|
||||
public boolean canEncode(char c) {
|
||||
char testEncode;
|
||||
testEncode = index2.charAt(index1[(c & mask1) >> shift]
|
||||
+ (c & mask2));
|
||||
if (testEncode == '\u0000')
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
char testEncode;
|
||||
testEncode = index2.charAt(index1[(c & mask1) >> shift]
|
||||
+ (c & mask2));
|
||||
if (testEncode == '\u0000')
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
private CoderResult encodeArrayLoop(CharBuffer src, ByteBuffer dst) {
|
||||
char[] sa = src.array();
|
||||
int sp = src.arrayOffset() + src.position();
|
||||
int sl = src.arrayOffset() + src.limit();
|
||||
sp = (sp <= sl ? sp : sl);
|
||||
byte[] da = dst.array();
|
||||
int dp = dst.arrayOffset() + dst.position();
|
||||
int dl = dst.arrayOffset() + dst.limit();
|
||||
dp = (dp <= dl ? dp : dl);
|
||||
char[] sa = src.array();
|
||||
int sp = src.arrayOffset() + src.position();
|
||||
int sl = src.arrayOffset() + src.limit();
|
||||
sp = (sp <= sl ? sp : sl);
|
||||
byte[] da = dst.array();
|
||||
int dp = dst.arrayOffset() + dst.position();
|
||||
int dl = dst.arrayOffset() + dst.limit();
|
||||
dp = (dp <= dl ? dp : dl);
|
||||
|
||||
try {
|
||||
while (sp < sl) {
|
||||
char c = sa[sp];
|
||||
if (Surrogate.is(c)) {
|
||||
if (sgp.parse(c, sa, sp, sl) < 0)
|
||||
return sgp.error();
|
||||
return sgp.unmappableResult();
|
||||
}
|
||||
if (c >= '\uFFFE')
|
||||
return CoderResult.unmappableForLength(1);
|
||||
if (dl - dp < 1)
|
||||
return CoderResult.OVERFLOW;
|
||||
try {
|
||||
while (sp < sl) {
|
||||
char c = sa[sp];
|
||||
if (Surrogate.is(c)) {
|
||||
if (sgp.parse(c, sa, sp, sl) < 0)
|
||||
return sgp.error();
|
||||
return sgp.unmappableResult();
|
||||
}
|
||||
if (c >= '\uFFFE')
|
||||
return CoderResult.unmappableForLength(1);
|
||||
if (dl - dp < 1)
|
||||
return CoderResult.OVERFLOW;
|
||||
|
||||
char e = index2.charAt(index1[(c & mask1) >> shift]
|
||||
+ (c & mask2));
|
||||
char e = index2.charAt(index1[(c & mask1) >> shift]
|
||||
+ (c & mask2));
|
||||
|
||||
// If output byte is zero because input char is zero
|
||||
// then character is mappable, o.w. fail
|
||||
if (e == '\u0000' && c != '\u0000')
|
||||
return CoderResult.unmappableForLength(1);
|
||||
// If output byte is zero because input char is zero
|
||||
// then character is mappable, o.w. fail
|
||||
if (e == '\u0000' && c != '\u0000')
|
||||
return CoderResult.unmappableForLength(1);
|
||||
|
||||
sp++;
|
||||
da[dp++] = (byte)e;
|
||||
}
|
||||
return CoderResult.UNDERFLOW;
|
||||
} finally {
|
||||
src.position(sp - src.arrayOffset());
|
||||
dst.position(dp - dst.arrayOffset());
|
||||
}
|
||||
sp++;
|
||||
da[dp++] = (byte)e;
|
||||
}
|
||||
return CoderResult.UNDERFLOW;
|
||||
} finally {
|
||||
src.position(sp - src.arrayOffset());
|
||||
dst.position(dp - dst.arrayOffset());
|
||||
}
|
||||
}
|
||||
|
||||
private CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) {
|
||||
int mark = src.position();
|
||||
try {
|
||||
while (src.hasRemaining()) {
|
||||
char c = src.get();
|
||||
if (Surrogate.is(c)) {
|
||||
if (sgp.parse(c, src) < 0)
|
||||
return sgp.error();
|
||||
return sgp.unmappableResult();
|
||||
}
|
||||
if (c >= '\uFFFE')
|
||||
return CoderResult.unmappableForLength(1);
|
||||
if (!dst.hasRemaining())
|
||||
return CoderResult.OVERFLOW;
|
||||
int mark = src.position();
|
||||
try {
|
||||
while (src.hasRemaining()) {
|
||||
char c = src.get();
|
||||
if (Surrogate.is(c)) {
|
||||
if (sgp.parse(c, src) < 0)
|
||||
return sgp.error();
|
||||
return sgp.unmappableResult();
|
||||
}
|
||||
if (c >= '\uFFFE')
|
||||
return CoderResult.unmappableForLength(1);
|
||||
if (!dst.hasRemaining())
|
||||
return CoderResult.OVERFLOW;
|
||||
|
||||
char e = index2.charAt(index1[(c & mask1) >> shift]
|
||||
+ (c & mask2));
|
||||
char e = index2.charAt(index1[(c & mask1) >> shift]
|
||||
+ (c & mask2));
|
||||
|
||||
// If output byte is zero because input char is zero
|
||||
// then character is mappable, o.w. fail
|
||||
if (e == '\u0000' && c != '\u0000')
|
||||
return CoderResult.unmappableForLength(1);
|
||||
// If output byte is zero because input char is zero
|
||||
// then character is mappable, o.w. fail
|
||||
if (e == '\u0000' && c != '\u0000')
|
||||
return CoderResult.unmappableForLength(1);
|
||||
|
||||
mark++;
|
||||
dst.put((byte)e);
|
||||
}
|
||||
return CoderResult.UNDERFLOW;
|
||||
} finally {
|
||||
src.position(mark);
|
||||
}
|
||||
mark++;
|
||||
dst.put((byte)e);
|
||||
}
|
||||
return CoderResult.UNDERFLOW;
|
||||
} finally {
|
||||
src.position(mark);
|
||||
}
|
||||
}
|
||||
|
||||
protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
|
||||
if (true && src.hasArray() && dst.hasArray())
|
||||
return encodeArrayLoop(src, dst);
|
||||
else
|
||||
return encodeBufferLoop(src, dst);
|
||||
if (true && src.hasArray() && dst.hasArray())
|
||||
return encodeArrayLoop(src, dst);
|
||||
else
|
||||
return encodeBufferLoop(src, dst);
|
||||
}
|
||||
|
||||
public byte encode(char inputChar) {
|
||||
return (byte)index2.charAt(index1[(inputChar & mask1) >> shift] +
|
||||
(inputChar & mask2));
|
||||
return (byte)index2.charAt(index1[(inputChar & mask1) >> shift] +
|
||||
(inputChar & mask2));
|
||||
}
|
||||
}
|
||||
|
||||
@ -112,7 +112,7 @@ class Surrogate {
|
||||
|
||||
public Parser() { }
|
||||
|
||||
private int character; // UCS-4
|
||||
private int character; // UCS-4
|
||||
private CoderResult error = CoderResult.UNDERFLOW;
|
||||
private boolean isPair;
|
||||
|
||||
|
||||
@ -55,12 +55,19 @@ import com.sun.xml.internal.messaging.saaj.util.*;
|
||||
*/
|
||||
public class HttpSOAPConnection extends SOAPConnection {
|
||||
|
||||
protected static Logger log =
|
||||
public static final String vmVendor = System.getProperty("java.vendor.url");
|
||||
private static final String sunVmVendor = "http://java.sun.com/";
|
||||
private static final String ibmVmVendor = "http://www.ibm.com/";
|
||||
private static final boolean isSunVM = sunVmVendor.equals(vmVendor) ? true: false;
|
||||
private static final boolean isIBMVM = ibmVmVendor.equals(vmVendor) ? true : false;
|
||||
private static final String JAXM_URLENDPOINT="javax.xml.messaging.URLEndpoint";
|
||||
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.HTTP_CONN_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.client.p2p.LocalStrings");
|
||||
|
||||
public static String defaultProxyHost = null;
|
||||
public static int defaultProxyPort = -1;
|
||||
public static final String defaultProxyHost = null;
|
||||
public static final int defaultProxyPort = -1;
|
||||
|
||||
MessageFactory messageFactory = null;
|
||||
|
||||
@ -72,6 +79,9 @@ public class HttpSOAPConnection extends SOAPConnection {
|
||||
|
||||
try {
|
||||
messageFactory = MessageFactory.newInstance(SOAPConstants.DYNAMIC_SOAP_PROTOCOL);
|
||||
} catch (NoSuchMethodError ex) {
|
||||
//fallback to default SOAP 1.1 in this case for backward compatibility
|
||||
messageFactory = MessageFactory.newInstance();
|
||||
} catch (Exception ex) {
|
||||
log.log(Level.SEVERE, "SAAJ0001.p2p.cannot.create.msg.factory", ex);
|
||||
throw new SOAPExceptionImpl("Unable to create message factory", ex);
|
||||
@ -96,13 +106,18 @@ public class HttpSOAPConnection extends SOAPConnection {
|
||||
}
|
||||
|
||||
Class urlEndpointClass = null;
|
||||
ClassLoader loader = Thread.currentThread().getContextClassLoader();
|
||||
|
||||
try {
|
||||
urlEndpointClass = Class.forName("javax.xml.messaging.URLEndpoint");
|
||||
} catch (Exception ex) {
|
||||
//Do nothing. URLEndpoint is available only when JAXM is there.
|
||||
log.finest("SAAJ0090.p2p.endpoint.available.only.for.JAXM");
|
||||
}
|
||||
if (loader != null) {
|
||||
urlEndpointClass = loader.loadClass(JAXM_URLENDPOINT);
|
||||
} else {
|
||||
urlEndpointClass = Class.forName(JAXM_URLENDPOINT);
|
||||
}
|
||||
} catch (ClassNotFoundException ex) {
|
||||
//Do nothing. URLEndpoint is available only when JAXM is there.
|
||||
log.finest("SAAJ0090.p2p.endpoint.available.only.for.JAXM");
|
||||
}
|
||||
|
||||
if (urlEndpointClass != null) {
|
||||
if (urlEndpointClass.isInstance(endPoint)) {
|
||||
@ -639,10 +654,23 @@ public class HttpSOAPConnection extends SOAPConnection {
|
||||
|
||||
return ret;
|
||||
}
|
||||
//private static String SSL_PKG = "com.sun.net.ssl.internal.www.protocol";
|
||||
//private static String SSL_PROVIDER =
|
||||
// "com.sun.net.ssl.internal.ssl.Provider";
|
||||
private static final String SSL_PKG;
|
||||
private static final String SSL_PROVIDER;
|
||||
|
||||
private static String SSL_PKG = "com.sun.net.ssl.internal.www.protocol";
|
||||
private static String SSL_PROVIDER =
|
||||
"com.sun.net.ssl.internal.ssl.Provider";
|
||||
|
||||
static {
|
||||
if (isIBMVM) {
|
||||
SSL_PKG ="com.ibm.net.ssl.internal.www.protocol";
|
||||
SSL_PROVIDER ="com.ibm.net.ssl.internal.ssl.Provider";
|
||||
} else {
|
||||
//if not IBM VM default to Sun.
|
||||
SSL_PKG = "com.sun.net.ssl.internal.www.protocol";
|
||||
SSL_PROVIDER ="com.sun.net.ssl.internal.ssl.Provider";
|
||||
}
|
||||
}
|
||||
private void initHttps() {
|
||||
//if(!setHttps) {
|
||||
String pkgs = System.getProperty("java.protocol.handler.pkgs");
|
||||
|
||||
@ -70,7 +70,7 @@ import javax.xml.soap.*;
|
||||
*/
|
||||
public class AttachmentPartImpl extends AttachmentPart {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
|
||||
|
||||
|
||||
@ -23,9 +23,9 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: EnvelopeFactory.java,v 1.24 2006/01/27 12:49:26 vj135062 Exp $
|
||||
* $Revision: 1.24 $
|
||||
* $Date: 2006/01/27 12:49:26 $
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -55,7 +55,7 @@ import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTran
|
||||
*/
|
||||
public class EnvelopeFactory {
|
||||
|
||||
protected static Logger
|
||||
protected static final Logger
|
||||
log = Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
|
||||
|
||||
|
||||
@ -49,7 +49,7 @@ import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
|
||||
public class ImageDataContentHandler extends Component
|
||||
implements DataContentHandler {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
|
||||
|
||||
|
||||
@ -23,9 +23,9 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: MessageFactoryImpl.java,v 1.23 2006/01/27 12:49:27 vj135062 Exp $
|
||||
* $Revision: 1.23 $
|
||||
* $Date: 2006/01/27 12:49:27 $
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -54,15 +54,15 @@ import com.sun.xml.internal.messaging.saaj.util.TeeInputStream;
|
||||
*/
|
||||
public class MessageFactoryImpl extends MessageFactory {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
|
||||
|
||||
protected static OutputStream listener;
|
||||
protected OutputStream listener;
|
||||
|
||||
protected boolean lazyAttachments = false;
|
||||
|
||||
public static OutputStream listen(OutputStream newListener) {
|
||||
public OutputStream listen(OutputStream newListener) {
|
||||
OutputStream oldListener = listener;
|
||||
listener = newListener;
|
||||
return oldListener;
|
||||
|
||||
@ -23,9 +23,9 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: MessageImpl.java,v 1.5 2006/12/12 10:16:33 kumarjayanti Exp $
|
||||
* $Revision: 1.5 $
|
||||
* $Date: 2006/12/12 10:16:33 $
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -69,7 +69,7 @@ public abstract class MessageImpl
|
||||
public static final String CONTENT_ID = "Content-ID";
|
||||
public static final String CONTENT_LOCATION = "Content-Location";
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
|
||||
|
||||
|
||||
@ -37,7 +37,7 @@ import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
|
||||
|
||||
public class SAAJMetaFactoryImpl extends SAAJMetaFactory {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: SOAPDocumentImpl.java,v 1.15 2006/01/27 12:49:29 vj135062 Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -45,7 +45,7 @@ import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
|
||||
|
||||
public class SOAPDocumentImpl extends DocumentImpl implements SOAPDocument {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
|
||||
|
||||
|
||||
@ -23,9 +23,9 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: SOAPFactoryImpl.java,v 1.21 2006/01/27 12:49:29 vj135062 Exp $
|
||||
* $Revision: 1.21 $
|
||||
* $Date: 2006/01/27 12:49:29 $
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@ import org.w3c.dom.Attr;
|
||||
|
||||
public abstract class SOAPFactoryImpl extends SOAPFactory {
|
||||
|
||||
protected static Logger
|
||||
protected static final Logger
|
||||
log = Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
|
||||
|
||||
|
||||
@ -23,9 +23,9 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: SOAPPartImpl.java,v 1.1.1.1 2006/01/27 13:10:55 kumarjayanti Exp $
|
||||
* $Revision: 1.1.1.1 $
|
||||
* $Date: 2006/01/27 13:10:55 $
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -59,7 +59,7 @@ import javax.xml.transform.sax.SAXSource;
|
||||
* @author Anil Vijendran (anil@sun.com)
|
||||
*/
|
||||
public abstract class SOAPPartImpl extends SOAPPart implements SOAPDocument {
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
|
||||
|
||||
|
||||
@ -23,9 +23,9 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: CDATAImpl.java,v 1.19 2006/01/27 12:49:34 vj135062 Exp $
|
||||
* $Revision: 1.19 $
|
||||
* $Date: 2006/01/27 12:49:34 $
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ public class CDATAImpl
|
||||
extends com.sun.org.apache.xerces.internal.dom.CDATASectionImpl
|
||||
implements javax.xml.soap.Text {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
|
||||
|
||||
|
||||
@ -23,9 +23,9 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: CommentImpl.java,v 1.17 2006/01/27 12:49:34 vj135062 Exp $
|
||||
* $Revision: 1.17 $
|
||||
* $Date: 2006/01/27 12:49:34 $
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ public class CommentImpl
|
||||
extends com.sun.org.apache.xerces.internal.dom.CommentImpl
|
||||
implements javax.xml.soap.Text, org.w3c.dom.Comment {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
|
||||
protected static ResourceBundle rb =
|
||||
|
||||
@ -23,9 +23,9 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: ElementImpl.java,v 1.6 2006/11/16 16:01:14 kumarjayanti Exp $
|
||||
* $Revision: 1.6 $
|
||||
* $Date: 2006/11/16 16:01:14 $
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -60,7 +60,7 @@ public class ElementImpl
|
||||
|
||||
protected QName elementQName;
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
|
||||
|
||||
|
||||
@ -23,9 +23,9 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: TextImpl.java,v 1.19 2006/01/27 12:49:36 vj135062 Exp $
|
||||
* $Revision: 1.19 $
|
||||
* $Date: 2006/01/27 12:49:36 $
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ public class TextImpl
|
||||
extends com.sun.org.apache.xerces.internal.dom.TextImpl
|
||||
implements javax.xml.soap.Text, org.w3c.dom.Text {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
|
||||
|
||||
|
||||
@ -23,9 +23,9 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: NameImpl.java,v 1.48 2006/01/27 12:49:38 vj135062 Exp $
|
||||
* $Revision: 1.48 $
|
||||
* $Date: 2006/01/27 12:49:38 $
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -63,7 +63,7 @@ public class NameImpl implements Name {
|
||||
protected String prefix = "";
|
||||
private String qualifiedName = null;
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.NAMING_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.name.LocalStrings");
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: Fault1_1Impl.java,v 1.1.1.1 2006/01/27 13:10:57 kumarjayanti Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -57,7 +57,7 @@ import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
|
||||
|
||||
public class Fault1_1Impl extends FaultImpl {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(
|
||||
LogDomainConstants.SOAP_VER1_1_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: Header1_1Impl.java,v 1.29 2006/01/27 12:49:41 vj135062 Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@ import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
|
||||
|
||||
public class Header1_1Impl extends HeaderImpl {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: HeaderElement1_1Impl.java,v 1.29 2006/01/27 12:49:41 vj135062 Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -49,7 +49,7 @@ import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
|
||||
|
||||
public class HeaderElement1_1Impl extends HeaderElementImpl {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: Message1_1Impl.java,v 1.24 2006/01/27 12:49:41 vj135062 Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -48,7 +48,7 @@ import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
|
||||
|
||||
public class Message1_1Impl extends MessageImpl implements SOAPConstants {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: SOAPPart1_1Impl.java,v 1.1.1.1 2006/01/27 13:10:57 kumarjayanti Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -48,7 +48,7 @@ import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser;
|
||||
|
||||
public class SOAPPart1_1Impl extends SOAPPartImpl implements SOAPConstants {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: Body1_2Impl.java,v 1.32 2006/01/27 12:49:44 vj135062 Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@ import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
|
||||
|
||||
public class Body1_2Impl extends BodyImpl {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(Body1_2Impl.class.getName(),
|
||||
"com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: Detail1_2Impl.java,v 1.24 2006/01/27 12:49:45 vj135062 Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
|
||||
|
||||
public class Detail1_2Impl extends DetailImpl {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(Detail1_2Impl.class.getName(),
|
||||
"com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: Envelope1_2Impl.java,v 1.26 2006/01/27 12:49:47 vj135062 Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
|
||||
|
||||
public class Envelope1_2Impl extends EnvelopeImpl {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(Envelope1_2Impl.class.getName(),
|
||||
"com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: Fault1_2Impl.java,v 1.1.1.1 2006/01/27 13:10:57 kumarjayanti Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -51,7 +51,7 @@ import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
|
||||
|
||||
public class Fault1_2Impl extends FaultImpl {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(
|
||||
LogDomainConstants.SOAP_VER1_2_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: Header1_2Impl.java,v 1.36 2006/01/27 12:49:48 vj135062 Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -53,7 +53,7 @@ import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants;
|
||||
|
||||
public class Header1_2Impl extends HeaderImpl {
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(
|
||||
LogDomainConstants.SOAP_VER1_2_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: HeaderElement1_2Impl.java,v 1.29 2006/01/27 12:49:48 vj135062 Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
|
||||
|
||||
public class HeaderElement1_2Impl extends HeaderElementImpl {
|
||||
|
||||
private static Logger log =
|
||||
private static final Logger log =
|
||||
Logger.getLogger(HeaderElement1_2Impl.class.getName(),
|
||||
"com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
* have any questions.
|
||||
*/
|
||||
/*
|
||||
* $Id: SOAPPart1_2Impl.java,v 1.1.1.1 2006/01/27 13:10:57 kumarjayanti Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser;
|
||||
|
||||
public class SOAPPart1_2Impl extends SOAPPartImpl implements SOAPConstants{
|
||||
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(SOAPPart1_2Impl.class.getName(),
|
||||
"com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
|
||||
|
||||
|
||||
@ -45,12 +45,12 @@ import org.xml.sax.helpers.AttributesImpl;
|
||||
* because they are not legal in SOAP. If the user of this class sets a
|
||||
* LexicalHandler, then it forwards events to that handler.
|
||||
*
|
||||
* $Id: RejectDoctypeSaxFilter.java,v 1.13 2006/01/27 12:49:52 vj135062 Exp $
|
||||
*
|
||||
* @author Edwin Goei
|
||||
*/
|
||||
|
||||
public class RejectDoctypeSaxFilter extends XMLFilterImpl implements XMLReader, LexicalHandler{
|
||||
protected static Logger log =
|
||||
protected static final Logger log =
|
||||
Logger.getLogger(LogDomainConstants.UTIL_DOMAIN,
|
||||
"com.sun.xml.internal.messaging.saaj.util.LocalStrings");
|
||||
|
||||
|
||||
@ -62,20 +62,22 @@ import com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection;
|
||||
public class EfficientStreamingTransformer
|
||||
extends javax.xml.transform.Transformer {
|
||||
|
||||
static final String version;
|
||||
static final String vendor;
|
||||
//static final String version;
|
||||
//static final String vendor;
|
||||
|
||||
protected static TransformerFactory transformerFactory = TransformerFactory.newInstance();
|
||||
protected static final TransformerFactory transformerFactory = TransformerFactory.newInstance();
|
||||
|
||||
static {
|
||||
version = System.getProperty("java.vm.version");
|
||||
vendor = System.getProperty("java.vm.vendor");
|
||||
if (vendor.startsWith("Sun") &&
|
||||
(version.startsWith("1.4") || version.startsWith("1.3"))) {
|
||||
transformerFactory =
|
||||
new com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl();
|
||||
}
|
||||
}
|
||||
//removing support for Java 1.4 and 1.3 : CR6658158
|
||||
/*static {
|
||||
version = System.getProperty("java.vm.version");
|
||||
vendor = System.getProperty("java.vm.vendor");
|
||||
if (vendor.startsWith("Sun") &&
|
||||
(version.startsWith("1.4") || version.startsWith("1.3"))) {
|
||||
transformerFactory =
|
||||
new com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* TransformerFactory instance.
|
||||
|
||||
@ -25,6 +25,9 @@
|
||||
|
||||
package com.sun.xml.internal.txw2;
|
||||
|
||||
import java.util.AbstractList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import javax.xml.namespace.QName;
|
||||
|
||||
/**
|
||||
@ -53,50 +56,60 @@ public interface DatatypeWriter<DT> {
|
||||
*/
|
||||
void print(DT dt, NamespaceResolver resolver, StringBuilder buf);
|
||||
|
||||
static final List<DatatypeWriter<?>> BUILTIN = Collections.unmodifiableList(new AbstractList() {
|
||||
|
||||
static final DatatypeWriter<?>[] BUILDIN = new DatatypeWriter<?>[] {
|
||||
new DatatypeWriter<String>() {
|
||||
public Class<String> getType() {
|
||||
return String.class;
|
||||
}
|
||||
public void print(String s, NamespaceResolver resolver, StringBuilder buf) {
|
||||
buf.append(s);
|
||||
}
|
||||
},
|
||||
new DatatypeWriter<Integer>() {
|
||||
public Class<Integer> getType() {
|
||||
return Integer.class;
|
||||
}
|
||||
public void print(Integer i, NamespaceResolver resolver, StringBuilder buf) {
|
||||
buf.append(i);
|
||||
}
|
||||
},
|
||||
new DatatypeWriter<Float>() {
|
||||
public Class<Float> getType() {
|
||||
return Float.class;
|
||||
}
|
||||
public void print(Float f, NamespaceResolver resolver, StringBuilder buf) {
|
||||
buf.append(f);
|
||||
}
|
||||
},
|
||||
new DatatypeWriter<Double>() {
|
||||
public Class<Double> getType() {
|
||||
return Double.class;
|
||||
}
|
||||
public void print(Double d, NamespaceResolver resolver, StringBuilder buf) {
|
||||
buf.append(d);
|
||||
}
|
||||
},
|
||||
new DatatypeWriter<QName>() {
|
||||
public Class<QName> getType() {
|
||||
return QName.class;
|
||||
}
|
||||
public void print(QName qn, NamespaceResolver resolver, StringBuilder buf) {
|
||||
String p = resolver.getPrefix(qn.getNamespaceURI());
|
||||
if(p.length()!=0)
|
||||
buf.append(p).append(':');
|
||||
buf.append(qn.getLocalPart());
|
||||
private DatatypeWriter<?>[] BUILTIN_ARRAY = new DatatypeWriter<?>[] {
|
||||
new DatatypeWriter<String>() {
|
||||
public Class<String> getType() {
|
||||
return String.class;
|
||||
}
|
||||
public void print(String s, NamespaceResolver resolver, StringBuilder buf) {
|
||||
buf.append(s);
|
||||
}
|
||||
},
|
||||
new DatatypeWriter<Integer>() {
|
||||
public Class<Integer> getType() {
|
||||
return Integer.class;
|
||||
}
|
||||
public void print(Integer i, NamespaceResolver resolver, StringBuilder buf) {
|
||||
buf.append(i);
|
||||
}
|
||||
},
|
||||
new DatatypeWriter<Float>() {
|
||||
public Class<Float> getType() {
|
||||
return Float.class;
|
||||
}
|
||||
public void print(Float f, NamespaceResolver resolver, StringBuilder buf) {
|
||||
buf.append(f);
|
||||
}
|
||||
},
|
||||
new DatatypeWriter<Double>() {
|
||||
public Class<Double> getType() {
|
||||
return Double.class;
|
||||
}
|
||||
public void print(Double d, NamespaceResolver resolver, StringBuilder buf) {
|
||||
buf.append(d);
|
||||
}
|
||||
},
|
||||
new DatatypeWriter<QName>() {
|
||||
public Class<QName> getType() {
|
||||
return QName.class;
|
||||
}
|
||||
public void print(QName qn, NamespaceResolver resolver, StringBuilder buf) {
|
||||
String p = resolver.getPrefix(qn.getNamespaceURI());
|
||||
if(p.length()!=0)
|
||||
buf.append(p).append(':');
|
||||
buf.append(qn.getLocalPart());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public DatatypeWriter<?> get(int n) {
|
||||
return BUILTIN_ARRAY[n];
|
||||
}
|
||||
};
|
||||
|
||||
public int size() {
|
||||
return BUILTIN_ARRAY.length;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -76,7 +76,7 @@ public final class Document {
|
||||
|
||||
Document(XmlSerializer out) {
|
||||
this.out = out;
|
||||
for( DatatypeWriter dw : DatatypeWriter.BUILDIN )
|
||||
for( DatatypeWriter dw : DatatypeWriter.BUILTIN )
|
||||
datatypeWriters.put(dw.getType(),dw);
|
||||
}
|
||||
|
||||
|
||||
@ -31,3 +31,5 @@ a2033addca678f9e4c0d92ffa1e389171cc9321d jdk7-b53
|
||||
d1c43d1f5676a24ba86221ac7cad5694f3a9afda jdk7-b54
|
||||
522bb5aa17e0c0cff00b1ed7d1b51bc4db2cfef9 jdk7-b55
|
||||
7fd3bc37afe36f8f6165ba679db1229716db822a jdk7-b56
|
||||
d5a1223e961891564de25c39fba6f2442d0fb045 jdk7-b57
|
||||
9ba256e2e5c161b89e638390f998baa175ec9abe jdk7-b58
|
||||
|
||||
@ -52,6 +52,9 @@ EXCLUDE_PROPWARN_PKGS = com.sun.java.swing.plaf \
|
||||
com.sun.java.swing.plaf.motif \
|
||||
com.sun.java.swing.plaf.gtk
|
||||
|
||||
# This is a stopgap until 6839872 is fixed.
|
||||
EXCLUDE_PROPWARN_PKGS += sun.dyn
|
||||
|
||||
# 64-bit solaris has a few special cases. We define the variable
|
||||
# SOLARIS64 for use in this Makefile to easily test those cases
|
||||
ifeq ($(PLATFORM), solaris)
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright 2001-2009 Sun Microsystems, Inc. All Rights Reserved.
|
||||
# Copyright 2001-2008 Sun Microsystems, Inc. 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
|
||||
@ -55,6 +55,7 @@ EXCLUDE_PKGS = \
|
||||
# This is a list of regular expressions. So foo.* matches "foo" and "foo.bar".
|
||||
#
|
||||
ACTIVE_JSR_PKGS= \
|
||||
java.dyn \
|
||||
java.sql \
|
||||
javax.activation \
|
||||
javax.annotation.* \
|
||||
@ -96,6 +97,7 @@ CORE_PKGS = \
|
||||
java.awt.print \
|
||||
java.beans \
|
||||
java.beans.beancontext \
|
||||
java.dyn \
|
||||
java.io \
|
||||
java.lang \
|
||||
java.lang.annotation \
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright 1995-2006 Sun Microsystems, Inc. All Rights Reserved.
|
||||
# Copyright 1995-2009 Sun Microsystems, Inc. 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,7 +39,7 @@ SUBDIRS += hpi version jvm redist verify fdlibm java sun_nio jli main zip
|
||||
# Others
|
||||
# Note: java_crw_demo java_hprof_demo are demos but must be delivered built in sdk
|
||||
SUBDIRS += security npt java_crw_demo java_hprof_demo \
|
||||
math awt util text applet net nio \
|
||||
math awt util text applet net nio dyn \
|
||||
sql rmi jar beans logging management instrument
|
||||
|
||||
|
||||
|
||||
44
jdk/make/java/dyn/Makefile
Normal file
44
jdk/make/java/dyn/Makefile
Normal file
@ -0,0 +1,44 @@
|
||||
#
|
||||
# Copyright 2008-2009 Sun Microsystems, Inc. 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. Sun designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
# CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
# have any questions.
|
||||
#
|
||||
|
||||
BUILDDIR = ../..
|
||||
|
||||
PACKAGE = java.dyn
|
||||
PRODUCT = java
|
||||
include $(BUILDDIR)/common/Defs.gmk
|
||||
|
||||
AUTO_FILES_JAVA_DIRS = java/dyn sun/dyn
|
||||
|
||||
# The sources built here use new language syntax to generate
|
||||
# method handle calls. Let's be sure we are using that format.
|
||||
#LANGUAGE_VERSION = -source 7
|
||||
#CLASS_VERSION = -target 7
|
||||
|
||||
# Actually, it will be less disruptive to compile with the same
|
||||
# -target option as the rest of the system, and just turn on
|
||||
# the specific compiler option we need here:
|
||||
OTHER_JAVACFLAGS = -XDinvokedynamic
|
||||
|
||||
include $(BUILDDIR)/common/Classes.gmk
|
||||
@ -125,7 +125,6 @@ FILES_2D_c = \
|
||||
FourByteAbgrPre.c \
|
||||
BufferedMaskBlit.c \
|
||||
BufferedRenderPipe.c \
|
||||
RenderBuffer.c \
|
||||
ShapeSpanIterator.c \
|
||||
SpanClipRenderer.c \
|
||||
awt_ImageRep.c \
|
||||
|
||||
@ -70,7 +70,6 @@ FILES_c = \
|
||||
FourByteAbgrPre.c \
|
||||
BufferedMaskBlit.c \
|
||||
BufferedRenderPipe.c \
|
||||
RenderBuffer.c \
|
||||
ShapeSpanIterator.c \
|
||||
SpanClipRenderer.c \
|
||||
SurfaceData.c \
|
||||
|
||||
@ -65,7 +65,6 @@ SUNWprivate_1.1 {
|
||||
Java_sun_awt_image_ShortComponentRaster_initIDs;
|
||||
Java_sun_java2d_pipe_BufferedMaskBlit_enqueueTile;
|
||||
Java_sun_java2d_pipe_BufferedRenderPipe_fillSpans;
|
||||
Java_sun_java2d_pipe_RenderBuffer_copyFromArray;
|
||||
Java_sun_java2d_pipe_SpanClipRenderer_eraseTile;
|
||||
Java_sun_java2d_pipe_SpanClipRenderer_fillTile;
|
||||
Java_sun_java2d_pipe_ShapeSpanIterator_addSegment;
|
||||
|
||||
@ -117,7 +117,6 @@ SUNWprivate_1.1 {
|
||||
Java_sun_java2d_loops_MaskBlit_MaskBlit;
|
||||
Java_sun_java2d_loops_MaskFill_MaskFill;
|
||||
Java_sun_java2d_pipe_BufferedRenderPipe_fillSpans;
|
||||
Java_sun_java2d_pipe_RenderBuffer_copyFromArray;
|
||||
Java_sun_java2d_pipe_SpanClipRenderer_initIDs;
|
||||
sun_awt_image_GifImageDecoder_initIDs;
|
||||
|
||||
|
||||
@ -1,6 +1,4 @@
|
||||
.'" t
|
||||
."
|
||||
." Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
|
||||
." Copyright 2002-2006 Sun Microsystems, Inc. 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
|
||||
@ -20,20 +18,21 @@
|
||||
." Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
." CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
." have any questions.
|
||||
."
|
||||
." `
|
||||
.TH appletviewer 1 "05 Aug 2006"
|
||||
." Generated by html2roff
|
||||
."
|
||||
.TH appletviewer 1 "04 May 2009"
|
||||
." Generated from HTML by html2man (author: Eric Armstrong)
|
||||
|
||||
.LP
|
||||
.SH NAME
|
||||
.SH "Name"
|
||||
appletviewer \- The Java Applet Viewer
|
||||
.LP
|
||||
.RS 3
|
||||
|
||||
.LP
|
||||
.LP
|
||||
The \f3appletviewer\fP command allows you to run applets outside of a web browser.
|
||||
.LP
|
||||
.RE
|
||||
.SH "SYNOPSIS"
|
||||
.LP
|
||||
|
||||
@ -59,15 +58,18 @@ http://java.sun.com/javase/6/docs/technotes/tools/appletviewertags.html.
|
||||
.LP
|
||||
|
||||
.LP
|
||||
.RS 3
|
||||
.TP 3
|
||||
\-debug
|
||||
Starts the applet viewer in the Java debugger, \f3jdb\fP, thus allowing you to debug the applets in the document.
|
||||
Starts the applet viewer in the Java debugger, jdb(1), thus allowing you to debug the applets in the document.
|
||||
.TP 3
|
||||
\-encoding \ \ encoding name
|
||||
Specify the input HTML file encoding name.
|
||||
.TP 3
|
||||
\-Jjavaoption
|
||||
Passes through the string \f2javaoption\fP as a single argument to the Java interpreter which runs the appletviewer. The argument should not contain spaces. Multiple argument words must all begin with the prefix \f3\-J\fP, which is stripped. This is useful for adjusting the compiler's execution environment or memory usage.
|
||||
.RE
|
||||
|
||||
.LP
|
||||
.LP
|
||||
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
.'" t
|
||||
."
|
||||
." Copyright 2004-2006 Sun Microsystems, Inc. All Rights Reserved.
|
||||
." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
."
|
||||
@ -20,10 +18,9 @@
|
||||
." Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
." CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
." have any questions.
|
||||
."
|
||||
." `
|
||||
.TH apt 1 "05 Aug 2006"
|
||||
." Generated by html2roff
|
||||
."
|
||||
.TH apt 1 "04 May 2009"
|
||||
." Generated from HTML by html2man (author: Eric Armstrong)
|
||||
|
||||
.LP
|
||||
.SH "NAME"
|
||||
@ -41,12 +38,15 @@
|
||||
.LP
|
||||
Options may be in any order. For a discussion of parameters which apply to a specific option, see OPTIONS below.
|
||||
.LP
|
||||
.RS 3
|
||||
.TP 3
|
||||
sourcefiles
|
||||
Zero or more source files to be processed.
|
||||
.TP 3
|
||||
@files
|
||||
One or more files that list source files or other options
|
||||
.RE
|
||||
|
||||
.LP
|
||||
.SH "DESCRIPTION"
|
||||
.LP
|
||||
@ -60,19 +60,19 @@ A fuller discussion of how the tool operates as well as instructions for develop
|
||||
.fi
|
||||
http://java.sun.com/javase/6/docs/technotes/guides/apt/GettingStarted.html
|
||||
.LP
|
||||
.RS 3
|
||||
.TP 3
|
||||
Note:
|
||||
\f2The functionality of \fP\f2apt\fP has been subsumed by the annotation\-processing infrastructure that is now part of the \f2javac\fP tool [
|
||||
.na
|
||||
\f2Solaris and Linux\fP @
|
||||
.fi
|
||||
http://java.sun.com/javase/6/docs/technotes/tools/solaris/javac.html] [Windows] and standardized for use by all Java compilers. This new infrastructure relies on the language model and annotation\-processing APIs that are now part of the Java Platform. It is recommended that new annotation processor development be based on the new APIs and the \f2javac\fP tool.
|
||||
\f2The functionality of \fP\f2apt\fP has been subsumed by the annotation\-processing infrastructure that is now part of the \f2javac(1)\fP tool and standardized for use by all Java compilers. This new infrastructure relies on the language model and annotation\-processing APIs that are now part of the Java Platform. It is recommended that new annotation processor development be based on the new APIs and the \f2javac\fP tool.
|
||||
.RE
|
||||
|
||||
.LP
|
||||
.SH "OPTIONS"
|
||||
.LP
|
||||
.SS
|
||||
apt specific options
|
||||
.LP
|
||||
.RS 3
|
||||
.TP 3
|
||||
\-s dir
|
||||
Specify the directory root under which processor\-generated source files will be placed; files are placed in subdirectories based on package namespace.
|
||||
@ -91,17 +91,21 @@ Specify where to find annotation processor factories; if this option is used, th
|
||||
.TP 3
|
||||
\-factory classname
|
||||
Name of annotation processor factory to use; bypasses default discovery process
|
||||
.RE
|
||||
|
||||
.LP
|
||||
.SS
|
||||
Options shared with javac
|
||||
.LP
|
||||
.RS 3
|
||||
.TP 3
|
||||
\-d dir
|
||||
Specify where to place processor and javac generated class files
|
||||
.TP 3
|
||||
\-cp path or \-classpath
|
||||
path
|
||||
\-cp path or \-classpath path
|
||||
Specify where to find user class files and annotation processor factories. If \f2\-factorypath\fP is given, the classpath is not searched for factories.
|
||||
.RE
|
||||
|
||||
.LP
|
||||
.LP
|
||||
Consult the javac(1) man page for information on \f2javac\fP options.
|
||||
@ -115,24 +119,11 @@ The functionality of \f2apt\fP has been subsumed by the standard annotation\-pro
|
||||
.LP
|
||||
.RS 3
|
||||
.TP 2
|
||||
*
|
||||
javac: [
|
||||
.na
|
||||
\f2Solaris and Linux\fP @
|
||||
.fi
|
||||
http://java.sun.com/javase/6/docs/technotes/tools/solaris/javac.html] [Windows]
|
||||
.TP 2
|
||||
*
|
||||
java: [
|
||||
.na
|
||||
\f2Solaris\fP @
|
||||
.fi
|
||||
http://java.sun.com/javase/6/docs/technotes/tools/solaris/java.html] [
|
||||
.na
|
||||
\f2Linux\fP @
|
||||
.fi
|
||||
http://java.sun.com/javase/6/docs/technotes/tools/linux/java.html] [Windows]
|
||||
o
|
||||
javac(1), java(1)
|
||||
.RE
|
||||
|
||||
.LP
|
||||
|
||||
.LP
|
||||
|
||||
|
||||
@ -1,6 +1,4 @@
|
||||
.'" t
|
||||
."
|
||||
." Copyright 2000-2006 Sun Microsystems, Inc. All Rights Reserved.
|
||||
." Copyright 2002-2006 Sun Microsystems, Inc. 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
|
||||
@ -21,19 +19,20 @@
|
||||
." CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
." have any questions.
|
||||
."
|
||||
." `
|
||||
.TH extcheck 1 "05 Aug 2006"
|
||||
." Generated by html2roff
|
||||
.TH extcheck 1 "04 May 2009"
|
||||
." Generated from HTML by html2man (author: Eric Armstrong)
|
||||
|
||||
.LP
|
||||
.SH NAME
|
||||
.SH "Name"
|
||||
extcheck \- A utility to detect jar conflicts
|
||||
.LP
|
||||
.RS 3
|
||||
|
||||
.LP
|
||||
.LP
|
||||
\f3extcheck\fP detects version conflicts between a target jar file and currently installed extension jar files.
|
||||
.LP
|
||||
.RE
|
||||
.SH "SYNOPSIS"
|
||||
.LP
|
||||
|
||||
@ -67,19 +66,22 @@ If the manifest of any jar file in the extensions directory has the same \f2Spec
|
||||
.LP
|
||||
|
||||
.LP
|
||||
.RS 3
|
||||
.TP 3
|
||||
\-verbose
|
||||
Lists Jar files in the extension directory as they are checked. Additionally, manifest attributes of the target jar file and any conflicting jar files are also reported.
|
||||
.TP 3
|
||||
\-Joption
|
||||
Pass \f2option\fP to the Java virtual machine, where \f2option\fP is one of the options described on the reference page for the java application launcher. For example, \f3\-J\-Xms48m\fP sets the startup memory to 48 megabytes.
|
||||
Pass \f2option\fP to the Java virtual machine, where \f2option\fP is one of the options described on the reference page for the java(1). For example, \f3\-J\-Xms48m\fP sets the startup memory to 48 megabytes.
|
||||
.RE
|
||||
|
||||
.LP
|
||||
.SH "SEE ALSO"
|
||||
.LP
|
||||
|
||||
.LP
|
||||
.LP
|
||||
jar
|
||||
jar(1)
|
||||
.LP
|
||||
|
||||
.LP
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
.'" t
|
||||
."
|
||||
." Copyright 2001-2006 Sun Microsystems, Inc. All Rights Reserved.
|
||||
." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
."
|
||||
@ -21,12 +19,11 @@
|
||||
." CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
." have any questions.
|
||||
."
|
||||
." `
|
||||
.TH idlj 1 "07 Aug 2006"
|
||||
." Generated by html2man
|
||||
.TH idlj 1 "04 May 2009"
|
||||
." Generated from HTML by html2man (author: Eric Armstrong)
|
||||
|
||||
.LP
|
||||
.SH NAME
|
||||
.SH "Name"
|
||||
idlj \- The IDL\-to\-Java Compiler
|
||||
.LP
|
||||
.RS 3
|
||||
@ -54,7 +51,11 @@ where \f2idl\-file\fP is the name of a file containing Interface Definition Lang
|
||||
.LP
|
||||
|
||||
.LP
|
||||
The IDL\-to\-Java Compiler generates the Java bindings for a given IDL file.\ For binding details, see the OMG IDL to Java Language Language Mapping Specification. Some previous releases of the IDL\-to\-Java compiler were named \f2idltojava\fP.
|
||||
The IDL\-to\-Java Compiler generates the Java bindings for a given IDL file.\ For binding details, see the
|
||||
.na
|
||||
\f2OMG IDL to Java Language Language Mapping Specification\fP @
|
||||
.fi
|
||||
http://java.sun.com/javase/6/docs/technotes/guides/idl/mapping/jidlMapping.html. Some previous releases of the IDL\-to\-Java compiler were named \f2idltojava\fP.
|
||||
.SS
|
||||
Emitting Client and Server Bindings
|
||||
.LP
|
||||
@ -78,10 +79,18 @@ There are two possible server\-side models: the Inheritance Model and the Tie De
|
||||
The default server\-side model is the \f2Portable Servant Inheritance Model\fP. Given an interface \f2My\fP defined in \f2My.idl\fP, the file \f2MyPOA.java\fP is generated. You must provide the implementation for \f2My\fP and it must inherit from \f2MyPOA\fP.
|
||||
.LP
|
||||
.LP
|
||||
\f2MyPOA.java\fP is a stream\-based skeleton that extends \f2org.omg.PortableServer.Servant\fP and implements the \f2InvokeHandler\fP interface and the operations interface associated with the IDL interface the skeleton implements.
|
||||
\f2MyPOA.java\fP is a stream\-based skeleton that extends
|
||||
.na
|
||||
\f2org.omg.PortableServer.Servant\fP @
|
||||
.fi
|
||||
http://java.sun.com/javase/6/docs/api/org/omg/PortableServer/Servant.html and implements the \f2InvokeHandler\fP interface and the operations interface associated with the IDL interface the skeleton implements.
|
||||
.LP
|
||||
.LP
|
||||
The \f2PortableServer\fP module for the Portable Object Adapter (POA) defines the native \f2Servant\fP type. In the Java programming language, the \f2Servant\fP type is mapped to the Java \f2org.omg.PortableServer.Servant\fP class. It serves as the base class for all POA servant implementations and provides a number of methods that may be invoked by the application programmer, as well as methods which are invoked by the POA itself and may be overridden by the user to control aspects of servant behavior.
|
||||
The \f2PortableServer\fP module for the
|
||||
.na
|
||||
\f2Portable Object Adapter (POA)\fP @
|
||||
.fi
|
||||
http://java.sun.com/javase/6/docs/technotes/guides/idl/POA.html defines the native \f2Servant\fP type. In the Java programming language, the \f2Servant\fP type is mapped to the Java \f2org.omg.PortableServer.Servant\fP class. It serves as the base class for all POA servant implementations and provides a number of methods that may be invoked by the application programmer, as well as methods which are invoked by the POA itself and may be overridden by the user to control aspects of servant behavior.
|
||||
.LP
|
||||
.LP
|
||||
Another option for the Inheritance Model is to use the \f2\-oldImplBase\fP flag in order to generate server\-side bindings that are compatible with versions of the Java programming language prior to J2SE 1.4. Note that using the \f2\-oldImplBase\fP flag is non\-standard: these APIs are being deprecated. You would use this flag ONLY for compatibility with existing servers written in J2SE 1.3. In that case, you would need to modify an existing MAKEFILE to add the \f2\-oldImplBase\fP flag to the \f2idlj\fP compiler, otherwise POA\-based server\-side mappings will be generated. To generate server\-side bindings that are backwards compatible:
|
||||
@ -203,7 +212,11 @@ If \f2My.idl\fP also included \f2Another.idl\fP that resided in \f2/moreIncludes
|
||||
.LP
|
||||
Since this form of include can become irritatingly long, another means of indicating to the compiler where to search for included files is provided. This technique is similar to the idea of an environment variable. Create a file named \f2idl.config\fP in a directory that is listed in your CLASSPATH. Inside of \f2idl.config\fP, provide a line with the following form: \f2includes=/includes;/moreIncludes\fP
|
||||
.LP
|
||||
The compiler will find this file and read in the includes list. Note that in this example the separator character between the two directories is a semicolon (;). This separator character is platform dependent. On the Windows platform, use a semicolon, on the Unix platform, use a colon, etc. For more information on \f2includes\fP, read the CLASSPATH\ (Solaris) or CLASSPATH\ (Windows) documentation.
|
||||
The compiler will find this file and read in the includes list. Note that in this example the separator character between the two directories is a semicolon (;). This separator character is platform dependent. On the Windows platform, use a semicolon, on the Unix platform, use a colon, etc. For more information on \f2includes\fP, see the
|
||||
.na
|
||||
\f2Setting the Classpath\fP @
|
||||
.fi
|
||||
http://java.sun.com/javase/6/docs/technotes/tools/index.html#general.
|
||||
.RE
|
||||
.SS
|
||||
Emitting Bindings for Include Files
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user