Compare commits

...

957 Commits

Author SHA1 Message Date
J. Duke
61cac54a92 Merge 2017-07-05 18:46:02 +02:00
J. Duke
f84e5c27ae Merge 2017-07-05 18:45:58 +02:00
J. Duke
c6e94d7497 Merge 2017-07-05 18:45:42 +02:00
J. Duke
05752298fa Merge 2017-07-05 18:45:37 +02:00
J. Duke
37946da7f0 Merge 2017-07-05 18:45:29 +02:00
J. Duke
c75fdc77ac Merge 2017-07-05 18:45:10 +02:00
J. Duke
8535ebcde0 Merge 2017-07-05 18:45:01 +02:00
J. Duke
04b30b778e Merge 2017-07-05 18:44:23 +02:00
J. Duke
781c673b59 Added tag jdk8-b81 for changeset e41d716405b2 2017-07-05 18:43:55 +02:00
J. Duke
ac2b8241a3 Merge 2017-07-05 18:43:54 +02:00
J. Duke
884fa55e95 Merge 2017-07-05 18:43:50 +02:00
J. Duke
98551c5874 Merge 2017-07-05 18:43:47 +02:00
J. Duke
bdf5a70edb Merge 2017-07-05 18:43:43 +02:00
J. Duke
9fed0f85fa Merge 2017-07-05 18:43:39 +02:00
J. Duke
df056e86c7 Merge 2017-07-05 18:43:35 +02:00
J. Duke
faf975f3d3 Merge 2017-07-05 18:43:29 +02:00
J. Duke
3a5d99bd97 Added tag jdk8-b80 for changeset 3fa21fbf9be7 2017-07-05 18:43:10 +02:00
J. Duke
ef906c89ce Merge 2017-07-05 18:43:09 +02:00
J. Duke
97a6b4b6e8 Merge 2017-07-05 18:43:05 +02:00
J. Duke
b5abced08b Merge 2017-07-05 18:43:01 +02:00
J. Duke
59726118ff Merge 2017-07-05 18:42:57 +02:00
J. Duke
9425da39e5 Merge 2017-07-05 18:42:53 +02:00
J. Duke
38c494e569 Merge 2017-07-05 18:42:49 +02:00
J. Duke
77a4ce5569 Merge 2017-07-05 18:42:42 +02:00
J. Duke
6750549bb0 Added tag jdk8-b79 for changeset a1313a8d90d1 2017-07-05 18:42:22 +02:00
J. Duke
950ddf6143 Merge 2017-07-05 18:42:22 +02:00
J. Duke
8ce6a3fbf9 Merge 2017-07-05 18:42:17 +02:00
J. Duke
356fb57e35 Merge 2017-07-05 18:42:13 +02:00
J. Duke
4fa873392e Merge 2017-07-05 18:42:09 +02:00
J. Duke
d9b7356004 Merge 2017-07-05 18:42:05 +02:00
J. Duke
f75bc2e199 Merge 2017-07-05 18:42:00 +02:00
J. Duke
eb80cad549 Merge 2017-07-05 18:41:55 +02:00
J. Duke
713c85dda8 Added tag jdk8-b78 for changeset 6d3dcd34b5b9 2017-07-05 18:41:34 +02:00
J. Duke
93a052bab3 Merge 2017-07-05 18:41:33 +02:00
J. Duke
2414951dd3 Merge 2017-07-05 18:41:29 +02:00
J. Duke
050eb5168e Merge 2017-07-05 18:41:19 +02:00
J. Duke
b72b8e194e Merge 2017-07-05 18:41:15 +02:00
J. Duke
b74c7b3808 Merge 2017-07-05 18:41:10 +02:00
J. Duke
7cd6e230ea Merge 2017-07-05 18:41:05 +02:00
J. Duke
8911e12adf Merge 2017-07-05 18:40:46 +02:00
J. Duke
ae06986c80 Added tag jdk8-b77 for changeset d17eb2e13e36 2017-07-05 18:40:21 +02:00
J. Duke
7ba83041b1 Merge 2017-07-05 18:40:20 +02:00
J. Duke
171e39a058 Merge 2017-07-05 18:40:16 +02:00
J. Duke
d0a89bf0ce Merge 2017-07-05 18:40:08 +02:00
J. Duke
86b46f2113 Merge 2017-07-05 18:40:04 +02:00
J. Duke
94d3e22c87 Merge 2017-07-05 18:39:58 +02:00
J. Duke
2907a0c10f Merge 2017-07-05 18:39:54 +02:00
J. Duke
d053ad2a28 Merge 2017-07-05 18:39:42 +02:00
J. Duke
918f015f18 Added tag jdk8-b76 for changeset f407160c280d 2017-07-05 18:39:14 +02:00
J. Duke
9a87fa5db9 Merge 2017-07-05 18:39:13 +02:00
J. Duke
89d052603d Merge 2017-07-05 18:39:09 +02:00
J. Duke
236fc341a2 Merge 2017-07-05 18:39:05 +02:00
J. Duke
154d04e929 Merge 2017-07-05 18:39:00 +02:00
J. Duke
b3c7ed26d3 Merge 2017-07-05 18:38:56 +02:00
J. Duke
421567fdaa Merge 2017-07-05 18:38:51 +02:00
J. Duke
511a59c696 Merge 2017-07-05 18:38:46 +02:00
J. Duke
828d2063d2 Added tag jdk8-b75 for changeset f1478a6d25fd 2017-07-05 18:38:33 +02:00
Omair Majid
2e4abcea23 8010277: Configure doesn't fail when Xrender.h is missing
Reviewed-by: andrew
2013-03-19 11:25:05 -04:00
Omair Majid
7b22402218 8010030: Allow configure to detect if EC implementation is present
Reviewed-by: andrew, dholmes
2013-03-18 10:47:37 -04:00
Omair Majid
35dc8be1bf 8010030: Allow configure to detect if EC implementation is present
Reviewed-by: andrew, dholmes
2013-03-18 10:46:49 -04:00
Alejandro Murillo
943bd88ce1 Added tag hs25-b23 for changeset 57159db35c41 2013-03-15 11:18:40 -07:00
Alejandro Murillo
593a00095a Merge 2013-03-15 11:18:39 -07:00
Stefan Karlsson
6567b83f0d Merge 2013-03-15 04:39:05 -07:00
Stefan Karlsson
35177d7db2 Merge 2013-03-15 08:57:55 +01:00
Lana Steuck
e261fe353f Merge 2013-03-14 19:33:29 -07:00
Lana Steuck
bca41270b5 Merge 2013-03-14 19:33:29 -07:00
Lana Steuck
c088a428f4 Merge 2013-03-14 19:33:24 -07:00
Lana Steuck
9ebc4f39bc Merge 2013-03-14 19:33:23 -07:00
Lana Steuck
128c2160bd Merge 2013-03-14 19:26:39 -07:00
Lana Steuck
3c9fec70eb Merge 2013-03-14 19:26:02 -07:00
Morris Meyer
5b2fed9809 Merge 2013-03-14 16:16:05 -07:00
David Katleman
6b708cf6e0 Added tag jdk8-b81 for changeset a7ab085069a9 2013-03-14 15:00:41 -07:00
David Katleman
4e8c9ce308 Added tag jdk8-b81 for changeset 86a86261de2b 2013-03-14 15:00:33 -07:00
David Katleman
db8bf59fdf Added tag jdk8-b81 for changeset 9597171cffbd 2013-03-14 15:00:28 -07:00
David Katleman
8d2d630525 Added tag jdk8-b81 for changeset 4f3da455d5f5 2013-03-14 15:00:26 -07:00
David Katleman
82f7d021b6 Added tag jdk8-b81 for changeset 25c319ff4cf4 2013-03-14 15:00:19 -07:00
David Katleman
4606c00f0d Added tag jdk8-b81 for changeset f2ef1e5c2955 2013-03-14 15:00:09 -07:00
David Katleman
7866abdf81 Added tag jdk8-b81 for changeset 13e9af9186a2 2013-03-14 15:00:05 -07:00
Vladimir Danushevsky
aa78ad11f8 Merge 2013-03-14 12:49:05 -04:00
Morris Meyer
46a623ec88 8008560: [parfait] Null pointer deference in hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp
Add null pointer check in signal handler

Reviewed-by: kvn
2013-03-14 07:44:18 -07:00
Joseph Provino
2e15c5911f Merge 2013-03-14 10:37:23 -04:00
Lana Steuck
f0e73ec3ba Merge 2013-03-13 23:39:49 -07:00
Lana Steuck
aeddcfd53b Merge 2013-03-13 23:21:35 -07:00
Coleen Phillimore
c5867cb71b 8003419: NPG: Clean up metadata created during class loading if failure
Store metadata on ClassFileParser instance to be cleaned up by destructor.  This enabled some refactoring of the enormous parseClassFile function.

Reviewed-by: jmasa, acorn
2013-03-13 17:34:29 -04:00
Coleen Phillimore
b243475fd2 8009829: CDS: JDK JPRT test fails crash in Symbol::equals()
-Xshare:dump was creating a Symbol in C_heap.  There's an assert there that jdk jprt wasn't hitting because it was only done in product

Reviewed-by: dholmes, hseigel, iklam
2013-03-13 15:15:56 -04:00
Coleen Phillimore
65206f2480 Merge 2013-03-13 13:47:35 -04:00
Coleen Phillimore
70b26044ba 8009836: nsk/regression/b4222717 fails with empty stack trace
Some zeroing was missed for bug 8003553, causing empty stack traces and Xcom crashes, add back zeroing to metablock

Reviewed-by: dholmes, rbackman
2013-03-13 09:10:35 -04:00
Tim Bell
4d75d57692 8009819: build-infra: RE jdk8 build forest fails for windows since addition of --with-dxsdk
Reviewed-by: katleman
2013-03-12 22:08:13 -07:00
David Katleman
455fe4836b Merge 2013-03-12 19:19:09 -07:00
Lana Steuck
31330fc47a Merge 2013-03-12 19:04:49 -07:00
Lana Steuck
697213ff2f Merge 2013-03-12 18:22:55 -07:00
Lana Steuck
4d0bc0dc58 Merge 2013-03-12 18:22:40 -07:00
Lana Steuck
f3e16f597b Merge 2013-03-12 18:16:11 -07:00
Lana Steuck
babef4b53a Merge 2013-03-12 18:12:44 -07:00
Lana Steuck
407bc5f8c6 Merge 2013-03-12 16:43:53 -07:00
Lana Steuck
5adedccb9c Merge 2013-03-12 16:40:22 -07:00
Lana Steuck
0412d28787 Merge 2013-03-12 16:38:18 -07:00
Lana Steuck
a92ce06fe1 Merge 2013-03-12 16:38:11 -07:00
Lana Steuck
189059a474 Merge 2013-03-12 16:28:34 -07:00
Lana Steuck
ae7beed0c2 Merge 2013-03-12 16:26:06 -07:00
Bradford Wetmore
9e5da0ad31 8009925: Back out AEAD CipherSuites temporarily
Reviewed-by: valeriep
2013-03-12 15:31:49 -07:00
Jon Masamitsu
79c091f287 6976528: PS: assert(!limit_exceeded || softrefs_clear) failed: Should have been cleared
Reviewed-by: johnc
2013-03-12 11:00:49 -07:00
Bengt Rutisson
dbbea72a0a Merge 2013-03-13 05:14:43 +01:00
Joel Borggrén-Franck
4de6d2c42c 7196531: Duplicate error messages on repeating annotations
Reviewed-by: jjg
2013-03-12 17:39:34 +01:00
Maurizio Cimadamore
22e2c128a2 8009545: Graph inference: dependencies between inference variables should be set during incorporation
Move all transitivity checks into the incorporation round

Reviewed-by: jjg
2013-03-12 16:02:43 +00:00
Maurizio Cimadamore
69ee819808 8008540: Constructor reference to non-reifiable array should be rejected
8008539: Spurious error when constructor reference mention an interface type
8008538: Constructor reference accepts wildcard parameterized types

Overhaul of Check.checkConstructorRefType

Reviewed-by: jjg
2013-03-12 16:02:13 +00:00
Harold Seigel
7d74801ce2 7154889: Non-zero padding is still not allowed in the tableswitch/lookupswitch instructions
Do not check that the padding bytes are zero if class file format version >=51.

Reviewed-by: dholmes, coleenp, mullan, kvn
2013-03-12 10:35:44 -04:00
Erik Joelsson
b44696200e 8009695: embedded/GP/RI: This intermittent error happens too often, makes the build unstable, and waste machine
Reviewed-by: dholmes, tbell
2013-03-12 15:17:19 +01:00
Thomas Schatzl
401d1f315d 8008684: CMS: concurrent phase start markers should always be printed
Print the concurrent phase start markers for CMS when PrintGCDetails is enabled, not only if both PrintGCDetails and PrintGCTimeStamps are.

Reviewed-by: mgerdin, jmasa
2013-03-12 15:10:39 +01:00
Joel Borggrén-Franck
c3e43ab7d5 8005205: tests missing bugid for repeating annotation change
Reviewed-by: jjg, ssides
2013-03-12 11:16:30 +01:00
Bengt Rutisson
c51ea967ce 8001049: VM crashes when running with large -Xms and not specifying ObjectAlignmentInBytes
Take the initial heap size into account when checking the heap size for compressed oops

Reviewed-by: jmasa, kvn, hseigel, ctornqvi
2013-03-12 08:33:57 +01:00
Joseph Provino
0f54c50638 8009835: Only produce a warning when -Xshare:auto is explicitly requested
The minimal JVM is printing a warning message for default settings when it should quitely ignore them.

Reviewed-by: coleenp, dholmes
2013-03-12 00:02:16 -04:00
Fredrik Öhrström
454b9ff071 8009843: sjavac should accept -cp as synonym for -classpath
Reviewed-by: jjg
2013-03-11 19:03:35 -07:00
David Katleman
a5b76975f0 Merge 2013-03-11 13:42:17 -07:00
David Katleman
0d9fffd773 Merge 2013-03-11 13:41:41 -07:00
Aleksey Shipilev
2f5e08742a 8008965: @Contended fails with classes having static fields
Disable @Contended support for static fields

Reviewed-by: coleenp, kvn
2013-03-11 14:00:09 -04:00
Robert Field
41447ec765 8009742: Bad lambda name for lambda in a static initializer or ctor
Reviewed-by: mcimadamore
2013-03-11 10:02:55 -07:00
Vicente Romero
475c6f42ad 6181889: Empty try/finally results in bytecodes being generated
Reviewed-by: mcimadamore
2013-03-11 15:35:13 +00:00
Stefan Karlsson
1e1174e0be 8004697: SIGSEGV on Solaris sparc with -XX:+UseNUMA
Don't scan pages outside the given range.

Reviewed-by: jwilhelm, jmasa
2013-03-11 02:24:01 -07:00
Mikael Gerdin
1aa6c27298 8009282: Assertion "assert(used_and_free == capacity_bytes) failed: Accounting is wrong" failed with -XX:+Verbose -XX:+TraceMetadataChunkAllocation
Assertion is only valid when at a safepoint, adjust accordingly.

Reviewed-by: stefank, jmasa, tamao
2013-03-12 09:42:24 +01:00
Kevin Walls
379967b492 Merge 2013-03-11 15:37:10 +01:00
Kevin Walls
a181e6d505 8009723: CMS logs "concurrent mode failure" twice when using (disabling) -XX:-UseCMSCompactAtFullCollection
Reviewed-by: jwilhelm, ehelin, brutisso
2013-03-11 12:56:00 +00:00
Stefan Karlsson
2242377c11 Merge 2013-03-11 08:49:53 +01:00
Athijegannathan Sundararajan
d9cd2f6ad3 8009559: clean up method handle lookup code
Reviewed-by: ahgross, jlaskey, attila, sundar
2013-03-09 21:49:32 +05:30
Weijun Wang
2ec1224ff0 8000653: SPNEGO tests fail at context.getDelegCred().getRemainingInitLifetime(mechOid)
Reviewed-by: valeriep
2013-03-09 17:27:58 +08:00
Daniel D. Daugherty
fc336457e7 Merge 2013-03-08 17:49:52 -08:00
Daniel D. Daugherty
f73c8f1408 Merge 2013-03-08 17:14:22 -08:00
Henry Jen
9db6479318 8001667: Comparator combinators and extension methods
Reviewed-by: mduigou, briangoetz
2013-03-08 15:45:06 -08:00
Alan Bateman
1430ceb19d 8009645: ClassFileTransformer hooks in ClassLoader no longer required
Reviewed-by: mchung, iris
2013-03-08 19:51:09 +00:00
Joseph Provino
a68c69fd65 Merge 2013-03-08 12:35:18 -05:00
Coleen Phillimore
addd95f165 8003553: NPG: metaspace objects should be zeroed in constructors
Zero metadata in constructors, not in allocation (and some in constructors)

Reviewed-by: jmasa, sspitsyn
2013-03-08 11:47:57 -05:00
Alejandro Murillo
5d0afe6210 8009688: new hotspot build - hs25-b23
Reviewed-by: jcoomes
2013-03-08 08:22:18 -08:00
Alejandro Murillo
ebdab667c3 Added tag hs25-b22 for changeset f06b74113bc2 2013-03-08 08:10:01 -08:00
Alejandro Murillo
91fe401ca7 Merge 2013-03-08 08:10:00 -08:00
Alan Bateman
9849742625 8006000: TEST_BUG: java/lang/invoke/lambda/LambdaAccessControlTest.java fails intermittently
Reviewed-by: chegar
2013-03-08 12:03:26 +00:00
Morris Meyer
c7b4f35a3d Merge 2013-03-07 18:03:26 -08:00
Morris Meyer
6723fac299 Merge 2013-03-07 14:46:20 -08:00
David Katleman
e0a29cc0f1 Added tag jdk8-b80 for changeset dec13271b739 2013-03-07 11:18:06 -08:00
David Katleman
83ceccf920 Added tag jdk8-b80 for changeset 72415be10117 2013-03-07 11:17:56 -08:00
David Katleman
2849834a45 Added tag jdk8-b80 for changeset 55eb22e60638 2013-03-07 11:17:47 -08:00
David Katleman
b67e4eeabf Added tag jdk8-b80 for changeset 81737a0a6546 2013-03-07 11:17:45 -08:00
David Katleman
6a85dd0d01 Added tag jdk8-b80 for changeset 8a6e09ace0d3 2013-03-07 11:17:36 -08:00
David Katleman
6190b6e12e Added tag jdk8-b80 for changeset 18835185e71e 2013-03-07 11:17:32 -08:00
David Katleman
2f0d1e1f6e Added tag jdk8-b80 for changeset 3a8903868eb2 2013-03-07 11:17:28 -08:00
Zhengyu Gu
4cdcd6dc13 8008257: NMT: assert(new_rec->is_allocation_record()) failed when running with shared memory option
Corrected virtual memory recording and tagging code when large pages are used

Reviewed-by: coleenp, ccheung
2013-03-07 14:06:44 -05:00
Tao Mao
3baff284ba 8008368: Deprecate MaxGCMinorPauseMillis
Deprecate MaxGCMinorPauseMillis and emit a warning if set by users

Reviewed-by: brutisso, johnc
2013-03-07 10:44:04 -08:00
Jiangli Zhou
3662485748 Merge 2013-03-07 10:39:15 -08:00
Robert Field
867e1720c2 8009582: Method reference generic constructor gives: IllegalArgumentException: Invalid lambda deserialization
Reviewed-by: mcimadamore
2013-03-07 08:26:13 -08:00
Joseph Provino
ceb27542a7 Merge 2013-03-07 10:46:14 -05:00
Stefan Karlsson
5e2fe0e935 Merge 2013-03-07 14:29:02 +01:00
Vicente Romero
b04bec8156 8009170: Regression: javac generates redundant bytecode in assignop involving arrays
Reviewed-by: mcimadamore
2013-03-07 10:12:13 +00:00
Chris Hegarty
7d6b4b81de 6370908: Add support for HTTP_CONNECT proxy in Socket class
Co-authored-by: Damjan Jovanovic <damjan.jov@gmail.com>
Reviewed-by: chegar
2013-03-07 10:07:13 +00:00
Andrew Brygin
6c0e480427 8005530: [lcms] Improve performance of ColorConverOp for default destinations
Reviewed-by: prr, jgodinez
2013-03-07 14:05:21 +04:00
Vicente Romero
7fe4d602a6 8009138: javac, equals-hashCode warning tuning
Reviewed-by: mcimadamore
2013-03-07 10:04:28 +00:00
Weijun Wang
556ff23124 8009604: old make images failed: JarBASE64Encoder class not found
Reviewed-by: xuelei, wetmore
2013-03-07 11:32:14 +08:00
Martin Buchholz
46b80b3416 8008759: Do not let internal JDK zlib symbols leak out of fastdebug libzip.so
Define FILES_m to force use of linker script

Reviewed-by: sherman, alanb, ohair
2013-03-06 17:43:10 -08:00
Vladimir Kozlov
010f640069 8009472: Print additional information for 8004640 failure
Dump nodes and types in 8004640 case.

Reviewed-by: roland
2013-03-06 12:25:57 -08:00
Joseph Provino
94853afaee 8008474: Add -Wundef to warning flags
Force use of undefined macros to be and error.

Reviewed-by: dholmes, mikael
2013-03-06 13:50:54 -05:00
Joseph Provino
e1f180f82e 8006498: #if <symbol> is wrong in the code
ASSERT and other symbols used incorrectly with #if are supposed to be defined or not.

Reviewed-by: dholmes, mikael
2013-03-06 13:46:55 -05:00
Joseph Provino
a6be16446d 8008310: Some adjustments needed to minimal VM warnings and errors for unsupported command line options
Changes to arguments.cpp for warnings vs. errors.  Changes for CDS arguments.

Reviewed-by: coleenp, cjplummer
2013-03-06 13:38:17 -05:00
Joel Borggrén-Franck
a65f7e7df0 8007808: Missing method: Executable.getAnnotatedReturnType()
Reviewed-by: darcy, forax
2013-03-06 18:35:51 +01:00
Athijegannathan Sundararajan
4f3800def1 8009553: Object.create(Array.prototype) doesn't respect reset length
Reviewed-by: jlaskey, lagergren
2013-03-06 22:38:18 +05:30
Mike Duigou
32091fcb1b 8009162: root repo "make test" target should run against image
Reviewed-by: alanb, martin, erikj
2013-03-06 08:37:27 -08:00
Mikhail Cherkasov
b1d7c46e14 8007295: Reduce number of warnings in awt classes
Reviewed-by: bae, anthony
2013-03-06 20:10:04 +04:00
Alexander Scherbatiy
a99c6a7fe5 6877495: JTextField and JTextArea does not support supplementary characters
Reviewed-by: serb, alexp
2013-03-06 19:42:26 +04:00
Maurizio Cimadamore
1823b93919 8009391: Synthetic name of serializable lambda methods should not contain negative numbers
Use hex representation of method signature hashcode to avoid negative numbers

Reviewed-by: jjg
2013-03-06 15:33:39 +00:00
Maurizio Cimadamore
a4e10d2aad 8009459: Wrong behavior of diamond finder with source level 7
Diamond finder doesn't take into account different inference behaviors

Reviewed-by: jjg
2013-03-06 15:33:17 +00:00
Maurizio Cimadamore
c9bae7b335 8009299: Javac crashes when compiling method reference to static interface method
Assertion in Check.checMethod is too strict

Reviewed-by: jjg
2013-03-06 15:29:30 +00:00
Erik Joelsson
5b60a94e4f 8008073: build-infra: Need --with-dxsdk option? And awt/sound -I option additions?
Reviewed-by: tbell
2013-03-06 16:15:16 +01:00
Erik Joelsson
ef56e8fdec 8008073: build-infra: Need --with-dxsdk option? And awt/sound -I option additions?
Reviewed-by: tbell
2013-03-06 10:50:37 +01:00
Roland Westrelin
748083843a 8009460: C2compiler crash in machnode::in_regmask(unsigned int)
7121140 may not correctly break the Allocate -> MemBarStoreStore link

Reviewed-by: kvn
2013-03-06 10:28:38 +01:00
David Holmes
a9a7cc3a23 8009529: Fix for 8006988 missed closed configure changes
Reviewed-by: mr
2013-03-05 22:45:59 -05:00
Morris Meyer
15108cd14e 8008750: [partfait] Null pointer deference in hotspot/src/share/vm/oops/instanceKlass.hpp
Fix null pointer

Reviewed-by: kvn, coleenp
2013-03-05 18:03:36 -08:00
Tao Mao
4bec822d40 8008079: G1: Add nextObject routine to CMBitMapRO and replace nextWord
Update the task local finger to the start of the next object when marking aborts, in order to avoid the redundant scanning of all 0's when the marking task restarts, if otherwise updating to the next word. In addition, reuse the routine nextObject() in routine iterate().

Reviewed-by: johnc, ysr
2013-03-05 15:36:56 -08:00
Lana Steuck
76d8a6b8c2 Merge 2013-03-05 15:09:56 -08:00
Ioi Lam
5116181e1f 7107135: Stack guard pages are no more protected after loading a shared library with executable stack
Detect the execstack attribute of the loaded library and attempt to fix the stack guard using Safepoint op.

Reviewed-by: dholmes, zgu
2013-03-05 13:55:56 -08:00
Martin Buchholz
8391257f03 8006988: build-infra: Configure fails if 'cl' is in path on linux
Respect user CC and CXX environment variables; use cl iff on windows

Reviewed-by: erikj
2013-03-05 13:16:40 -08:00
Lana Steuck
3c0b52b10b Merge 2013-03-05 11:51:58 -08:00
Lana Steuck
db23197574 Merge 2013-03-05 11:46:06 -08:00
Lana Steuck
72cb4c459e Merge 2013-03-05 11:46:02 -08:00
Staffan Larsen
2b100092d0 8009397: test/com/sun/jdi/PrivateTransportTest.sh: ERROR: transport library missing onLoad entry: private_dt_socket
Reviewed-by: alanb
2013-03-05 19:25:35 +01:00
Lana Steuck
c5b26e35c5 Merge 2013-03-05 11:49:33 -08:00
Vladimir Ivanov
0e378a1283 Merge 2013-03-05 08:17:18 -08:00
John Zavgren
838b7a1706 4880778: URL final class has protected methods
The two set() methods have been defined to be package private.

Reviewed-by: alanb, chegar, khazra
2013-03-05 09:50:53 -05:00
John Zavgren
d2b27faad4 8008804: file descriptor leak in src/windows/native/java/net/DualStackPlainSocketImpl.c
Reviewed-by: alanb, chegar, dsamersoff
2013-03-05 14:30:18 +00:00
Maurizio Cimadamore
e788a0e536 8009129: Illegal access error when calling method reference
Javac generates method handle referencing non public type

Reviewed-by: jjg, rfield
2013-03-05 14:19:49 +00:00
Maurizio Cimadamore
7a28d6291d 8009154: Missing cast in method reference bridge leads to NoSuchMethodError
Missing cast in generated method reference bridge

Reviewed-by: rfield, jjg
2013-03-05 14:16:07 +00:00
Maurizio Cimadamore
3cbe22f256 8009227: Certain diagnostics should not be deferred
Add new diagnostic flag to mark non deferrable diagnostics

Reviewed-by: jjg
2013-03-05 14:12:07 +00:00
Maurizio Cimadamore
d0a0df54ed 8004962: Code generation crash with lambda and local classes
Translation info should be propagated from LambdaToMethod to Lower

Reviewed-by: jjg, rfield
2013-03-05 14:04:57 +00:00
Andrew Brygin
7659fe9df2 7152608: [macosx] Crash in liblwawt.dylib in AccelGlyphCache_RemoveCellInfo
Reviewed-by: jgodinez, ant
2013-03-05 17:18:55 +04:00
Aleksey Shipilev
4b638cf955 8009120: Fuzz instruction scheduling in HotSpot compilers
Reviewed-by: kvn, vlivanov
2013-03-05 04:24:50 -08:00
Morris Meyer
ff36c9800e 8008574: [parfait] Null pointer deference in hotspot/src/share/vm/runtime/frame.cpp
Fix null pointer

Reviewed-by: kvn
2013-03-05 04:24:33 -08:00
Eric Wang
1ba4dd5979 8009259: TEST_BUG: sun/misc/Cleaner/exitOnThrow.sh failing intermittently
Reviewed-by: chegar, alanb
2013-03-05 10:10:55 +00:00
Staffan Larsen
112317dbe3 8009287: [parfait] Uninitialised variable in hotspot/agent/src/os/linux/ps_core.c
Reviewed-by: dholmes, kvn, mikael, morris
2013-03-05 08:50:59 +01:00
Erik Joelsson
f167bb36ab 8008451: Make mac builds on 10.8 work on 10.7
Reviewed-by: jcoomes, ohair
2013-03-04 22:39:00 -08:00
Naoto Sato
16bd2e1298 8004240: Return value from getAdapterPrefence() can be modified
Reviewed-by: okutsu
2013-03-04 20:46:42 -08:00
Joe Darcy
bc576240bc 8009267: Restore isAnnotationPresent methods in public AnnotatedElement implementations
Reviewed-by: jjg
2013-03-04 19:42:56 -08:00
Morris Meyer
999837eb30 8008559: [parfait] Path through non-void function '_ZN2os15thread_cpu_timeEP6Thread' returns an undefined value
Safety checks for non-Apple thread time functions

Reviewed-by: kvn
2013-03-04 13:15:01 -08:00
John Cuthbertson
a3a42c48e8 8007036: G1: Too many old regions added to last mixed GC
Stop adding old regions to collection set when the remaining reclaimable bytes reaches, or goes below, G1HeapWastePercent. Changes were also reviewed by Vitaly Davidovich <vitalyd@gmail.com>.

Reviewed-by: brutisso
2013-03-04 12:42:14 -08:00
Erik Joelsson
737b863ce4 8004352: build-infra: Limit JOBS on large machines
Reviewed-by: mduigou
2013-03-04 16:45:07 +01:00
James Laskey
dc1c8a5cd7 8009379: Remove $ from generated class names
Reviewed-by: attila, lagergren
2013-03-04 11:01:26 -04:00
Erik Helin
e3e8231629 8009384: Temporarily disable jstat tests to ease complicated push
Reviewed-by: mchung
2013-03-04 15:40:12 +01:00
Erik Helin
37aa83449e 8004172: Update jstat counter names to reflect metaspace changes
Reviewed-by: stefank, jmasa
2013-03-04 13:01:24 +01:00
Hannes Wallnöfer
242e864599 8008370: coffee script compiler doesn't work with Nashorn
Reviewed-by: lagergren, attila
2013-03-04 11:44:54 +01:00
Kumar Srinivasan
bffaa53287 8007297: [pack200] allow opcodes with InterfaceMethodRefs
Reviewed-by: jrose
2013-03-03 20:52:04 -08:00
Jim Laskey
87cc6fe4e6 Merge 2013-03-02 11:26:47 -04:00
Chris Hegarty
3a216a7fdc 8008378: FJP.commonPool support parallelism 0, add awaitQuiescence
Co-authored-by: Doug Lea <dl@cs.oswego.edu>
Reviewed-by: chegar
2013-03-02 08:54:37 +00:00
Daniel D. Daugherty
af6002665d Merge 2013-03-01 15:59:10 -08:00
Morris Meyer
4dd999e1ee 8008327: [parfait] Unitialized variable in hotspot/agent/src/os/bsd/MacosxDebuggerLocal.m
Fix unitialized variable and return value.

Reviewed-by: kvn
2013-03-01 14:26:34 -08:00
Dan Xu
4994fe0840 8006645: TEST_BUG: java/nio/file/Files/CopyAndMove.java failing intermittently (sol)
Fix test failures and update java doc of Files.move

Reviewed-by: alanb, chegar
2013-03-01 14:12:59 -08:00
Sean Mullan
6190b5040a Merge 2013-03-01 16:15:23 -05:00
Sean Mullan
6cd495e473 8008908: Access denied when invoking Subject.doAsPrivileged()
Wildcard principal names are not processed correctly

Reviewed-by: xuelei
2013-03-01 16:12:50 -05:00
Bill Pittore
715db0beb3 Merge 2013-03-01 14:06:47 -05:00
Jonathan Gibbons
6c39105c60 8008949: javadoc stopped copying doc-files
Reviewed-by: bpatel
2013-03-01 10:47:39 -08:00
Sergey Bylokhov
916da4ac2c 7184945: [macosx] NPE in AquaComboBoxUI since jdk7u6b17, jdk8b47
Reviewed-by: malenkov, alexsch
2013-03-01 21:50:00 +04:00
Alejandro Murillo
b87df9f9e1 8009226: new hotspot build - hs25-b22
Reviewed-by: jcoomes
2013-03-01 04:58:31 -08:00
Alejandro Murillo
f3236a879e Added tag hs25-b21 for changeset 972d3f095a95 2013-03-01 04:45:51 -08:00
Alejandro Murillo
0960629d28 Merge 2013-03-01 04:45:51 -08:00
Sergey Bylokhov
b6a841d5a3 7194902: [macosx] closed/java/awt/Button/DoubleActionEventTest/DoubleActionEventTest failed since jdk8b49
7181403: Invalid MouseEvent conversion with SwingUtilities.convertMouseEvent

Reviewed-by: malenkov, alexsch
2013-03-01 15:31:22 +04:00
Xue-Lei Andrew Fan
9abb185430 7030966: Support AEAD CipherSuites
Reviewed-by: weijun, wetmore, valeriep
2013-03-01 02:34:34 -08:00
Sergey Malenkov
19bc54290f 7163696: JCK Swing interactive test JScrollBarTest0013 fails with Nimbus and GTK L&Fs
Reviewed-by: alexsch
2013-03-01 14:30:52 +04:00
Athijegannathan Sundararajan
1909e5f9d6 8009263: Fix all javadoc errors in nashorn code
Reviewed-by: hannesw, lagergren
2013-03-01 15:58:29 +05:30
David Katleman
9ae41399f1 Merge 2013-02-28 20:30:34 -08:00
David Katleman
817e260afc Merge 2013-02-28 20:29:19 -08:00
David Katleman
86b53b9dd7 8009196: install doesn't define $(AR) as /usr/ccs/bin/ar, results in ar: Command not found
Reviewed-by: tbell
2013-02-28 19:30:43 -08:00
Jason Uh
618b36f5eb 8006853: OCSP timeout set to wrong value if com.sun.security.ocsp.timeout < 0
Reviewed-by: mullan
2013-02-28 16:36:01 -08:00
Coleen Phillimore
999f094f2a Merge 2013-02-28 18:37:41 -05:00
Vladimir Ivanov
528aec3f18 Merge 2013-02-28 15:31:03 -08:00
Hannes Wallnöfer
bd2109d3fa 8009240: RegExpScanner code is inefficient and too complex
Reviewed-by: jlaskey, lagergren
2013-02-28 22:59:31 +01:00
David Katleman
f21ded8eea Added tag jdk8-b79 for changeset eef229ae322b 2013-02-28 10:43:03 -08:00
David Katleman
0bd26c4c5b Added tag jdk8-b79 for changeset 630e3bc5b729 2013-02-28 10:42:40 -08:00
David Katleman
0eab6d54ad Added tag jdk8-b79 for changeset b258a0e45b83 2013-02-28 10:42:28 -08:00
David Katleman
14d7f14432 Added tag jdk8-b79 for changeset 1f581fc39f6b 2013-02-28 10:42:23 -08:00
David Katleman
c2043f5ac9 Added tag jdk8-b79 for changeset f2f591a26d5f 2013-02-28 10:42:09 -08:00
David Katleman
ae0385ccc0 Added tag jdk8-b79 for changeset 6cecdca1115d 2013-02-28 10:41:58 -08:00
David Katleman
ae5f0fafc4 Added tag jdk8-b79 for changeset 31943a427b7d 2013-02-28 10:41:46 -08:00
Sergey Bylokhov
1270c69088 8003169: [macosx] JVM crash after disconnecting from projector
Reviewed-by: anthony, alexsch
2013-02-28 20:27:38 +04:00
Athijegannathan Sundararajan
66c2fc6e66 8009229: ant makefile default target should be "test"
Reviewed-by: lagergren, jlaskey
2013-02-28 20:31:30 +05:30
Maurizio Cimadamore
f932d844c1 8008537: Missing method reference lookup error when unbound search finds a static method
Static-ness check should be applied after member reference resolution

Reviewed-by: jjg
2013-02-28 14:05:52 +00:00
Maurizio Cimadamore
85067f7869 8008813: Structural most specific fails when method reference is passed to overloaded method
Bad logic for checking most specific method reference type

Reviewed-by: jjg
2013-02-28 14:05:44 +00:00
Maurizio Cimadamore
9c01455eb6 8008723: Graph Inference: bad graph calculation leads to assertion error
Dependencies are not propagated correctly through merged nodes during inference graph initialization

Reviewed-by: jjg
2013-02-28 14:00:52 +00:00
Daniel D. Daugherty
176ce8de18 Merge 2013-02-28 05:55:18 -08:00
Sergey Bylokhov
f5f12c7995 8008660: Failure in 2D Queue Flusher thread on Mac
Reviewed-by: swingler, bae
2013-02-28 17:04:19 +04:00
Chris Hegarty
e161c78dc3 8006409: ThreadLocalRandom should dropping padding fields from its serialized form
Reviewed-by: dl, martin, alanb, shade
2013-02-28 12:39:29 +00:00
Bengt Rutisson
02472faab5 Merge 2013-02-28 09:01:08 +01:00
Gary Collins
093d1163e4 7115383: TEST_BUG: some jtreg tests fail because they explicitly specify -server option
Small changes to hotspot tests to remove  "-server" and replace with ${TESTVMOPTS}

Reviewed-by: kvn
2013-02-27 20:36:14 -08:00
Daniel D. Daugherty
776841b1bc 8007476: assert(the_owner != NULL) failed: Did not find owning Java thread for lock word address
Make deadlock detection a little more robust in the case of being unable to find the JavaThread associated with an object lock.

Reviewed-by: sla, acorn
2013-02-27 15:00:30 -08:00
Kevin Walls
37cdc7b1f8 7178741: SA: jstack -m produce UnalignedAddressException in output (Linux)
Reviewed-by: poonam, sla
2013-02-27 22:40:14 +00:00
David Katleman
aaac35b3d7 Merge 2013-02-27 13:10:30 -08:00
Serguei Spitsyn
c26ee9d321 Merge 2013-02-27 12:20:34 -08:00
Mike Duigou
5262142601 8008785: IdentityHashMap.values().toArray(V[]) broken by JDK-8008167
Reviewed-by: alanb
2013-02-27 11:00:20 -08:00
Edvard Wendelin
f5518d2c81 Merge 2013-02-27 18:13:20 +01:00
Kevin Walls
84144898c1 Merge 2013-02-27 16:40:30 +00:00
Denis Fokin
e19091b0b1 8009158: Incomplete fix for 7178079
Reviewed-by: serb, anthony
2013-02-27 20:34:04 +04:00
Vladimir Ivanov
3b1ccee969 Merge 2013-02-27 08:03:10 -08:00
Denis Fokin
b097b0d234 7178079: REGRESSION: Some AWT Drag-n-Drop tests fail since JDK 7u6 b13
Reviewed-by: serb, anthony
2013-02-27 19:38:36 +04:00
Attila Szegedi
c44210c971 8009150: Previous dead code elimination was incomplete
Reviewed-by: hannesw, lagergren
2013-02-27 16:25:15 +01:00
Attila Szegedi
5b7d451617 8009146: Eliminate some dead code in preparation for immutable AST
Reviewed-by: hannesw, lagergren
2013-02-27 15:49:05 +01:00
Attila Szegedi
a1ade22dc0 8009143: Eliminate Dynalink dependency on java.beans
Reviewed-by: jlaskey, lagergren, sundar
2013-02-27 15:20:26 +01:00
Alan Bateman
9f8e932d41 8008950: jdk8/tl failing with SetupJavaCompilation BUILD_NASGEN contains missing directory -c on Windows
Reviewed-by: chegar, sundar
2013-02-27 14:12:45 +00:00
Kevin Walls
13505fc4e5 8008807: SA: jstack crash when target has mismatched bitness (Linux)
Reviewed-by: rbackman, sla, poonam
2013-02-27 14:02:26 +00:00
Igor Ignatyev
50efb858e0 8007439: C2: adding successful message of inlining
Reviewed-by: kvn, vlivanov
2013-02-27 05:58:48 -08:00
Coleen Phillimore
fd02968ebe Merge 2013-02-27 07:35:32 -05:00
David Holmes
b660eb6528 Merge 2013-02-27 04:58:45 -05:00
Volker Simonis
76fa595599 8008959: Fix non-PCH build on Linux, Windows and MacOS X
Fix the build without precompiled headers by either including the missing ".inline.hpp" files into the appropriate files or by turning inline-functions declared in header files into ordinary functions in ".cpp" files.

Reviewed-by: coleenp, stefank, dholmes
2013-02-27 09:40:30 +01:00
Edvard Wendelin
adf04b176e Merge 2013-02-27 09:28:02 +01:00
Joe Darcy
1caebc408d 8008279: Remove InvalidContainerAnnotationError.java
Reviewed-by: jfranck
2013-02-26 17:38:29 -08:00
Joe Darcy
a26b355e8b 8009102: Several docs warnings in Project Lambda APIs
Reviewed-by: mduigou
2013-02-26 17:01:04 -08:00
David Chase
899bcf76ae 8007776: Test6852078.java timeouts
If more than 100 seconds and more than 100 iterations have both passed, then exit is allowed.

Reviewed-by: kvn
2013-02-26 15:38:24 -08:00
Alan Bateman
18e1157d3b 8009029: SunEC provider classes ending up in rt.jar after Nashorn build changes
Reviewed-by: mduigou
2013-02-26 22:39:50 +00:00
David Katleman
bed9464bce Merge 2013-02-26 13:23:55 -08:00
David Katleman
98d3004bd9 Merge 2013-02-26 13:23:06 -08:00
Edvard Wendelin
7ecb0fd433 Merge 2013-02-26 20:36:52 +01:00
Robert Field
b0dc9de25e 8008770: SerializedLambda incorrect class loader for lambda deserializing class
Current thread's context ClassLoader was used to load class by name, pass class not name in serialization (Thank you Peter Levart for test and prototype. Thank you Sundar and Peter for unofficial reviews)

Reviewed-by: forax
2013-02-26 10:38:58 -08:00
Athijegannathan Sundararajan
7bdfa989ff 8009021: nasgen should be run on boot jdk rather than currenly built jdk
Reviewed-by: jlaskey
2013-02-26 22:57:51 +05:30
Tim Bell
20b2cd4890 8009019: Updates to generated-configure.sh required for 8008914
Reviewed-by: sundar, jlaskey, jjg
2013-02-26 09:25:44 -08:00
Mikael Vidstedt
960480c53d 8008081: Print outs do not have matching arguments
Corrected formatted prints to have matching arguments, removed dead print_frame_layout function

Reviewed-by: sla, dholmes
2013-02-26 08:54:03 -08:00
Alan Bateman
8eaa894f7c 8008977: profiles build broken by Nashorn build changes
Reviewed-by: chegar
2013-02-26 14:16:48 +00:00
Erik Joelsson
61e56e8ead 8008978: nashorn-rules.gmk missing
Co-authored-by: James Laskey <james.laskey@oracle.com>
Reviewed-by: alanb
2013-02-26 14:08:19 +00:00
Rickard Bäckman
1a74b23a2f 8008340: [sampling] assert(upper->pc_offset() >= pc_offset) failed: sanity
Reviewed-by: kvn, sla
2013-02-26 14:09:52 +01:00
Roland Westrelin
c84424d4af 8007722: C2: "assert(tp->base() != Type::AnyPtr) failed: not a bare pointer" at machnode.cpp:376
GetAndSetP's MachNode should capture bottom type.

Reviewed-by: kvn
2013-02-26 12:18:30 +01:00
Chris Hegarty
c52a86e9c7 Merge 2013-02-26 11:18:19 +00:00
Chris Hegarty
4e9403c378 Merge 2013-02-26 11:06:49 +00:00
Krystal Mo
f5666f9a69 7087570: java.lang.invoke.MemberName information wrong for method handles created with findConstructor
REF_invokeSpecial DMHs (which are unusual) get marked explicitly; tweak the MHI to use this bit

Reviewed-by: jrose, twisti
2013-02-26 11:05:26 +00:00
Vicente Romero
9f2721bfb1 8008436: javac should not issue a warning for overriding equals without hasCode if hashCode has been overriden by a superclass
Reviewed-by: jjg, mcimadamore
2013-02-26 09:04:19 +00:00
Dmitry Cherepanov
8936d472bd Merge 2013-02-26 12:54:39 +04:00
Edvard Wendelin
11923f546e Merge 2013-02-26 06:47:57 +01:00
Erik Joelsson
5c31bde4c0 8008914: Add nashorn to the tl build
Co-authored-by: James Laskey <james.laskey@oracle.com>
Reviewed-by: mr, tbell, jjh
2013-02-25 15:08:11 -08:00
Erik Joelsson
b3a313fa2b 8008914: Add nashorn to the tl build
Co-authored-by: James Laskey <james.laskey@oracle.com>
Reviewed-by: mr, tbell, jjh
2013-02-25 15:08:11 -08:00
Brent Christian
944e1b9636 8006039: test/tools/launcher/I18NJarTest.java fails on Mac w/ LANG=C, LC_ALL=C
Avoid automated test failure by just exiting when in 'C' locale

Reviewed-by: naoto, ksrini
2013-02-25 14:19:48 -08:00
Alan Bateman
a04fad868e 8008808: Allowed dependencies added by JDK-8008481 no longer required
Reviewed-by: tbell, chegar
2013-02-25 17:17:05 +00:00
Attila Szegedi
0248a98842 8006984: Introducing local into a function inside with statement confuses its scope
Reviewed-by: jlaskey, lagergren, sundar
2013-02-25 16:51:04 +01:00
Roland Westrelin
fe92862089 8007294: ReduceFieldZeroing doesn't check for dependent load and can lead to incorrect execution
InitializeNode::can_capture_store() must check that the captured store doesn't overwrite a memory location that is loaded before the store.

Reviewed-by: kvn
2013-02-25 14:13:04 +01:00
Athijegannathan Sundararajan
445b8d2438 8008789: Enable java access and nashorn runtime tests for jtreg
Reviewed-by: lagergren, jlaskey, hannesw
2013-02-25 18:13:23 +05:30
Athijegannathan Sundararajan
f688068adf 8008731: Separate configuration environment (options, error/output writer etc.) from Context
Reviewed-by: hannesw, lagergren
2013-02-25 16:58:31 +05:30
Petr Pchelko
68d2d95f00 8006634: Unify LWCToolkit.invokeAndWait() and sun.awt.datatransfer.ToolkitThreadBlockedHandler
Changed the logic for the nested event loops and deleted deadlock detection

Reviewed-by: art, denis
2013-02-25 10:17:25 +00:00
Edvard Wendelin
d02f5d5667 Merge 2013-02-25 07:22:09 +01:00
Edvard Wendelin
c6e54df5d6 Merge 2013-02-25 07:22:06 +01:00
Edvard Wendelin
b6a6791e0e Merge 2013-02-25 07:21:49 +01:00
Jan Valenta
63fe735683 7112427: The doclet needs to be able to generate JavaFX documentation
Reviewed-by: jjg
2013-02-24 11:36:58 -08:00
Lana Steuck
38697490b4 Merge 2013-02-23 19:49:17 -08:00
Joe Darcy
797ef55129 6556996: (ann spec) SuppressWarnings strings should be documented
Reviewed-by: mduigou, chegar, abuckley
2013-02-23 13:32:32 -08:00
Kelly O'Hair
2ff5bb1c92 8004712: build-infra: Move user guide from web pages to repository
Just the initial work, will need more changes.

Reviewed-by: tbell
2013-02-23 10:47:01 -08:00
Lana Steuck
a9754a7eb0 Merge 2013-02-22 23:12:46 -08:00
James Laskey
f58612a3ad 8008776: Revise BuildNashorn.gmk for changes in new build system
Reviewed-by: jjh
2013-02-22 23:33:46 -04:00
Vladimir Danushevsky
78a060dbde 8005545: Add System property to identify ARCH specific details such as ARM hard-float binaries
Adding sun.os.abi Java Property support

Reviewed-by: bobv, alanb, dholmes
2013-02-22 17:12:35 -05:00
Athijegannathan Sundararajan
6715b64842 8009140: jtreg tests under sun/tools/jrunscript should use nashorn engine
Reviewed-by: alanb
2013-02-27 20:34:12 +05:30
Alan Bateman
f99a5d722e 8008793: SecurityManager.checkXXX behavior not specified for methods that check AWTPermission and AWT not present
Reviewed-by: hawtin, mullan, dsamersoff, mchung
2013-02-27 14:24:45 +00:00
Athijegannathan Sundararajan
b7511e7609 8009115: jtreg tests under jdk/test/javax/script should use nashorn as script engine
Reviewed-by: alanb
2013-02-27 17:22:44 +05:30
Jia-Hong Chen
d1643f1833 8005796: [parfait] Possible uninitialised variable at jdk/src/share/native/sun/java2d/loops/ByteBinary1Bit.c
Reviewed-by: prr, vadim, flar
2013-02-22 13:20:16 -08:00
Lana Steuck
4dca16d202 Merge 2013-02-22 11:37:40 -08:00
Jennifer Godinez
3cc83d24ad 8006110: pageDialog is showing the swing dialog with DialogTypeSelection.NATIVE
Reviewed-by: bae, prr
2013-02-22 11:01:23 -08:00
Maurizio Cimadamore
7776fdebe7 8008708: Regression: separate compilation causes crash in wildcards inference logic
Invalid use of WildcardType.bound in Types.removeWildcards

Reviewed-by: jjg
2013-02-22 18:19:51 +00:00
Serguei Spitsyn
f85789e68a Merge 2013-02-22 10:16:51 -08:00
Alejandro Murillo
c444c1faea 8008692: new hotspot build - hs25-b21
Reviewed-by: jcoomes
2013-02-22 10:12:00 -08:00
Alejandro Murillo
96dbc17346 Added tag hs25-b20 for changeset 93430469429d 2013-02-22 10:02:06 -08:00
Alejandro Murillo
73094fada5 Merge 2013-02-22 10:02:06 -08:00
Athijegannathan Sundararajan
48a5d9cb5f 8008729: Make sure that we can run basic jsr223 tests using jtreg
Reviewed-by: jlaskey, hannesw, lagergren
2013-02-22 22:39:23 +05:30
Hannes Wallnöfer
1867421e9b 8006028: Integrate Joni regexp engine with Nashorn
Reviewed-by: lagergren, attila
2013-02-22 17:00:22 +01:00
Hannes Wallnöfer
1c711a064a 8008093: Make RegExp engine pluggable
Reviewed-by: lagergren, attila
2013-02-22 16:31:10 +01:00
Lance Andersen
8ee9639988 Merge 2013-02-22 09:58:36 -05:00
James Laskey
33ebb8d71d 8008721: Tweaks to make all NEWBUILD=false round 4
Reviewed-by: jjh
2013-02-22 10:39:00 -04:00
Lance Andersen
36b43451a7 8008716: address typo in CallableStatement javadocs
Reviewed-by: chegar
2013-02-22 09:29:50 -05:00
Alan Bateman
ba7a50ebcf 8008290: (profiles) Startup regression due to additional checking of JAR file manifests
Reviewed-by: lancea, chegar, iris, mchung, sherman
2013-02-22 14:04:06 +00:00
Coleen Phillimore
b8b9434a9f 8000797: NPG: is_pseudo_string_at() doesn't work
Zero Symbol* for constant pool strings to indicate pseudo_strings (objects that aren't strings).  Clean up JVM_CONSTANT_Object and unused flags.

Reviewed-by: sspitsyn, jrose
2013-02-22 08:36:42 -05:00
Sonali Goel
96495bc664 8008337: Write test to check for compiler error when static method in interface is called via super()
Reviewed-by: mcimadamore
2013-02-22 13:31:35 +00:00
Marcus Lagergren
0685f8e938 8007002: Replace implicit exception throwing methods with explicit throws - simplify control flow and remove useless code
Reviewed-by: attila, hannesw
2013-02-22 12:22:16 +01:00
Anton Tarasov
a8305fc6e6 8006406: lightweight embedding in other Java UI toolkits
Reviewed-by: serb, anthony, art
2013-02-22 15:13:13 +04:00
Vladimir Ivanov
17992b9ac9 8004933: Improve MethodHandle interaction with libraries
Reviewed-by: jrose
2013-02-22 02:58:38 -08:00
Vladimir Ivanov
0ae708ca99 8006125: Update MethodHandles library interactions
Reviewed-by: jrose
2013-02-22 02:59:24 -08:00
Vladimir Ivanov
f179e269b9 8006179: JSR292 MethodHandles lookup with interface using findVirtual()
Reviewed-by: jrose, twisti
2013-02-22 03:00:12 -08:00
Vladimir Ivanov
98e5a4b393 8006439: Improve MethodHandles coverage
Reviewed-by: jrose, twisti
2013-02-22 03:00:48 -08:00
Edvard Wendelin
2f5be3ab0d Merge 2013-02-25 08:44:00 +01:00
Eugene Drobitko
406f72e5e9 8008575: Re-integrate code coverage
Co-authored-by: Ilya Dergalin <ilya.dergalin@oracle.com>
Reviewed-by: attila, hannesw
2013-02-22 11:27:40 +01:00
Staffan Larsen
3e1c15cc0a 7165259: Remove BugSpot
Reviewed-by: coleenp, mgronlun
2013-02-22 10:03:02 +01:00
Marcus Lagergren
90b971a60d 8008554: load was broken for URLs
Reviewed-by: attila, sundar
2013-02-22 08:57:22 +01:00
Thomas Ng
7a31c1d5f3 8008691: Build failure (NEWBUILD=false) on Mac
Reviewed-by: art, anthony
2013-02-21 17:55:33 -08:00
Lana Steuck
3c22954800 Merge 2013-02-21 17:49:56 -08:00
Lana Steuck
6e3b8650b7 Merge 2013-02-21 17:39:58 -08:00
Eric Mccorkle
e84b39e459 8008658: Four new method param jtreg tests fail in nightly tests
Reviewed-by: jjg, ksrini, mcimadamore
2013-02-21 12:23:27 -08:00
Robert Field
bcaa703a49 8008405: Now that metafactory is in place, add javac lambda serialization tests
Tests part of original langtools serialization review.

Reviewed-by: mcimadamore
2013-02-21 14:43:51 -08:00
Mark Sheppard
ec9e303630 8006182: cleanup to use java.util.Base64 in java security component, providers, and regression tests
Refactored code to use java.util.Base64 Mime Encoder and Decoder as a replacement for sun.misc.BASE64Encoder and sun.misc.BASE64Decoder

Reviewed-by: vinnie, chegar, sherman
2013-02-21 20:01:22 +00:00
Lana Steuck
835c35dc91 Merge 2013-02-21 17:43:57 -08:00
Robert Field
56baa11720 8008356: Test LambdaSerialization.java failing
Run in /othervm mode

Reviewed-by: ksrini
2013-02-21 15:46:37 -08:00
Vladimir Danushevsky
b799a85392 Merge 2013-02-21 11:39:24 -08:00
James Laskey
fc7f562588 8008447: Tweaks to make all NEWBUILD=false round 3
Reviewed-by: jjh, sundar
2013-02-21 15:24:31 -04:00
David Katleman
60f0c3f6fc Added tag jdk8-b78 for changeset 27bb87e628ae 2013-02-21 11:13:58 -08:00
David Katleman
410fa3840e Added tag jdk8-b78 for changeset 3cd100d3bd6b 2013-02-21 11:13:23 -08:00
David Katleman
b08ac437b7 Added tag jdk8-b78 for changeset bfa2a6f233d5 2013-02-21 11:13:10 -08:00
David Katleman
fbc01baf4a Added tag jdk8-b78 for changeset 909304be06a3 2013-02-21 11:13:04 -08:00
David Katleman
4e3d30888f Added tag jdk8-b78 for changeset e3645986b98a 2013-02-21 11:12:50 -08:00
David Katleman
4b358696a6 Added tag jdk8-b78 for changeset 23887ff7a8ee 2013-02-21 11:12:38 -08:00
David Katleman
9946dda799 Added tag jdk8-b78 for changeset e29ed094b804 2013-02-21 11:12:21 -08:00
Vladimir Danushevsky
5a8e8cf6b4 Merge 2013-02-21 09:08:04 -08:00
Stefan Karlsson
9ed09d08f5 8008549: NPG: SystemDictionary::find(...) unnecessarily keeps class loaders alive
SystemDictionary::find(...) should not create and register ClassLoaderData objects for class loaders.

Co-authored-by: Erik Helin <erik.helin@oracle.com>
Reviewed-by: coleenp, acorn
2013-02-21 17:22:15 +01:00
Marcus Lagergren
9ff7a57a0f 8008648: Lazy JIT scope and callee semantics bugfixes. Broke out wallclock timer
Reviewed-by: attila, hannesw
2013-02-21 16:57:21 +01:00
Maurizio Cimadamore
73b1aee3f4 8008444: Inherited generic functional descriptors are merged incorrectly
Missing call to Types.createMethodWithThrownTypes

Reviewed-by: jjg
2013-02-21 15:27:05 +00:00
Maurizio Cimadamore
6fd868a306 8007461: Regression: bad overload resolution when inner class and outer class have method with same name
Fix regression in varargs method resolution introduced by bad refactoring

Reviewed-by: jjg
2013-02-21 15:26:46 +00:00
Maurizio Cimadamore
8c1621ee38 8008293: Declared bounds not considered when functional interface containing unbound wildcards is instantiated
Wildcards inference should re-use some of the bounds info generated during capture conversion

Reviewed-by: jjg
2013-02-21 15:25:03 +00:00
Maurizio Cimadamore
5bbf5f39fc 8005183: Missing accessor for constructor reference pointing to private inner class ctor
Compiler should add bridges when translating private constructor reference

Reviewed-by: jjg
2013-02-21 15:23:48 +00:00
Maurizio Cimadamore
937b7d2fba 8008276: assertion error in com.sun.tools.javac.comp.TransTypes.visitApply
DiagnosticFilter used during speculative attribution is too broad

Reviewed-by: jjg
2013-02-21 15:21:38 +00:00
Maurizio Cimadamore
eb68b33185 8008227: Mixing lambdas with anonymous classes leads to NPE thrown by compiler
Disentangle cyclic dependency between static-ness of synthetic lambda method and static-ness of classes nested within lambdas

Reviewed-by: jjg
2013-02-21 15:19:29 +00:00
Vladimir Ivanov
1a03134bc8 Merge 2013-02-21 06:29:43 -08:00
Erik Joelsson
53ae53637d 8007903: 8005583's changes to make/install-rules.gmk need to made to jdk/make/closed/InstallWrapper.gmk
Reviewed-by: tbell, ohair
2013-02-21 14:23:12 +01:00
Erik Joelsson
b70f9bfef4 8008451: Make mac builds on 10.8 work on 10.7
Reviewed-by: ohair, ddehaven
2013-02-21 14:16:56 +01:00
Erik Joelsson
d56a0e26bf 8008451: Make mac builds on 10.8 work on 10.7
Reviewed-by: ohair, ddehaven
2013-02-21 14:16:15 +01:00
Erik Joelsson
11cd94d40b 8007387: "sed: RE error: illegal byte sequence" when building images on Mac
Reviewed-by: tbell
2013-02-21 14:14:59 +01:00
Zhengyu Gu
7b43f3402c 8008071: Crashed in promote_malloc_records() with Kitchensink after 19 days
Added NULL pointer check for arena size record

Reviewed-by: sspitsyn, dholmes
2013-02-21 07:50:48 -05:00
Bengt Rutisson
88ec03b622 Merge 2013-02-21 13:13:22 +01:00
Bill Pittore
e3f64880d0 Merge 2013-02-20 23:29:26 -05:00
Ron Durbin
9ff6dfb849 6799919: Recursive calls to report_vm_out_of_memory are handled incorrectly
Report_vm_out_of_memory() should allow VMError.report_and_die() to handle multiple out of native memory errors.

Reviewed-by: dcubed, dholmes, coleenp, acorn
2013-02-20 19:36:25 -08:00
Mike Duigou
debd718fc1 8008629: webrev.ksh needs to quote bug title it gets back from scraping bugs.sun.com
Reviewed-by: darcy
2013-02-20 17:56:16 -08:00
Peter Jensen
556f6dfebb 8006582: Test for parameter names feature
Reviewed-by: jjg, darcy, emc
2013-02-20 15:47:14 -08:00
Daniel D. Daugherty
5eb01d191d 8008352: java/lang/instrument/RedefineSubclassWithTwoInterfaces.sh fails on MKS
Use more portable pattern counting constructs in test driver.

Reviewed-by: sspitsyn, sla, coleenp
2013-02-20 13:23:56 -08:00
John Cuthbertson
1d1641be2f 8008188: Add regression test for 8005875
Add regression test for crash seen in 8005875. Test is run with G1 and PGCT=0 and issues "jcmd <pid> Thread.print" against itself. Without the fix for 8005875 the test will crash.

Reviewed-by: brutisso
2013-02-20 12:52:13 -08:00
Serguei Spitsyn
78a1d5e64b Merge 2013-02-20 08:51:44 -08:00
Klara Ward
017e73cbd0 8008166: URL handling was broken on windows, causing "load" to malfunction
Reviewed-by: attila, jlaskey
2013-02-20 16:43:21 +01:00
Harold Seigel
2f3d1da4f6 Merge 2013-02-20 07:42:01 -05:00
Alexey Utkin
29658bd3b4 8007454: (process) SetHandleInformation parameters DWORD (not BOOLEAN)
The SetHandleInformation arguments list was fixed.

Reviewed-by: alanb
2013-02-20 16:39:35 +04:00
Harold Seigel
2d47fd6658 8004495: [parfait] False positive Buffer overflow in hotspot/src/os/linux/vm/os_linux.cpp
Delete the questionable source code because it is for no-longer supported versions of Linux.

Reviewed-by: mikael, coleenp
2013-02-20 07:16:23 -05:00
Athijegannathan Sundararajan
4a5a1e4404 8008207: Make constants array and source fields private
Reviewed-by: hannesw, lagergren
2013-02-20 17:08:32 +05:30
Lana Steuck
09dadebbf1 Merge 2013-02-19 22:23:34 -08:00
Lana Steuck
2de23a8650 Merge 2013-02-19 22:10:42 -08:00
Lana Steuck
898ada48bb Merge 2013-02-19 20:53:35 -08:00
Lana Steuck
dc7cbef710 Merge 2013-02-19 20:48:44 -08:00
Lana Steuck
416b8fa159 Merge 2013-02-19 20:48:40 -08:00
Eric Mccorkle
bfe1255adc 8006948: Update javac for MethodParameters format change
Reviewed-by: ksrini, forax
2013-02-19 17:19:01 -08:00
Filipp Zhinkin
bfe250c236 8006628: NEED_TEST for JDK-8002870
Regression test for 8000311. Verifies that PLABStats works with zero parallel GC threads.

Reviewed-by: jmasa, johnc
2013-02-19 16:22:28 -08:00
David Holmes
345e7e8175 8008481: Dependency analyzer needs exclusion for profile builds with JFR disabled
Reviewed-by: alanb
2013-02-19 17:32:10 -05:00
Edvard Wendelin
d73e2aa93f Merge 2013-02-19 21:53:06 +01:00
Edvard Wendelin
cbfc80d987 Merge 2013-02-19 21:48:01 +01:00
Edvard Wendelin
14b0e4eb6f Merge 2013-02-19 21:45:15 +01:00
Edvard Wendelin
3c21e13d68 Merge 2013-02-19 21:45:09 +01:00
Edvard Wendelin
3f1ccc821a Merge 2013-02-19 21:44:41 +01:00
Naoto Sato
872cd491a7 7092447: Clarify the default locale used in each locale sensitive operation
Reviewed-by: okutsu
2013-02-19 10:34:26 -08:00
Coleen Phillimore
99fa0d1e99 Merge 2013-02-19 13:33:39 -05:00
Vicente Romero
68a3295c8b 8006212: javac, convert jtreg tests from shell script to java
Reviewed-by: jjg
2013-02-19 17:53:16 +00:00
Mikael Gerdin
1d468be4b1 8006753: fix failed for JDK-8002415 White box testing API for HotSpot
Modify WhiteBoxAPI to use interface classes from test/testlibrary instead, add ClassFileInstaller to resolve the boot class path issue

Reviewed-by: ctornqvi, dsamersoff, coleenp, kvn
2013-02-19 18:45:49 +01:00
Eric McCorkle
78fe727c6d 8008312: Re-enable MethodParameter tests in JDK
Reviewed-by: darcy
2013-02-19 17:09:25 +00:00
Eric McCorkle
b56b3bc9aa 8007153: Ensure that MethodParameters API works properly with RedefineClasses
Adds code to HotSpot to properly update MethodParameter attributes' constant pool indexes when redefineClasses is called

Reviewed-by: coleenp, sspitsyn
2013-02-19 11:36:52 -05:00
John Zavgren
8d2a55d5b7 8007609: WinNTFileSystem_md.c should correctly check value returned from realloc
Reviewed-by: alanb, chegar, dholmes
2013-02-19 16:19:09 +00:00
Konstantin Shefov
a97003cb22 8006070: TEST_BUG: Up and down the Y coordinate of the mouse position, the selected item doesn't change for the single list
Reviewed-by: serb, anthony
2013-02-19 20:00:02 +04:00
Athijegannathan Sundararajan
be8f1b2b35 8008448: Add coverage test for jdk.nashorn.internal.ir.debug.JSONWriter
Reviewed-by: jlaskey, attila
2013-02-19 20:33:07 +05:30
Sean Coffey
117010c6ec 8007315: HttpURLConnection.filterHeaderField method returns null where empty string is expected
Reviewed-by: chegar
2013-02-19 14:12:09 +00:00
Sean Coffey
05a3bdceae 7197187: Currency.isPastCutoverDate should be made more robust
Reviewed-by: alanb
2013-02-19 14:07:25 +00:00
Harold Seigel
301152ddb7 6749267: Signal handler should save/restore errno
Save errno before processing signal, then restore it.

Reviewed-by: acorn, sspitsyn
2013-02-19 08:51:56 -05:00
Jim Laskey
b5c0480f54 Merge 2013-02-19 09:47:02 -04:00
James Laskey
564d7d3add 8008420: Tweaks to make all NEWBUILD=false round 2
Reviewed-by: jjh
2013-02-19 09:46:28 -04:00
Konstantin Shefov
88eea092fb 8008379: TEST_BUG: Fail automatically with java.lang.NullPointerException
Reviewed-by: serb, anthony
2013-02-19 17:26:40 +04:00
Alan Bateman
48fbf1ca88 Merge 2013-02-19 11:32:46 +00:00
David Holmes
8c52b75d0f 8008424: Isolate PROFILE make variable from incidental setting in the environment
Reviewed-by: erikj, alanb
2013-02-19 06:27:20 -05:00
Petr Pchelko
49ba72c463 8008374: Build failure (NEWBUILD=false) on Mac
Fixed an old build system failure

Reviewed-by: art, anthony
2013-02-19 11:26:43 +00:00
Alan Bateman
8bb4f96911 8007097: (profiles) Build needs test to ensure that profile definitions are updated
Reviewed-by: dholmes, erikj
2013-02-19 11:08:43 +00:00
Joe Darcy
6e097b8776 8008267: Add @Supported annotation to com.sun.source types
Reviewed-by: jjg
2013-02-19 00:31:45 -08:00
Joe Darcy
d6a9902690 8008435: Fix new build to include jdk.Supported in ct.sym
Reviewed-by: erikj
2013-02-19 00:24:55 -08:00
Joe Darcy
66b344c616 8008434: Misc javadoc warning fixes in DateTimeFormatterBuilder and TimeZone
Reviewed-by: mduigou, okutsu
2013-02-19 00:19:15 -08:00
Vladimir Kozlov
656949d014 8004867: VM crashing with assert "share/vm/opto/node.hpp:357 - assert(i < _max) failed: oob"
Added few checks and early bailout from Superword optimization to avoid such cases in a future.

Reviewed-by: roland, twisti
2013-02-18 16:47:15 -08:00
David Chase
8d2496d7de 7102300: performance warnings cause results diff failure in Test6890943
Strip lines matching the performance warning from the output before diff.

Reviewed-by: kvn
2013-02-18 15:08:39 -08:00
Jonathan Gibbons
971f247b1b 8008339: Test TargetAnnoCombo.java is broken
Reviewed-by: jjh
2013-02-18 14:29:40 -08:00
David Chase
d867a3f9a8 8008180: Several tests in compiler/5091921 need more time to run
Added an explicit timeouts.

Reviewed-by: kvn, twisti
2013-02-18 14:29:16 -08:00
Jia-Hong Chen
80da999bf3 8005191: [parfait] #384 sun/font/layout/LookupProcessor.cpp Null pointer dereference
Reviewed-by: prr, vadim
2013-02-18 14:04:00 -08:00
David Holmes
aa38d46a14 Merge 2013-02-18 15:35:57 -05:00
David Holmes
25c1411706 Merge 2013-02-18 15:35:05 -05:00
Athijegannathan Sundararajan
350c3e01c1 8008387: Improve code coverage tests for JSObjectLinker and NashornBottomLinker
Reviewed-by: lagergren, jlaskey, hannesw
2013-02-18 20:41:12 +05:30
Attila Szegedi
ccce3fa803 8008371: Fix Dynalink compiler warnings and whitespace
Reviewed-by: jlaskey, sundar
2013-02-18 16:00:15 +01:00
Vicente Romero
e6b61ae08a 6563143: javac should issue a warning for overriding equals without hashCode
Reviewed-by: jjg, mcimadamore
2013-02-18 14:33:25 +00:00
Staffan Larsen
1439d121c2 8007779: os::die() on solaris should generate core file
Reviewed-by: dholmes, rbackman
2013-02-18 12:49:53 +01:00
Erik Joelsson
7e8a3b3d11 8008295: build-infra: Cleanup in Import.gmk
Reviewed-by: ohrstrom, tbell
2013-02-18 11:27:43 +01:00
Erik Joelsson
bf12ddea85 8008294: build-infra: Build-infra closed fails on solaris 11.1
Reviewed-by: ohrstrom, dholmes, tbell
2013-02-18 11:26:23 +01:00
Erik Joelsson
2a904298d2 Merge 2013-02-18 10:48:51 +01:00
Erik Joelsson
b6f45f1098 Merge 2013-02-18 10:46:22 +01:00
Staffan Larsen
5265514689 8007901: SA: Don't read flag values as constants
Reviewed-by: dholmes, mikael
2013-02-18 10:43:07 +01:00
Hannes Wallnöfer
9a4e9fe31e 8008351: Avoid using String.replace(String, String) in codegen
Reviewed-by: sundar, attila
2013-02-18 10:36:18 +01:00
Athijegannathan Sundararajan
b1f72f6fd2 8008305: ScriptEngine.eval should offer the ability to provide a codebase
Reviewed-by: lagergren, hannesw, attila
2013-02-18 14:41:58 +05:30
Alan Bateman
3a353cb8e0 8007436: (profiles) Add JSR-310 to Compact Profiles contents
Reviewed-by: dholmes, erikj
2013-02-18 08:57:06 +00:00
Frank Ding
7886b3e26b 6429204: (se) Concurrent Selector.register and SelectionKey.interestOps can ignore interestOps
Reviewed-by: alanb
2013-02-18 08:14:18 +00:00
Roland Westrelin
260e822459 8007959: Use expensive node logic for more math nodes
Use expensive node logic for other more math nodes.

Reviewed-by: kvn
2013-02-18 09:06:24 +01:00
David Holmes
e57875e8ab Merge 2013-02-17 16:44:55 -05:00
David Holmes
e0ece27387 Merge 2013-02-17 16:44:28 -05:00
David Holmes
390cc1d7a1 Merge 2013-02-17 16:44:19 -05:00
Yong Jeffrey Huang
bf26c0a143 8006748: getISO3Country() returns wrong value
Reviewed-by: naoto
2013-02-16 21:22:11 -08:00
Xueming Shen
c64f5833d2 8008348: The leftover jdk/make/tools/javazic causes build problems with hs25-b19 control
To remove jdk/make/tools/javazic from the jdk repo

Reviewed-by: alanb
2013-02-17 01:01:15 +00:00
Robert Field
381aecb7c2 8004970: Implement serialization in the lambda metafactory
Reviewed-by: forax
2013-02-16 12:36:54 -08:00
Bill Pittore
51da3d1337 Merge 2013-02-15 21:53:55 -05:00
Robert Field
b2a3c762ff 8004969: Generate $deserializeLambda$ method
8006763: super in method reference used in anonymous class - ClassFormatError is produced
8005632: Inner classes within lambdas cause build failures
8005653: Lambdas containing inner classes referencing external type variables do not correctly parameterize the inner classes

Reviewed-by: mcimadamore
2013-02-15 18:40:38 -08:00
Alejandro Murillo
5159c925af 8008286: new hotspot build - hs25-b20
Reviewed-by: jcoomes
2013-02-15 13:36:56 -08:00
Alejandro Murillo
96300f3ad9 Added tag hs25-b19 for changeset 9895f0eb0c56 2013-02-15 13:27:21 -08:00
Alejandro Murillo
3611e527c8 Merge 2013-02-15 13:27:20 -08:00
Joseph Provino
8d24b760cd Merge 2013-02-15 14:42:37 -05:00
Jonathan Gibbons
ff25ecbcbb 8008313: 8007052 breaks test/tools/javap/MethodParameters.java
Reviewed-by: darcy
2013-02-15 11:26:11 -08:00
Dmitry Samersoff
dd9a6fc8eb Merge 2013-02-15 10:29:23 -08:00
Maurizio Cimadamore
fd17a4290b 8008309: TargetType60 fails because of bad golden file
Bad golden file

Reviewed-by: jjg
2013-02-15 18:13:00 +00:00
Maurizio Cimadamore
b9a88adb02 Merge 2013-02-15 16:37:19 +00:00
Sonali Goel
30058417e1 8007427: Annotation element as '_' gives compiler error instead of a warning
8007401: Write test to check for generation of warnings when '_' is used as an identifier

Extended identifier production not used in annotation values

Reviewed-by: jjg
2013-02-15 16:31:19 +00:00
Maurizio Cimadamore
f5df2a2562 8007535: Compiler crashes on @FunctionalInterface used on interface with two inherited methods with same signatures
Bad check in Types.interfaceCandidates

Reviewed-by: jjg
2013-02-15 16:30:31 +00:00
Maurizio Cimadamore
b496912ee1 8007462: Fix provisional applicability for method references
Add speculative arity-based check to rule out potential candidates when stuck reference is passed to method

Reviewed-by: jjg
2013-02-15 16:29:58 +00:00
Maurizio Cimadamore
e88e06a5e0 8007285: AbstractMethodError instead of compile-time error when method reference with super and abstract
Missing abstractness check on super rmethod references

Reviewed-by: jjg
2013-02-15 16:28:57 +00:00
Jonathan Gibbons
a695bef890 8007052: javap should include the descriptor for a method in verbose mode
Reviewed-by: mcimadamore
2013-02-15 08:28:42 -08:00
Maurizio Cimadamore
f8f9896cc7 8006749: compiler does not allow Object protected methods to be used in lambda
Check.checkFunctionalInterface should take into account 'fake' override

Reviewed-by: jjg
2013-02-15 16:28:07 +00:00
Athijegannathan Sundararajan
1fb8213bb0 8008298: Add tests to cover specialized versions of Math functions
Reviewed-by: jlaskey, lagergren
2013-02-15 20:40:05 +05:30
Vera Akulova
d273278133 8005920: After pressing combination Windows Key and M key, the frame, the instruction and the dialog can't be minimized
Reviewed-by: serb, denis
2013-02-15 17:46:39 +04:00
Athijegannathan Sundararajan
c09d1ba6d7 8008291: Add more tests for better coverage of objects, scripting and parser packages
Reviewed-by: lagergren, jlaskey
2013-02-15 18:30:19 +05:30
Chris Hegarty
5c9a25d2d2 8008223: java/net/BindException/Test.java fails rarely
Reviewed-by: khazra, alanb
2013-02-15 11:06:52 +00:00
Frank Ding
4615442550 8008289: DefaultButtonModel instance keeps stale listeners in html FormView
Reviewed-by: malenkov, alexsch
2013-02-15 15:05:58 +04:00
Alexander Scherbatiy
5287640ec6 7173873: JFrame.setDefaultCloseOperation(EXIT_ON_CLOSE) will never lead to SE if EXIT_ON_CLOSE is already set
Reviewed-by: malenkov, serb
2013-02-15 14:24:42 +04:00
Erik Joelsson
7dc8dad176 8005879: Add -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 to builds on Mac
Reviewed-by: ohair
2013-02-15 10:41:15 +01:00
Erik Joelsson
d49ae7856e 8005879: Add -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 to builds on Mac
Reviewed-by: ohair
2013-02-15 10:40:46 +01:00
Staffan Larsen
c023aba8f4 Merge 2013-02-15 10:08:25 +01:00
Marcus Lagergren
7d9a872e3f 8008239: Unpublicized parts of the code generator package that were only package internal
Reviewed-by: hannesw, attila
2013-02-15 09:44:15 +01:00
Hannes Wallnöfer
8edbed784d 8008215: break in catch clause causes java.lang.VerifyError: Inconsistent stackmap
Reviewed-by: jlaskey, lagergren
2013-02-15 09:18:05 +01:00
Staffan Larsen
19f22d8bbc 8008102: SA on OS X does not stop the attached process
Reviewed-by: dholmes, rbackman
2013-02-15 08:54:12 +01:00
Lana Steuck
12ac02b1d3 Merge 2013-02-14 22:12:15 -08:00
Lana Steuck
e2244526fa Merge 2013-02-14 22:11:58 -08:00
Lana Steuck
b6991ff139 Merge 2013-02-14 22:11:49 -08:00
Xueming Shen
a433a8918d 8008254: j.u.Calendar.JavatimeTest failed at TL b78 pit testing
To use j.t.ZoneId zone name to keep round-trip

Reviewed-by: okutsu
2013-02-15 01:17:31 +00:00
Tao Mao
95bd43cd0a 8007764: Wrong initialized value of max_gc_pause_sec for an instance of class AdaptiveSizePolicy
This is a fix of an initialization mistake for class AdaptiveSizePolicy.

Reviewed-by: jmasa
2013-02-14 14:43:01 -08:00
Jia-Hong Chen
f5e3306d75 8008173: [parfait] #1173 Uninitialised variable -- TransformHelper.cpp
Reviewed-by: prr, vadim
2013-02-14 14:14:38 -08:00
Dmeetry Degrave
2fd9426c20 7199858: Marshal exception is wrong
Reviewed-by: lancea
2013-02-15 01:49:36 +04:00
Mikael Vidstedt
d258e2c069 8007639: Workaround for ccache in vm.make is incorrect
Fixed makefile logic to correctly special case JRE_RELEASE_VERSION and vm_version.o

Reviewed-by: dholmes, erikj
2013-02-14 12:36:07 -08:00
David Katleman
32bced14f5 Added tag jdk8-b77 for changeset d97b73add494 2013-02-14 11:44:21 -08:00
David Katleman
14251d6480 Added tag jdk8-b77 for changeset e587650e9aa6 2013-02-14 11:44:09 -08:00
David Katleman
08c118806c Added tag jdk8-b77 for changeset 9df84d06d040 2013-02-14 11:43:54 -08:00
David Katleman
827f8f788b Added tag jdk8-b77 for changeset bd0373289b63 2013-02-14 11:43:52 -08:00
David Katleman
2e048c5ce6 Added tag jdk8-b77 for changeset 739a5754a11e 2013-02-14 11:43:44 -08:00
David Katleman
78687c4aaf Added tag jdk8-b77 for changeset e637fdab418c 2013-02-14 11:43:36 -08:00
David Katleman
0b69873d73 Added tag jdk8-b77 for changeset b2c2a48dae5c 2013-02-14 11:43:27 -08:00
Bharadwaj Yadavalli
ff4bbcd501 8007736: VerifyError for static method in interface
Reviewed-by: dholmes, acorn
2013-02-14 14:33:35 -05:00
Bharadwaj Yadavalli
07c7afeaac 8007736: VerifyError for use of static method in interface
Reviewed-by: mchung
2013-02-14 11:09:07 -08:00
Mandy Chung
ee65d32c20 8006225: tools/jdeps/Basic.java failes with AssertionError
Reviewed-by: alanb
2013-02-14 09:43:00 -08:00
Joseph Provino
469a44bcd6 8003581: UseG1GC is not properly accounted for by INCLUDE_ALTERNATE_GCS
Fix warning messages when selected garbage collectors are excluded from the minimal jvm.

Reviewed-by: dholmes, cjplummer
2013-02-14 11:08:58 -05:00
Joseph Provino
1db22b304c 8006878: Some non-existent GC source files are in the minimalVM exclude list
CmsPermGen.cpp, psPermGen.cpp have been removed.  yieldWorkingGroup.cpp typo is fixed. immutableSpace.cpp was in the list twice.

Reviewed-by: dholmes, jmasa
2013-02-14 11:07:24 -05:00
James Laskey
f95919ab1e 8008231: Fix build system to accommodate integration of dynalink
Reviewed-by: jlaskey
2013-02-14 11:32:49 -04:00
Vladimir Ivanov
8952875c84 Merge 2013-02-14 05:36:59 -08:00
Hannes Wallnöfer
6aeeee6b63 8008198: java.lang.AssertionError: Invalid break target class jdk.nashorn.internal.ir.TryNode
Reviewed-by: attila, jlaskey
2013-02-14 14:07:53 +01:00
Attila Szegedi
85c55a2aa4 8007990: No access to interface methods on a restricted class
Reviewed-by: jlaskey, lagergren, sundar
2013-02-14 13:51:54 +01:00
Marcus Lagergren
af9c882b95 8008206: The allInteger case for SwitchNode generation in CodeGenerator assumes integer LITERALS only
Reviewed-by: sundar, jlaskey
2013-02-14 13:52:12 +01:00
Attila Szegedi
82f8cef55c 8008085: Integrate Dynalink source code into Nashorn codebase
Reviewed-by: jlaskey, lagergren, sundar
2013-02-14 13:22:26 +01:00
Staffan Larsen
bf91374f3f 8004840: Jstack seems to output unnecessary information in 7u9
Reviewed-by: dholmes, coleenp, sspitsyn, rbackman
2013-02-14 13:08:15 +01:00
Marcus Lagergren
7c466c84eb 8008199: Lazy compilation and trampoline implementation
The code pipeline now supports lazy compilation, which can be used to only compile certain FunctionNodes and leave others be, saving startup time. When these uncompiled nodes are hit, a trampoline will force them to be recompiled. This can also be used to specialize compilation fixing parameter types and return types to a callsite specific compilation. This will give performance.

Reviewed-by: attila, sundar
2013-02-14 13:01:52 +01:00
Bengt Rutisson
20bc6a3d8c Merge 2013-02-14 11:01:05 +01:00
Athijegannathan Sundararajan
022533a749 8008197: Cross script engine function calls do not work as expected
Reviewed-by: lagergren, hannesw
2013-02-14 14:16:58 +05:30
Bengt Rutisson
c2f4ba73be 8006398: Add regression tests for deprectated GCs
Reviewed-by: ehelin, jwilhelm, jmasa
2013-02-14 09:11:43 +01:00
Sonali Goel
2fb38081d5 8001457: New tests needed for library-side changes for repeating annotations
Reviewed-by: darcy
2013-02-13 23:05:17 -08:00
Athijegannathan Sundararajan
9f6e3f08f2 8008193: test262 tests should be run with security manager enabled
Reviewed-by: jlaskey
2013-02-14 09:14:31 +05:30
Lana Steuck
9b523dc375 Merge 2013-02-13 17:57:31 -08:00
Lana Steuck
187c4688e0 Merge 2013-02-13 17:55:44 -08:00
Jia-Hong Chen
20987e6144 8008017: The fix for 8005129 does not build on Windows
Reviewed-by: prr, jgodinez
2013-02-13 15:06:47 -08:00
Peter Levart
1930d1f090 8008167: IdentityHashMap.[keySet|values|entrySet].toArray speed-up
Reviewed-by: mduigou, martin
2013-02-13 14:50:14 -08:00
Chris Hegarty
24b144ccd9 8008201: Add java/lang/Class/asSubclass/BasicUnit.java to the ProblemList
Reviewed-by: mcimadamore
2013-02-14 13:01:03 +00:00
Karen Kinnear
a8dfb771d1 Merge 2013-02-13 16:15:09 -05:00
Daniel D. Daugherty
ba9cf66b48 8007935: java/lang/instrument/RedefineSubclassWithTwoInterfaces.sh should use $COMPILEJAVA for javac
Reviewed-by: sspitsyn, alanb
2013-02-13 13:22:31 -08:00
Bharadwaj Yadavalli
db31a896d8 8007888: jdk fix default method: VerifyError: Illegal use of nonvirtual
Recognize VM generated method in old verifier. With 8004967

Reviewed-by: coleenp, acorn
2013-02-13 16:09:13 -05:00
Lana Steuck
61363dfe99 Merge 2013-02-13 13:01:16 -08:00
Kumar Srinivasan
4c2a4c9b4a 8005750: [parfait] Memory leak at jdk/src/share/bin/parse_manifest.c
Reviewed-by: jjh
2013-02-13 12:56:46 -08:00
Lana Steuck
56014d30fc Merge 2013-02-13 12:38:28 -08:00
Lana Steuck
0691bb6c06 Merge 2013-02-13 11:57:59 -08:00
Xueming Shen
48a592be5a 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
To return a sorted list

Reviewed-by: lancea, naoto
2013-02-13 11:49:34 -08:00
Vinnie Ryan
8f58ebc261 8007755: Support the logical grouping of keystores
Reviewed-by: mullan
2013-02-13 19:40:51 +00:00
Lana Steuck
3bfd774a99 Merge 2013-02-13 11:25:58 -08:00
Lana Steuck
264f4dbe27 Merge 2013-02-13 11:25:14 -08:00
Lana Steuck
21e48ed16d Merge 2013-02-13 11:21:14 -08:00
Dmitry Samersoff
403e23ec70 8008095: TEST_BUG: JDK-8002048 one more testcase failure on Solaris
Fixed couple of more Solaris shell incompatibilities

Reviewed-by: chegar
2013-02-13 21:06:30 +04:00
Eric Mccorkle
8ccde1a96e 8006345: Report Synthesized Parameters in java.lang.reflect.Parameter API
8006896: ClassReader doesn't see MethodParameters attr for method of anon inner class
8007098: Output Synthesized Parameters to MethodParameters Attributes

Correctly report synthesized and mandated parameters

Reviewed-by: mcimadamore, jjg
2013-02-13 17:04:21 +00:00
Serguei Spitsyn
a89fa83b32 Merge 2013-02-13 08:42:03 -08:00
Igor Ignatyev
034705ee13 8006683: Add WhiteBox API to testing of compiler
Reviewed-by: kvn, vlivanov
2013-02-13 08:29:04 -08:00
Vinnie Ryan
fdcad628a4 Merge 2013-02-13 16:03:24 +00:00
Vinnie Ryan
3d55cc1e02 8007934: algorithm parameters for PBE Scheme 2 not decoded correctly in PKCS12 keystore
Reviewed-by: mullan
2013-02-13 16:01:26 +00:00
Petr Pchelko
959ddfce4a 8005629: javac warnings compiling java.awt.EventDispatchThread and sun.awt.X11.XIconWindow
Removed macosx specific workaround from shared code and made macosx use public API

Reviewed-by: art, serb
2013-02-13 15:32:50 +00:00
Petr Pchelko
42b8720bef 7079260: InputContext leaks memory
Replaced strong refs with weak refs

Reviewed-by: art, serb
2013-02-13 15:27:29 +00:00
Vladislav Karnaukhov
f44592861c 4199622: RFE: JComboBox shouldn't sending ActionEvents for keyboard navigation
Reviewed-by: alexp, alexsch
2013-02-13 19:23:09 +04:00
Vera Akulova
dfdd79f3ee 7132383: [macosx] bug6596966.java should be adapted for Mac
Reviewed-by: serb, alexsch
2013-02-13 19:06:31 +04:00
Athijegannathan Sundararajan
ecc2be22e3 8008103: Source object should maintain URL of the script source as a private field
Reviewed-by: lagergren, jlaskey
2013-02-13 19:59:30 +05:30
Vera Akulova
30a25e41d2 7161759: TEST_BUG: java/awt/Frame/WindowDragTest/WindowDragTest.java fails to compile, should be modified
Added @build Util jtreg tag

Reviewed-by: serb, alexsch
2013-02-13 18:01:18 +04:00
Hannes Wallnöfer
b8d10c0a0e 8008096: TokenStream buffer should grow exponentially
Reviewed-by: attila, lagergren, sundar
2013-02-13 13:30:21 +01:00
Joel Borggrén-Franck
e0eba88c1b 8007278: Rename j.l.r.AnnotatedElement.getAnnotations(Class) to getAnnotationsByType(Class)
Reviewed-by: darcy, abuckley
2013-02-13 10:36:36 +01:00
Joel Borggrén-Franck
14c0c8eed8 8007279: Rename javax.l.model.element.Element.getAnnotations(Class) to getAnnotationsByType(Class)
Reviewed-by: darcy, abuckley
2013-02-13 10:33:13 +01:00
Nils Eliasson
bcbdbf9996 8005772: Stubs report compile id -1 in phase events
Use 0 to indicate id is NA, -1 for error or uninitalized

Reviewed-by: kvn, twisti
2013-02-13 10:25:09 +01:00
Nils Eliasson
d1b60c9f04 Merge 2013-03-13 13:44:45 +01:00
Niclas Adlertz
b26473a6cf 8009721: Make PhaseLive independent from regalloc
Moved class definition of LRG_List from chaitin.hpp to live.hpp

Reviewed-by: kvn, rbackman, roland
2013-03-13 10:56:54 +01:00
Roland Westrelin
05b1c69fc0 8009761: Deoptimization on sparc doesn't set Llast_SP correctly in the interpreter frames it creates
Deoptimization doesn't set up callee frames so that they restore caller frames correctly.

Reviewed-by: kvn
2013-03-13 09:44:45 +01:00
Katja Kantserova
0a5d02aaa6 8008089: Delete OS dependent check in JdkFinder.getExecutable()
Reviewed-by: egahlin, alanb
2013-02-13 10:24:24 +01:00
Lana Steuck
5a2e0c4105 Merge 2013-02-19 20:52:39 -08:00
Kumar Srinivasan
2373a63188 8008262: pack200 should support MethodParameters - part 2
Reviewed-by: jrose
2013-02-19 16:49:28 -08:00
John Zavgren
ab4a830be8 8008107: [parfait] Use after free of pointer in jdk/src/share/native/sun/security/pkcs11/wrapper/p11_convert.c
Reviewed-by: mullan, chegar
2013-02-19 15:31:19 -05:00
Mike Duigou
71666c4c5a 8004561: Additional functional interfaces, extension methods and name changes
Adds additional functional interfaces for primitives and "Bi" (two operand). Adds utility extension methods. Includes some name changes for existing functional interfaces per EG decisions.

Reviewed-by: briangoetz, darcy, chegar, dholmes
2013-02-19 11:56:49 -08:00
Rickard Bäckman
05d4ff0383 8008088: SA can hang the VM
Reviewed-by: mgronlun, sla, dholmes
2013-02-13 09:46:19 +01:00
Markus Grönlund
7d28698730 8007312: null check signal semaphore in os::signal_notify windows
Reviewed-by: dholmes, sla
2013-02-13 11:23:46 +01:00
Werner Dietl
464abcb4fa 8008077: update reference impl for type-annotations
Reviewed-by: jjg
2013-02-12 17:15:29 -08:00
Krystal Mo
13c5c423d6 Merge 2013-02-12 14:33:19 -08:00
Zhengyu Gu
4e7de85e4d 8006691: Remove jvm_version_info->is_kernel_jvm field
Remove is_kernel_jvm field in jvm_version_info structure, as kernel VM has been deprecated

Reviewed-by: mchung
2013-02-12 14:47:36 -05:00
Maurizio Cimadamore
1ec5dfafe0 8007464: Add graph inference support
Add support for more aggressive type-inference scheme

Reviewed-by: jjg
2013-02-12 19:25:09 +00:00
Phil Race
7ca3c9dd84 8007748: MacOSX build error : cast of type 'SEL' to 'uintptr_t' (aka 'unsigned long') is deprecated; use sel_getName instead
Reviewed-by: anthony
2013-02-12 09:58:21 -08:00
Stephen Colebourne
e7cdd4a93a 8007392: JSR 310: DateTime API Updates
Integration of JSR310 Date/Time API for M7

Co-authored-by: Roger Riggs <roger.riggs@oracle.com>
Co-authored-by: Masayoshi Okutsu <masayoshi.okutsu@oracle.com>
Co-authored-by: Patrick Zhang <patrick.zhang@oracle.com>
Reviewed-by: darcy, alanb, naoto
2013-02-12 09:27:48 -08:00
Stephen Colebourne
73c043f49e 8007392: JSR 310: DateTime API Updates
8007520: Update date/time classes in j.util and j.sql packages
8007572: Replace existing jdk timezone data at <java.home>/lib/zi with JSR310's tzdb

Integration of JSR310 Date/Time API for M7

Co-authored-by: Roger Riggs <roger.riggs@oracle.com>
Co-authored-by: Masayoshi Okutsu <masayoshi.okutsu@oracle.com>
Co-authored-by: Patrick Zhang <patrick.zhang@oracle.com>
Reviewed-by: darcy, alanb, naoto
2013-02-12 09:25:43 -08:00
Zhengyu Gu
ef7aa05f20 8007950: Undo hs_file permission change
Reverse hs_err file permission back to 0666, as early push was premature

Reviewed-by: dsamersoff, dcubed, acorn
2013-02-12 12:19:28 -05:00
Krystal Mo
851ae93451 8002169: TEST_BUG: compiler/7009359/Test7009359.java sometimes times out
Make the test less prone to timeout by reducing the amount of iteration and allowing main to be compiled

Reviewed-by: jrose
2013-02-12 07:39:42 -08:00
Vicente Romero
9bdfca5e56 8006334: javap, JavapTask constructor breaks with null pointer exception if parameter options is null
Reviewed-by: jjg
2013-02-12 13:36:56 +00:00
Dmitry Samersoff
232b814f68 8007786: JDK-8002048 testcase doesn't work on Solaris
Test built in into Solaris shell doesn't have -e operator

Reviewed-by: sla, sspitsyn
2013-02-12 16:02:14 +04:00
Roland Westrelin
c401bf065d 7197327: 40% regression on 8 b41 comp 8 b40 on specjvm2008.mpegaudio on oob
Add support for expensive nodes.

Reviewed-by: kvn
2013-02-12 12:56:11 +01:00
Attila Szegedi
d50e3823e4 8007900: Function binding is inefficient
Reviewed-by: jlaskey, lagergren
2013-02-12 12:47:51 +01:00
Hannes Wallnöfer
b98a77d26c 8007956: Wrong or obsolete system properties in docs/DEVELOPER_README
Reviewed-by: attila, jlaskey
2013-02-12 13:55:05 +01:00
Matherey Nunez
024075fabb 8004822: RFE to write language model API tests for repeating annotations based on the spec updates
Reviewed-by: jjg, abuckley
2013-02-12 11:28:45 +01:00
Lana Steuck
e8d53ad94a Merge 2013-02-11 16:15:09 -08:00
Lana Steuck
048185ef4c Merge 2013-02-11 16:14:27 -08:00
Lana Steuck
b21082a545 Merge 2013-02-11 16:12:53 -08:00
Morris Meyer
527b0d661a 8003252: PPC: move MacroAssembler into separate file
Moved MacroAssembler into separate file

Reviewed-by: twisti, kvn, dlong
2013-02-11 14:47:04 -08:00
Joe Darcy
44e3518c32 8007574: Provide isFunctionalInterface in javax.lang.model
Reviewed-by: jjg
2013-02-11 13:37:41 -08:00
Coleen Phillimore
faea95b8d3 8007320: NPG: move method annotations
Allocate method annotations and attach to ConstMethod if present

Reviewed-by: dcubed, jiangli, sspitsyn, iklam
2013-02-11 14:06:22 -05:00
Morris Meyer
46677b6d86 8003251: ARM: move MacroAssembler into separate file
Moved MacroAssembler into separate file

Reviewed-by: twisti, kvn, dlong
2013-02-11 10:38:11 -08:00
Athijegannathan Sundararajan
1e1537c13f 8007915: Nashorn IR, codegen, parser packages and Context instance should be inaccessible to user code
Reviewed-by: lagergren, jlaskey, attila
2013-02-11 21:26:06 +05:30
Krystal Mo
212f30a18e 8006430: TraceTypeProfile is a product flag while it should be a diagnostic flag
Make sure all diagnostic and experimental flag kinds are checked in Flag::is_unlocked()

Reviewed-by: kvn
2013-02-10 22:35:38 -08:00
David Chase
43c01fd8b6 8007402: Code cleanup to remove Parfait false positive
Add array access range check

Reviewed-by: kvn
2013-02-09 12:55:09 -08:00
Attila Szegedi
710f06674d 8006943: Fix order of function method arguments to be (callee, thisObject)
Reviewed-by: jlaskey, lagergren
2013-02-09 16:58:48 +01:00
Jonathan Gibbons
b30e5c6313 8007610: javadoc doclint does not work with -private
Reviewed-by: darcy
2013-02-08 17:35:16 -08:00
Zhengyu Gu
ee53020f94 Merge 2013-02-08 16:56:03 -08:00
Morris Meyer
6a910ea8f2 8006851: When TieredCompilation is set, max code cache should be bumped to 256mb
Set ReservedCodeCacheSize to (default value)*5 when TieredCompilation is on.

Reviewed-by: kvn, twisti
2013-02-08 15:39:43 -08:00
Vladimir Kozlov
231bbf39f4 8007708: compiler/6855215 assert(VM_Version::supports_sse4_2())
Added missing UseSSE42 check. Also added missing avx2 assert for vpermq instruction.

Reviewed-by: roland, twisti
2013-02-08 15:07:17 -08:00
Zhengyu Gu
1e2b7bcabb Merge 2013-02-08 14:32:13 -08:00
Zhengyu Gu
15d1949971 Merge 2013-02-08 13:55:41 -08:00
Zhengyu Gu
ef59a25f71 8006691: Remove jvm_version_info.is_kernel_jvm field
Removed is_kernel_jvm from jvm_version_info as Kernel VM has been deprecated

Reviewed-by: mchung, coleenp
2013-02-08 16:31:48 -05:00
Zhengyu Gu
4e766f0ef1 8007791: More Restricted hs_err file permission
Enforce more restricted hs_file permission

Reviewed-by: acorn, dcubed, dsamersoff
2013-02-08 14:49:01 -05:00
Jia-Hong Chen
c3e1c6d07b 8005261: [parfait] #415 sun/java2d/opengl/GLXSurfaceData.c Memory leak of pointer 'glxsdo' allocated with malloc
Reviewed-by: prr, vadim
2013-02-08 11:36:18 -08:00
Jia-Hong Chen
410876d0ee 8005129: [parfait] #1122 - #1130 native/sun/awt/medialib/mlib_Image*.c Memory leak of pointer 'k' allocated with mlib_malloc
Reviewed-by: prr, vadim
2013-02-08 11:25:42 -08:00
Mikhail Cherkasov
fc6a9c2d07 8005932: Java 7 on mac os x only provides text clipboard formats
Reviewed-by: alexp, denis
2013-02-08 22:08:10 +04:00
Serguei Spitsyn
6ff685b4c8 Merge 2013-02-08 09:14:06 -08:00
Alejandro Murillo
2fd28ebb43 8007801: new hotspot build - hs25-b19
Reviewed-by: jcoomes
2013-02-08 08:16:00 -08:00
Alejandro Murillo
59bf14707f Added tag hs25-b18 for changeset f3f52401a78c 2013-02-08 08:07:07 -08:00
Alejandro Murillo
6c172dae73 Merge 2013-02-08 08:07:06 -08:00
James Laskey
32d71c7cb9 8006222: Move slot from SpillProperty to Property
Reviewed-by: hannesw, lagergren
2013-02-08 09:19:38 -04:00
Staffan Larsen
a6fefc1cae Merge 2013-02-08 14:05:36 +01:00
Staffan Larsen
e563c0ecf4 8006423: SA: NullPointerException in sun.jvm.hotspot.debugger.bsd.BsdThread.getContext(BsdThread.java:67)
Do not rely on mach thread port names to identify threads from SA

Reviewed-by: dholmes, minqi, rbackman
2013-02-08 12:48:24 +01:00
Christian Tornqvist
92053d4fb2 8007434: Write tests for 8006298
Four tests written for 8006298

Reviewed-by: mgerdin, coleenp
2013-02-08 10:42:24 +01:00
Vicente Romero
59318f1b2e 7167125: Two variables after the same operation in a inner class return different results
Reviewed-by: jjg, mcimadamore
2013-02-08 09:21:19 +00:00
Vicente Romero
561631ea44 8005931: javac doesn't set ACC_STRICT for classes with package access
Reviewed-by: mcimadamore
2013-02-08 09:15:27 +00:00
Vicente Romero
bba9417038 7166455: javac doesn't set ACC_STRICT bit on <clinit> for strictfp class
Reviewed-by: mcimadamore
2013-02-08 09:12:37 +00:00
Bengt Rutisson
8cf98587f7 Merge 2013-02-08 10:08:40 +01:00
Sonali Goel
f1442d8261 7195131: Update 2 compiler combo tests for repeating annotations to include package and default use cases
Reviewed-by: darcy
2013-02-07 20:47:06 -08:00
Vladimir Danushevsky
ac1a75df8c Merge 2013-02-07 20:40:14 -05:00
Valerie Peng
3ae3ac4f87 8007688: Blacklist known bad certificate
Added two known bad certs to the blacklist certs.

Reviewed-by: mullan
2013-02-07 16:03:43 -08:00
Xue-Lei Andrew Fan
e1d6f09bba 8006777: Improve TLS handling of invalid messages
Reviewed-by: wetmore, ahgross
2013-02-07 16:05:55 -08:00
Bill Pittore
9cad40fca6 Merge 2013-02-07 16:05:48 -05:00
David Katleman
4f0f5861ed Added tag jdk8-b76 for changeset aa274a6f970a 2013-02-07 12:33:21 -08:00
David Katleman
45f09caa8d Added tag jdk8-b76 for changeset 0da59c40187c 2013-02-07 12:33:10 -08:00
David Katleman
2683bbdf2f Added tag jdk8-b76 for changeset 95266e83c5e7 2013-02-07 12:33:01 -08:00
David Katleman
b0b7e821de Added tag jdk8-b76 for changeset 503de5a7b5ef 2013-02-07 12:32:59 -08:00
David Katleman
2ac871a5a1 Added tag jdk8-b76 for changeset faf3f7a9a86f 2013-02-07 12:32:50 -08:00
David Katleman
a68198e6bc Added tag jdk8-b76 for changeset 2fea158ee664 2013-02-07 12:32:39 -08:00
David Katleman
0813162608 Added tag jdk8-b76 for changeset 6bb57fea1027 2013-02-07 12:32:32 -08:00
Vladimir Ivanov
268a4d605c Merge 2013-02-07 12:23:51 -08:00
Mandy Chung
3479e4412a 8007611: logging behavior in applet changed
Reviewed-by: alanb, jgish
2013-02-07 09:41:47 -08:00
Hannes Wallnöfer
f2dc010c16 8007718: Make static RegExp properties fully compatible to other engines
Reviewed-by: lagergren, sundar
2013-02-07 15:33:17 +01:00
Hannes Wallnöfer
37905fb387 8007627: Support @Getter annotation on constructor
Reviewed-by: attila, lagergren
2013-02-07 14:58:41 +01:00
Athijegannathan Sundararajan
b247ddfcc3 8007715: Make sure that not all tests run with AllPermission
Reviewed-by: lagergren, attila
2013-02-07 17:17:29 +05:30
Daniel D. Daugherty
d5cad58ba3 Merge 2013-02-06 15:22:32 -08:00
Jim Holmlund
c88c3bb683 8007698: jtreg test T6306137.java won't compile with ASCII encoding
Reviewed-by: ksrini
2013-02-06 23:10:35 +00:00
Jia-Hong Chen
fb6927c36c 8005194: [parfait] #353 sun/awt/image/jpeg/imageioJPEG.c Memory leak of pointer 'scale' allocated with calloc()
Reviewed-by: prr, vadim
2013-02-06 14:45:02 -08:00
Daniel D. Daugherty
8ef946f380 7182152: Instrumentation hot swap test incorrect monitor count
Add/refine new tracing support using -XX:TraceRedefineClasses=16384.

Reviewed-by: coleenp, acorn, sspitsyn
2013-02-06 14:31:37 -08:00
Volker Simonis
285249963c 8006807: C2 crash due to out of bounds array access in Parse::do_multianewarray
Check ndimensions before accessing length[i] element

Reviewed-by: kvn
2013-02-06 11:33:49 -08:00
Mike Duigou
62b85e6a17 8006594: Add jdk_core target to jdk/test/Makefile
Reviewed-by: alanb
2013-02-06 11:28:25 -08:00
Alan Bateman
b74073c0db 8007405: Update java.lang.reflect API to replace SYNTHESIZED with MANDATED
Reviewed-by: darcy
2013-02-11 20:16:18 +00:00
Daniel D. Daugherty
249b55b573 8007420: add test for 6805864 to com/sun/jdi, add test for 7182152 to java/lang/instrument
Reviewed-by: coleenp, sspitsyn
2013-02-11 10:07:01 -08:00
Dmitry Samersoff
be1edfbb6f 8007536: Incorrect copyright header in JDP files
Copyright header in JDP files missed the "classpath exception" rule.

Reviewed-by: mikael
2013-02-11 18:44:22 +04:00
Kumar Srinivasan
83b9b38fc5 8007902: [unpack200] incorrect BootstrapMethods attribute
Reviewed-by: jjh
2013-02-10 08:49:39 -08:00
Kumar Srinivasan
8a4107ab64 8007519: [unpack200] produces bad class files when producing BootstrapMethods attribute
Reviewed-by: alanb
2013-02-10 08:07:59 -08:00
Weijun Wang
76953b4d1e 8007761: NTLM coding errors
Reviewed-by: chegar
2013-02-09 16:43:58 +08:00
Weijun Wang
d8233ec657 8001104: Unbound SASL service: the GSSAPI/krb5 mech
Reviewed-by: valeriep
2013-02-09 16:43:49 +08:00
Doug Lea
724f325f44 8005697: Add StampedLock
Reviewed-by: chegar, alanb, dice, martin
2013-02-09 08:35:57 +00:00
Joe Darcy
826105d548 8005623: Retrofit FunctionalInterface annotations to core platform interfaces
Reviewed-by: mduigou, chegar, alanb
2013-02-08 16:00:23 -08:00
Naoto Sato
ea5819f8d3 8007038: ArrayIndexOutOfBoundsException on calling localizedDateTime().print() with JapaneseChrono
Reviewed-by: okutsu
2013-02-08 09:35:14 -08:00
Katja Kantserova
19982b2e80 8007142: Add utility classes for writing better multiprocess tests in jtreg
Reviewed-by: alanb, rbackman
2013-02-07 11:22:04 +01:00
Martin Buchholz
925fe9142b 8006995: java launcher fails to open executable JAR > 2GB
Use O_LARGEFILE consistently when opening jar files

Reviewed-by: alanb, sherman
2013-02-06 17:59:54 -08:00
Lance Andersen
218dc713ff 8006505: additional changes for JSR 310 support
Reviewed-by: naoto, ulfzibis
2013-02-06 14:15:05 -05:00
Mike Duigou
58d8702881 8006595: Use jdk/test/Makefile targets in preference to local definitions
Reviewed-by: alanb
2013-02-06 11:12:46 -08:00
Mike Duigou
574897c629 8004726: Link bug ids to jbs rather than monaco
Reviewed-by: ohair, chegar, katleman
2013-02-06 11:09:24 -08:00
James Laskey
57ef7ce075 8007643: Add testing for quit and exit
Reviewed-by: sundar
2013-02-06 12:51:09 -04:00
James Laskey
574016d0d3 8007629: Remove extraneous quit from shell.js
Reviewed-by: sundar, hannesw
2013-02-06 11:57:51 -04:00
Jonathan Gibbons
305cf1f98b 8007566: DocLint too aggressive with not allowed here: <p>
Reviewed-by: mcimadamore
2013-02-06 07:49:31 -08:00
Alexander Scherbatiy
ac96c41fe8 8000326: Focus unable to traverse in the menubar
Reviewed-by: alexsch, malenkov
2013-02-06 18:25:06 +04:00
Maurizio Cimadamore
681e6c377e 8007479: Refactor DeferredAttrContext so that it points to parent context
Move DeferredAttrNode out of DeferredAttrContext; add support for nested deferred contexts

Reviewed-by: jjg
2013-02-06 14:04:43 +00:00
Maurizio Cimadamore
0336a57511 8007463: Cleanup inference related classes
Make Infer.InferenceContext an inner class; adjust bound replacement logic in Type.UndetVar

Reviewed-by: jjg
2013-02-06 14:03:39 +00:00
Dmitry Samersoff
c572f25040 8007277: JDK-8002048 testcase fails to compile
Sun.* classes is not included to ct.sym file and symbol file have to be ignored

Reviewed-by: alanb
2013-02-06 16:53:47 +04:00
James Laskey
5900e641b0 8007545: jjs input evalinput need to be NOT_ENUMERABLE
Reviewed-by: sundar, lagergren
2013-02-06 08:42:19 -04:00
Athijegannathan Sundararajan
c95d492268 8007619: Add support for deprecated properties of RegExp constructor
Reviewed-by: lagergren, hannesw
2013-02-06 17:56:12 +05:30
Chris Hegarty
dab327e501 8007625: race with nested repos in /common/bin/hgforest.sh
Reviewed-by: dholmes, ohair, ohrstrom
2013-02-06 11:36:19 +00:00
Hannes Wallnöfer
4eee363f14 8007273: Creation of ScriptFunctions can be refactored
Reviewed-by: lagergren, attila
2013-02-06 10:31:58 +01:00
Mandy Chung
e84e88f4c9 8007393: Possible race condition after JDK-6664509
Reviewed-by: alanb, jgish
2013-02-05 22:56:47 -08:00
Erik Helin
919ef8e0df 8004924: NPG: jmap -heap output should contain ClassMetaspaceSize value
Reviewed-by: stefank, mgerdin
2013-02-06 07:48:02 +01:00
Erik Helin
8f73f7d041 Merge 2013-02-26 22:31:35 +01:00
Poonam Bajaj
3720c9565f Merge 2013-02-26 08:58:20 -08:00
Bengt Rutisson
2023570fb1 Merge 2013-02-26 11:52:06 +01:00
Poonam Bajaj
62634823f9 Merge 2013-02-23 17:40:33 -08:00
John Cuthbertson
fb8617f293 8007221: G1: concurrent phase durations do not state the time units ("secs")
Add timer units to concurrent marking phases where the units were missing.

Reviewed-by: jmasa, ysr
2013-02-22 11:01:01 -08:00
Vladimir Kempik
050d7c9d90 8008546: Wrong G1ConfidencePercent results in GUARANTEE(VARIANCE() > -1.0) FAILED
Reviewed-by: brutisso, johnc
2013-02-21 23:58:05 -08:00
Jesper Wilhelmsson
ceb2baae92 8008314: Unimplemented() Atomic::load breaks the applications
Jlong atomics isn't fully implemented om all 32-bit platforms so we try to avoid it. In this case the atomic add wasn't needed.

Reviewed-by: dholmes, dlong
2013-02-21 11:16:50 +01:00
Erik Helin
2a4bf8ddd8 8008536: Add HotSpot support for printing class loader statistics for JMap
Reviewed-by: sla, brutisso
2013-02-20 16:41:23 +01:00
John Cuthbertson
ce66b0aad0 Merge 2013-02-05 22:24:36 -08:00
Jonathan Gibbons
23ca241597 8007485: test creates .class files in the test/ directory
Reviewed-by: mcimadamore
2013-02-05 21:55:41 -08:00
David Katleman
36a5ccb73f Merge 2013-02-05 18:55:24 -08:00
David Katleman
873c276a26 Merge 2013-02-05 18:54:59 -08:00
David Katleman
a0a52a2b85 Merge 2013-02-05 18:54:27 -08:00
David Katleman
67dea32d8c Merge 2013-02-05 18:54:24 -08:00
David Katleman
d9a61c7ea3 Merge 2013-02-05 18:54:11 -08:00
David Katleman
076aeb3106 Merge 2013-02-05 18:54:09 -08:00
Lana Steuck
bab241d2e7 Merge 2013-02-05 11:11:53 -08:00
Lana Steuck
750e587f23 Merge 2013-02-05 11:10:07 -08:00
Jim Holmlund
8985a7c2ac 8007504: Remove @ignore from tests that no longer need it
Reviewed-by: mcimadamore
2013-02-05 18:55:13 +00:00
John Cuthbertson
c2bb152e6c 8005032: G1: Cleanup serial reference processing closures in concurrent marking
Reuse the parallel reference processing oop closures during serial reference processing.

Reviewed-by: brutisso
2013-02-05 09:13:05 -08:00
Athijegannathan Sundararajan
292a819b53 8007523: VerifyError on script that uses regular expression literals with ternary operator
Reviewed-by: lagergren
2013-02-05 22:07:04 +05:30
Igor Ignatyev
014d9489bb 8006613: adding reason to made_not_compilable
Reviewed-by: kvn, vlivanov
2013-02-05 08:25:51 -08:00
Erik Joelsson
99468dc6c0 8007524: build-infra: Incremental build of tools.jar broken
Reviewed-by: tbell
2013-02-05 16:50:05 +01:00
Athijegannathan Sundararajan
ac9ca521ad 8007522: IllegalStateException thrown from String.prototype.search function
Reviewed-by: jlaskey
2013-02-05 21:00:04 +05:30
Eric McCorkle
3d09f6b621 8007389: Remove uses of _ as identifier in jaxp
Reviewed-by: lancea, joehw
2013-02-05 14:56:34 +00:00
Edvard Wendelin
11036fb4d5 Merge 2013-02-05 15:35:35 +01:00
Vinnie Ryan
85c0519ca6 8007483: attributes are ignored when loading keys from a PKCS12 keystore
Reviewed-by: mullan
2013-02-05 14:25:47 +00:00
Athijegannathan Sundararajan
be500502ec 8007521: $ENV should be undefined when security manager is present
Reviewed-by: hannesw, jlaskey
2013-02-05 18:44:54 +05:30
Jaroslav Bachorik
631c9a9bad 8005791: Remove java.beans.* imports from com.sun.jmx.mbeanserver.Introspector
Reviewed-by: rbackman
2013-02-05 12:36:32 +01:00
Jaroslav Bachorik
d1a58e452a 7170447: Intermittent DeadListenerTest.java failure
Due to asynchronous nature of processing server notifications it may happen that an "unregister" notification ha$

Reviewed-by: sjiang
2013-02-05 12:28:47 +01:00
David Holmes
de47c5722f Merge 2013-02-05 00:59:40 -08:00
Coleen Phillimore
6101f88a80 Merge 2013-02-04 22:59:45 -08:00
Lana Steuck
dea2648931 Merge 2013-02-04 22:38:11 -08:00
Lana Steuck
7a0ded349d Merge 2013-02-04 22:37:44 -08:00
Jeremy Manson
329bc97900 8006508: Wrong frame constructor is called in os_linux_x86.cpp
Reviewed-by: dholmes, coleenp
2013-02-04 23:53:10 -05:00
Athijegannathan Sundararajan
31aa060b11 8007452: add scripting programmers doc changes for nashorn
Reviewed-by: jlaskey, hannesw
2013-02-05 09:11:03 +05:30
John Cuthbertson
ea33ae6c4d Merge 2013-02-04 19:40:27 -08:00
Jonathan Gibbons
05a047b442 8007492: DocumentationTool cannot locate standard doclet when invoked from JRE
Reviewed-by: darcy
2013-02-04 18:14:24 -08:00
Joe Darcy
920d11993c 8007113: Upgrade AnnotatedElement.isAnnotionPresent to be a default method
Reviewed-by: chegar, jfranck
2013-02-04 17:56:29 -08:00
Jonathan Gibbons
4d8014cefa 8007490: NPE from DocumentationTool.run
Reviewed-by: darcy
2013-02-04 15:30:10 -08:00
David Holmes
581f36e1cc Merge 2013-02-04 18:08:53 -05:00
David Holmes
eb1726c151 Merge 2013-02-04 18:08:50 -05:00
David Holmes
2cc65f1eb7 Merge 2013-02-04 18:08:42 -05:00
Coleen Phillimore
3b65d23bc8 Merge 2013-02-04 13:51:01 -08:00
Jon Masamitsu
0b84b16b84 Merge 2013-02-04 13:26:04 -08:00
John Cuthbertson
1333948266 8001384: G1: assert(!is_null(v)) failed: narrow oop value can never be zero
Flush any deferred card mark before a Java thread exits.

Reviewed-by: brutisso, jmasa
2013-02-04 13:24:57 -08:00
Jon Masamitsu
e13466742d Merge 2013-02-04 12:51:25 -08:00
Jia-Hong Chen
78b547afa7 8005052: [parfait] #416 X11SurfaceData.c UNINITIALISED OR MISSING RETURN VALUE
8005054: [parfait] #417 X11SurfaceData.c UNINITIALISED OR MISSING RETURN VALUE

Reviewed-by: prr, vadim
2013-02-04 12:04:38 -08:00
Jon Masamitsu
83473ea55d Merge 2013-02-04 12:01:07 -08:00
Xueming Shen
db8ced219f 8006295: Base64.Decoder.wrap(java.io.InputStream) returns InputStream which throws unspecified IOException on attempt to decode invalid Base64 byte stream
8006315: Base64.Decoder decoding methods are not consistent in treating non-padded data
8006530: Base64.getMimeDecoder().decode() throws exception for non-base64 character after adding =

Updated the spec to describe the expected behave explicitly and the implementation to follow

Reviewed-by: alanb, chegar, lancea
2013-02-04 11:58:43 -08:00
James Laskey
233a9042cf 8006191: cmd -> exec("cmd") in script mode
Reviewed-by: sundar, lagergren, hannesw
2013-02-04 14:48:35 -04:00
Volker Simonis
37d83019d0 8007475: Memory stomp with UseMallocOnly
Fix off-by-one error

Reviewed-by: coleenp, hseigel
2013-02-04 13:14:12 -05:00
Eric McCorkle
16990e896a 8006949: Update hotspot for MethodParameters format change
8006907: Hotspot should reject classfiles with multiple MethodParameters attributes

Update to Hotspot's processing of MethodParameters attributes in classfiles

Reviewed-by: coleenp, jrose
2013-02-04 13:05:32 -05:00
Vinnie Ryan
ddbfa5fe53 8006994: Cleanup PKCS12 tests to ensure streams get closed
Reviewed-by: mullan
2013-02-04 17:20:26 +00:00
Konstantin Shefov
5712b216b4 7077259: [TEST_BUG] [macosx] Test work correctly only when default L&F is Metal
Reviewed-by: serb, alexsch
2013-02-04 16:01:06 +00:00
Sergey Bylokhov
7add1f152d 8004821: Graphics2D.drawPolygon() fails with IllegalPathStateException
Reviewed-by: prr, flar
2013-02-04 19:50:06 +04:00
Marcus Lagergren
8b7a8d75b3 8007215: Varargs broken for the case of passing more than the arg limit arguments
Reviewed-by: jlaskey, attila
2013-02-04 16:20:05 +01:00
Attila Szegedi
bd2303d9e4 8007460: var assignment to a parameter in a varargs method causes compilation error
Reviewed-by: jlaskey, lagergren
2013-02-04 15:59:44 +01:00
Petr Pchelko
ab34438938 8005405: [macosx] Drag and Drop: wrong animation when dropped outside any drop target
Changed the calculation of the drag image offset

Reviewed-by: serb, kizune
2013-02-04 13:54:53 +00:00
Harold Seigel
1831def9cc 8000968: NPG: UseCompressedKlassPointers asserts with ObjectAlignmentInBytes for > 32G CompressedOops
Pick a base that works for both CompressedOpps alignment and CompressedKlassPtrs alignment.

Reviewed-by: kvn, roland
2013-02-04 08:26:02 -05:00
James Laskey
58f1fb6ecd 8007455: Extraneous $(ECHO) in make/Makefile
Reviewed-by: sundar
2013-02-04 08:13:05 -04:00
Roland Westrelin
da5499f4ed 8007144: Incremental inlining mistakes some call sites for dead ones and doesn't inline them
Wrong detection for dead call sites.

Reviewed-by: kvn
2013-02-04 11:30:37 +01:00
Mikael Vidstedt
eaa663b241 8007403: Incorrect format arguments in adlparse.cpp
Reviewed-by: kvn, twisti
2013-02-04 10:28:39 -08:00
Erik Joelsson
2b800f01d9 8007275: build-infra: Create final-images target
Reviewed-by: tbell
2013-02-04 11:02:03 +01:00
Erik Joelsson
fe5aed65c2 8007268: build-infra: configure reports Solaris needs gcc for deploy, but logs don't indicate it's used
Reviewed-by: tbell, katleman
2013-02-04 10:58:26 +01:00
Erik Joelsson
2708349f7c 8007093: build-infra: Make should fail if spec is older than configure files
Reviewed-by: tbell
2013-02-04 10:53:38 +01:00
Roland Westrelin
f13dbb00cf 8005114: VM is crashing in ciKlass*ciObjArrayKlass::element_klass() if metaspaces are full
Missing test for loaded klass in c1

Reviewed-by: kvn
2013-02-04 09:11:21 +01:00
Harold Seigel
6c6a537471 Merge 2013-02-03 17:12:31 -05:00
Harold Seigel
812262d16b 7197672: There are issues with shared data on windows
On Windows, set rw protection on the CDS file just before removing it.

Reviewed-by: dcubed, iklam
2013-02-03 16:49:16 -05:00
Edvard Wendelin
3562a0b06d Merge 2013-02-03 22:43:57 +01:00
Dmitry Samersoff
302a583c08 8002048: Protocol to discovery of manageable Java processes on a network
Introduce a protocol to discover manageble Java instances across a network subnet, JDP

Reviewed-by: sla, dfuchs
2013-02-03 22:28:08 +04:00
Dmitry Samersoff
eea117f3e5 8002048: Protocol to discovery of manageable Java processes on a network
Introduce a protocol to discover manageble Java instances across a network subnet, JDP

Reviewed-by: sla, dfuchs
2013-02-03 21:39:58 +04:00
Brian Burkhalter
3f02516d3e 6471906: java.lang.NegativeArraySizeException in tenToThe
Reviewed-by: darcy
2013-02-03 18:20:24 +04:00
Vicente Romero
a4a897ce52 7199823: javac generates inner class that can't be verified
Reviewed-by: jjg, mcimadamore
2013-02-03 02:31:30 +00:00
Vicente Romero
a9f424c887 8005075: Pool.Method, and Pool.Variable redundant Symbol field should be removed
Reviewed-by: jjg
2013-02-02 21:04:56 +00:00
Ragini Prasad
e618b1556c 8007135: tools/launcher/VersionCheck.java failing with new tool jabswitch
Reviewed-by: ksrini, mduigou
2013-02-02 12:08:43 -08:00
Christian Tornqvist
898965f458 8000363: runtime/7158988/FieldMonitor.java fails with exception
Removed unnecessary shell script in the test.

Reviewed-by: coleenp, sla
2013-02-02 20:13:27 +01:00
Chris Hegarty
b61bb15030 8007322: untangle ftp protocol from general networking URL tests
Reviewed-by: alanb
2013-02-02 17:15:13 +00:00
Christian Tornqvist
8734c66d55 8005013: Add NMT tests
Add tests for the Native Memory Tracking feature, includes regression tests for 8005936 and 8004802

Reviewed-by: zgu, coleenp
2013-02-02 16:34:10 +01:00
Yumin Qi
82206bd7f5 Merge 2013-02-02 03:51:01 -08:00
Christian Tornqvist
ac8a131b61 Merge 2013-02-02 08:46:48 +01:00
Yumin Qi
4bc9ed2c1f Merge 2013-02-01 22:41:34 -08:00
Christian Tornqvist
2195d1d5e4 Merge 2013-02-02 07:24:29 +01:00
Kumar Srinivasan
8da1d4a40c 8007428: [launcher] add tools/launcher/FXLauncherTest.java to ProblemList.txt
Reviewed-by: mchung
2013-02-01 22:18:18 -08:00
Kumar Srinivasan
81a6d7fb01 8003549: (pack200) assertion errors when processing lambda class files with IMethods
Add more check for opcode, sketch provided by jrose

Reviewed-by: jrose
2013-02-01 22:12:52 -08:00
Jiangli Zhou
7eb8af5534 Merge 2013-02-01 19:36:55 -08:00
Joe Darcy
0050c5b4fb 6964528: Double.toHexString(double d) String manipulation with + in an append of StringBuilder
Reviewed-by: shade
2013-02-01 19:30:02 -08:00
Mikael Vidstedt
26b2bbe306 8007257: NPG: metaspace.cpp: Incorrect arguments in calls to err_msg
Fix size checks in assert and corrected some print formats. Also reviewed by vitalyd@gmail.com.

Reviewed-by: coleenp, sspitsyn
2013-02-01 17:21:53 -08:00
Michal Frajt
9d47280d2a 7189971: Implement CMSWaitDuration for non-incremental mode of CMS
Reviewed-by: jmasa, johnc, ysr
2013-02-01 17:02:36 -08:00
Christian Tornqvist
111ddcc827 8005012: Add WB APIs to better support NMT testing
Add WB API functions to enable better NMT testing

Reviewed-by: dholmes, zgu
2013-02-01 23:48:08 +01:00
Yumin Qi
bae6c82c7a Merge 2013-02-01 14:42:43 -08:00
John Cuthbertson
d701ede8bb 8006894: G1: Number of marking threads missing from PrintFlagsFinal output
Set ConcGCThreads to the calculated number of marking threads.

Reviewed-by: jmasa, ysr
2013-02-01 13:17:04 -08:00
Brian Burkhalter
854e269f20 5035569: Formatter should document that %a conversion unsupported for BigDecimal args
Reviewed-by: darcy
2013-02-01 21:01:44 +00:00
Joe Darcy
c2e77030a1 8001614: Include annotation type to documented supported-ness
Reviewed-by: alanb, jjg, tbell
2013-02-01 13:01:26 -08:00
Jiangli Zhou
7cadb57785 Merge 2013-02-01 15:25:37 -05:00
Jonathan Gibbons
8f90cd0025 8007344: javac may not make tree end positions and/or doc comments available to processors and listeners
Reviewed-by: darcy
2013-02-01 12:01:03 -08:00
Yumin Qi
d907dfa21e Merge 2013-02-01 10:57:06 -08:00
Harold Seigel
4a1c674d5b Merge 2013-02-01 13:30:12 -05:00
Harold Seigel
a2966dd62d 8006298: Specifying malformed JFR options (-XX:+FlightRecorderOptions) outputs non-sensical error
Change error messages for malformed options so the messages are more useful.

Reviewed-by: mikael, kvn, nloodin
2013-02-01 14:14:54 -05:00
Tim Bell
6b4b68a145 8006808: mapfile use check in jdk/make/common/shared/Defs-solaris.gmk is throwing 'egrep: syntax error'
Use a valid egrep expression in the non-SPARC case

Reviewed-by: dholmes
2013-02-01 09:16:19 -08:00
Jonathan Gibbons
7ee6242d0c 8007305: DPrinter: provide better usage message
Reviewed-by: mcimadamore
2013-02-01 08:36:15 -08:00
Jonathan Gibbons
81e9d881ca 8007306: DPrinter: improve display of impl-class, internal tag/kind, and external tag/kind
Reviewed-by: mcimadamore
2013-02-01 08:33:48 -08:00
Andrew Brygin
01ea5d17ec 8004801: The image of BufferedImage.TYPE_INT_ARGB is blank
Reviewed-by: prr
2013-02-01 20:06:27 +04:00
Jayashree Viswanathan
38f3a59c9a 8006536: [launcher] removes trailing slashes on arguments
Reviewed-by: ksrini, akhil
2013-02-01 07:25:51 -08:00
Fredrik Öhrström
97d1424b48 Merge 2013-02-01 11:22:41 +01:00
Chris Hegarty
d0830009e8 8006395: Race in async socket close on Linux
Reviewed-by: alanb, dsamersoff
2013-02-01 06:51:37 +00:00
Serguei Spitsyn
932c29e08e 8006731: JSR 292: the VM_RedefineClasses::rewrite_cp_refs_in_method() must support invokedynamic
The invokedynamic bytecode ref to a CP entry needs to be checked and fixed as well.

Reviewed-by: coleenp, twisti
2013-01-31 20:11:14 -08:00
Serguei Spitsyn
da8ccb9375 8006546: JSR 292: typos in the ConstantPool::copy_cp_impl()
Simple typos that need to be fixed

Reviewed-by: coleenp, twisti
2013-01-31 20:09:16 -08:00
Serguei Spitsyn
823c749bd1 8006542: JSR 292: the VM_RedefineClasses::append_entry() must support invokedynamic entry kinds
Need a support for invokedynamic entry kinds when new and old constant pools are merged.

Reviewed-by: coleenp, twisti
2013-01-31 20:07:18 -08:00
Roger Riggs
9bf4d2f978 8004353: Generated html is wrong for overview.html; content has incorrect css footer class
Reviewed-by: jjg
2013-01-31 19:31:37 -08:00
Jonathan Gibbons
64ef3bfccc 8007329: minor issues in impl class hierarchry for DCTree.* classes
Reviewed-by: darcy
2013-01-31 19:19:40 -08:00
Joe Darcy
71b457cb97 8007351: Malformed copyright statements in typeAnnotations test directory
Reviewed-by: jjg
2013-01-31 18:58:17 -08:00
Yumin Qi
b543c19bac 8000973: SA on windows thread inspection is broken
After bug 7161732, On Windows SA could not find correct address of thread_id of OSThread since _thread_id moved to end of the class . The presupposition of the address is following thread handle no longer stands. Fix by adding thread_id field to OSThread and getting the  address directly from OSThread.

Reviewed-by: nloodin, sspitsyn
2013-01-31 17:43:01 -08:00
Hannes Wallnöfer
4f2891ca8d 8007060: Primitive wrap filter throws ClassCastException in test262parallel
Reviewed-by: sundar, jlaskey, lagergren
2013-02-01 02:24:15 +01:00
David Katleman
2ccecb9e10 Added tag jdk8-b75 for changeset dbafd8b0d8a2 2013-01-31 17:04:55 -08:00
David Katleman
79896f3eaf Added tag jdk8-b75 for changeset cfe93cb07f19 2013-01-31 17:04:47 -08:00
David Katleman
7c22c50e9e Added tag jdk8-b75 for changeset bef9d985cc1c 2013-01-31 17:04:40 -08:00
David Katleman
34d99c6b39 Added tag jdk8-b75 for changeset 504959da18bb 2013-01-31 17:04:37 -08:00
David Katleman
545ef0e5fe Added tag jdk8-b75 for changeset 3b129a5ff9fd 2013-01-31 17:04:28 -08:00
David Katleman
7ecc657cee Added tag jdk8-b75 for changeset 5aa96ebbc95e 2013-01-31 17:04:24 -08:00
David Katleman
f9329eb66f Added tag jdk8-b75 for changeset a86f171d15a1 2013-01-31 17:04:19 -08:00
Weijun Wang
0c6cb9cdc2 8006564: Test sun/security/util/Oid/S11N.sh fails with timeout on Linux 32-bit
Reviewed-by: alanb
2013-02-01 07:39:41 +08:00
Brian Burkhalter
f7f0768c22 6355704: (fmt) %f formatting of BigDecimals is incorrect
Reviewed-by: darcy
2013-01-31 14:29:19 -08:00
Lana Steuck
15cde403c4 Merge 2013-01-31 14:10:14 -08:00
Lana Steuck
ad121b14cb Merge 2013-01-31 14:10:02 -08:00
Tim Bell
6b6febce98 8006933: Need to use nawk on Solaris to avoid awk limitations
Reviewed-by: erikj, dholmes, dsamersoff
2013-01-31 13:31:30 -08:00
Mike Duigou
665fca9d60 8006709: Add minimal support of MacOSX platform for NetBeans Projects
Adds support for MacOSX platform and architecture detection. Other minor updates (-source/target 1.8)

Reviewed-by: ohair
2013-01-31 13:27:04 -08:00
Xueming Shen
320ce960ce 8007298: Base64.getMimeDecoder().decode() throws IAE for a single non-base64 character
8006526: Base64.Decoder.decode(String) spec contains a copy-paste mistake

To ignore single non-base64 char in mime decoding

Reviewed-by: alanb
2013-01-31 13:13:14 -08:00
Joe Darcy
757d9cdeb9 8007115: Refactor regression tests for java.lang.reflect.Parameter
Reviewed-by: emc
2013-01-31 12:23:04 -08:00
Joe Darcy
4484857b50 8007313: Remove use of {ContainerFor/ContainedBy} from langtools
Reviewed-by: jjg
2013-01-31 12:16:03 -08:00
Joe Darcy
9101ca61f5 8005832: Remove java.lang.annotation.{ContainedBy, ContainerFor} annotation types
Reviewed-by: mduigou
2013-01-31 12:13:21 -08:00
Xueming Shen
907f0724ce 8005394: Base64.Decoder/Encoder.wrap(XStream) don't throw NPE for null args passed
To check null for dec/enc.wrap methods

Reviewed-by: alanb
2013-01-31 11:09:36 -08:00
David Buck
b3fa7187ae 7042126: (alt-rt) HashMap.clone implementation should be re-examined
Test case for cr7042126. Issue only found in OracleJDK, but test case is valid for OpenJDK as well

Reviewed-by: mduigou
2013-01-31 10:55:15 -08:00
John Cuthbertson
7d2ccf3a21 8005875: G1: Kitchensink fails with ParallelGCThreads=0
Check that the concurrent marking worker gang exists in ConcurrentMark::print_worker_threads_on(). Changes were also reviewed by Vitaly Davidovich <vitalyd@gmail.com>.

Reviewed-by: brutisso
2013-01-31 10:45:09 -08:00
Lana Steuck
c78a8aad38 Merge 2013-01-31 10:23:49 -08:00
Lana Steuck
40c0ad3990 Merge 2013-01-31 10:22:25 -08:00
Attila Szegedi
fe52eb5992 8006529: Methods always get callee - it should be conditional
This commit streamlines the bytecode function signatures, prologue, local variable use, scope creation, and invocation. It started out quite innocently when we noticed that we always emit __callee__ parameters for all functions even when they are not needed, but it turned out to be quite a deep rabbit hole. In the end, I identified exact conditions when functions need to have a callee parameter, when they need to receive parent scope, when they need to create their own scope, when they need to have variable arity signature, and when they need to have an "arguments" object, and made sure that callee parameters in signatures only show up when they are needed, that parent function's scope is only passed to a child function when it is needed, that the function only creates its own scope when it is needed. In crypto.js, the number of scopes dropped from 446 to 244, and the number of callees dropped from 315 to 145.

Reviewed-by: jlaskey, lagergren
2013-01-31 18:34:42 +01:00
Pete Brunet
018fbffe54 7179482: Component.accessibleContext and JComponent.accessibleContext refactoring
Reviewed-by: art, anthony, alexsch
2013-01-31 18:51:17 +04:00
Athijegannathan Sundararajan
bdcffc23f7 8007286: Add JavaAdapter and importPackage to compatibility script
Reviewed-by: lagergren, jlaskey
2013-01-31 20:07:40 +05:30
Leonid Romanov
d843dec3b7 8007006: [macosx] Closing subwindow loses main window menus
Reviewed-by: anthony
2013-01-31 18:25:59 +04:00
Fredrik Öhrström
2b389730e2 8006872: Stop creating four jars with identical content in the new build system
Reviewed-by: erikj
2013-01-31 14:03:42 +01:00
Fredrik Öhrström
c2b707c559 8006872: Stop creating four jars with identical content in the new build system
Reviewed-by: erikj
2013-01-31 14:02:58 +01:00
Fredrik Öhrström
ba0917c531 8006872: Stop creating four jars with identical content in the new build system
Reviewed-by: erikj
2013-01-31 14:02:44 +01:00
Fredrik Öhrström
676769c08f 8006872: Stop creating four jars with identical content in the new build system
Reviewed-by: erikj
2013-01-31 14:02:29 +01:00
Fredrik Öhrström
45c58805e7 8006872: Stop creating four jars with identical content in the new build system
Reviewed-by: erikj
2013-01-31 14:01:45 +01:00
Fredrik Öhrström
9f5b40123d 8006872: Stop creating four jars with identical content in the new build system
Reviewed-by: erikj
2013-01-31 14:00:09 +01:00
Joel Borggrén-Franck
34e1726860 8005712: Simplify support for repeating annotations in j.l.r.AnnotatedElement
8004919: AnnotationSupport uses possibly half-constructed AnnotationType instances

Implements the simplified semantics for repeating annotations and removes the incorrect obtaining of an AnnotationType

Reviewed-by: darcy, abuckley
2013-01-31 10:10:34 +01:00
Jonathan Gibbons
c3cd43825b 8007034: debug printer for javac internals
Reviewed-by: mcimadamore
2013-01-30 09:47:12 -08:00
Jonathan Gibbons
ebc0ebf54d 8007096: DocLint parsing problems with some comments
Reviewed-by: mcimadamore
2013-01-30 09:40:54 -08:00
Athijegannathan Sundararajan
fcd28bdcc5 8007140: Java.extend crashes when attempting to extend java.lang.Object
Reviewed-by: lagergren, hannesw
2013-01-30 21:15:14 +05:30
Hannes Wallnöfer
411b70d54a 8007109: Regression: String(ConsString) does not flatten argument to String
Reviewed-by: sundar, lagergren
2013-01-30 14:57:19 +01:00
Athijegannathan Sundararajan
8cd63a75f2 8007132: Java objects returned from constructor functions are lost
Reviewed-by: hannesw, lagergren, attila
2013-01-30 17:52:54 +05:30
Marcus Lagergren
30b950d2d2 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes
Lower suffered from being a "God class" trying to do everything at once.  As Nashorn code generation has grown, so has Lower. It does several post processing passes, tries to do several things at once even though all type information isn't in place, adjusting state afterwards and so on. It also performs control flow analysis, type attribution and constant folding, and  everything else code generation related before byte code emission. I have now separated the compilation process into Lower (create low level nodes from high level ones, copy code such as finally block inlining etc), Attr (assign types and symbols to all nodes - freeze slot and scope information) and FinalizeTypes (insert explicit casts, specialize invoke dynamic types for scope accesses). I've removed the kludgy AccessSpecializer, as this now integrates naturally with typing. Everything is now much easier to read and each module performs only one thing. I have added separate loggers for the separate tiers. In the process I have also fixed: (1) problems with type coercion (see test/script/basic/typecoercion.js, basically our coercion was too late and our symbol inference was erroneous. This only manifested itself in very rare occasions where toNumber coercion has side effects, such as for example when valueOf is overridden)  (2) copying literal nodes (literal copy did not use the superclass copy, which made all the Node specific fields not to be copied  (3) erroneous literal tokenization (literals shouldn't always just inherit token information from whatever node that creates them) (4) splitter weighnodes - unary nodes were considered weightless  (4) removed the hateful and kludgy "VarNode.shouldAppend", which really isn't needed when we have an attribution phase that determines self reference symbols (the only thing it was used for) (5) duplicate line number issues in the parser (6) convert bug in CodeGenerator for intermediate results of scope accesses (see test/script/basic/access-specializer.js) ... Several of these things just stopped being problems with the new architecture "can't happen anymore" and are not bug fixes per se. All tests run. No performance regressions exist that I've been able to measure. Some increases in performance were measured, but in the statistical margin of error (which is very wide as HotSpot currently has warmup issues with LambdaForms/invoke dynamic). Compile speed has not measurably increased.

Reviewed-by: jlaskey, attila
2013-01-30 12:26:45 +01:00
James Laskey
b342e3c536 8007094: Apply version to nashorn.jar manifest
Reviewed-by: sundar
2013-01-29 14:25:39 -04:00
Athijegannathan Sundararajan
ae80adfc10 8007091: Provide private API to pass application class loader for nashorn script engine
Reviewed-by: jlaskey, lagergren
2013-01-29 19:57:25 +05:30
Stefan Karlsson
e8860a177b 8004710: NPG: jmap could throw sun.jvm.hotspot.types.WrongTypeException after PermGen removal
When calculating live object regions, make sure that the alignment reserve, at the end of a TLAB, is excluded.

Reviewed-by: jmasa, brutisso
2013-01-29 10:51:33 +01:00
Joel Borggrén-Franck
b29b479461 8004698: Implement Core Reflection for Type Annotations
Reviewed-by: darcy
2013-01-29 10:32:49 +01:00
James Laskey
0b9014a9d6 8006676: Integrate Nashorn into new build system
Reviewed-by: jlaskey
2013-01-28 16:22:03 -04:00
Karen Kinnear
733d5fdd65 Merge 2013-01-28 09:33:55 -08:00
Athijegannathan Sundararajan
97a071dc3d 8007004: nashorn script engine should not use thread context class loader as script 'application loader'
Reviewed-by: attila, hannesw
2013-01-28 21:29:05 +05:30
Bharadwaj Yadavelli
cb255a0269 8004967: Default method cause VerifyError: Illegal use of nonvirtual
Recognize VM generated method in old verifier

Reviewed-by: acorn, coleenp
2013-01-28 10:55:30 -05:00
Karen Kinnear
b28f16c910 Merge 2013-01-28 10:34:07 -05:00
Jesper Wilhelmsson
2447f369f6 6348447: Specifying -XX:OldSize crashes 64-bit VMs
Heap size will be set to allow for OldSize to fit. Also reviewed by vitalyd@gmail.com

Reviewed-by: ehelin, jmasa
2013-01-28 15:41:45 +01:00
Athijegannathan Sundararajan
daaeb20eff 8006983: Introduce a command line option to switch off syntactic extensions of nashorn
Reviewed-by: lagergren, attila
2013-01-28 18:10:16 +05:30
Edvard Wendelin
a320378fac 8006864: Update java.security-linux to include changes in java.security
Reviewed-by: mchung, mullan
2013-01-28 11:07:07 +01:00
Karen Kinnear
3f92d0764c Merge 2013-01-27 21:58:34 -05:00
Vicente Romero
b5148d30e2 8006944: javac, combo tests should print out the number of threads used
Reviewed-by: mcimadamore
2013-01-27 19:38:44 +00:00
Dean Long
0a2347e0ba Merge 2013-01-27 01:07:09 -08:00
Morris Meyer
7d8f623180 6518907: cleanup IA64 specific code in Hotspot
Removed unused IA64 specific code

Reviewed-by: twisti, kvn, dholmes
2013-01-25 16:50:33 -08:00
David Chase
89b8658977 8006500: compiler/8004741/Test8004741.java fails intermediately
Rewrote the test to be more reliable, add test for invalid size exception

Reviewed-by: kvn
2013-01-25 16:09:14 -08:00
Morris Meyer
6c80586b40 8005811: Turn off TierdCompilation in JDK8 trunk for all platforms
Disable tiered compilation in jdk8 because of CodeCache and performance anomalies

Reviewed-by: kvn, twisti
2013-01-25 16:31:47 -08:00
Igor Ignatyev
1a9e6be809 8005439: no message about inline method if it specifed by CompileCommand
Reviewed-by: kvn, vlivanov
2013-02-01 03:02:01 -08:00
Igor Ignatyev
a25db953cc 8006410: allocating without ResourceMark when CompileCommand was specified
Reviewed-by: kvn, vlivanov
2013-02-01 02:50:23 -08:00
Yumin Qi
fe8363948e Merge 2013-01-25 13:47:52 -08:00
Ioi Lam
93b845e21b 6479360: PrintClassHistogram improvements
Jcmd <pid> GC.class_stats (UnlockDiagnosticVMOptions)

Reviewed-by: coleenp, hseigel, sla, acorn
2013-01-25 15:06:18 -05:00
Hannes Wallnöfer
327a6cf1b7 8006766: Array-like access to characters of a string is slow
Reviewed-by: lagergren, attila
2013-01-25 17:35:31 +01:00
Zhengyu Gu
fc0efc91c8 8000692: Remove old KERNEL code
Removed depreciated kernel VM source code from hotspot VM

Reviewed-by: dholmes, acorn
2013-01-25 10:04:08 -05:00
Yumin Qi
f3c57efb11 Merge 2013-01-25 04:23:49 -08:00
Alejandro Murillo
0c7d523859 8006827: new hotspot build - hs25-b18
Reviewed-by: jcoomes
2013-01-25 03:03:23 -08:00
Christian Tornqvist
25189c1a6a 8006413: Add utility classes for writing better multiprocess tests in jtreg
Add a few utility classes to test/testlibrary to support multi process testing in jtreg tests. Added a test case for one of the utility classes. Also reviewed by Vitaly Davidovich

Reviewed-by: brutisso, dholmes, vlivanov, nloodin, mgerdin
2013-01-25 10:14:22 +01:00
Yunda
19303cc71d 8005278: Serviceability Agent: jmap -heap and jstack -m fail
BinaryTreeDictionary is typedef'ed as AFLBinaryTreeDictionary in vmStructs and in SA we still use old name for that. FreeList now is a template based class which is not reflect in SA type library. When SA does calculation of heap for CMS, the former will cause failure to retrieve BinaryTreeDictionary  sine the rename. The later will fail wherever it is used in SA.

Reviewed-by: dholmes, sla, coleenp
2013-01-24 23:30:45 -08:00
Serguei Spitsyn
020fe75e67 8005128: JSR 292: the mlvm redefineClassInBootstrap test crashes in ConstantPool::compare_entry_to
When constant pool is copied in merge_constant_pools the invokedynamic operands must be copied before.

Reviewed-by: coleenp, twisti
2013-01-24 22:13:32 -08:00
Mandy Chung
fad9c0e89c 8004937: Improve proxy construction
Reviewed-by: jrose, ahgross
2013-01-24 16:45:38 -08:00
Daniel Fuchs
7303280ef5 8006446: Restrict MBeanServer access
Reviewed-by: alanb, mchung, darcy, jrose, ahgross, skoivu
2013-01-30 11:33:51 +01:00
Mandy Chung
7cb8f824d3 8006882: Proxy generated classes in sun.proxy package breaks JMockit
Reviewed-by: alanb, ahgross
2013-01-28 15:53:29 -08:00
Ioi Lam
27c881b2fb 8006280: Need to reorder metadata structures to reduce size (64-bit)
Reordered Klass, InstanceKlass and Method to save 8 bytes each

Reviewed-by: coleenp, jiangli
2013-01-24 10:57:38 -08:00
Bill Pittore
deceb833bf 8005722: Assert in c1_LIR.hpp incorrect wrt to number of register operands
In LIR_OpVisitState::visit() the receiver operand is processed twice

Reviewed-by: roland, vladidan
2013-01-24 13:27:54 -05:00
Vladimir Kozlov
4de970006b Merge 2013-02-12 09:54:34 -08:00
Bill Pittore
9bb5656e4b Merge 2013-02-08 16:08:17 -05:00
Joseph Provino
83321b989a 8003539: Minimal VM don't react to -Dcom.sun.management and -XX:+ManagementServer
A warning message should be displayed if these options are used with the Minimal VM.

Reviewed-by: dholmes, dsamersoff
2013-02-05 13:32:34 -05:00
Athijegannathan Sundararajan
5231fef61c 8006857: ClassCastException when interface implementing function uses arguments object
Reviewed-by: jlaskey, lagergren
2013-01-24 22:38:58 +05:30
James Laskey
c2bdb49b75 8006852: Move tests from JIRA for prepopulated map failures
Reviewed-by: sundar
2013-01-24 12:15:29 -04:00
Hannes Wallnöfer
d9ecc2ea0c 8006408: Clean up and specialize NativeString
Reviewed-by: jlaskey, lagergren
2013-01-24 14:55:57 +01:00
Athijegannathan Sundararajan
d3f071dc73 8006755: Functions inside with statements dont get correct scope
Reviewed-by: lagergren, attila
2013-01-24 17:49:03 +05:30
Athijegannathan Sundararajan
67db0ba236 8006575: Error in codegen for element access on primitive value
Reviewed-by: hannesw, lagergren
2013-01-24 16:21:32 +05:30
Jon Masamitsu
c727c73cce 8005452: NPG: Create new flags for Metaspace resizing policy
Reviewed-by: johnc, jwilhelm, coleenp, stefank
2013-01-23 19:08:04 -08:00
John Cuthbertson
251a9ff39c 8007772: G1: assert(!hr->isHumongous() || mr.start() == hr->bottom()) failed: the start of HeapRegion and MemRegion should be consistent for humongous regions
In do_marking_step(), we should always give up current region after scanning the object, if the region is humongous.

Reviewed-by: brutisso, jwilhelm, tamao
2013-02-11 15:24:48 -08:00
Bengt Rutisson
77ebf3cbc1 8002144: G1: large number of evacuation failures may lead to large c heap memory usage
Use Stack<> instead of GrowableArray to keep track of preserved marks. Also reviewed by vitalyd@gmail.com.

Reviewed-by: johnc, jcoomes
2013-02-10 21:15:16 +01:00
Bengt Rutisson
ff7575383f Merge 2013-02-07 18:40:45 -08:00
Bengt Rutisson
e39be2cb45 Merge 2013-02-07 22:04:17 +01:00
Jesper Wilhelmsson
2c17d50a8b 8006432: Ratio flags should be unsigned
Flags changed to be of uintx type

Reviewed-by: johnc, tamao
2013-02-07 15:51:25 +01:00
Tao Mao
63fd60257c 7052429: G1: Avoid unnecessary scanning of humongous regions during concurrent marking
Skip unnecessary scanning of bitmap for unmarked humongous objects/regions.

Reviewed-by: jwilhelm, johnc
2013-02-06 14:50:37 -08:00
Joseph Provino
698fba94ef 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
Rename INCLUDE_ALTERNATE_GCS to INCLUDE_ALL_GCS and replace SERIALGC with INCLUDE_ALL_GCS.

Reviewed-by: coleenp, stefank
2013-01-23 13:02:39 -05:00
Coleen Phillimore
99039568f9 8006040: NPG: on_stack processing wastes space in ConstantPool
Added on_stack bit to flags.  Also MetadataMarkOnStack is used for more than JVMTI so had to be moved.

Reviewed-by: dholmes, stefank
2013-01-23 10:34:29 -05:00
Athijegannathan Sundararajan
4135674f92 8006736: nashorn script engine should support the usage multiple global objects with same engine instance
Reviewed-by: lagergren, jlaskey, hannesw
2013-01-23 17:04:02 +05:30
David Holmes
26936d0600 8006667: Merge issue: Profile attribute need to be examined before custom attributes
Swap profile checking and FXHelper checking

Reviewed-by: alanb
2013-01-22 20:04:15 -05:00
David Holmes
8b799721ae Merge 2013-01-22 19:31:02 -05:00
David Holmes
dfb3ff9459 Merge 2013-01-22 19:30:52 -05:00
Athijegannathan Sundararajan
7014b0cced 8006678: Avoid too many Context.getGlobal() calls
Reviewed-by: lagergren, jlaskey
2013-01-22 22:07:12 +05:30
Stefan Karlsson
15d98b74e9 7140852: Add test for 7022100
Reviewed-by: sspitsyn, coleenp
2013-01-22 15:25:37 +01:00
Attila Szegedi
245ec829ff 8006677: Remove unused FunctionNode flags
Reviewed-by: hannesw, jlaskey
2013-01-22 14:36:28 +01:00
Hannes Wallnöfer
739b531642 8006570: This-value for non-strict functions should be converted to object
Reviewed-by: jlaskey, lagergren, attila
2013-01-22 14:14:37 +01:00
Stefan Karlsson
fe173efccd 8006506: Add test for redefining methods in backtraces to java/lang/instrument tests
Reviewed-by: sspitsyn, coleenp
2013-01-22 13:53:53 +01:00
Alan Bateman
a23a1a942b 8004502: Compact Profiles contents
Reviewed-by: dholmes, mchung
2013-01-21 23:35:36 -05:00
Alan Bateman
3ca765dfbd 8004931: add/removePropertyChangeListener should not exist in subset Profiles of Java SE
Reviewed-by: dholmes, mchung, ksrini
2013-01-21 23:23:12 -05:00
Alan Bateman
50ccbb6018 8003256: (profiles) Add support for profile identification
Reviewed-by: dholmes, mchung, ksrini
2013-01-21 23:21:15 -05:00
Alan Bateman
99f3285106 8003255: (profiles) Update JAR file specification to support profiles
Reviewed-by: dholmes, mchung, ksrini
2013-01-21 23:20:42 -05:00
David Holmes
945d6e8f23 8004265: Add build support for Compact Profiles
Reviewed-by: erikj, ohair
2013-01-21 23:17:58 -05:00
David Holmes
08f31d5198 8006651: build-infra: Import.gmk needs to add support for the minimal VM
Reviewed-by: erikj, ohair
2013-01-21 21:54:51 -05:00
Athijegannathan Sundararajan
017fe2d002 8006635: Reduce access levels as much as possible
Reviewed-by: jlaskey, lagergren, attila
2013-01-21 21:17:38 +05:30
Attila Szegedi
acaee2a2f4 8006525: Give StaticClass objects their own linker
Reviewed-by: hannesw, lagergren
2013-01-21 11:03:56 +01:00
David Holmes
2f7185008f 8004265: Add build support for Compact Profiles
Reviewed-by: erikj, ohair
2013-01-21 01:50:40 -05:00
Alan Bateman
c4c9a281f3 8004182: Add support for profiles in javac
Reviewed-by: dholmes
2013-01-21 01:46:31 -05:00
Jonathan Gibbons
caf667de05 8004182: Add support for profiles in javac
Reviewed-by: mcimadamore
2013-01-21 01:27:42 -05:00
Bhavesh Patel
bd4ebc07d8 8006124: javadoc/doclet should be updated to support profiles
Reviewed-by: jjg
2013-01-21 00:45:35 -05:00
Bhavesh Patel
2c52089918 8006124: javadoc/doclet should be updated to support profiles
Reviewed-by: jjg, dholmes
2013-01-21 00:31:34 -05:00
Bhavesh Patel
2b742e4081 8006124: javadoc/doclet should be updated to support profiles
Reviewed-by: jjg, dholmes
2013-01-21 00:29:59 -05:00
Athijegannathan Sundararajan
993b92c985 8006557: JDK8/Lambda build clashes on Map.replace()
Reviewed-by: jlaskey
2013-01-19 22:35:43 +05:30
Athijegannathan Sundararajan
7784f11d28 8006584: improve variable handling in NashornScriptEngine
Reviewed-by: jlaskey, hannesw
2013-01-19 09:14:43 +05:30
Athijegannathan Sundararajan
cef1f6c50b 8006562: findOwnMH in nashorn "objects" package should be cleaned up
Reviewed-by: jlaskey, lagergren
2013-01-18 17:55:04 +05:30
Athijegannathan Sundararajan
07484149d6 8006527: nashorn jsr223 engine does not work in sandbox
Reviewed-by: jlaskey, attila, lagergren
2013-01-18 08:45:06 +05:30
James Laskey
e1e509319e 8006517: PropertyHashMap.Element.equals() compares to Property
Reviewed-by: sundar
2013-01-17 10:33:39 -04:00
Athijegannathan Sundararajan
71e9d57ee3 8006424: Passing null or undefined to adapter class constructors results in NPE or ClassCastException
Reviewed-by: attila, hannesw, jlaskey
2013-01-16 21:26:55 +05:30
Athijegannathan Sundararajan
d35ae9ab05 8006412: Improve toString method of ScriptObjectMirror class
Reviewed-by: jlaskey, lagergren
2013-01-16 17:58:51 +05:30
James Laskey
c6c424f27a 8006304: Remove pre-population of maps for constructor produced maps
Reviewed-by: sundar
2013-01-16 07:06:40 -04:00
Attila Szegedi
a2efb1b4f5 8006337: Discarded arguments for INVOKESTATIC must still be evaluated for side effects
Reviewed-by: hannesw, jlaskey, sundar
2013-01-15 18:08:50 +01:00
Attila Szegedi
311e57397d 8005958: invoking a function through INVOKESTATIC with more arguments than it declares resulted in malformed bytecode being generated
Reviewed-by: lagergren, jlaskey
2013-01-15 17:09:44 +01:00
Attila Szegedi
0c53c5de50 8006293: Reduce ScriptObject.findCallMethodMethod
Reviewed-by: lagergren, jlaskey
2013-01-15 13:10:20 +01:00
Andreas Rieber
246e4e8daf 8006181: nashorn script engine does not run jrunscript's initialization script
Reviewed-by: lagergren, jlaskey
2013-01-14 21:30:13 +05:30
Attila Szegedi
f36a46aea4 8006168: ability to generate multi-type Java adapters
Reviewed-by: lagergren, jlaskey
2013-01-14 16:00:55 +01:00
Athijegannathan Sundararajan
7e7ea2a295 8006093: Add a makefile target to run all tests (test, test262, perf tests)
Reviewed-by: attila, hannesw
2013-01-11 20:34:22 +05:30
Athijegannathan Sundararajan
a8b9e9a36d 8006082: Provide option to run octane benchmarks in separate processes
Reviewed-by: lagergren, jlaskey
2013-01-11 18:26:18 +05:30
Marcus Lagergren
8bbf26bc89 8005976: Break out AccessSpecializer into one pass before CodeGenerator instead of iterative applications from CodeGenerator
Now scope and slot information is guaranteed to be fixed AND NOT CHANGE before CodeGeneration. We want to keep it that way to build future type specializations and bring all type work out of CodeGenerator.

Reviewed-by: attila, hannesw
2013-01-11 10:40:51 +01:00
Mandy Chung
3243aaf47a 8005615: Java Logger fails to load tomcat logger implementation (JULI)
Reviewed-by: alanb, ahgross
2013-01-10 19:43:36 -08:00
Attila Szegedi
ddf4b86c57 8005983: JavaAdapterFactory generated proxy classes should take extra constructor arguments at the end
Reviewed-by: lagergren, sundar
2013-01-10 15:28:05 +01:00
Athijegannathan Sundararajan
164350cecf 8005982: NASHORN-71.js failing in nightlys
Reviewed-by: attila, lagergren, jlaskey
2013-01-10 19:55:38 +05:30
Athijegannathan Sundararajan
643a6b824c 8005987: ant octane tries to run non-benchmark scripts
Reviewed-by: lagergren, attila, jlaskey
2013-01-10 19:03:25 +05:30
Marcus Lagergren
3d269485fc 8005971: runsunspider.js should check results of benchmarks
Reviewed-by: attila, hannesw
2013-01-10 10:28:57 +01:00
Athijegannathan Sundararajan
ff9829969f 8005940: provide ant targets to get and update external test scripts
Reviewed-by: jlaskey, lagergren
2013-01-09 22:32:40 +05:30
Attila Szegedi
12801c40c5 8005777: Bug in the FacetIntrospector of Dynalink - non-public class should search super
Reviewed-by: lagergren, sundar
2013-01-09 15:02:48 +01:00
Athijegannathan Sundararajan
e40b456a27 8005848: assigning to global toString variable affects Object.prototype.toString
Reviewed-by: jlaskey, lagergren
2013-01-08 21:16:07 +05:30
Marcus Lagergren
dd47345d51 8005842: Loops in ASTWriter. Corrected @Reference and @Ignore node annotation for IR nodes
Reviewed-by: hannesw, sundar
2013-01-08 15:20:40 +01:00
Attila Szegedi
df21b0860f 8005801: Refactor findSetMethod
FindSetMethod() was a very large single method, very unreadable and unmaintainable. It was broken into easy-to-understand pieces. The refactoring required introduction of a comand-object like entity, SetMethodCreator, to contain the nontrivial transient state of the algorithm that made the original big method so resistant to refactoring in the first place.

Reviewed-by: lagergren, sundar
2013-01-08 14:14:17 +01:00
Attila Szegedi
3cb7831567 8005846: Remove Mangler in favor of Dynalink's NameCodec
Reviewed-by: jlaskey, sundar
2013-01-08 13:50:11 +01:00
Marcus Lagergren
eb0f10508f 8005843: refSymbols lookup of unbound variable could cause NullPointerException in Lower
Reviewed-by: hannesw, attila
2013-01-08 10:52:11 +01:00
Athijegannathan Sundararajan
d8e79f1ce1 8005835: NASHORN-668 output fails to compare with the corresponding .EXPECTED file
Reviewed-by: lagergren, hannesw
2013-01-08 15:02:36 +05:30
Marcus Lagergren
51ceb76240 8005788: Loggers and their corresponding system properties not working correctly
1-1 mapping now maintained. Used Context err instead of System.err in several places (after bootstrapping Context). Problematic closing of err stream replaced by @SuppressWarnings("resource")

Reviewed-by: jlaskey, sundar
2013-01-08 09:59:28 +01:00
Athijegannathan Sundararajan
b501e8fdc4 8005782: get rid of javadoc errors, warnings in nashorn build
Reviewed-by: lagergren
2013-01-08 08:51:00 +05:30
Petr Hejl
569e8ef170 8005703: Offsets miscalculated for blocks
Reviewed-by: lagergren
2013-01-07 14:41:16 -04:00
Marcus Lagergren
24e583d55f 8005789: Forgot to document -Dnashorn.unstable.relink.threshold
Added documentation to DEVELOPER_README, fixed code convention warnings

Reviewed-by: attila
2013-01-07 19:31:36 +01:00
James Laskey
311f43d5a6 8005663: Update copyright year to 2013
Reviewed-by: sundar
2013-01-04 09:58:33 -04:00
James Laskey
33e2b39ed3 8005665: JavaDoc should only display public interfaces
Reviewed-by: sundar
2013-01-04 09:58:30 -04:00
James Laskey
440f8df1ec 8005666: Add webrev to .hgignore
Reviewed-by: sundar
2013-01-04 09:58:26 -04:00
Jon Masamitsu
6f5991fa38 8004895: NPG: JMapPermCore test failure caused by warnings about missing field
Reviewed-by: johnc
2013-01-03 15:03:27 -08:00
James Laskey
dca6998949 8005440: Improve .hgignore filtering for Nashorn repo
Reviewed-by: sundar
2012-12-22 08:49:58 -04:00
Jim Laskey
98762d6ee0 8005403: Open-source Nashorn
Co-authored-by: Akhil Arora <akhil.arora@oracle.com>
Co-authored-by: Andreas Woess <andreas.woess@jku.at>
Co-authored-by: Attila Szegedi <attila.szegedi@oracle.com>
Co-authored-by: Hannes Wallnoefer <hannes.wallnoefer@oracle.com>
Co-authored-by: Henry Jen <henry.jen@oracle.com>
Co-authored-by: Marcus Lagergren <marcus.lagergren@oracle.com>
Co-authored-by: Pavel Semenov <pavel.semenov@oracle.com>
Co-authored-by: Pavel Stepanov <pavel.stepanov@oracle.com>
Co-authored-by: Petr Hejl <petr.hejl@oracle.com>
Co-authored-by: Petr Pisl <petr.pisl@oracle.com>
Co-authored-by: Sundararajan Athijegannathan <sundararajan.athijegannathan@oracle.com>
Reviewed-by: attila, hannesw, lagergren, sundar
2012-12-21 16:36:24 -04:00
John Coomes
958099576a 8005364: initial hg tags for nashorn repo
Reviewed-by: amurillo
2012-12-20 14:16:21 -08:00
Sean Mullan
be64e9b087 8004302: javax/xml/soap/Test7013971.java fails since jdk6u39b01
Reviewed-by: vinnie, skoivu, mgrebac, ohair, tbell
2012-12-18 13:48:48 -05:00
Joe Wang
d1398dfca7 8001235: Improve JAXP HTTP handling
Reviewed-by: lancea, skoivu
2012-12-12 15:19:19 -08:00
Denis Fokin
3780f56b0f 8004341: Two JCK tests fails with 7u11 b06
Reviewed-by: serb, skoivu
2012-12-12 21:08:19 +04:00
Jaroslav Bachorik
07d6fc6bd1 8000537: Contextualize RequiredModelMBean class
Contextualize RequiredModelMBean class

Reviewed-by: asaha
2012-12-07 22:49:08 +04:00
Mandy Chung
d093c6fbb6 8004175: Restricted packages added in java.security are missing in java.security-{macosx, solaris, windows}
Reviewed-by: alanb, ahgross, mullan
2012-12-05 14:02:58 -08:00
Edvard Wendelin
f92370665e Merge 2013-02-03 23:25:38 +01:00
Denis Fokin
eb67f3f1da 7201064: Better dialogue checking
Reviewed-by: serb, skoivu
2012-11-30 15:51:44 +04:00
Mandy Chung
7dde39f4f5 6664509: Add logging context
6664528: Find log level matching its name or value given at construction time

Reviewed-by: alanb, ahgross, jgish, hawtin
2012-11-26 22:49:06 -08:00
Denis Fokin
6ddbe35ee2 7186952: Improve clipboard access
Reviewed-by: serb, ahgross
2012-11-26 20:49:54 +04:00
Andrew Brygin
b9b5963522 8002325: Improve management of images
Reviewed-by: prr, ahgross
2012-11-20 11:46:42 +04:00
Darryl Mocek
103aa32912 8001242: Improve RMI HTTP conformance
Reviewed-by: ahgross, mchung, smarks
2012-11-19 15:38:56 -08:00
Darryl Mocek
52caa8646b 6563318: RMI data sanitization
Reviewed-by: ahgross, hawtin, mchung, smarks
2012-11-19 13:54:12 -08:00
Andrew Brygin
7749e896e7 8001972: Improve image processing
Reviewed-by: prr, ahgross
2012-11-16 11:05:43 +04:00
Oleg Pekhovskiy
1d3d850ee0 7192977: Issue in toolkit thread
Reviewed-by: skoivu, rupashka, art
2012-11-15 23:03:31 +04:00
Kumar Srinivasan
695e6ab2e0 8002091: tools/launcher/ToolsOpts.java test started to fail since 7u11 b01 on Windows
Reviewed-by: darcy, jjh, mschoene
2012-11-09 14:36:10 -08:00
Stuart Marks
39edc8d2b5 7201070: Serialization to conform to protocol
Reviewed-by: dmocek, ahgross, skoivu
2012-11-08 15:41:01 -08:00
Chris Hegarty
90f2168fa2 7201071: InetSocketAddress serialization issue
Reviewed-by: alanb, michaelm, skoivu
2012-11-07 14:26:41 +00:00
Sean Coffey
8e50f0daf9 7201066: Change modifiers on unused fields
Reviewed-by: alanb, skoivu
2012-11-06 15:50:14 +00:00
Mala Bankal
e3b2bdd16f 7141694: Improving CORBA internals
Reviewed-by: coffeys, ahgross
2012-12-17 07:43:20 -08:00
Pavel Porvatov
ec9f5edf2f 7200491: Tighten up JTable layout code
Reviewed-by: art, skoivu
2012-11-06 15:30:34 +04:00
Keith McGuigan
c1be65b49c 8001307: Modify ACC_SUPER behavior
Disallow non-virtual calls even when ACC_SUPER is absent.

Reviewed-by: kvn, acorn
2012-11-05 17:03:33 -05:00
Mandy Chung
d3ccd20d1f 7197546: (proxy) Reflect about creating reflective proxies
Reviewed-by: alanb, jdn, jrose
2012-11-02 16:50:23 -07:00
Neil Richards
f50507bccf 8000540: Improve IIOP type reuse management
Reviewed-by: alanb, ahgross, coffeys
2012-10-30 17:15:13 +00:00
Sean Coffey
25e301ca19 8000631: Restrict access to class constructor
Reviewed-by: alanb, ahgross
2012-10-30 17:06:35 +00:00
Jaroslav Bachorik
526b1f405c 8000539: JMX implementation allows invocation of methods of a system class
Added extra packageAccess check call

Reviewed-by: ahgross, dfuchs
2012-10-30 17:05:45 +04:00
Abhijit Saha
df49c04239 Merge 2012-10-26 13:48:33 -07:00
Sean Mullan
cb3cb72e07 7201068: Better handling of UI elements
Reviewed-by: xuelei
2012-10-26 15:21:05 -04:00
Abhijit Saha
1cb7e050ff Merge 2012-10-26 10:01:13 -07:00
Abhijit Saha
d936c96d3b Merge 2012-10-26 09:27:25 -07:00
Weijun Wang
42cf97b02f 8000210: Improve JarFile code quality
Reviewed-by: ahgross, xuelei, mschoene
2012-09-19 12:58:43 +08:00
Kurchi Subhra Hazra
64bb35a5c6 7186954: Improve connection performance
Reviewed-by: chegar, skoivu
2012-10-22 11:49:37 -07:00
Xue-Lei Andrew Fan
c8ebc97b44 7192392: Better validation of client keys
Also reviewed by Andrew Gross<Andrew.Gross@Oracle.COM>

Reviewed-by: vinnie
2012-10-22 07:28:51 -07:00
David Holmes
1193ef2418 6776941: Improve thread pool shutdown
Reviewed-by: dl, skoivu
2012-08-22 21:40:19 -04:00
Kumar Srinivasan
2414c54cc1 7200500: Launcher better input validation
Reviewed-by: darcy, jjh, mschoene
2012-10-16 10:56:25 -07:00
Kumar Srinivasan
f9122bd3fd 7200499: Better data validation for options
Reviewed-by: darcy, jjh, mschoene
2012-10-16 16:38:38 -07:00
Kumar Srinivasan
ef7ede903e 7186946: Refine unpacker resource usage
Reviewed-by: jrose, jjh, mschoene
2012-10-16 12:38:29 -07:00
Kumar Srinivasan
0c4da1ece1 7186957: Improve Pack200 data validation
Reviewed-by: jrose, jjh, mschoene
2012-10-16 12:35:22 -07:00
Kumar Srinivasan
1ee5b4509e 7186945: Unpack200 improvement
Reviewed-by: jrose, jjh, mschoene
2012-10-16 12:29:10 -07:00
Pavel Porvatov
e2a34e4d9e 7186948: Improve Swing data validation
Reviewed-by: art, ahgross
2012-10-16 14:13:39 +04:00
Sergey Malenkov
c4f31fd22e 7200493: Improve cache handling
Reviewed-by: art, ahgross
2012-10-15 19:00:13 +04:00
Xue-Lei Andrew Fan
f36ef09388 7192393: Better Checking of order of TLS Messages
Also reviewed by Andrew Gross<Andrew.Gross@Oracle.COM>

Reviewed-by: weijun
2012-10-15 07:42:18 -07:00
Anthony Petrov
69a6be0305 7173145: Improve in-memory representation of splashscreens
Reviewed-by: bae, mschoene
2012-10-12 15:51:44 +04:00
J. Duke
db7a00335a Initial load 2007-12-01 00:00:00 +00:00
3590 changed files with 348820 additions and 46680 deletions

View File

@@ -196,3 +196,10 @@ a41ada2ed4ef735449531c6ebe6cec593d890a1c jdk8-b71
6725b3961f987cf40f446d1c11cd324a3bec545f jdk8-b72
fe94b40ffd9390f6cffcdf51c0389b0e6dde0c13 jdk8-b73
f627eff819628822a0777af8062244352f2a29cf jdk8-b74
f1478a6d25fddd311a84dcbfac50824cc1858bdd jdk8-b75
f407160c280d1c5b00d314c535441ac26f195fee jdk8-b76
d17eb2e13e362085e866d46235314c50cc4661cc jdk8-b77
6d3dcd34b5b962ea1ef9eed0dafdee9e812401bc jdk8-b78
a1313a8d90d17d363a3b2a645dc4030ec204b168 jdk8-b79
3fa21fbf9be7e6b482af43aacb6a09acfa30bdb6 jdk8-b80
e41d716405b209d3eddef8bd4240cec2bd34dcca jdk8-b81

View File

@@ -196,3 +196,10 @@ cdb401a60cea6ad5ef3f498725ed1decf8dda1ea jdk8-b68
c1be681d80a1f1c848dc671d664fccb19e046a12 jdk8-b72
93b9664f97eeb6f89397a8842318ebacaac9feb9 jdk8-b73
b43aa5bd8ca5c8121336495382d35ecfa7a71536 jdk8-b74
2a713921952cbd77a1e699626976cb6cdfe3e57e jdk8-b75
278af9fc67e7eba2884936b49ec07345f423aabb jdk8-b76
3933eebc659d58c597aa8cb4b3e58f2250ce3e1a jdk8-b77
fd1a5574cf68af24bfd52decc37ac6361afb278a jdk8-b78
91d35211e74464dca5edf9b66ab01d0d0d8cded7 jdk8-b79
907a926d3c96472f357617b48b6b968ea855c23c jdk8-b80
145dbc56f931c134e837b675b9e6e7bf08902e93 jdk8-b81

View File

@@ -90,6 +90,7 @@ include ./make/corba-rules.gmk
include ./make/jaxp-rules.gmk
include ./make/jaxws-rules.gmk
include ./make/jdk-rules.gmk
include ./make/nashorn-rules.gmk
include ./make/install-rules.gmk
include ./make/sponsors-rules.gmk
include ./make/deploy-rules.gmk
@@ -174,6 +175,11 @@ ifeq ($(BUILD_JDK), true)
clobber:: jdk-clobber
endif
ifeq ($(BUILD_NASHORN), true)
generic_build_repo_series:: $(NASHORN)
clobber:: nashorn-clobber
endif
ifeq ($(BUILD_DEPLOY), true)
generic_build_repo_series:: $(DEPLOY)
clobber:: deploy-clobber
@@ -336,6 +342,7 @@ deploy_fastdebug_only:
BUILD_HOTSPOT=false \
BUILD_JDK=false \
BUILD_LANGTOOLS=false \
BUILD_NASHORN=false \
BUILD_CORBA=false \
BUILD_JAXP=false \
BUILD_JAXWS=false \

View File

@@ -96,6 +96,7 @@ help:
$(info . make all # Compile everything, all repos and images)
$(info . make images # Create complete j2sdk and j2re images)
$(info . make overlay-images # Create limited images for sparc 64 bit platforms)
$(info . make profiles # Create complete j2re compact profile images)
$(info . make bootcycle-images # Build images twice, second time with newly build JDK)
$(info . make install # Install the generated images locally)
$(info . make clean # Remove all files generated by make, but not those)

39
README
View File

@@ -1,45 +1,40 @@
README:
This file should be located at the top of the OpenJDK Mercurial root
repository. This root repository will include a "make" directory,
and a Makefile for building the entire OpenJDK.
A full OpenJDK repository set (forest) should also include the following
6 nested repositories:
repository. A full OpenJDK repository set (forest) should also include
the following 6 nested repositories:
"jdk", "hotspot", "langtools", "corba", "jaxws" and "jaxp".
There are also several source downloads for the jax* repositories that
will be needed.
This one root repository can be obtained with something like:
The root repository can be obtained with something like:
hg clone http://hg.openjdk.java.net/jdk8/jdk8 openjdk8
To make sure you have all the nested repositories, you can run the
get_source.sh script located in the same respository as this file:
You can run the get_source.sh script located in the root repository to get
the other needed repositories:
cd openjdk8 && sh ./get_source.sh
People unfamiliar with Mercurial should read the first few chapters of
the Mercurial book: http://hgbook.red-bean.com/read/
See http://openjdk.java.net/ for more information about the OpenJDK.
See http://openjdk.java.net/ for more information about OpenJDK.
Simple Build Instructions:
0. Get the necessary system software/packages installed on your system, see
http://hg.openjdk.java.net/jdk8/build/raw-file/tip/README-builds.html
http://hg.openjdk.java.net/jdk8/jdk8/raw-file/tip/README-builds.html
1. If you don't have a jdk6 installed, download and install a JDK 6 from
1. If you don't have a jdk7u7 or newer jdk, download and install it from
http://java.sun.com/javase/downloads/index.jsp
Set the environment variable ALT_BOOTDIR to the location of JDK 6.
Add the /bin directory of this installation to your PATH environment
variable.
2. Check the sanity of doing a build with your current system:
make sanity
See README-builds.html if you run into problems.
2. Configure the build:
bash ./configure
3. Do a complete build of the OpenJDK:
3. Build the OpenJDK:
make all
The resulting JDK image should be found in build/*/j2sdk-image
The resulting JDK image should be found in build/*/images/j2sdk-image
where make is GNU make 3.81 or newer, /usr/bin/make on Linux usually
is 3.81 or newer.
is 3.81 or newer. Note that on Solaris, GNU make is called "gmake".
Complete details are available in README-builds.html.
Complete details are available in the file:
http://hg.openjdk.java.net/jdk8/jdk8/raw-file/tip/README-builds.html

File diff suppressed because it is too large Load Diff

View File

@@ -47,10 +47,6 @@ AC_DEFUN([BPERF_CHECK_CORES],
FOUND_CORES=yes
fi
# For c/c++ code we run twice as many concurrent build
# jobs than we have cores, otherwise we will stall on io.
CONCURRENT_BUILD_JOBS=`expr $NUM_CORES \* 2`
if test "x$FOUND_CORES" = xyes; then
AC_MSG_RESULT([$NUM_CORES])
else
@@ -98,32 +94,62 @@ AC_DEFUN([BPERF_CHECK_MEMORY_SIZE],
AC_DEFUN_ONCE([BPERF_SETUP_BUILD_CORES],
[
# How many cores do we have on this build system?
AC_ARG_WITH(num-cores, [AS_HELP_STRING([--with-num-cores],
# How many cores do we have on this build system?
AC_ARG_WITH(num-cores, [AS_HELP_STRING([--with-num-cores],
[number of cores in the build system, e.g. --with-num-cores=8 @<:@probed@:>@])])
if test "x$with_num_cores" = x; then
if test "x$with_num_cores" = x; then
# The number of cores were not specified, try to probe them.
BPERF_CHECK_CORES
else
else
NUM_CORES=$with_num_cores
CONCURRENT_BUILD_JOBS=`expr $NUM_CORES \* 2`
fi
AC_SUBST(NUM_CORES)
AC_SUBST(CONCURRENT_BUILD_JOBS)
fi
AC_SUBST(NUM_CORES)
])
AC_DEFUN_ONCE([BPERF_SETUP_BUILD_MEMORY],
[
# How much memory do we have on this build system?
AC_ARG_WITH(memory-size, [AS_HELP_STRING([--with-memory-size],
# How much memory do we have on this build system?
AC_ARG_WITH(memory-size, [AS_HELP_STRING([--with-memory-size],
[memory (in MB) available in the build system, e.g. --with-memory-size=1024 @<:@probed@:>@])])
if test "x$with_memory_size" = x; then
if test "x$with_memory_size" = x; then
# The memory size was not specified, try to probe it.
BPERF_CHECK_MEMORY_SIZE
else
else
MEMORY_SIZE=$with_memory_size
fi
AC_SUBST(MEMORY_SIZE)
fi
AC_SUBST(MEMORY_SIZE)
])
AC_DEFUN_ONCE([BPERF_SETUP_BUILD_JOBS],
[
# Provide a decent default number of parallel jobs for make depending on
# number of cores, amount of memory and machine architecture.
AC_ARG_WITH(jobs, [AS_HELP_STRING([--with-jobs],
[number of parallel jobs to let make run @<:@calculated based on cores and memory@:>@])])
if test "x$with_jobs" = x; then
# Number of jobs was not specified, calculate.
AC_MSG_CHECKING([for appropriate number of jobs to run in parallel])
# Approximate memory in GB, rounding up a bit.
memory_gb=`expr $MEMORY_SIZE / 1100`
# Pick the lowest of memory in gb and number of cores.
if test "$memory_gb" -lt "$NUM_CORES"; then
JOBS="$memory_gb"
else
JOBS="$NUM_CORES"
# On bigger machines, leave some room for other processes to run
if test "$JOBS" -gt "4"; then
JOBS=`expr $JOBS '*' 90 / 100`
fi
fi
# Cap number of jobs to 16
if test "$JOBS" -gt "16"; then
JOBS=16
fi
AC_MSG_RESULT([$JOBS])
else
JOBS=$with_jobs
fi
AC_SUBST(JOBS)
])
AC_DEFUN([BPERF_SETUP_CCACHE],

View File

@@ -194,6 +194,7 @@ BASIC_COMPILE_FIXPATH
###############################################################################
JDKOPT_SETUP_BUILD_TWEAKS
JDKOPT_DETECT_INTREE_EC
###############################################################################
#
@@ -204,6 +205,7 @@ JDKOPT_SETUP_BUILD_TWEAKS
BPERF_SETUP_BUILD_CORES
BPERF_SETUP_BUILD_MEMORY
BPERF_SETUP_BUILD_JOBS
# Setup smart javac (after cores and memory have been setup)
BPERF_SETUP_SMART_JAVAC

File diff suppressed because it is too large Load Diff

View File

@@ -174,7 +174,7 @@ printf "* C++ Compiler: $CXX_VENDOR version $CXX_VERSION (at $CXX)\n"
printf "\n"
printf "Build performance summary:\n"
printf "* Cores to use: $NUM_CORES\n"
printf "* Cores to use: $JOBS\n"
printf "* Memory limit: $MEMORY_SIZE MB\n"
printf "* ccache status: $CCACHE_STATUS\n"
printf "\n"

View File

@@ -80,7 +80,7 @@ ALT_EXPORT_PATH=$(HOTSPOT_DIST)
HOTSPOT_MAKE_ARGS:=@HOTSPOT_MAKE_ARGS@ @STATIC_CXX_SETTING@
# This is used from the libjvm build for C/C++ code.
HOTSPOT_BUILD_JOBS:=@CONCURRENT_BUILD_JOBS@
HOTSPOT_BUILD_JOBS:=$(JOBS)
# Control wether Hotspot runs Queens test after building
TEST_IN_BUILD=@TEST_IN_BUILD@

View File

@@ -364,6 +364,25 @@ else
fi
AC_SUBST(UNLIMITED_CRYPTO)
###############################################################################
#
# Enable or disable the elliptic curve crypto implementation
#
AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC],
[
AC_MSG_CHECKING([if elliptic curve crypto implementation is present])
if test -d "${SRC_ROOT}/jdk/src/share/native/sun/security/ec/impl"; then
ENABLE_INTREE_EC=yes
AC_MSG_RESULT([yes])
else
ENABLE_INTREE_EC=no
AC_MSG_RESULT([no])
fi
AC_SUBST(ENABLE_INTREE_EC)
])
###############################################################################
#
# Compress jars

View File

@@ -182,7 +182,7 @@ CFLAGS="$CFLAGS $X_CFLAGS"
# Need to include Xlib.h and Xutil.h to avoid "present but cannot be compiled" warnings on Solaris 10
AC_CHECK_HEADERS([X11/extensions/shape.h X11/extensions/Xrender.h X11/extensions/XTest.h],
[X11_A_OK=yes],
[X11_A_OK=no],
[X11_A_OK=no; break],
[ # include <X11/Xlib.h>
# include <X11/Xutil.h>
])

View File

@@ -33,12 +33,14 @@ CORBA_TOPDIR="$SRC_ROOT/corba"
JAXP_TOPDIR="$SRC_ROOT/jaxp"
JAXWS_TOPDIR="$SRC_ROOT/jaxws"
HOTSPOT_TOPDIR="$SRC_ROOT/hotspot"
NASHORN_TOPDIR="$SRC_ROOT/nashorn"
JDK_TOPDIR="$SRC_ROOT/jdk"
AC_SUBST(LANGTOOLS_TOPDIR)
AC_SUBST(CORBA_TOPDIR)
AC_SUBST(JAXP_TOPDIR)
AC_SUBST(JAXWS_TOPDIR)
AC_SUBST(HOTSPOT_TOPDIR)
AC_SUBST(NASHORN_TOPDIR)
AC_SUBST(JDK_TOPDIR)
])
@@ -233,7 +235,18 @@ if test "x$with_override_hotspot" != x; then
fi
AC_MSG_CHECKING([if hotspot should be overridden])
AC_MSG_RESULT([yes with $HOTSPOT_TOPDIR])
fi
fi
if test "x$with_override_nashorn" != x; then
CURDIR="$PWD"
cd "$with_override_nashorn"
NASHORN_TOPDIR="`pwd`"
cd "$CURDIR"
if ! test -f $NASHORN_TOPDIR/makefiles/BuildNashorn.gmk; then
AC_MSG_ERROR([You have to override nashorn with a full nashorn repo!])
fi
AC_MSG_CHECKING([if nashorn should be overridden])
AC_MSG_RESULT([yes with $NASHORN_TOPDIR])
fi
if test "x$with_override_jdk" != x; then
CURDIR="$PWD"
cd "$with_override_jdk"

View File

@@ -141,6 +141,7 @@ CORBA_TOPDIR:=@CORBA_TOPDIR@
JAXP_TOPDIR:=@JAXP_TOPDIR@
JAXWS_TOPDIR:=@JAXWS_TOPDIR@
HOTSPOT_TOPDIR:=@HOTSPOT_TOPDIR@
NASHORN_TOPDIR:=@NASHORN_TOPDIR@
COPYRIGHT_YEAR:=@COPYRIGHT_YEAR@
# Location where build customization files may be found
@@ -230,6 +231,7 @@ JAXP_OUTPUTDIR=$(BUILD_OUTPUT)/jaxp
JAXWS_OUTPUTDIR=$(BUILD_OUTPUT)/jaxws
HOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot
JDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk
NASHORN_OUTPUTDIR=$(BUILD_OUTPUT)/nashorn
IMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images
JCE_OUTPUTDIR=$(BUILD_OUTPUT)/jce-release
@@ -238,6 +240,7 @@ CORBA_DIST=$(CORBA_OUTPUTDIR)/dist
JAXP_DIST=$(JAXP_OUTPUTDIR)/dist
JAXWS_DIST=$(JAXWS_OUTPUTDIR)/dist
HOTSPOT_DIST=@HOTSPOT_DIST@
NASHORN_DIST=$(NASHORN_OUTPUTDIR)/dist
BUILD_HOTSPOT=@BUILD_HOTSPOT@
@@ -260,6 +263,9 @@ ENABLE_SJAVAC:=@ENABLE_SJAVAC@
# the sjavac server log files.
SJAVAC_SERVER_DIR:=@SJAVAC_SERVER_DIR@
# Number of parallel jobs to use for compilation
JOBS?=@JOBS@
# The OpenJDK makefiles should be changed to using the standard
# configure output ..._CFLAGS and ..._LIBS. In the meantime we
# extract the information here.
@@ -282,6 +288,13 @@ X_CFLAGS:=@X_CFLAGS@
X_LIBS:=@X_LIBS@
OPENWIN_HOME:=@OPENWIN_HOME@
# DirectX SDK
DXSDK_LIB_PATH=@DXSDK_LIB_PATH@
DXSDK_INCLUDE_PATH=@DXSDK_INCLUDE_PATH@
# The lowest required version of macosx to enforce compatiblity for
MACOSX_VERSION_MIN=@MACOSX_VERSION_MIN@
# There are two types: CC or CL
# CC is gcc and others behaving reasonably similar.
# CL is cl.exe only.
@@ -434,6 +447,12 @@ NATIVE2ASCII=@FIXPATH@ $(BOOT_JDK)/bin/native2ascii
JARSIGNER=@FIXPATH@ $(BOOT_JDK)/bin/jarsigner
# You run the new javac using the boot jdk with $(BOOT_JDK)/bin/java $(NEW_JAVAC) ...
BOOTSTRAP_JAVAC_JAR:=$(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar
BOOTSTRAP_JAVAC_ARGS:="-Xbootclasspath/p:$(BOOTSTRAP_JAVAC_JAR)" -cp $(BOOTSTRAP_JAVAC_JAR)
NEW_JAVAC = $(BOOTSTRAP_JAVAC_ARGS) com.sun.tools.javac.Main
NEW_JAVADOC = $(BOOTSTRAP_JAVAC_ARGS) com.sun.tools.javadoc.Main
# Base flags for RC
# Guarding this against resetting value. Legacy make files include spec multiple
# times.
@@ -520,6 +539,7 @@ endif
# Build setup
ENABLE_JFR=@ENABLE_JFR@
ENABLE_INTREE_EC=@ENABLE_INTREE_EC@
USE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
USE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
USE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@

View File

@@ -176,6 +176,7 @@ AC_DEFUN([TOOLCHAIN_SETUP_PATHS],
[
if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV
TOOLCHAIN_SETUP_DXSDK
fi
AC_SUBST(MSVCR_DLL)
@@ -248,30 +249,38 @@ fi
### Locate C compiler (CC)
# gcc is almost always present, but on Windows we
# prefer cl.exe and on Solaris we prefer CC.
# Thus test for them in this order.
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
# Do not probe for cc on MacOSX.
COMPILER_CHECK_LIST="cl gcc"
# On windows, only cl.exe is supported.
# On Solaris, cc is preferred to gcc.
# Elsewhere, gcc is preferred to cc.
if test "x$CC" != x; then
COMPILER_CHECK_LIST="$CC"
elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then
COMPILER_CHECK_LIST="cl"
elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
COMPILER_CHECK_LIST="cc gcc"
else
COMPILER_CHECK_LIST="cl cc gcc"
COMPILER_CHECK_LIST="gcc cc"
fi
TOOLCHAIN_FIND_COMPILER([CC],[C],[$COMPILER_CHECK_LIST])
# Now that we have resolved CC ourself, let autoconf have it's go at it
# Now that we have resolved CC ourself, let autoconf have its go at it
AC_PROG_CC([$CC])
### Locate C++ compiler (CXX)
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
# Do not probe for CC on MacOSX.
COMPILER_CHECK_LIST="cl g++"
if test "x$CXX" != x; then
COMPILER_CHECK_LIST="$CXX"
elif test "x$OPENJDK_TARGET_OS" = "xwindows"; then
COMPILER_CHECK_LIST="cl"
elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
COMPILER_CHECK_LIST="CC g++"
else
COMPILER_CHECK_LIST="cl CC g++"
COMPILER_CHECK_LIST="g++ CC"
fi
TOOLCHAIN_FIND_COMPILER([CXX],[C++],[$COMPILER_CHECK_LIST])
# Now that we have resolved CXX ourself, let autoconf have it's go at it
# Now that we have resolved CXX ourself, let autoconf have its go at it
AC_PROG_CXX([$CXX])
### Locate other tools
@@ -876,6 +885,17 @@ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
fi
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE"
# Setting these parameters makes it an error to link to macosx APIs that are
# newer than the given OS version and makes the linked binaries compatible even
# if built on a newer version of the OS.
# The expected format is X.Y.Z
MACOSX_VERSION_MIN=10.7.0
AC_SUBST(MACOSX_VERSION_MIN)
# The macro takes the version with no dots, ex: 1070
# Let the flags variables get resolved in make for easier override on make
# command line.
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
fi
if test "x$OPENJDK_TARGET_OS" = xbsd; then
CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DBSD -D_ALLBSD_SOURCE"

View File

@@ -262,3 +262,61 @@ AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
AC_MSG_RESULT([$MSVCR_DLL])
BASIC_FIXUP_PATH(MSVCR_DLL)
])
# Setup the DXSDK paths
AC_DEFUN([TOOLCHAIN_SETUP_DXSDK],
[
AC_ARG_WITH(dxsdk, [AS_HELP_STRING([--with-dxsdk],
[the DirectX SDK (Windows only) @<:@probed@:>@])])
AC_ARG_WITH(dxsdk-lib, [AS_HELP_STRING([--with-dxsdk-lib],
[the DirectX SDK lib directory (Windows only) @<:@probed@:>@])])
AC_ARG_WITH(dxsdk-include, [AS_HELP_STRING([--with-dxsdk-include],
[the DirectX SDK include directory (Windows only) @<:@probed@:>@])])
AC_MSG_CHECKING([for DirectX SDK])
if test "x$with_dxsdk" != x; then
dxsdk_path="$with_dxsdk"
elif test "x$DXSDK_DIR" != x; then
dxsdk_path="$DXSDK_DIR"
elif test -d "C:/DXSDK"; then
dxsdk_path="C:/DXSDK"
else
AC_MSG_ERROR([Could not find the DirectX SDK])
fi
AC_MSG_RESULT([$dxsdk_path])
BASIC_FIXUP_PATH(dxsdk_path)
AC_MSG_CHECKING([for DirectX SDK lib dir])
if test "x$with_dxsdk_lib" != x; then
DXSDK_LIB_PATH="$with_dxsdk_lib"
elif test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
DXSDK_LIB_PATH="$dxsdk_path/Lib/x64"
else
DXSDK_LIB_PATH="$dxsdk_path/Lib"
fi
# dsound.lib is linked to in jsoundds
if test ! -f "$DXSDK_LIB_PATH/dsound.lib"; then
AC_MSG_ERROR([Invalid DirectX SDK lib dir])
fi
AC_MSG_RESULT([$DXSDK_LIB_PATH])
BASIC_FIXUP_PATH(DXSDK_LIB_PATH)
AC_MSG_CHECKING([for DirectX SDK include dir])
if test "x$with_dxsdk_include" != x; then
DXSDK_INCLUDE_PATH="$with_dxsdk_include"
else
DXSDK_INCLUDE_PATH="$dxsdk_path/Include"
fi
# dsound.h is included in jsoundds
if test ! -f "$DXSDK_INCLUDE_PATH/dsound.h"; then
AC_MSG_ERROR([Invalid DirectX SDK lib dir])
fi
AC_MSG_RESULT([$DXSDK_INCLUDE_PATH])
BASIC_FIXUP_PATH(DXSDK_INCLUDE_PATH)
AC_SUBST(DXSDK_LIB_PATH)
AC_SUBST(DXSDK_INCLUDE_PATH)
LDFLAGS_JDK="$LDFLAGS_JDK -libpath:$DXSDK_LIB_PATH"
])

View File

@@ -64,39 +64,39 @@ rm -f -r ${tmp}
mkdir -p ${tmp}
safe_interrupt () {
if [ -d ${tmp} ]; then
if [ "`ls ${tmp}`" != "" ]; then
echo "Waiting for processes ( `cat ${tmp}/* | tr '\n' ' '`) to terminate nicely!"
if [ -d ${tmp} ]; then
if [ "`ls ${tmp}/*.pid`" != "" ]; then
echo "Waiting for processes ( `cat ${tmp}/*.pid | tr '\n' ' '`) to terminate nicely!"
sleep 1
# Pipe stderr to dev/null to silence kill, that complains when trying to kill
# a subprocess that has already exited.
kill -TERM `cat ${tmp}/* | tr '\n' ' '` 2> /dev/null
wait
echo Interrupt complete!
fi
kill -TERM `cat ${tmp}/*.pid | tr '\n' ' '` 2> /dev/null
wait
echo Interrupt complete!
fi
fi
rm -f -r ${tmp}
exit 1
}
nice_exit () {
if [ -d ${tmp} ]; then
if [ "`ls ${tmp}`" != "" ]; then
wait
fi
if [ -d ${tmp} ]; then
if [ "`ls ${tmp}`" != "" ]; then
wait
fi
fi
rm -f -r ${tmp}
}
trap 'safe_interrupt' INT QUIT
trap 'nice_exit' EXIT
# Only look in specific locations for possible forests (avoids long searches)
pull_default=""
repos=""
repos_extra=""
if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then
subrepos="corba jaxp jaxws langtools jdk hotspot"
subrepos="corba jaxp jaxws langtools jdk hotspot nashorn"
if [ -f .hg/hgrc ] ; then
pull_default=`hg paths default`
if [ "${pull_default}" = "" ] ; then
@@ -172,14 +172,26 @@ for i in ${repos} ${repos_extra} ; do
if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then
pull_newrepo="`echo ${pull_base}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`"
echo ${hg} clone ${pull_newrepo} ${i}
${hg} clone ${pull_newrepo} ${i} &
path="`dirname ${i}`"
if [ "${path}" != "." ] ; then
times=0
while [ ! -d "${path}" ] ## nested repo, ensure containing dir exists
do
times=`expr ${times} '+' 1`
if [ `expr ${times} '%' 10` -eq 0 ] ; then
echo ${path} still not created, waiting...
fi
sleep 5
done
fi
(${hg} clone ${pull_newrepo} ${i}; echo "$?" > ${tmp}/${repopidfile}.pid.rc )&
else
echo "cd ${i} && ${hg} $*"
cd ${i} && ${hg} "$@" &
fi
cd ${i} && (${hg} "$@"; echo "$?" > ${tmp}/${repopidfile}.pid.rc )&
fi
echo $! > ${tmp}/${repopidfile}.pid
) 2>&1 | sed -e "s@^@${reponame}: @") &
if [ `expr ${n} '%' ${at_a_time}` -eq 0 ] ; then
sleep 2
echo Waiting 5 secs before spawning next background command.
@@ -189,6 +201,15 @@ done
# Wait for all hg commands to complete
wait
# Terminate with exit 0 all the time (hard to know when to say "failed")
exit 0
# Terminate with exit 0 only if all subprocesses were successful
ec=0
if [ -d ${tmp} ]; then
for rc in ${tmp}/*.pid.rc ; do
exit_code=`cat ${rc} | tr -d ' \n\r'`
if [ "${exit_code}" != "0" ] ; then
echo "WARNING: ${rc} exited abnormally."
ec=1
fi
done
fi
exit ${ec}

View File

@@ -71,7 +71,7 @@ define add_idl_package
$4
$(RM) -f $$(addprefix $3/$$($4_TMPDIR)/,$6)
$(CP) -rp $3/$$($4_TMPDIR)/* $3
($(CD) $3/$$($4_TMPDIR); find . -type f | sed 's!\./!$3/!g' | awk '{ print $$$$1 ": $4" }' > $5)
($(CD) $3/$$($4_TMPDIR) && $(FIND) . -type f | $(SED) 's!\./!$3/!g' | $(NAWK) '{ print $$$$1 ": $4" }' > $5)
$(RM) -rf $3/$$($4_TMPDIR)
endef

View File

@@ -42,8 +42,8 @@ endif
FALSE_FIND_PATTERN:=-name FILE_NAME_THAT_DOESNT_EXIST
define SetupJavaCompiler
# param 1 is for example BOOT_JAVAC or NEW_JAVAC
# This is the name later used to decide which java compiler to use.
# param 1 is for example GENERATE_OLD_BYTECODE or GENERATE_NEW_JDKBYTECODE
# This is the name of the compiler setup.
# param 2-9 are named args.
# JVM:=The jvm used to run the javac/javah command
# JAVAC:=The javac jar and bootstrap classpath changes, or just bin/javac if JVM is left out
@@ -143,8 +143,8 @@ define SetupArchive
ifneq (,$2)
$1_DEPS:=$2
else
$1_DEPS:=$$(filter $$(addprefix %,$$($1_FIND_PATTERNS)),\
$$(call CacheFind $$($1_SRCS)))
$1_DEPS:=$$(filter $$(addprefix %,$$($1_SUFFIXES)),\
$$(call CacheFind,$$($1_SRCS)))
ifneq (,$$($1_GREP_INCLUDE_PATTERNS))
$1_DEPS:=$$(filter $$(addsuffix %,$$($1_GREP_INCLUDE_PATTERNS)),$$($1_DEPS))
endif
@@ -487,10 +487,10 @@ define SetupJavaCompilation
# Using sjavac to compile.
$1 := $$($1_ALL_COPY_TARGETS) $$($1_ALL_COPY_CLEAN_TARGETS) $$($1_BIN)/javac_state
# Create SJAVAC variable,
# expects $1_JAVAC to be "bootclasspathprepend -jar ...javac.jar"
# and it is rewritten into "bootclasspathprepend com.sun.tools.sjavac.Main"
$1_SJAVAC:=$$(word 1,$$($1_JAVAC)) -cp $$(word 3,$$($1_JAVAC)) com.sun.tools.sjavac.Main
# Create SJAVAC variable form JAVAC variable. Expects $1_JAVAC to be
# "bootclasspathprepend -cp .../javac.jar com.sun.tools.javac.Main"
# and javac is simply replaced with sjavac.
$1_SJAVAC:=$$(subst com.sun.tools.javac.Main,com.sun.tools.sjavac.Main,$$($1_JAVAC))
# Set the $1_REMOTE to spawn a background javac server.
$1_REMOTE:=--server:portfile=$$($1_SJAVAC_PORTFILE),id=$1,sjavac=$$(subst $$(SPACE),%20,$$(subst $$(COMMA),%2C,$$(strip $$($1_SERVER_JVM) $$($1_SJAVAC))))
@@ -501,7 +501,7 @@ define SetupJavaCompilation
$(ECHO) Compiling $1
($$($1_JVM) $$($1_SJAVAC) \
$$($1_REMOTE) \
-j $(NUM_CORES) \
-j $(JOBS) \
--permit-unidentified-artifacts \
--permit-sources-without-package \
--compare-found-sources $$($1_BIN)/_the.batch.tmp \

View File

@@ -179,27 +179,52 @@ jprt_bundle: $(JPRT_ARCHIVE_BUNDLE)
$(JPRT_ARCHIVE_BUNDLE): bundles
$(MKDIR) -p $(@D)
$(RM) $@
$(CP) $(BUILD_OUTPUT)/bundles/j2sdk-image.zip $@
$(CP) $(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip $@
# This target must be called in the context of a SPEC file
bundles: all
ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_BITS),solaris-64)
SRC_JDK_IMAGE_DIR := $(JDK_OVERLAY_IMAGE_DIR)
SRC_JRE_IMAGE_DIR := $(JRE_OVERLAY_IMAGE_DIR)
else
SRC_JDK_IMAGE_DIR := $(JDK_IMAGE_DIR)
SRC_JRE_IMAGE_DIR := $(JRE_IMAGE_DIR)
endif
SRC_JDK_BUNDLE_DIR := $(JDK_BUNDLE_DIR)
SRC_JRE_BUNDLE_DIR := $(JRE_BUNDLE_DIR)
# Bundle up the images
bundles: all bundles-only
bundles-only: start-make
@$(call TargetEnter)
$(MKDIR) -p $(BUILD_OUTPUT)/bundles
ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_BITS),solaris-64)
$(CD) $(JDK_OVERLAY_IMAGE_DIR) && $(ZIP) -q -r $(BUILD_OUTPUT)/bundles/j2sdk-image.zip .
$(CD) $(JRE_OVERLAY_IMAGE_DIR) && $(ZIP) -q -r $(BUILD_OUTPUT)/bundles/j2re-image.zip .
else
$(CD) $(JDK_IMAGE_DIR) && $(ZIP) -q -r $(BUILD_OUTPUT)/bundles/j2sdk-image.zip .
$(CD) $(JRE_IMAGE_DIR) && $(ZIP) -q -r $(BUILD_OUTPUT)/bundles/j2re-image.zip .
$(CD) $(SRC_JDK_IMAGE_DIR) && $(ZIP) -q -r $(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip .
$(CD) $(SRC_JRE_IMAGE_DIR) && $(ZIP) -q -r $(BUILD_OUTPUT)/bundles/$(JRE_IMAGE_SUBDIR).zip .
if [ -d $(BUILD_OUTPUT)/install/bundles ] ; then \
$(CD) $(BUILD_OUTPUT)/install/bundles && $(ZIP) -q -r $(JPRT_ARCHIVE_INSTALL_BUNDLE) . ; \
fi
@$(call TargetExit)
# Copy images to one unified location regardless of platform etc.
final-images: all final-images-only
final-images-only: start-make
@$(call TargetEnter)
$(RM) -r $(BUILD_OUTPUT)/final-images
$(MKDIR) -p $(BUILD_OUTPUT)/final-images/$(JDK_IMAGE_SUBDIR)
$(MKDIR) -p $(BUILD_OUTPUT)/final-images/$(JRE_IMAGE_SUBDIR)
$(CP) -R -P $(SRC_JDK_IMAGE_DIR)/* $(BUILD_OUTPUT)/final-images/$(JDK_IMAGE_SUBDIR)/
$(CP) -R -P $(SRC_JRE_IMAGE_DIR)/* $(BUILD_OUTPUT)/final-images/$(JRE_IMAGE_SUBDIR)/
ifeq ($(OPENJDK_TARGET_OS),macosx)
$(MKDIR) -p $(BUILD_OUTPUT)/final-images/$(JDK_BUNDLE_SUBDIR)
$(MKDIR) -p $(BUILD_OUTPUT)/final-images/$(JRE_BUNDLE_SUBDIR)
$(CP) -R -P $(SRC_JDK_BUNDLE_DIR)/* $(BUILD_OUTPUT)/final-images/$(JDK_BUNDLE_SUBDIR)/
$(CP) -R -P $(SRC_JRE_BUNDLE_DIR)/* $(BUILD_OUTPUT)/final-images/$(JRE_BUNDLE_SUBDIR)/
endif
@$(call TargetExit)
# Keep track of phony targets
PHONY_LIST += jprt_build_product jprt_build_fastdebug jprt_build_debug \
jprt_build_generic bundles jprt_bundle
jprt_build_generic bundles jprt_bundle \
final-images final-images-only
###########################################################################
# Phony targets

View File

@@ -58,9 +58,6 @@ $(eval $(call ResetAllTimers))
# Setup number of jobs to use. -jN is unfortunately not available for us to parse from the command line,
# hence this workaround.
ifeq ($(JOBS),)
JOBS=$(NUM_CORES)
endif
MAKE_ARGS:=$(MAKE_ARGS) -j$(JOBS)
### Main targets
@@ -75,7 +72,14 @@ ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_BITS),solaris-64)
all: overlay-images
endif
start-make:
# Setup a rule for SPEC file that fails if executed. This check makes sure the configuration
# is up to date after changes to configure
$(SPEC): $(wildcard $(SRC_ROOT)/common/autoconf/*)
@$(ECHO) ERROR: $(SPEC) is not up to date
@$(ECHO) Please rerun configure!
@if test "x$(IGNORE_OLD_CONFIG)" != "xtrue"; then exit 1; fi
start-make: $(SPEC)
@$(call AtMakeStart)
langtools: langtools-only
@@ -116,13 +120,21 @@ jdk-only: start-make
@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJdk.gmk $(JDK_TARGET))
@$(call TargetExit)
nashorn: jdk nashorn-only
nashorn-only: start-make
@$(call TargetEnter)
@($(CD) $(NASHORN_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildNashorn.gmk)
@$(call TargetExit)
demos: jdk demos-only
demos-only: start-make
@$(call TargetEnter)
@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJdk.gmk demos)
@$(call TargetExit)
images: source-tips demos images-only
# Note: This double-colon rule is intentional, to support
# custom make file integration.
images:: source-tips demos nashorn images-only
images-only: start-make
@$(call TargetEnter)
@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJdk.gmk images)
@@ -134,6 +146,17 @@ overlay-images-only: start-make
@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJdk.gmk overlay-images)
@$(call TargetExit)
profiles: profiles-oscheck source-tips jdk hotspot profiles-only
profiles-only: start-make
@$(call TargetEnter)
@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJdk.gmk profiles)
@$(call TargetExit)
profiles-oscheck:
ifneq ($(OPENJDK_TARGET_OS), linux)
@echo "Error: The Java SE 8 Compact Profiles are only implemented for Linux at this time" && exit 1
endif
install: images install-only
install-only: start-make
@$(call TargetEnter)
@@ -158,9 +181,10 @@ bootcycle-images:
@$(ECHO) Boot cycle build step 2: Building a new JDK image using previously built image
@($(CD) $(SRC_ROOT)/common/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) SPEC=$(dir $(SPEC))bootcycle-spec.gmk images)
test: start-make
test: images test-only
test-only: start-make
@$(call TargetEnter)
@($(CD) $(SRC_ROOT)/test && $(BUILD_LOG_WRAPPER) $(MAKE) MAKEFLAGS= -j1 PRODUCT_HOME=$(OUTPUT_ROOT)/jdk JPRT_JAVA_HOME=$(OUTPUT_ROOT)/jdk ALT_OUTPUTDIR=$(OUTPUT_ROOT) $(TEST)) || true
@($(CD) $(SRC_ROOT)/test && $(BUILD_LOG_WRAPPER) $(MAKE) -j1 -k MAKEFLAGS= PRODUCT_HOME=$(JDK_IMAGE_DIR) JPRT_JAVA_HOME=$(JDK_IMAGE_DIR) ALT_OUTPUTDIR=$(OUTPUT_ROOT) $(TEST)) || true
@$(call TargetExit)
# Stores the tips for each repository. This file is be used when constructing the jdk image and can be
@@ -173,7 +197,7 @@ $(OUTPUT_ROOT)/source_tips: FRC
# Remove everything, except the output from configure.
clean: clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-images clean-overlay-images clean-bootcycle-build clean-docs
clean: clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-nashorn clean-images clean-overlay-images clean-bootcycle-build clean-docs
@($(CD) $(OUTPUT_ROOT) && $(RM) -r tmp source_tips build.log* build-trace*.log*)
@$(ECHO) Cleaned all build artifacts.
@@ -203,6 +227,8 @@ clean-hotspot:
$(call CleanComponent,hotspot)
clean-jdk:
$(call CleanComponent,jdk)
clean-nashorn:
$(call CleanComponent,nashorn)
clean-images:
$(call CleanComponent,images)
clean-overlay-images:
@@ -213,9 +239,10 @@ clean-docs:
$(call CleanComponent,docs)
$(call CleanComponent,docstemp)
.PHONY: langtools corba jaxp jaxws hotspot jdk images overlay-images install
.PHONY: langtools-only corba-only jaxp-only jaxws-only hotspot-only jdk-only images-only overlay-images-only install-only
.PHONY: langtools corba jaxp jaxws hotspot jdk nashorn images overlay-images install
.PHONY: langtools-only corba-only jaxp-only jaxws-only hotspot-only jdk-only nashorn-only images-only overlay-images-only install-only
.PHONY: all test clean dist-clean bootcycle-images start-make
.PHONY: clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-images clean-overlay-images clean-bootcycle-build
.PHONY: clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-nashorn clean-images clean-overlay-images clean-bootcycle-build
.PHONY: profiles profiles-only profiles-oscheck
FRC: # Force target

View File

@@ -51,8 +51,9 @@ decompress_paths=$(SED) -f $(SRC_ROOT)/common/makefiles/support/ListPathsSafely-
-e 's|X98|$(OUTPUT_ROOT)|g' -e 's|X97|$(SRC_ROOT)|g' \
-e 's|X00|X|g' | tr '\n' '$2'
# Subst in an extra $ to prevent it from disappearing.
define ListPathsSafely_If
$(if $(word $3,$($1)),$(eval $1_LPS$3:=$(call compress_paths,$(wordlist $3,$4,$($1)))))
$(if $(word $3,$($1)),$(eval $1_LPS$3:=$(call compress_paths,$(subst $$,$$$$,$(wordlist $3,$4,$($1))))))
endef
define ListPathsSafely_Printf

View File

@@ -128,9 +128,9 @@ CORE_PKGS = \
java.text \
java.text.spi \
java.time \
java.time.temporal \
java.time.calendar \
java.time.chrono \
java.time.format \
java.time.temporal \
java.time.zone \
java.util \
java.util.concurrent \

View File

@@ -46,14 +46,11 @@ HOTSPOT_DOCS_IMPORT_PATH=$(HOTSPOT_OUTPUTDIR)/docs
BUILD_NUMBER=$(JDK_BUILD_NUMBER)
BOOT_JAVA_CMD=$(JAVA)
JAVADOC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javadoc.jar
JAVADOC_CMD = $(BOOT_JAVA_CMD) \
JAVADOC_CMD = $(JAVA) \
-Xmx1024m \
-Djava.awt.headless=true \
"-Xbootclasspath/p:$(JAVADOC_JAR)" \
-jar $(JAVADOC_JAR) -bootclasspath $(JDK_OUTPUTDIR)/classes
$(NEW_JAVADOC) \
-bootclasspath $(JDK_OUTPUTDIR)/classes
# Copyright year for beginning of Java and some of the apis
# (Needed when creating the javadocs)
@@ -270,6 +267,7 @@ COMMON_JAVADOCFLAGS = \
-use \
-keywords \
-Xdoclint:none \
-Xprofilespath $(JDK_TOPDIR)/makefiles/profile-rtjar-includes.txt \
$(ADDITIONAL_JAVADOCFLAGS)
ifdef OPENJDK

View File

@@ -80,7 +80,8 @@ JCONSOLE_PKGS = com.sun.tools.jconsole
TREEAPI_PKGS = com.sun.source.doctree \
com.sun.source.tree \
com.sun.source.util
com.sun.source.util \
jdk
SMARTCARDIO_PKGS = javax.smartcardio
@@ -93,6 +94,8 @@ APPLE_EXT_PKGS = com.apple.concurrent \
com.apple.eio
endif
JDK_PKGS = jdk
# non-core packages in rt.jar
NON_CORE_PKGS = $(DOMAPI_PKGS) \
$(MGMT_PKGS) \
@@ -103,5 +106,5 @@ NON_CORE_PKGS = $(DOMAPI_PKGS) \
$(HTTPSERVER_PKGS) \
$(SMARTCARDIO_PKGS) \
$(SCTPAPI_PKGS) \
$(APPLE_EXT_PKGS)
$(APPLE_EXT_PKGS) \
$(JDK_PKGS)

View File

@@ -196,3 +196,10 @@ d54dc53e223ed9ce7d5f4d2cd02ad9d5def3c2db jdk8-b59
cb40427f47145b01b7e53c3e02b38ff7625efbda jdk8-b72
191afde59e7be0e1a1d76d06f2a32ff17444f0ec jdk8-b73
2132845cf5f717ff5c240a2431c0c0e03e66e3a5 jdk8-b74
d4e68ce17795601017ac2f952baad7272942c36e jdk8-b75
58be6ca3c0603882a1ec478724e337aac85e0da0 jdk8-b76
35684a40c5845782324dbcc9ac8969528020ff61 jdk8-b77
27d6368ae8ba570c31c2f0e696d39c99fa2f4538 jdk8-b78
e41fb1aa0329767b2737303c994e38bede1baa07 jdk8-b79
5f3d4a6bdd027a1631d97e2dfff63fd5e46987a4 jdk8-b80
2a00aeeb466b9dee22508f6261f63b70f9c696fe jdk8-b81

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -29,10 +29,6 @@ com_sun_corba_se_impl_orbutil_java = \
com/sun/corba/se/impl/orbutil/DenseIntMapImpl.java \
com/sun/corba/se/impl/orbutil/GetPropertyAction.java \
com/sun/corba/se/impl/orbutil/HexOutputStream.java \
com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3.java \
com/sun/corba/se/impl/orbutil/IIOPInputStream_1_3_1.java \
com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3.java \
com/sun/corba/se/impl/orbutil/IIOPOutputStream_1_3_1.java \
com/sun/corba/se/impl/orbutil/LegacyHookGetFields.java \
com/sun/corba/se/impl/orbutil/LegacyHookPutFields.java \
com/sun/corba/se/impl/orbutil/LogKeywords.java \
@@ -45,19 +41,11 @@ com_sun_corba_se_impl_orbutil_java = \
com/sun/corba/se/impl/orbutil/ORBUtility.java \
com/sun/corba/se/impl/orbutil/ORBClassLoader.java \
com/sun/corba/se/impl/orbutil/RepIdDelegator.java \
com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3.java \
com/sun/corba/se/impl/orbutil/RepIdDelegator_1_3_1.java \
com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3.java \
com/sun/corba/se/impl/orbutil/RepositoryId_1_3.java \
com/sun/corba/se/impl/orbutil/RepositoryIdFactory.java \
com/sun/corba/se/impl/orbutil/RepositoryIdStrings.java \
com/sun/corba/se/impl/orbutil/RepositoryIdUtility.java \
com/sun/corba/se/impl/orbutil/RepositoryIdInterface.java \
com/sun/corba/se/impl/orbutil/RepositoryIdCache_1_3_1.java \
com/sun/corba/se/impl/orbutil/RepositoryId_1_3_1.java \
com/sun/corba/se/impl/orbutil/StackImpl.java \
com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3_1.java \
com/sun/corba/se/impl/orbutil/ValueHandlerImpl_1_3.java \
com/sun/corba/se/impl/orbutil/closure/Future.java \
com/sun/corba/se/impl/orbutil/closure/Constant.java \
com/sun/corba/se/impl/orbutil/concurrent/Sync.java \

View File

@@ -35,8 +35,6 @@ include MakeBase.gmk
include JavaCompilation.gmk
include IdlCompilation.gmk
JAVAC_JARS ?= "-Xbootclasspath/p:$(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar" \
-jar $(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar
# The Corba sources are old and generates a LOT of warnings.
# Disable these using Xlint, until someone cares to fix them.
DISABLE_CORBA_WARNINGS:=-Xlint:all,-deprecation,-unchecked,-serial,-fallthrough,-cast,-rawtypes,-static,-dep-ann
@@ -46,7 +44,7 @@ DISABLE_CORBA_WARNINGS:=-Xlint:all,-deprecation,-unchecked,-serial,-fallthrough,
# Thus we force the target bytecode to the boot jdk bytecode.
$(eval $(call SetupJavaCompiler,GENERATE_OLDBYTECODE,\
JVM:=$(JAVA),\
JAVAC:=$(JAVAC_JARS),\
JAVAC:=$(NEW_JAVAC),\
FLAGS:=$(BOOT_JDK_SOURCETARGET) -bootclasspath $(BOOT_RTJAR) $(DISABLE_CORBA_WARNINGS),\
SERVER_DIR:=$(SJAVAC_SERVER_DIR),\
SERVER_JVM:=$(SJAVAC_SERVER_JAVA)))
@@ -56,7 +54,7 @@ $(eval $(call SetupJavaCompiler,GENERATE_OLDBYTECODE,\
# cannot necessarily be run with the boot jdk.
$(eval $(call SetupJavaCompiler,GENERATE_NEWBYTECODE,\
JVM:=$(JAVA),\
JAVAC:=$(JAVAC_JARS),\
JAVAC:=$(NEW_JAVAC),\
FLAGS:=-cp $(BOOT_TOOLSJAR) -XDignore.symbol.file=true $(DISABLE_CORBA_WARNINGS),\
SERVER_DIR:=$(SJAVAC_SERVER_DIR),\
SERVER_JVM:=$(SJAVAC_SERVER_JAVA)))

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -322,9 +322,9 @@ class ServerCallback extends
com.sun.corba.se.spi.activation._ServerImplBase
{
private ORB orb;
private Method installMethod ;
private Method uninstallMethod ;
private Method shutdownMethod ;
private transient Method installMethod ;
private transient Method uninstallMethod ;
private transient Method shutdownMethod ;
private Object methodArgs[] ;
ServerCallback(ORB orb, Method installMethod, Method uninstallMethod,

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1218,7 +1218,7 @@ public class AnyImpl extends Any
// See bug 4391648 for more info about the tcORB in this
// case.
RepositoryIdStrings repStrs
= RepositoryIdFactory.getRepIdStringsFactory(tcORB);
= RepositoryIdFactory.getRepIdStringsFactory();
// Assertion: c instanceof Serializable?
@@ -1251,7 +1251,7 @@ public class AnyImpl extends Any
// Anything else
// We know that this is a TypeCodeImpl since it is our ORB
classTC = (TypeCodeImpl)ValueUtility.createTypeCodeForClass(
tcORB, c, ORBUtility.createValueHandler(tcORB));
tcORB, c, ORBUtility.createValueHandler());
// Intruct classTC to store its buffer
classTC.setCaching(true);
// Update the cache

View File

@@ -2189,10 +2189,7 @@ public final class TypeCodeImpl extends TypeCode
if (labelIndex == _unionLabels.length) {
// check if label has not been found
if (_defaultIndex == -1)
// throw exception if default was not expected
throw wrapper.unexpectedUnionDefault() ;
else
if (_defaultIndex != -1)
// must be of the default branch type
_memberTypes[_defaultIndex].copy(src, dst);
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -269,8 +269,8 @@ public class CDRInputStream_1_0 extends CDRInputStreamBase
private final void createRepositoryIdHandlers()
{
repIdUtil = RepositoryIdFactory.getRepIdUtility(orb);
repIdStrs = RepositoryIdFactory.getRepIdStringsFactory(orb);
repIdUtil = RepositoryIdFactory.getRepIdUtility();
repIdStrs = RepositoryIdFactory.getRepIdStringsFactory();
}
public GIOPVersion getGIOPVersion() {
@@ -564,10 +564,7 @@ public class CDRInputStream_1_0 extends CDRInputStreamBase
checkForNegativeLength(len);
if (orb != null && ORBUtility.isLegacyORB((ORB)orb))
return legacyReadString(len);
else
return internalReadString(len);
return internalReadString(len);
}
private final String internalReadString(int len) {
@@ -588,54 +585,6 @@ public class CDRInputStream_1_0 extends CDRInputStreamBase
return new String(result, 0, getCharConverter().getNumChars());
}
private final String legacyReadString(int len) {
//
// Workaround for ORBs which send string lengths of
// zero to mean empty string.
//
//
// IMPORTANT: Do not replace 'new String("")' with "", it may result
// in a Serialization bug (See serialization.zerolengthstring) and
// bug id: 4728756 for details
if (len == 0)
return new String("");
len--;
char[] c = new char[len];
int n = 0;
while (n < len) {
int avail;
int bytes;
int wanted;
avail = bbwi.buflen - bbwi.position();
if (avail <= 0) {
grow(1, 1);
avail = bbwi.buflen - bbwi.position();
}
wanted = len - n;
bytes = (wanted < avail) ? wanted : avail;
// Microbenchmarks are showing a loop of ByteBuffer.get(int) being
// faster than ByteBuffer.get(byte[], int, int).
for (int i=0; i<bytes; i++) {
c[n+i] = (char) (bbwi.byteBuffer.get(bbwi.position()+i) & 0xFF);
}
bbwi.position(bbwi.position() + bytes);
n += bytes;
}
//
// Skip past terminating null byte
//
if (bbwi.position() + 1 > bbwi.buflen)
alignAndCheck(1, 1);
bbwi.position(bbwi.position() + 1);
return new String(c);
}
public final String read_string() {
return readStringOrIndirection(false);
}
@@ -1045,7 +994,7 @@ public class CDRInputStream_1_0 extends CDRInputStreamBase
try {
if (valueHandler == null)
valueHandler = ORBUtility.createValueHandler(orb);
valueHandler = ORBUtility.createValueHandler();
value = valueHandler.readValue(parent,
indirection,

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -189,18 +189,8 @@ public class CDROutputStream_1_0 extends CDROutputStreamBase
private final void createRepositoryIdHandlers()
{
if (orb != null) {
// Get the appropriate versions based on the ORB version. The
// ORB versioning info is only in the core ORB.
repIdUtil
= RepositoryIdFactory.getRepIdUtility(orb);
repIdStrs
= RepositoryIdFactory.getRepIdStringsFactory(orb);
} else {
// Get the latest versions
repIdUtil = RepositoryIdFactory.getRepIdUtility();
repIdStrs = RepositoryIdFactory.getRepIdStringsFactory();
}
repIdUtil = RepositoryIdFactory.getRepIdUtility();
repIdStrs = RepositoryIdFactory.getRepIdStringsFactory();
}
public BufferManagerWrite getBufferManager()
@@ -705,7 +695,7 @@ public class CDROutputStream_1_0 extends CDROutputStreamBase
private void writeArray(Serializable array, Class clazz) {
if (valueHandler == null)
valueHandler = ORBUtility.createValueHandler(orb); //d11638
valueHandler = ORBUtility.createValueHandler(); //d11638
// Write value_tag
int indirection = writeValueTag(mustChunk, true,
@@ -768,7 +758,7 @@ public class CDROutputStream_1_0 extends CDROutputStreamBase
private void writeRMIIIOPValueType(Serializable object, Class clazz) {
if (valueHandler == null)
valueHandler = ORBUtility.createValueHandler(orb); //d11638
valueHandler = ORBUtility.createValueHandler(); //d11638
Serializable key = object;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -86,7 +86,7 @@ public class FVDCodeBaseImpl extends _CodeBaseImplBase
// default to using the current ORB version in case the
// vhandler is not set
if (vhandler == null) {
vhandler = new ValueHandlerImpl(false);
vhandler = ValueHandlerImpl.getInstance(false);
}
// Util.getCodebase may return null which would
@@ -120,7 +120,7 @@ public class FVDCodeBaseImpl extends _CodeBaseImplBase
// default to using the current ORB version in case the
// vhandler is not set
if (vhandler == null) {
vhandler = new ValueHandlerImpl(false);
vhandler = ValueHandlerImpl.getInstance(false);
}
try{
@@ -161,7 +161,7 @@ public class FVDCodeBaseImpl extends _CodeBaseImplBase
// default to using the current ORB version in case the
// vhandler is not set
if (vhandler == null) {
vhandler = new ValueHandlerImpl(false);
vhandler = ValueHandlerImpl.getInstance(false);
}
Stack repIds = new Stack();

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,7 @@
/*
* Licensed Materials - Property of IBM
* RMI-IIOP v1.0
* Copyright IBM Corp. 1998 1999 All Rights Reserved
* Copyright IBM Corp. 1998 2012 All Rights Reserved
*
*/
@@ -56,7 +56,6 @@ import java.io.Serializable;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Hashtable;
import com.sun.corba.se.impl.util.RepositoryId;
@@ -83,8 +82,6 @@ public class ObjectStreamClass implements java.io.Serializable {
private static Object noArgsList[] = {};
private static Class noTypesList[] = {};
private static Hashtable translatedFields;
/** true if represents enum type */
private boolean isEnum;
@@ -384,6 +381,42 @@ public class ObjectStreamClass implements java.io.Serializable {
*/
}
private static final class PersistentFieldsValue
extends ClassValue<ObjectStreamField[]> {
PersistentFieldsValue() { }
protected ObjectStreamField[] computeValue(Class<?> type) {
try {
Field pf = type.getDeclaredField("serialPersistentFields");
int mods = pf.getModifiers();
if (Modifier.isPrivate(mods) && Modifier.isStatic(mods) &&
Modifier.isFinal(mods)) {
pf.setAccessible(true);
java.io.ObjectStreamField[] fields =
(java.io.ObjectStreamField[])pf.get(type);
return translateFields(fields);
}
} catch (NoSuchFieldException | IllegalAccessException |
IllegalArgumentException | ClassCastException e) {
}
return null;
}
private static ObjectStreamField[] translateFields(
java.io.ObjectStreamField[] fields) {
ObjectStreamField[] translation =
new ObjectStreamField[fields.length];
for (int i = 0; i < fields.length; i++) {
translation[i] = new ObjectStreamField(fields[i].getName(),
fields[i].getType());
}
return translation;
}
}
private static final PersistentFieldsValue persistentFieldsValue =
new PersistentFieldsValue();
/*
* Initialize class descriptor. This method is only invoked on class
* descriptors created via calls to lookupInternal(). This method is kept
@@ -416,35 +449,7 @@ public class ObjectStreamClass implements java.io.Serializable {
* If it is declared, use the declared serialPersistentFields.
* Otherwise, extract the fields from the class itself.
*/
try {
Field pf = cl.getDeclaredField("serialPersistentFields");
// serial bug 7; the serialPersistentFields were not
// being read and stored as Accessible bit was not set
pf.setAccessible(true);
// serial bug 7; need to find if the field is of type
// java.io.ObjectStreamField
java.io.ObjectStreamField[] f =
(java.io.ObjectStreamField[])pf.get(cl);
int mods = pf.getModifiers();
if ((Modifier.isPrivate(mods)) &&
(Modifier.isStatic(mods)) &&
(Modifier.isFinal(mods)))
{
fields = (ObjectStreamField[])translateFields((Object[])pf.get(cl));
}
} catch (NoSuchFieldException e) {
fields = null;
} catch (IllegalAccessException e) {
fields = null;
} catch (IllegalArgumentException e) {
fields = null;
} catch (ClassCastException e) {
/* Thrown if a field serialPersistentField exists
* but it is not of type ObjectStreamField.
*/
fields = null;
}
fields = persistentFieldsValue.get(cl);
if (fields == null) {
/* Get all of the declared fields for this
@@ -641,43 +646,6 @@ public class ObjectStreamClass implements java.io.Serializable {
superclass = null;
}
private static Object[] translateFields(Object objs[])
throws NoSuchFieldException {
try{
java.io.ObjectStreamField fields[] = (java.io.ObjectStreamField[])objs;
Object translation[] = null;
if (translatedFields == null)
translatedFields = new Hashtable();
translation = (Object[])translatedFields.get(fields);
if (translation != null)
return translation;
else {
Class osfClass = Class.forName("com.sun.corba.se.impl.io.ObjectStreamField");
translation = (Object[])java.lang.reflect.Array.newInstance(osfClass, objs.length);
Object arg[] = new Object[2];
Class types[] = {String.class, Class.class};
Constructor constructor = osfClass.getDeclaredConstructor(types);
for (int i = fields.length -1; i >= 0; i--){
arg[0] = fields[i].getName();
arg[1] = fields[i].getType();
translation[i] = constructor.newInstance(arg);
}
translatedFields.put(fields, translation);
}
return (Object[])translation;
}
catch(Throwable t){
NoSuchFieldException nsfe = new NoSuchFieldException();
nsfe.initCause( t ) ;
throw nsfe ;
}
}
/*
* Set the class this version descriptor matches.
@@ -1555,8 +1523,8 @@ public class ObjectStreamClass implements java.io.Serializable {
private boolean hasExternalizableBlockData;
Method writeObjectMethod;
Method readObjectMethod;
private Method writeReplaceObjectMethod;
private Method readResolveObjectMethod;
private transient Method writeReplaceObjectMethod;
private transient Method readResolveObjectMethod;
private Constructor cons ;
/**

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -53,7 +53,7 @@ import com.sun.corba.se.spi.logging.CORBALogDomains;
import com.sun.corba.se.impl.logging.OMGSystemException;
import com.sun.corba.se.impl.logging.UtilSystemException;
public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat {
public final class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat {
// Property to override our maximum stream format version
public static final String FORMAT_VERSION_PROPERTY
@@ -150,14 +150,22 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
writeValueWithVersion(out, value, streamFormatVersion);
}
public ValueHandlerImpl(){}
private ValueHandlerImpl(){}
public ValueHandlerImpl(boolean isInputStream) {
private ValueHandlerImpl(boolean isInputStream) {
this();
useHashtables = false;
this.isInputStream = isInputStream;
}
static ValueHandlerImpl getInstance() {
return new ValueHandlerImpl();
}
static ValueHandlerImpl getInstance(boolean isInputStream) {
return new ValueHandlerImpl(isInputStream);
}
/**
* Writes the value to the stream using java semantics.
* @param out The stream to write the value to
@@ -458,12 +466,7 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
return ObjectStreamClass.lookup(value.getClass()).writeReplace(value);
}
/**
* Encapsulates writing of Java char arrays so that the 1.3 subclass
* can override it without exposing internals across packages. This
* is a fix for bug 4367783.
*/
protected void writeCharArray(org.omg.CORBA_2_3.portable.OutputStream out,
private void writeCharArray(org.omg.CORBA_2_3.portable.OutputStream out,
char[] array,
int offset,
int length)
@@ -576,12 +579,7 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
}
}
/**
* Encapsulates reading of Java char arrays so that the 1.3 subclass
* can override it without exposing internals across packages. This
* is a fix for bug 4367783.
*/
protected void readCharArray(org.omg.CORBA_2_3.portable.InputStream in,
private void readCharArray(org.omg.CORBA_2_3.portable.InputStream in,
char[] array,
int offset,
int length)
@@ -795,7 +793,7 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
return RepositoryId.cache.getId(repId).isSequence();
}
protected String getOutputStreamClassName() {
private String getOutputStreamClassName() {
return "com.sun.corba.se.impl.io.IIOPOutputStream";
}
@@ -843,29 +841,11 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
private IIOPOutputStream createOutputStreamBuiltInNoPriv(
final String name
) throws IOException {
return
name.equals(
IIOPOutputStream
.class.getName()
) ?
new IIOPOutputStream() :
name.equals(
com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3
.class.getName()
) ?
new com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3() :
name.equals(
com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3_1
.class.getName()
) ?
new com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3_1() :
null;
return name.equals(IIOPOutputStream.class.getName()) ?
new IIOPOutputStream() : null;
}
protected String getInputStreamClassName() {
private String getInputStreamClassName() {
return "com.sun.corba.se.impl.io.IIOPInputStream";
}
@@ -913,26 +893,8 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
private IIOPInputStream createInputStreamBuiltInNoPriv(
final String name
) throws IOException {
return
name.equals(
IIOPInputStream
.class.getName()
) ?
new IIOPInputStream() :
name.equals(
com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3
.class.getName()
) ?
new com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3() :
name.equals(
com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3_1
.class.getName()
) ?
new com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3_1() :
null;
return name.equals(IIOPInputStream.class.getName()) ?
new IIOPInputStream() : null;
}
/**
@@ -958,12 +920,7 @@ public class ValueHandlerImpl implements javax.rmi.CORBA.ValueHandlerMultiFormat
}
/**
* Our JDK 1.3 and JDK 1.3.1 behavior subclasses override this.
* The correct behavior is for a Java char to map to a CORBA wchar,
* but our older code mapped it to a CORBA char.
*/
protected TCKind getJavaCharTCKind() {
TCKind getJavaCharTCKind() {
return TCKind.tk_wchar;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -93,6 +93,14 @@ public class ValueUtility {
null, // tk_abstract_interface 32
};
static {
sun.corba.SharedSecrets.setJavaCorbaAccess(new sun.corba.JavaCorbaAccess() {
public ValueHandlerImpl newValueHandlerImpl() {
return ValueHandlerImpl.getInstance();
}
});
}
public static String getSignature(ValueMember member)
throws ClassNotFoundException {

View File

@@ -112,6 +112,9 @@ import com.sun.corba.se.impl.util.JDKBridge;
import com.sun.corba.se.impl.orbutil.ORBClassLoader;
import com.sun.corba.se.impl.logging.UtilSystemException;
import com.sun.corba.se.spi.logging.CORBALogDomains;
import sun.corba.SharedSecrets;
import sun.corba.JavaCorbaAccess;
/**
* Provides utility methods that can be used by stubs and ties to
@@ -125,7 +128,8 @@ public class Util implements javax.rmi.CORBA.UtilDelegate
// Maps targets to ties.
private static IdentityHashtable exportedServants = new IdentityHashtable();
private static ValueHandlerImpl valueHandlerSingleton = new ValueHandlerImpl();
private static final ValueHandlerImpl valueHandlerSingleton =
SharedSecrets.getJavaCorbaAccess().newValueHandlerImpl();
private UtilSystemException utilWrapper = UtilSystemException.get(
CORBALogDomains.RPC_ENCODING);

View File

@@ -840,7 +840,7 @@ public class ORBImpl extends com.sun.corba.se.spi.orb.ORB
// backward compatability 4365188
CodeBase cb;
ValueHandler vh = ORBUtility.createValueHandler(this);
ValueHandler vh = ORBUtility.createValueHandler();
cb = (CodeBase)vh.getRunTimeCodeBase();
return ORBUtility.connectAndGetIOR( this, cb ) ;

View File

@@ -1,68 +0,0 @@
/*
* Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.corba.se.impl.orbutil;
import java.io.*;
/**
* Implements legacy behavior from before Ladybird to maintain
* backwards compatibility.
*/
public class IIOPOutputStream_1_3 extends com.sun.corba.se.impl.io.IIOPOutputStream
{
// We can't assume that the superclass's putFields
// member will be non-private. We must allow
// the RI to run on JDK 1.3.1 FCS as well as
// the JDK 1.3.1_01 patch.
private ObjectOutputStream.PutField putFields_1_3;
// The newer version in the io package correctly writes a wstring instead.
// This concerns bug 4379597.
protected void internalWriteUTF(org.omg.CORBA.portable.OutputStream stream,
String data)
{
stream.write_string(data);
}
public IIOPOutputStream_1_3()
throws java.io.IOException {
super();
}
/**
* Before JDK 1.3.1_01, the PutField/GetField implementation
* actually sent a Hashtable.
*/
public ObjectOutputStream.PutField putFields()
throws IOException {
putFields_1_3 = new LegacyHookPutFields();
return putFields_1_3;
}
public void writeFields()
throws IOException {
putFields_1_3.write(this);
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -160,44 +160,12 @@ public final class ORBUtility {
}
/**
* Creates the correct ValueHandler for the given ORB,
* querying ORBVersion information. If the ORB or
* ORBVersion is null, gets the ValueHandler from
* Util.createValueHandler.
* Return default ValueHandler
*/
public static ValueHandler createValueHandler(ORB orb) {
if (orb == null)
return Util.createValueHandler();
ORBVersion version = orb.getORBVersion();
if (version == null)
return Util.createValueHandler();
if (version.equals(ORBVersionFactory.getOLD()))
return new ValueHandlerImpl_1_3();
if (version.equals(ORBVersionFactory.getNEW()))
return new ValueHandlerImpl_1_3_1();
public static ValueHandler createValueHandler() {
return Util.createValueHandler();
}
/**
* Returns true if the given ORB could accurately be determined to be a
* Kestrel or earlier ORB. Note: If passed the ORBSingleton, this will return
* false.
*/
public static boolean isLegacyORB(ORB orb)
{
try {
ORBVersion currentORB = orb.getORBVersion();
return currentORB.equals( ORBVersionFactory.getOLD() ) ;
} catch (SecurityException se) {
return false;
}
}
/**
* Returns true if it was accurately determined that the remote ORB is
* a foreign (non-JavaSoft) ORB. Note: If passed the ORBSingleton, this

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2001, 2003, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -1119,8 +1119,8 @@ public class ObjectStreamClass_1_3_1 implements java.io.Serializable {
private boolean hasExternalizableBlockData;
Method writeObjectMethod;
Method readObjectMethod;
private Method writeReplaceObjectMethod;
private Method readResolveObjectMethod;
private transient Method writeReplaceObjectMethod;
private transient Method readResolveObjectMethod;
/*
* ObjectStreamClass_1_3_1 that this one was built from.

View File

@@ -1,177 +0,0 @@
/*
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.corba.se.impl.orbutil;
import org.omg.CORBA.ORB;
import java.io.Serializable;
import java.util.Hashtable;
import java.net.MalformedURLException;
import com.sun.corba.se.impl.io.TypeMismatchException;
import com.sun.corba.se.impl.util.RepositoryId;
/**
* Delegates to the RepositoryId_1_3 implementation in
* com.sun.corba.se.impl.orbutil. This is necessary to
* overcome the fact that many of RepositoryId's methods
* are static.
*/
public final class RepIdDelegator_1_3
implements RepositoryIdStrings,
RepositoryIdUtility,
RepositoryIdInterface
{
// RepositoryIdFactory methods
public String createForAnyType(Class type) {
return RepositoryId_1_3.createForAnyType(type);
}
public String createForJavaType(Serializable ser)
throws TypeMismatchException
{
return RepositoryId_1_3.createForJavaType(ser);
}
public String createForJavaType(Class clz)
throws TypeMismatchException
{
return RepositoryId_1_3.createForJavaType(clz);
}
public String createSequenceRepID(java.lang.Object ser) {
return RepositoryId_1_3.createSequenceRepID(ser);
}
public String createSequenceRepID(Class clazz) {
return RepositoryId_1_3.createSequenceRepID(clazz);
}
public RepositoryIdInterface getFromString(String repIdString) {
return new RepIdDelegator_1_3(RepositoryId_1_3.cache.getId(repIdString));
}
// RepositoryIdUtility methods
public boolean isChunkedEncoding(int valueTag) {
return RepositoryId.isChunkedEncoding(valueTag);
}
public boolean isCodeBasePresent(int valueTag) {
return RepositoryId.isCodeBasePresent(valueTag);
}
public String getClassDescValueRepId() {
return RepositoryId_1_3.kClassDescValueRepID;
}
public String getWStringValueRepId() {
return RepositoryId_1_3.kWStringValueRepID;
}
public int getTypeInfo(int valueTag) {
return RepositoryId.getTypeInfo(valueTag);
}
public int getStandardRMIChunkedNoRepStrId() {
return RepositoryId.kPreComputed_StandardRMIChunked_NoRep;
}
public int getCodeBaseRMIChunkedNoRepStrId() {
return RepositoryId.kPreComputed_CodeBaseRMIChunked_NoRep;
}
public int getStandardRMIChunkedId() {
return RepositoryId.kPreComputed_StandardRMIChunked;
}
public int getCodeBaseRMIChunkedId() {
return RepositoryId.kPreComputed_CodeBaseRMIChunked;
}
public int getStandardRMIUnchunkedId() {
return RepositoryId.kPreComputed_StandardRMIUnchunked;
}
public int getCodeBaseRMIUnchunkedId() {
return RepositoryId.kPreComputed_CodeBaseRMIUnchunked;
}
public int getStandardRMIUnchunkedNoRepStrId() {
return RepositoryId.kPreComputed_StandardRMIUnchunked_NoRep;
}
public int getCodeBaseRMIUnchunkedNoRepStrId() {
return RepositoryId.kPreComputed_CodeBaseRMIUnchunked_NoRep;
}
// RepositoryIdInterface methods
public Class getClassFromType() throws ClassNotFoundException {
return delegate.getClassFromType();
}
public Class getClassFromType(String codebaseURL)
throws ClassNotFoundException, MalformedURLException
{
return delegate.getClassFromType(codebaseURL);
}
public Class getClassFromType(Class expectedType,
String codebaseURL)
throws ClassNotFoundException, MalformedURLException
{
return delegate.getClassFromType(expectedType, codebaseURL);
}
public String getClassName() {
return delegate.getClassName();
}
// Constructor used for factory/utility cases
public RepIdDelegator_1_3() {}
// Constructor used by getIdFromString. All non-static
// RepositoryId methods will use the provided delegate.
private RepIdDelegator_1_3(RepositoryId_1_3 _delegate) {
this.delegate = _delegate;
}
private RepositoryId_1_3 delegate = null;
public String toString() {
if (delegate != null)
return delegate.toString();
else
return this.getClass().getName();
}
public boolean equals(Object obj) {
if (delegate != null)
return delegate.equals(obj);
else
return super.equals(obj);
}
}

View File

@@ -1,177 +0,0 @@
/*
* Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.corba.se.impl.orbutil;
import org.omg.CORBA.ORB;
import java.io.Serializable;
import java.util.Hashtable;
import java.net.MalformedURLException;
import com.sun.corba.se.impl.io.TypeMismatchException;
import com.sun.corba.se.impl.util.RepositoryId;
/**
* Delegates to the RepositoryId_1_3_1 implementation in
* com.sun.corba.se.impl.orbutil. This is necessary to
* overcome the fact that many of RepositoryId's methods
* are static.
*/
public final class RepIdDelegator_1_3_1
implements RepositoryIdStrings,
RepositoryIdUtility,
RepositoryIdInterface
{
// RepositoryIdFactory methods
public String createForAnyType(Class type) {
return RepositoryId_1_3_1.createForAnyType(type);
}
public String createForJavaType(Serializable ser)
throws TypeMismatchException
{
return RepositoryId_1_3_1.createForJavaType(ser);
}
public String createForJavaType(Class clz)
throws TypeMismatchException
{
return RepositoryId_1_3_1.createForJavaType(clz);
}
public String createSequenceRepID(java.lang.Object ser) {
return RepositoryId_1_3_1.createSequenceRepID(ser);
}
public String createSequenceRepID(Class clazz) {
return RepositoryId_1_3_1.createSequenceRepID(clazz);
}
public RepositoryIdInterface getFromString(String repIdString) {
return new RepIdDelegator_1_3_1(RepositoryId_1_3_1.cache.getId(repIdString));
}
// RepositoryIdUtility methods
public boolean isChunkedEncoding(int valueTag) {
return RepositoryId.isChunkedEncoding(valueTag);
}
public boolean isCodeBasePresent(int valueTag) {
return RepositoryId.isCodeBasePresent(valueTag);
}
public String getClassDescValueRepId() {
return RepositoryId_1_3_1.kClassDescValueRepID;
}
public String getWStringValueRepId() {
return RepositoryId_1_3_1.kWStringValueRepID;
}
public int getTypeInfo(int valueTag) {
return RepositoryId.getTypeInfo(valueTag);
}
public int getStandardRMIChunkedNoRepStrId() {
return RepositoryId.kPreComputed_StandardRMIChunked_NoRep;
}
public int getCodeBaseRMIChunkedNoRepStrId() {
return RepositoryId.kPreComputed_CodeBaseRMIChunked_NoRep;
}
public int getStandardRMIChunkedId() {
return RepositoryId.kPreComputed_StandardRMIChunked;
}
public int getCodeBaseRMIChunkedId() {
return RepositoryId.kPreComputed_CodeBaseRMIChunked;
}
public int getStandardRMIUnchunkedId() {
return RepositoryId.kPreComputed_StandardRMIUnchunked;
}
public int getCodeBaseRMIUnchunkedId() {
return RepositoryId.kPreComputed_CodeBaseRMIUnchunked;
}
public int getStandardRMIUnchunkedNoRepStrId() {
return RepositoryId.kPreComputed_StandardRMIUnchunked_NoRep;
}
public int getCodeBaseRMIUnchunkedNoRepStrId() {
return RepositoryId.kPreComputed_CodeBaseRMIUnchunked_NoRep;
}
// RepositoryIdInterface methods
public Class getClassFromType() throws ClassNotFoundException {
return delegate.getClassFromType();
}
public Class getClassFromType(String codebaseURL)
throws ClassNotFoundException, MalformedURLException
{
return delegate.getClassFromType(codebaseURL);
}
public Class getClassFromType(Class expectedType,
String codebaseURL)
throws ClassNotFoundException, MalformedURLException
{
return delegate.getClassFromType(expectedType, codebaseURL);
}
public String getClassName() {
return delegate.getClassName();
}
// Constructor used for factory/utility cases
public RepIdDelegator_1_3_1() {}
// Constructor used by getIdFromString. All non-static
// RepositoryId methods will use the provided delegate.
private RepIdDelegator_1_3_1(RepositoryId_1_3_1 _delegate) {
this.delegate = _delegate;
}
private RepositoryId_1_3_1 delegate = null;
public String toString() {
if (delegate != null)
return delegate.toString();
else
return this.getClass().getName();
}
public boolean equals(Object obj) {
if (delegate != null)
return delegate.equals(obj);
else
return super.equals(obj);
}
}

View File

@@ -1,108 +0,0 @@
/*
* Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* Licensed Materials - Property of IBM
* RMI-IIOP v1.0
* Copyright IBM Corp. 1998 1999 All Rights Reserved
*
*/
package com.sun.corba.se.impl.orbutil;
import java.util.Stack;
import java.util.Hashtable;
import java.util.EmptyStackException;
import java.util.Enumeration;
// Really limited pool - in this case just creating several at a time...
class RepositoryIdPool_1_3 extends Stack {
private static int MAX_CACHE_SIZE = 4;
private RepositoryIdCache_1_3 cache;
public final synchronized RepositoryId_1_3 popId() {
try {
return (RepositoryId_1_3)super.pop();
}
catch(EmptyStackException e) {
increasePool(5);
return (RepositoryId_1_3)super.pop();
}
}
// Pool management
final void increasePool(int size) {
//if (cache.size() <= MAX_CACHE_SIZE)
for (int i = size; i > 0; i--)
push(new RepositoryId_1_3());
/*
// _REVISIT_ This will not work w/out either thread tracing or weak references. I am
// betting that thread tracing almost completely negates benefit of reuse. Until either
// 1.2 only inclusion or proof to the contrary, I'll leave it this way...
else {
int numToReclaim = cache.size() / 2;
Enumeration keys = cache.keys();
Enumeration elements = cache.elements();
for (int i = numToReclaim; i > 0; i--) {
Object key = keys.nextElement();
Object element = elements.nextElement();
push(element);
cache.remove(key);
}
}
*/
}
final void setCaches(RepositoryIdCache_1_3 cache) {
this.cache = cache;
}
}
public class RepositoryIdCache_1_3 extends Hashtable {
private RepositoryIdPool_1_3 pool = new RepositoryIdPool_1_3();
public RepositoryIdCache_1_3() {
pool.setCaches(this);
}
public final synchronized RepositoryId_1_3 getId(String key) {
RepositoryId_1_3 repId = (RepositoryId_1_3)super.get(key);
if (repId != null)
return repId;
else {
//repId = pool.popId().init(key);
repId = new RepositoryId_1_3(key);
put(key, repId);
return repId;
}
}
}

View File

@@ -1,102 +0,0 @@
/*
* Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.corba.se.impl.orbutil;
import java.util.Stack;
import java.util.Hashtable;
import java.util.EmptyStackException;
import java.util.Enumeration;
// Really limited pool - in this case just creating several at a time...
class RepositoryIdPool_1_3_1 extends Stack {
private static int MAX_CACHE_SIZE = 4;
private RepositoryIdCache_1_3_1 cache;
public final synchronized RepositoryId_1_3_1 popId() {
try {
return (RepositoryId_1_3_1)super.pop();
}
catch(EmptyStackException e) {
increasePool(5);
return (RepositoryId_1_3_1)super.pop();
}
}
// Pool management
final void increasePool(int size) {
//if (cache.size() <= MAX_CACHE_SIZE)
for (int i = size; i > 0; i--)
push(new RepositoryId_1_3_1());
/*
// _REVISIT_ This will not work w/out either thread tracing or weak references. I am
// betting that thread tracing almost completely negates benefit of reuse. Until either
// 1.2 only inclusion or proof to the contrary, I'll leave it this way...
else {
int numToReclaim = cache.size() / 2;
Enumeration keys = cache.keys();
Enumeration elements = cache.elements();
for (int i = numToReclaim; i > 0; i--) {
Object key = keys.nextElement();
Object element = elements.nextElement();
push(element);
cache.remove(key);
}
}
*/
}
final void setCaches(RepositoryIdCache_1_3_1 cache) {
this.cache = cache;
}
}
public class RepositoryIdCache_1_3_1 extends Hashtable {
private RepositoryIdPool_1_3_1 pool = new RepositoryIdPool_1_3_1();
public RepositoryIdCache_1_3_1() {
pool.setCaches(this);
}
public final synchronized RepositoryId_1_3_1 getId(String key) {
RepositoryId_1_3_1 repId = (RepositoryId_1_3_1)super.get(key);
if (repId != null)
return repId;
else {
//repId = pool.popId().init(key);
repId = new RepositoryId_1_3_1(key);
put(key, repId);
return repId;
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,12 +30,6 @@ import com.sun.corba.se.spi.orb.ORB;
public abstract class RepositoryIdFactory
{
private static final RepIdDelegator_1_3 legacyDelegator
= new RepIdDelegator_1_3();
private static final RepIdDelegator_1_3_1 ladybirdDelegator
= new RepIdDelegator_1_3_1();
private static final RepIdDelegator currentDelegator
= new RepIdDelegator();
@@ -47,29 +41,6 @@ public abstract class RepositoryIdFactory
return currentDelegator;
}
/**
* Checks the version of the ORB and returns the appropriate
* RepositoryIdStrings instance.
*/
public static RepositoryIdStrings getRepIdStringsFactory(ORB orb)
{
if (orb != null) {
switch (orb.getORBVersion().getORBType()) {
case ORBVersion.NEWER:
case ORBVersion.FOREIGN:
case ORBVersion.JDK1_3_1_01:
return currentDelegator;
case ORBVersion.OLD:
return legacyDelegator;
case ORBVersion.NEW:
return ladybirdDelegator;
default:
return currentDelegator;
}
} else
return currentDelegator;
}
/**
* Returns the latest version RepositoryIdUtility instance
*/
@@ -78,26 +49,4 @@ public abstract class RepositoryIdFactory
return currentDelegator;
}
/**
* Checks the version of the ORB and returns the appropriate
* RepositoryIdUtility instance.
*/
public static RepositoryIdUtility getRepIdUtility(ORB orb)
{
if (orb != null) {
switch (orb.getORBVersion().getORBType()) {
case ORBVersion.NEWER:
case ORBVersion.FOREIGN:
case ORBVersion.JDK1_3_1_01:
return currentDelegator;
case ORBVersion.OLD:
return legacyDelegator;
case ORBVersion.NEW:
return ladybirdDelegator;
default:
return currentDelegator;
}
} else
return currentDelegator;
}
}

View File

@@ -1,990 +0,0 @@
/*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* Licensed Materials - Property of IBM
* RMI-IIOP v1.0
* Copyright IBM Corp. 1998 1999 All Rights Reserved
*
*/
package com.sun.corba.se.impl.orbutil;
import java.util.StringTokenizer;
import java.util.Hashtable;
import java.io.IOException;
import java.lang.reflect.Method;
// Imports for using codebase URL to load class
import java.net.MalformedURLException;
import org.omg.CORBA.portable.ValueBase;
import org.omg.CORBA.portable.IDLEntity;
import com.sun.corba.se.impl.util.JDKBridge;
import com.sun.corba.se.impl.util.Utility;
import com.sun.corba.se.impl.util.PackagePrefixChecker;
import com.sun.corba.se.impl.util.IdentityHashtable;
import com.sun.corba.se.impl.io.ObjectStreamClass;
import javax.rmi.CORBA.Util;
// keeping the original RepositoryId class that was shipped in
// JDK 1.3. It has interoperability bugs
public class RepositoryId_1_3 {
// Legal IDL Identifier characters (1 = legal). Note
// that '.' (2E) is marked as legal even though it is
// not legal in IDL. This allows us to treat a fully
// qualified Java name with '.' package separators
// uniformly, and is safe because that is the only
// legal use of '.' in a Java name.
public static final RepositoryIdCache_1_3 cache = new RepositoryIdCache_1_3();
private static final byte[] IDL_IDENTIFIER_CHARS = {
// 0 1 2 3 4 5 6 7 8 9 a b c d e f
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 00-0f
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 10-1f
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1,0, // 20-2f
1,1,1,1, 1,1,1,1, 1,1,0,0, 0,0,0,0, // 30-3f
0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // 40-4f
1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,1, // 50-5f
0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // 60-6f
1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,0, // 70-7f
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 80-8f
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 90-9f
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // a0-af
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // b0-bf
1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // c0-cf
0,1,1,1, 1,1,1,0, 1,1,1,1, 1,0,0,1, // d0-df
1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // e0-ef
0,1,1,1, 1,1,1,0, 1,1,1,1, 1,0,0,1, // f0-ff
};
private static String defaultServerURL = null;
private static boolean useCodebaseOnly = false;
static {
if (defaultServerURL == null)
defaultServerURL = (String)JDKBridge.getLocalCodebase();
useCodebaseOnly = JDKBridge.useCodebaseOnly();
}
private static IdentityHashtable classToRepStr = new IdentityHashtable();
private static IdentityHashtable classIDLToRepStr = new IdentityHashtable();
private static IdentityHashtable classSeqToRepStr = new IdentityHashtable();
private static IdentityHashtable repStrToByteArray = new IdentityHashtable();
private static Hashtable repStrToClass = new Hashtable();
private String repId = null;
private boolean isSupportedFormat = true;
private String typeString = null;
private String versionString = null;
private boolean isSequence = false;
private boolean isRMIValueType = false;
private boolean isIDLType = false;
private String completeClassName = null;
private String unqualifiedName = null;
private String definedInId = null;
private Class clazz = null;
private String suid = null, actualSuid = null;
private long suidLong = ObjectStreamClass.kDefaultUID, actualSuidLong = ObjectStreamClass.kDefaultUID;
// Repository ID fragments
private static final String kValuePrefix = "RMI:";
private static final String kIDLPrefix = "IDL:";
private static final String kIDLNamePrefix = "omg.org/";
private static final String kIDLClassnamePrefix = "org.omg.";
private static final String kSequencePrefix = "[";
private static final String kCORBAPrefix = "CORBA/";
private static final String kArrayPrefix = kValuePrefix + kSequencePrefix + kCORBAPrefix;
private static final int kValuePrefixLength = kValuePrefix.length();
private static final int kIDLPrefixLength = kIDLPrefix.length();
private static final int kSequencePrefixLength = kSequencePrefix.length();
private static final String kInterfaceHashCode = ":0000000000000000";
private static final String kInterfaceOnlyHashStr = "0000000000000000";
private static final String kExternalizableHashStr = "0000000000000001";
// Value tag utility methods and constants
public static final int kInitialValueTag= 0x7fffff00;
public static final int kNoTypeInfo = 0;
public static final int kSingleRepTypeInfo = 0x02;
public static final int kPartialListTypeInfo = 0x06;
public static final int kChunkedMask = 0x08;
// Public, well known repository IDs
// _REVISIT_ : A table structure with a good search routine for all of this
// would be more efficient and easier to maintain...
// String
public static final String kWStringValueVersion = "1.0";
public static final String kWStringValueHash = ":"+kWStringValueVersion;
public static final String kWStringStubValue = "WStringValue";
public static final String kWStringTypeStr = "omg.org/CORBA/"+kWStringStubValue;
public static final String kWStringValueRepID = kIDLPrefix + kWStringTypeStr + kWStringValueHash;
// Any
public static final String kAnyRepID = kIDLPrefix + "omg.org/CORBA/Any";
// Class
public static final String kClassDescValueHash = ":" + Long.toHexString(
ObjectStreamClass.getSerialVersionUID(javax.rmi.CORBA.ClassDesc.class));
public static final String kClassDescStubValue = "ClassDesc";
public static final String kClassDescTypeStr = "javax.rmi.CORBA."+kClassDescStubValue;
public static final String kClassDescValueRepID = kValuePrefix + kClassDescTypeStr + kClassDescValueHash;
// Object
public static final String kObjectValueHash = ":1.0";
public static final String kObjectStubValue = "Object";
// Sequence
public static final String kSequenceValueHash = ":1.0";
public static final String kPrimitiveSequenceValueHash = ":0000000000000000";
// Serializable
public static final String kSerializableValueHash = ":1.0";
public static final String kSerializableStubValue = "Serializable";
// Externalizable
public static final String kExternalizableValueHash = ":1.0";
public static final String kExternalizableStubValue = "Externalizable";
// Remote (The empty string is used for java.rmi.Remote)
public static final String kRemoteValueHash = "";
public static final String kRemoteStubValue = "";
public static final String kRemoteTypeStr = "";
public static final String kRemoteValueRepID = "";
private static final Hashtable kSpecialArrayTypeStrings = new Hashtable();
static {
kSpecialArrayTypeStrings.put("CORBA.WStringValue", new StringBuffer(java.lang.String.class.getName()));
kSpecialArrayTypeStrings.put("javax.rmi.CORBA.ClassDesc", new StringBuffer(java.lang.Class.class.getName()));
kSpecialArrayTypeStrings.put("CORBA.Object", new StringBuffer(java.rmi.Remote.class.getName()));
}
private static final Hashtable kSpecialCasesRepIDs = new Hashtable();
static {
kSpecialCasesRepIDs.put(java.lang.String.class, kWStringValueRepID);
kSpecialCasesRepIDs.put(java.lang.Class.class, kClassDescValueRepID);
kSpecialCasesRepIDs.put(java.rmi.Remote.class, kRemoteValueRepID);
}
private static final Hashtable kSpecialCasesStubValues = new Hashtable();
static {
kSpecialCasesStubValues.put(java.lang.String.class, kWStringStubValue);
kSpecialCasesStubValues.put(java.lang.Class.class, kClassDescStubValue);
kSpecialCasesStubValues.put(java.lang.Object.class, kObjectStubValue);
kSpecialCasesStubValues.put(java.io.Serializable.class, kSerializableStubValue);
kSpecialCasesStubValues.put(java.io.Externalizable.class, kExternalizableStubValue);
kSpecialCasesStubValues.put(java.rmi.Remote.class, kRemoteStubValue);
}
private static final Hashtable kSpecialCasesVersions = new Hashtable();
static {
kSpecialCasesVersions.put(java.lang.String.class, kWStringValueHash);
kSpecialCasesVersions.put(java.lang.Class.class, kClassDescValueHash);
kSpecialCasesVersions.put(java.lang.Object.class, kObjectValueHash);
kSpecialCasesVersions.put(java.io.Serializable.class, kSerializableValueHash);
kSpecialCasesVersions.put(java.io.Externalizable.class, kExternalizableValueHash);
kSpecialCasesVersions.put(java.rmi.Remote.class, kRemoteValueHash);
}
private static final Hashtable kSpecialCasesClasses = new Hashtable();
static {
kSpecialCasesClasses.put(kWStringTypeStr, java.lang.String.class);
kSpecialCasesClasses.put(kClassDescTypeStr, java.lang.Class.class);
kSpecialCasesClasses.put(kRemoteTypeStr, java.rmi.Remote.class);
kSpecialCasesClasses.put("org.omg.CORBA.WStringValue", java.lang.String.class);
kSpecialCasesClasses.put("javax.rmi.CORBA.ClassDesc", java.lang.Class.class);
//kSpecialCasesClasses.put(kRemoteTypeStr, java.rmi.Remote.class);
}
private static final Hashtable kSpecialCasesArrayPrefix = new Hashtable();
static {
kSpecialCasesArrayPrefix.put(java.lang.String.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);
kSpecialCasesArrayPrefix.put(java.lang.Class.class, kValuePrefix + kSequencePrefix + "javax/rmi/CORBA/");
kSpecialCasesArrayPrefix.put(java.lang.Object.class, kValuePrefix + kSequencePrefix + "java/lang/");
kSpecialCasesArrayPrefix.put(java.io.Serializable.class, kValuePrefix + kSequencePrefix + "java/io/");
kSpecialCasesArrayPrefix.put(java.io.Externalizable.class, kValuePrefix + kSequencePrefix + "java/io/");
kSpecialCasesArrayPrefix.put(java.rmi.Remote.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);
}
private static final Hashtable kSpecialPrimitives = new Hashtable();
static {
kSpecialPrimitives.put("int","long");
kSpecialPrimitives.put("long","longlong");
kSpecialPrimitives.put("byte","octet");
}
/**
* Used to convert ascii to hex.
*/
private static final byte ASCII_HEX[] = {
(byte)'0',
(byte)'1',
(byte)'2',
(byte)'3',
(byte)'4',
(byte)'5',
(byte)'6',
(byte)'7',
(byte)'8',
(byte)'9',
(byte)'A',
(byte)'B',
(byte)'C',
(byte)'D',
(byte)'E',
(byte)'F',
};
// Interface Rep ID Strings
public static final String kjava_rmi_Remote = createForAnyType(java.rmi.Remote.class);
public static final String korg_omg_CORBA_Object = createForAnyType(org.omg.CORBA.Object.class);
// Dummy arguments for getIdFromHelper method
public static final Class kNoParamTypes[] ={};
public static final Object kNoArgs[] = {};
RepositoryId_1_3(){}
RepositoryId_1_3(String aRepId){
init(aRepId);
}
RepositoryId_1_3 init(String aRepId){
this.repId = aRepId;
// Special case for remote
if (aRepId.length() == 0) {
clazz = java.rmi.Remote.class;
typeString = "";
isRMIValueType = true;
suid = kInterfaceOnlyHashStr;
return this;
}
else if (aRepId.equals(kWStringValueRepID)) {
clazz = java.lang.String.class;
typeString = kWStringTypeStr;
isIDLType = true;
versionString = kWStringValueVersion;
return this;
}
else {
String repId = convertFromISOLatin1(aRepId);
versionString = repId.substring(repId.indexOf(':', repId.indexOf(':')+1));
if (repId.startsWith(kIDLPrefix)) {
typeString =
repId.substring(kIDLPrefixLength, repId.indexOf(':', kIDLPrefixLength));
isIDLType = true;
if (typeString.startsWith(kIDLNamePrefix))
completeClassName = kIDLClassnamePrefix +
typeString.substring(kIDLNamePrefix.length()).replace('/','.');
else completeClassName = typeString.replace('/','.');
}
else if (repId.startsWith(kValuePrefix)) {
typeString =
repId.substring(kValuePrefixLength, repId.indexOf(':', kValuePrefixLength));
isRMIValueType = true;
if (versionString.indexOf('.') == -1) {
actualSuid = versionString.substring(1);
suid = actualSuid; // default if not explicitly specified
if (actualSuid.indexOf(':') != -1){
// we have a declared hash also
int pos = actualSuid.indexOf(':')+1;
// actualSuid = suid.substring(pos);
// suid = suid.substring(0, pos-1);
suid = actualSuid.substring(pos);
actualSuid = actualSuid.substring(0, pos-1);
}
}
else {
// _REVISIT_ : Special case version failure ?
}
}
else isSupportedFormat = false;
if (typeString.startsWith(kSequencePrefix)) {
isSequence = true;
}
return this;
}
}
public final String getUnqualifiedName() {
if (unqualifiedName == null){
String className = getClassName();
int index = (className != null) ? className.lastIndexOf('.') : -1;
if (index == -1){
unqualifiedName = className;
definedInId = "IDL::1.0";
}
else {
unqualifiedName = className.substring(index);
definedInId = "IDL:" + className.substring(0, index).replace('.','/') + ":1.0";
}
}
return unqualifiedName;
}
public final String getDefinedInId() {
if (definedInId == null){
getUnqualifiedName();
}
return definedInId;
}
public final String getTypeString() {
return typeString;
}
public final String getVersionString() {
return versionString;
}
public final String getSerialVersionUID() {
return suid;
}
public final String getActualSerialVersionUID() {
return actualSuid;
}
public final long getSerialVersionUIDAsLong() {
return suidLong;
}
public final long getActualSerialVersionUIDAsLong() {
return actualSuidLong;
}
public final boolean isRMIValueType() {
return isRMIValueType;
}
public final boolean isIDLType() {
return isIDLType;
}
public final String getRepositoryId() {
return repId;
}
public static byte[] getByteArray(String repStr) {
synchronized (repStrToByteArray){
return (byte[]) repStrToByteArray.get(repStr);
}
}
public static void setByteArray(String repStr, byte[] repStrBytes) {
synchronized (repStrToByteArray){
repStrToByteArray.put(repStr, repStrBytes);
}
}
public final boolean isSequence() {
return isSequence;
}
public final boolean isSupportedFormat() {
return isSupportedFormat;
}
// This method will return the classname from the typestring OR if the classname turns out to be
// a special class "pseudo" name, then the matching real classname is returned.
public final String getClassName() {
if (isRMIValueType)
return typeString;
else if (isIDLType)
return completeClassName;
else return null;
}
// This method calls getClazzFromType() and falls back to the repStrToClass
// cache if no class was found. It's used where any class matching the
// given repid is an acceptable result.
public final Class getAnyClassFromType() throws ClassNotFoundException {
try {
return getClassFromType();
} catch (ClassNotFoundException cnfe) {
Class clz = (Class)repStrToClass.get(repId);
if (clz != null)
return clz;
else
throw cnfe;
}
}
public final Class getClassFromType()
throws ClassNotFoundException {
if (clazz != null)
return clazz;
Class specialCase = (Class)kSpecialCasesClasses.get(getClassName());
if (specialCase != null){
clazz = specialCase;
return specialCase;
}
else
{
try{
return Util.loadClass(getClassName(), null, null);
}
catch(ClassNotFoundException cnfe){
if (defaultServerURL != null) {
try{
return getClassFromType(defaultServerURL);
}
catch(MalformedURLException mue){
throw cnfe;
}
}
else throw cnfe;
}
}
}
public final Class getClassFromType(Class expectedType, String codebase)
throws ClassNotFoundException {
if (clazz != null)
return clazz;
Class specialCase = (Class)kSpecialCasesClasses.get(getClassName());
if (specialCase != null){
clazz = specialCase;
return specialCase;
} else {
ClassLoader expectedTypeClassLoader = (expectedType == null ? null : expectedType.getClassLoader());
return loadClassOfType(getClassName(),
codebase,
expectedTypeClassLoader,
expectedType,
expectedTypeClassLoader);
}
}
public final Class getClassFromType(String url)
throws ClassNotFoundException, MalformedURLException {
return Util.loadClass(getClassName(), url, null);
}
public final String toString() {
return repId;
}
private static String createHashString(java.io.Serializable ser) {
return createHashString(ser.getClass());
}
private static String createHashString(java.lang.Class clazz) {
if (clazz.isInterface() || !java.io.Serializable.class.isAssignableFrom(clazz))
return kInterfaceHashCode;
long actualLong = ObjectStreamClassUtil_1_3.computeStructuralUID(false, clazz);
String hash = null;
if (actualLong == 0)
hash = kInterfaceOnlyHashStr;
else if (actualLong == 1)
hash = kExternalizableHashStr;
else
hash = Long.toHexString(actualLong).toUpperCase();
while(hash.length() < 16){
hash = "0" + hash;
}
long declaredLong = ObjectStreamClassUtil_1_3.computeSerialVersionUID(clazz);
String declared = null;
if (declaredLong == 0)
declared = kInterfaceOnlyHashStr;
else if (declaredLong == 1)
declared = kExternalizableHashStr;
else
declared = Long.toHexString(declaredLong).toUpperCase();
while (declared.length() < 16){
declared = "0" + declared;
}
hash = hash + ":" + declared;
return ":" + hash;
}
/**
* Creates a repository ID for a sequence. This is for expert users only as
* this method assumes the object passed is an array. If passed an object
* that is not an array, it will produce a rep id for a sequence of zero
* length. This would be an error.
* @param ser The Java object to create a repository ID for
**/
public static String createSequenceRepID(java.lang.Object ser){
return createSequenceRepID(ser.getClass());
}
/**
* Creates a repository ID for a sequence. This is for expert users only as
* this method assumes the object passed is an array. If passed an object
* that is not an array, it will produce a malformed rep id.
* @param clazz The Java class to create a repository ID for
**/
public static String createSequenceRepID(java.lang.Class clazz){
synchronized (classSeqToRepStr){
String repid = (String)classSeqToRepStr.get(clazz);
if (repid != null)
return repid;
Class originalClazz = clazz;
Class type = null;
int numOfDims = 0;
while ((type = clazz.getComponentType()) != null) {
numOfDims++;
clazz = type;
}
if (clazz.isPrimitive())
repid = kValuePrefix + originalClazz.getName() + kPrimitiveSequenceValueHash;
else {
StringBuffer buf = new StringBuffer();
buf.append(kValuePrefix);
while(numOfDims-- > 0) {
buf.append("[");
}
buf.append("L");
buf.append(convertToISOLatin1(clazz.getName()));
buf.append(";");
buf.append(createHashString(clazz));
repid = buf.toString();
}
classSeqToRepStr.put(originalClazz,repid);
return repid;
}
}
public static String createForSpecialCase(java.lang.Class clazz){
if (clazz.isArray()){
return createSequenceRepID(clazz);
}
else {
return (String)kSpecialCasesRepIDs.get(clazz);
}
}
public static String createForSpecialCase(java.io.Serializable ser){
Class clazz = ser.getClass();
if (clazz.isArray()){
return createSequenceRepID(ser);
}
else
return createForSpecialCase(clazz);
}
/**
* Creates a repository ID for a normal Java Type.
* @param ser The Java object to create a repository ID for
* @exception com.sun.corba.se.impl.io.TypeMismatchException if ser implements the
* org.omg.CORBA.portable.IDLEntity interface which indicates it is an IDL Value type.
**/
public static String createForJavaType(java.io.Serializable ser)
throws com.sun.corba.se.impl.io.TypeMismatchException
{
synchronized (classToRepStr) {
String repid = createForSpecialCase(ser);
if (repid != null)
return repid;
Class clazz = ser.getClass();
repid = (String)classToRepStr.get(clazz);
if (repid != null)
return repid;
repid = kValuePrefix + convertToISOLatin1(clazz.getName()) +
createHashString(clazz);
classToRepStr.put(clazz, repid);
repStrToClass.put(repid, clazz);
return repid;
}
}
/**
* Creates a repository ID for a normal Java Type.
* @param clz The Java class to create a repository ID for
* @exception com.sun.corba.se.impl.io.TypeMismatchException if ser implements the
* org.omg.CORBA.portable.IDLEntity interface which indicates it is an IDL Value type.
**/
public static String createForJavaType(Class clz)
throws com.sun.corba.se.impl.io.TypeMismatchException
{
synchronized (classToRepStr){
String repid = createForSpecialCase(clz);
if (repid != null)
return repid;
repid = (String)classToRepStr.get(clz);
if (repid != null)
return repid;
repid = kValuePrefix + convertToISOLatin1(clz.getName()) +
createHashString(clz);
classToRepStr.put(clz, repid);
repStrToClass.put(repid, clz);
return repid;
}
}
/**
* Creates a repository ID for an IDL Java Type.
* @param ser The IDL Value object to create a repository ID for
* @param major The major version number
* @param minor The minor version number
* @exception com.sun.corba.se.impl.io.TypeMismatchException if ser does not implement the
* org.omg.CORBA.portable.IDLEntity interface which indicates it is an IDL Value type.
**/
public static String createForIDLType(Class ser, int major, int minor)
throws com.sun.corba.se.impl.io.TypeMismatchException
{
synchronized (classIDLToRepStr){
String repid = (String)classIDLToRepStr.get(ser);
if (repid != null)
return repid;
repid = kIDLPrefix + convertToISOLatin1(ser.getName()).replace('.','/') +
":" + major + "." + minor;
classIDLToRepStr.put(ser, repid);
return repid;
}
}
private static String getIdFromHelper(Class clazz){
try {
Class helperClazz = Utility.loadClassForClass(clazz.getName()+"Helper", null,
clazz.getClassLoader(), clazz, clazz.getClassLoader());
Method idMethod = helperClazz.getDeclaredMethod("id", kNoParamTypes);
return (String)idMethod.invoke(null, kNoArgs);
}
catch(java.lang.ClassNotFoundException cnfe)
{
throw new org.omg.CORBA.MARSHAL(cnfe.toString());
}
catch(java.lang.NoSuchMethodException nsme)
{
throw new org.omg.CORBA.MARSHAL(nsme.toString());
}
catch(java.lang.reflect.InvocationTargetException ite)
{
throw new org.omg.CORBA.MARSHAL(ite.toString());
}
catch(java.lang.IllegalAccessException iae)
{
throw new org.omg.CORBA.MARSHAL(iae.toString());
}
}
/**
* Createa a repository ID for the type if it is either a java type
* or an IDL type.
* @param type The type to create rep. id for
* @return The rep. id.
**/
public static String createForAnyType(Class type) {
try{
if (type.isArray())
return createSequenceRepID(type);
else if (IDLEntity.class.isAssignableFrom(type))
{
try{
return getIdFromHelper(type);
}
catch(Throwable t) {
return createForIDLType(type, 1, 0);
}
}
else return createForJavaType(type);
}
catch(com.sun.corba.se.impl.io.TypeMismatchException e){
return null;
}
}
public static boolean isAbstractBase(Class clazz) {
return (clazz.isInterface() &&
IDLEntity.class.isAssignableFrom(clazz) &&
(!ValueBase.class.isAssignableFrom(clazz)) &&
(!org.omg.CORBA.Object.class.isAssignableFrom(clazz)));
}
/**
* Convert strings with illegal IDL identifier characters.
* <p>
* Section 5.5.7 of OBV spec.
*/
private static String convertToISOLatin1 (String name) {
int length = name.length();
if (length == 0) {
return name;
}
StringBuffer buffer = null;
for (int i = 0; i < length; i++) {
char c = name.charAt(i);
if (c > 255 || IDL_IDENTIFIER_CHARS[c] == 0) {
// We gotta convert. Have we already started?
if (buffer == null) {
// No, so get set up...
buffer = new StringBuffer(name.substring(0,i));
}
// Convert the character into the IDL escape syntax...
buffer.append(
"\\U" +
(char)ASCII_HEX[(c & 0xF000) >>> 12] +
(char)ASCII_HEX[(c & 0x0F00) >>> 8] +
(char)ASCII_HEX[(c & 0x00F0) >>> 4] +
(char)ASCII_HEX[(c & 0x000F)]);
} else {
if (buffer != null) {
buffer.append(c);
}
}
}
if (buffer != null) {
name = buffer.toString();
}
return name;
}
/**
* Convert strings with ISO Latin 1 escape sequences back to original strings.
* <p>
* Section 5.5.7 of OBV spec.
*/
private static String convertFromISOLatin1 (String name) {
int index = -1;
StringBuffer buf = new StringBuffer(name);
while ((index = buf.toString().indexOf("\\U")) != -1){
String str = "0000" + buf.toString().substring(index+2, index+6);
// Convert Hexadecimal
byte[] buffer = new byte[(str.length() - 4) / 2];
for (int i=4, j=0; i < str.length(); i +=2, j++) {
buffer[j] = (byte)((ORBUtility.hexOf(str.charAt(i)) << 4) & 0xF0);
buffer[j] |= (byte)((ORBUtility.hexOf(str.charAt(i+1)) << 0) & 0x0F);
}
buf = new StringBuffer(delete(buf.toString(), index, index+6));
buf.insert(index, (char)buffer[1]);
}
return buf.toString();
}
private static String delete(String str, int from, int to)
{
return str.substring(0, from) + str.substring(to, str.length());
}
private static String replace(String target, String arg, String source)
{
int i = 0;
i = target.indexOf(arg);
while(i != -1)
{
String left = target.substring(0, i);
String right = target.substring(i+arg.length());
target = new String(left+source+right);
i = target.indexOf(arg);
}
return target;
}
/*
* Load a class and check that it is assignable to a given type.
* @param className the class name.
* @param remoteCodebase the codebase to use. May be null.
* @param loader the class loader of last resort. May be null.
* @param expectedType the expected type. May be null.
* @return the loaded class.
*/
private Class loadClassOfType (String className,
String remoteCodebase,
ClassLoader loader,
Class expectedType,
ClassLoader expectedTypeClassLoader)
throws ClassNotFoundException {
Class loadedClass = null;
try {
//Sequence finding of the stubs according to spec
try{
//If-else is put here for speed up of J2EE.
//According to the OMG spec, the if clause is not dead code.
//It can occur if some compiler has allowed generation
//into org.omg.stub hierarchy for non-offending
//classes. This will encourage people to
//produce non-offending class stubs in their own hierarchy.
if(!PackagePrefixChecker
.hasOffendingPrefix(PackagePrefixChecker
.withoutPackagePrefix(className))){
loadedClass = Util.loadClass
(PackagePrefixChecker.withoutPackagePrefix(className),
remoteCodebase,
loader);
} else {
loadedClass = Util.loadClass
(className,
remoteCodebase,
loader);
}
} catch (ClassNotFoundException cnfe) {
loadedClass = Util.loadClass
(className,
remoteCodebase,
loader);
}
if (expectedType == null)
return loadedClass;
} catch (ClassNotFoundException cnfe) {
if (expectedType == null)
throw cnfe;
}
// If no class was not loaded, or if the loaded class is not of the
// correct type, make a further attempt to load the correct class
// using the classloader of the expected type.
// _REVISIT_ Is this step necessary, or should the Util,loadClass
// algorithm always produce a valid class if the setup is correct?
// Does the OMG standard algorithm need to be changed to include
// this step?
if (loadedClass == null || !expectedType.isAssignableFrom(loadedClass)) {
if (expectedType.getClassLoader() != expectedTypeClassLoader)
throw new IllegalArgumentException("expectedTypeClassLoader not class loader of expectedType.");
if (expectedTypeClassLoader != null)
loadedClass = expectedTypeClassLoader.loadClass(className);
else
loadedClass = ORBClassLoader.loadClass(className);
}
return loadedClass;
}
/**
* Checks to see if the FullValueDescription should be retrieved.
* @exception Throws IOException if suids do not match or if the repositoryID
* is not an RMIValueType
*/
public static boolean useFullValueDescription(Class clazz, String repositoryID)
throws IOException{
String clazzRepIDStr = createForAnyType(clazz);
if (clazzRepIDStr.equals(repositoryID))
return false;
RepositoryId_1_3 targetRepid;
RepositoryId_1_3 clazzRepid;
synchronized(cache) {
// to avoid race condition where multiple threads could be
// accessing this method, and their access to the cache may
// be interleaved giving unexpected results
targetRepid = cache.getId(repositoryID);
clazzRepid = cache.getId(clazzRepIDStr);
}
if ((targetRepid.isRMIValueType()) && (clazzRepid.isRMIValueType())){
if (!targetRepid.getSerialVersionUID().equals(clazzRepid.getSerialVersionUID())) {
String mssg = "Mismatched serialization UIDs : Source (Rep. ID" +
clazzRepid + ") = " +
clazzRepid.getSerialVersionUID() + " whereas Target (Rep. ID " + repositoryID +
") = " + targetRepid.getSerialVersionUID();
throw new IOException(mssg);
} else {
return true;
}
} else {
throw new IOException("The repository ID is not of an RMI value type (Expected ID = " + clazzRepIDStr + "; Received ID = " + repositoryID +")");
}
}
}

View File

@@ -1,251 +0,0 @@
/*
* Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* Licensed Materials - Property of IBM
* RMI-IIOP v1.0
* Copyright IBM Corp. 1998 1999 All Rights Reserved
*
*/
package com.sun.corba.se.impl.orbutil;
import javax.rmi.CORBA.Util;
import javax.rmi.PortableRemoteObject;
import java.util.Hashtable;
import java.util.Stack;
import java.io.IOException;
import java.util.EmptyStackException;
import com.sun.corba.se.impl.util.Utility;
import com.sun.corba.se.impl.io.IIOPInputStream;
import com.sun.corba.se.impl.io.IIOPOutputStream;
import com.sun.corba.se.impl.util.RepositoryId;
import com.sun.corba.se.impl.util.Utility;
import org.omg.CORBA.TCKind;
import org.omg.CORBA.MARSHAL;
import org.omg.CORBA.CompletionStatus;
import org.omg.CORBA.portable.IndirectionException;
import com.sun.org.omg.SendingContext.CodeBase;
import java.security.AccessController;
import java.security.PrivilegedAction;
/**
* This class overrides behavior of our current ValueHandlerImpl to
* provide backwards compatibility with JDK 1.3.0.
*/
public class ValueHandlerImpl_1_3 extends com.sun.corba.se.impl.io.ValueHandlerImpl {
public ValueHandlerImpl_1_3(){
super();
}
public ValueHandlerImpl_1_3(boolean isInputStream) {
super(isInputStream);
}
/**
* Writes the value to the stream using java semantics.
* @param out The stream to write the value to
* @param value The value to be written to the stream
**/
public void writeValue(org.omg.CORBA.portable.OutputStream _out, java.io.Serializable value) {
super.writeValue(_out, value);
}
/**
* Reads a value from the stream using java semantics.
* @param in The stream to read the value from
* @param clazz The type of the value to be read in
* @param sender The sending context runtime
**/
public java.io.Serializable readValue(org.omg.CORBA.portable.InputStream _in,
int offset,
java.lang.Class clazz,
String repositoryID,
org.omg.SendingContext.RunTime _sender)
{
return super.readValue(_in, offset, clazz, repositoryID, _sender);
}
/**
* Returns the repository ID for the given RMI value Class.
* @param clz The class to return a repository ID for.
* @return the repository ID of the Class.
**/
public java.lang.String getRMIRepositoryID(java.lang.Class clz) {
return RepositoryId_1_3.createForJavaType(clz);
}
/**
* Indicates whether the given Class performs custom or
* default marshaling.
* @param clz The class to test for custom marshaling.
* @return True if the class performs custom marshaling, false
* if it does not.
**/
public boolean isCustomMarshaled(java.lang.Class clz) {
return super.isCustomMarshaled(clz);
}
/**
* Returns the CodeBase for this ValueHandler. This is used by
* the ORB runtime. The server sends the service context containing
* the IOR for this CodeBase on the first GIOP reply. The clients
* do the same on the first GIOP request.
* @return the SendingContext.CodeBase of this ValueHandler.
**/
public org.omg.SendingContext.RunTime getRunTimeCodeBase() {
return super.getRunTimeCodeBase();
}
/**
* If the value contains a writeReplace method then the result
* is returned. Otherwise, the value itself is returned.
* @return the true value to marshal on the wire.
**/
public java.io.Serializable writeReplace(java.io.Serializable value) {
return super.writeReplace(value);
}
// methods supported for backward compatability so that the appropriate
// Rep-id calculations take place based on the ORB version
/**
* Returns a boolean of whether or not RepositoryId indicates
* FullValueDescriptor.
* used for backward compatability
*/
public boolean useFullValueDescription(Class clazz, String repositoryID)
throws IOException
{
return RepositoryId_1_3.useFullValueDescription(clazz, repositoryID);
}
public String getClassName(String id)
{
RepositoryId_1_3 repID = RepositoryId_1_3.cache.getId(id);
return repID.getClassName();
}
public Class getClassFromType(String id)
throws ClassNotFoundException
{
RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
return repId.getClassFromType();
}
public Class getAnyClassFromType(String id)
throws ClassNotFoundException
{
RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
return repId.getAnyClassFromType();
}
public String createForAnyType(Class cl)
{
return RepositoryId_1_3.createForAnyType(cl);
}
public String getDefinedInId(String id)
{
RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
return repId.getDefinedInId();
}
public String getUnqualifiedName(String id)
{
RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
return repId.getUnqualifiedName();
}
public String getSerialVersionUID(String id)
{
RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
return repId.getSerialVersionUID();
}
public boolean isAbstractBase(Class clazz)
{
return RepositoryId_1_3.isAbstractBase(clazz);
}
public boolean isSequence(String id)
{
RepositoryId_1_3 repId = RepositoryId_1_3.cache.getId(id);
return repId.isSequence();
}
/**
* Preserves the incorrect 1.3 behavior which truncates Java chars in
* arrays to 8-bit CORBA chars. Bug 4367783. This enables us to
* continue interoperating with our legacy ORBs. If this goes into
* Ladybird, then Ladybird and Kestrel will interoperate as long as
* people don't use chars greater than 8-bits.
*/
protected void writeCharArray(org.omg.CORBA_2_3.portable.OutputStream out,
char[] array,
int offset,
int length)
{
out.write_char_array(array, offset, length);
}
/**
* Preserves the incorrect 1.3 behavior which truncates Java chars in
* arrays to 8-bit CORBA chars. Bug 4367783. This enables us to
* continue interoperating with our legacy ORBs. If this goes into
* Ladybird, then Ladybird and Kestrel will interoperate as long as
* people don't use chars greater than 8-bits.
*/
protected void readCharArray(org.omg.CORBA_2_3.portable.InputStream in,
char[] array,
int offset,
int length)
{
in.read_char_array(array, offset, length);
}
protected final String getOutputStreamClassName() {
return "com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3";
}
protected final String getInputStreamClassName() {
return "com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3";
}
/**
* Our JDK 1.3 and JDK 1.3.1 behavior subclasses override this.
* The correct behavior is for a Java char to map to a CORBA wchar,
* but our older code mapped it to a CORBA char.
*/
protected TCKind getJavaCharTCKind() {
return TCKind.tk_char;
}
}

View File

@@ -1,77 +0,0 @@
/*
* Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.corba.se.impl.orbutil;
import org.omg.CORBA.TCKind;
/**
* This class overrides behavior of our current ValueHandlerImpl to
* provide backwards compatibility with JDK 1.3.1.
*/
public class ValueHandlerImpl_1_3_1
extends com.sun.corba.se.impl.io.ValueHandlerImpl
{
public ValueHandlerImpl_1_3_1() {}
public ValueHandlerImpl_1_3_1(boolean isInputStream) {
super(isInputStream);
}
/**
* Our JDK 1.3 and JDK 1.3.1 behavior subclasses override this.
* The correct behavior is for a Java char to map to a CORBA wchar,
* but our older code mapped it to a CORBA char.
*/
protected TCKind getJavaCharTCKind() {
return TCKind.tk_char;
}
/**
* RepositoryId_1_3_1 performs an incorrect repId calculation
* when using serialPersistentFields and one of the fields no longer
* exists on the class itself.
*/
public boolean useFullValueDescription(Class clazz, String repositoryID)
throws java.io.IOException
{
return RepositoryId_1_3_1.useFullValueDescription(clazz, repositoryID);
}
/**
* Installs the legacy IIOPOutputStream_1_3_1 which does
* PutFields/GetFields incorrectly. Bug 4407244.
*/
protected final String getOutputStreamClassName() {
return "com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3_1";
}
/**
* Installs the legacy IIOPInputStream_1_3_1 which does
* PutFields/GetFields incorrectly. Bug 4407244.
*/
protected final String getInputStreamClassName() {
return "com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3_1";
}
}

View File

@@ -98,6 +98,7 @@ import com.sun.corba.se.impl.logging.OMGSystemException ;
import com.sun.corba.se.impl.presentation.rmi.PresentationManagerImpl ;
import com.sun.corba.se.impl.orbutil.ORBClassLoader ;
import sun.awt.AppContext;
public abstract class ORB extends com.sun.corba.se.org.omg.CORBA.ORB
implements Broker, TypeCodeFactory
@@ -173,14 +174,7 @@ public abstract class ORB extends com.sun.corba.se.org.omg.CORBA.ORB
protected MonitoringManager monitoringManager;
// There is only one instance of the PresentationManager
// that is shared between all ORBs. This is necessary
// because RMI-IIOP requires the PresentationManager in
// places where no ORB is available, so the PresentationManager
// must be global. It is initialized here as well.
protected static PresentationManager globalPM = null ;
static {
private static PresentationManager setupPresentationManager() {
staticWrapper = ORBUtilSystemException.get(
CORBALogDomains.RPC_PRESENTATION ) ;
@@ -220,10 +214,11 @@ public abstract class ORB extends com.sun.corba.se.org.omg.CORBA.ORB
}
) ;
globalPM = new PresentationManagerImpl( useDynamicStub ) ;
globalPM.setStubFactoryFactory( false,
PresentationManager pm = new PresentationManagerImpl( useDynamicStub ) ;
pm.setStubFactoryFactory( false,
PresentationDefaults.getStaticStubFactoryFactory() ) ;
globalPM.setStubFactoryFactory( true, dynamicStubFactoryFactory ) ;
pm.setStubFactoryFactory( true, dynamicStubFactoryFactory ) ;
return pm;
}
public void destroy() {
@@ -234,11 +229,19 @@ public abstract class ORB extends com.sun.corba.se.org.omg.CORBA.ORB
byteBufferPool = null;
}
/** Get the single instance of the PresentationManager
/**
* Returns the Presentation Manager for the current thread group, using the ThreadGroup-specific
* AppContext to hold it. Creates and records one if needed.
*/
public static PresentationManager getPresentationManager()
{
return globalPM ;
AppContext ac = AppContext.getAppContext();
PresentationManager pm = (PresentationManager) ac.get(PresentationManager.class);
if (pm == null) {
pm = setupPresentationManager();
ac.put(PresentationManager.class, pm);
}
return pm;
}
/** Get the appropriate StubFactoryFactory. This
@@ -248,8 +251,9 @@ public abstract class ORB extends com.sun.corba.se.org.omg.CORBA.ORB
public static PresentationManager.StubFactoryFactory
getStubFactoryFactory()
{
boolean useDynamicStubs = globalPM.useDynamicStubs() ;
return globalPM.getStubFactoryFactory( useDynamicStubs ) ;
PresentationManager gPM = getPresentationManager();
boolean useDynamicStubs = gPM.useDynamicStubs() ;
return gPM.getStubFactoryFactory( useDynamicStubs ) ;
}
protected ORB()

View File

@@ -0,0 +1,32 @@
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.corba;
import com.sun.corba.se.impl.io.ValueHandlerImpl;
public interface JavaCorbaAccess {
public ValueHandlerImpl newValueHandlerImpl();
}

View File

@@ -0,0 +1,60 @@
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.corba;
import com.sun.corba.se.impl.io.ValueUtility;
import sun.misc.Unsafe;
import java.security.AccessController;
/** A repository of "shared secrets", which are a mechanism for
calling implementation-private methods in another package without
using reflection. A package-private class implements a public
interface and provides the ability to call package-private methods
within that package; the object implementing that interface is
provided through a third package to which access is restricted.
This framework avoids the primary disadvantage of using reflection
for this purpose, namely the loss of compile-time checking. */
// SharedSecrets cloned in corba repo to avoid build issues
public class SharedSecrets {
private static final Unsafe unsafe = Unsafe.getUnsafe();
private static JavaCorbaAccess javaCorbaAccess;
public static JavaCorbaAccess getJavaCorbaAccess() {
if (javaCorbaAccess == null) {
// Ensure ValueUtility is initialized; we know that that class
// provides the shared secret
unsafe.ensureClassInitialized(ValueUtility.class);
}
return javaCorbaAccess;
}
public static void setJavaCorbaAccess(JavaCorbaAccess access) {
javaCorbaAccess = access;
}
}

View File

@@ -26,7 +26,7 @@
#
# Get clones of all nested repositories
sh ./common/bin/hgforest.sh clone "$@"
sh ./common/bin/hgforest.sh clone "$@" || exit 1
# Update all existing repositories to the latest sources
sh ./common/bin/hgforest.sh pull -u

View File

@@ -311,3 +311,16 @@ d5cb5830f570d1304ea4b196dde672a291b55f29 jdk8-b72
70c89bd6b895a10d25ca70e08093c09ff2005fda hs25-b16
1a3e54283c54aaa8b3437813e8507fbdc966e5b6 jdk8-b74
b4391649e91ea8d37f66317a03d6d2573a93d10d hs25-b17
6778d0b1659323a506ca47600ca29a9d9f8b383d jdk8-b75
20b605466ccb1b3725eb25314d9e8782199630c5 jdk8-b76
412d722168bc23f8e6d98995202728678561417f hs25-b18
cdb46031e7184d37301288f5719121a63c7054b5 jdk8-b77
9f19f4a7d48a4ebe7f616b6068971ea5f8b075fa hs25-b19
d5e12e7d2f719144d84903d9151455661c47b476 jdk8-b78
555ec35a250783110aa070dbc8a8603f6cabe41f hs25-b20
6691814929b606fe0e7954fd6e485dd876505c83 jdk8-b79
df5396524152118535c36da5801d828b560d19a2 hs25-b21
4a198b201f3ce84433fa94a3ca65d061473e7c4c jdk8-b80
dd6350b4abc4a6c19c89dd982cc0e4f3d119885c hs25-b22
65b797426a3bec6e91b64085a0cfb94adadb634a jdk8-b81
0631ebcc45f05c73b09a56c2586685af1f781c1d hs25-b23

View File

@@ -19,7 +19,7 @@
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
#
#
# This guards against adding broken .java files to the directory
@@ -42,8 +42,6 @@ PKGLIST = \
sun.jvm.hotspot \
sun.jvm.hotspot.asm \
sun.jvm.hotspot.asm.sparc \
sun.jvm.hotspot.bugspot \
sun.jvm.hotspot.bugspot.tree \
sun.jvm.hotspot.c1 \
sun.jvm.hotspot.ci \
sun.jvm.hotspot.code \
@@ -84,7 +82,6 @@ sun.jvm.hotspot.gc_implementation.shared \
sun.jvm.hotspot.gc_interface \
sun.jvm.hotspot.interpreter \
sun.jvm.hotspot.jdi \
sun.jvm.hotspot.livejvm \
sun.jvm.hotspot.memory \
sun.jvm.hotspot.opto \
sun.jvm.hotspot.oops \
@@ -130,8 +127,6 @@ FILELIST = \
sun/jvm/hotspot/*.java \
sun/jvm/hotspot/asm/*.java \
sun/jvm/hotspot/asm/sparc/*.java \
sun/jvm/hotspot/bugspot/*.java \
sun/jvm/hotspot/bugspot/tree/*.java \
sun/jvm/hotspot/c1/*.java \
sun/jvm/hotspot/ci/*.java \
sun/jvm/hotspot/code/*.java \
@@ -168,7 +163,6 @@ sun/jvm/hotspot/gc_implementation/parallelScavenge/*.java \
sun/jvm/hotspot/gc_implementation/shared/*.java \
sun/jvm/hotspot/interpreter/*.java \
sun/jvm/hotspot/jdi/*.java \
sun/jvm/hotspot/livejvm/*.java \
sun/jvm/hotspot/memory/*.java \
sun/jvm/hotspot/oops/*.java \
sun/jvm/hotspot/opto/*.java \
@@ -205,7 +199,7 @@ sun/jvm/hotspot/utilities/*.java \
sun/jvm/hotspot/utilities/memo/*.java \
sun/jvm/hotspot/utilities/soql/*.java \
com/sun/java/swing/action/*.java \
com/sun/java/swing/ui/*.java
com/sun/java/swing/ui/*.java
#END FILELIST
ifneq "x$(ALT_BOOTDIR)" "x"
@@ -231,7 +225,7 @@ BUILD_DIR = ../build
OUTPUT_DIR = $(BUILD_DIR)/classes
DOC_DIR = $(BUILD_DIR)/doc
# gnumake 3.78.1 does not accept the *s,
# gnumake 3.78.1 does not accept the *s,
# so use the shell to expand them
ALLFILES := $(patsubst %,$(SRC_DIR)/%,$(FILELIST))
ALLFILES := $(shell /bin/ls $(ALLFILES))
@@ -303,7 +297,7 @@ sizes: $(ALLFILES)
cscope: $(ALLFILES)
rm -f java.files
echo $(ALLFILES) > java.files
cscope -b -i java.files -f java.out
cscope -b -i java.files -f java.out
rm -f java.files
.PHONY: sa.jar

View File

@@ -1,25 +0,0 @@
REM
REM Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
REM
REM This code is free software; you can redistribute it and/or modify it
REM under the terms of the GNU General Public License version 2 only, as
REM published by the Free Software Foundation.
REM
REM This code is distributed in the hope that it will be useful, but WITHOUT
REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
REM version 2 for more details (a copy is included in the LICENSE file that
REM accompanied this code).
REM
REM You should have received a copy of the GNU General Public License version
REM 2 along with this work; if not, write to the Free Software Foundation,
REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
REM
REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
REM or visit www.oracle.com if you need additional information or have any
REM questions.
REM
REM
java -showversion -cp ..\build\classes;..\src\share\lib\js.jar;.\sa.jar;lib\js.jar sun.jvm.hotspot.bugspot.Main

View File

@@ -26,14 +26,12 @@
<ul>
<li><code>java -cp classes sun.jvm.hotspot.HSDB</code>
<li><code>java -cp classes sun.jvm.hotspot.bugspot.Main</code>
</ul>
<h2>Feedback</h2>
<p>
Refactoring of package hierarchy. All user interface components should be in
the ui package. Perhaps: sun.jvm.hotspot.ui.hsdb.Main for the HSDB and
sun.jvm.hotspot.ui.bugspot.Main for BugSpot.
the ui package. Perhaps: sun.jvm.hotspot.ui.hsdb.Main for the HSDB.
<p>
The src\share\vm\agent area seems like a workspace so it should be organized like
one. In particular, I'd like to suggest the following directory layout:<br>
@@ -47,7 +45,7 @@
</ul>
<p>
Seems like there is a lot of redundant functionality. Between the HSDB and BugSpot. Perhaps
Seems like there is a lot of redundant functionality. Perhaps
this can be consolidated with a <code>javax.swing.Actions</code> architecture.
<h2>Tasklist</h2>
@@ -55,11 +53,7 @@
<p>
<b>Stack memory pane</b>:
It's one of the more useful JVM debugging tools in the SA. However, it
doesn't support any interaction with the text; the Memory Panel in BugSpot
was written afterward (with help from Shannon) and implements proper
selection, scrolling, and drag-and-drop, but no annotations. I'm not sure how
to integrate the annotations with the JTable that's being used for the memory
view; if you have suggestions here please let me know.
doesn't support any interaction with the text.
<p>
<b>Integrations with the NetBeans architecture (plug in).</b> See the
<a href="http://openide.netbeans.org">Netbeans Open APIs homepage</a>

View File

@@ -38,6 +38,8 @@
#import <dlfcn.h>
#import <limits.h>
#import <errno.h>
#import <sys/types.h>
#import <sys/ptrace.h>
jboolean debug = JNI_FALSE;
@@ -97,7 +99,8 @@ static void throw_new_debugger_exception(JNIEnv* env, const char* errMsg) {
* Method: init0
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_init0(JNIEnv *env, jclass cls) {
JNIEXPORT void JNICALL
Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_init0(JNIEnv *env, jclass cls) {
symbolicatorID = (*env)->GetFieldID(env, cls, "symbolicator", "J");
taskID = (*env)->GetFieldID(env, cls, "task", "J");
CHECK_EXCEPTION;
@@ -108,7 +111,11 @@ JNIEXPORT void JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_init0(
* Method: lookupByName0
* Signature: (Ljava/lang/String;Ljava/lang/String;)J
*/
JNIEXPORT jlong JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_lookupByName0(JNIEnv *env, jobject this_obj, jstring objectName, jstring symbolName) {
JNIEXPORT jlong JNICALL
Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_lookupByName0(
JNIEnv *env, jobject this_obj,
jstring objectName, jstring symbolName)
{
jlong address = 0;
JNF_COCOA_ENTER(env);
@@ -137,7 +144,11 @@ JNF_COCOA_EXIT(env);
* Method: readBytesFromProcess0
* Signature: (JJ)Lsun/jvm/hotspot/debugger/ReadResult;
*/
JNIEXPORT jbyteArray JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_readBytesFromProcess0(JNIEnv *env, jobject this_obj, jlong addr, jlong numBytes) {
JNIEXPORT jbyteArray JNICALL
Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_readBytesFromProcess0(
JNIEnv *env, jobject this_obj,
jlong addr, jlong numBytes)
{
if (debug) printf("readBytesFromProcess called. addr = %llx numBytes = %lld\n", addr, numBytes);
// must allocate storage instead of using former parameter buf
@@ -149,7 +160,7 @@ JNIEXPORT jbyteArray JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_
CHECK_EXCEPTION_(0);
unsigned long alignedAddress;
unsigned long alignedLength;
unsigned long alignedLength = 0;
kern_return_t result;
vm_offset_t *pages;
int *mapped;
@@ -209,12 +220,74 @@ JNIEXPORT jbyteArray JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_
return array;
}
/*
* Class: sun_jvm_hotspot_debugger_macosx_MacOSXDebuggerLocal
* Method: getThreadIntegerRegisterSet0
* Signature: (I)[J
* Lookup the thread_t that corresponds to the given thread_id.
* The thread_id should be the result from calling thread_info() with THREAD_IDENTIFIER_INFO
* and reading the m_ident_info.thread_id returned.
* The returned thread_t is the mach send right to the kernel port for the corresponding thread.
*
* We cannot simply use the OSThread._thread_id field in the JVM. This is set to ::mach_thread_self()
* in the VM, but that thread port is not valid for a remote debugger to access the thread.
*/
JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_getThreadIntegerRegisterSet0(JNIEnv *env, jobject this_obj, jint lwp_id) {
thread_t
lookupThreadFromThreadId(task_t task, jlong thread_id) {
if (debug) {
printf("lookupThreadFromThreadId thread_id=0x%llx\n", thread_id);
}
thread_array_t thread_list = NULL;
mach_msg_type_number_t thread_list_count = 0;
thread_t result_thread = 0;
int i;
// get the list of all the send rights
kern_return_t result = task_threads(task, &thread_list, &thread_list_count);
if (result != KERN_SUCCESS) {
if (debug) {
printf("task_threads returned 0x%x\n", result);
}
return 0;
}
for(i = 0 ; i < thread_list_count; i++) {
thread_identifier_info_data_t m_ident_info;
mach_msg_type_number_t count = THREAD_IDENTIFIER_INFO_COUNT;
// get the THREAD_IDENTIFIER_INFO for the send right
result = thread_info(thread_list[i], THREAD_IDENTIFIER_INFO, (thread_info_t) &m_ident_info, &count);
if (result != KERN_SUCCESS) {
if (debug) {
printf("thread_info returned 0x%x\n", result);
}
break;
}
// if this is the one we're looking for, return the send right
if (thread_id == m_ident_info.thread_id)
{
result_thread = thread_list[i];
break;
}
}
vm_size_t thread_list_size = (vm_size_t) (thread_list_count * sizeof (thread_t));
vm_deallocate(mach_task_self(), (vm_address_t) thread_list, thread_list_count);
return result_thread;
}
/*
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal
* Method: getThreadIntegerRegisterSet0
* Signature: (J)[J
*/
JNIEXPORT jlongArray JNICALL
Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_getThreadIntegerRegisterSet0(
JNIEnv *env, jobject this_obj,
jlong thread_id)
{
if (debug)
printf("getThreadRegisterSet0 called\n");
@@ -226,8 +299,9 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_
int i;
jlongArray registerArray;
jlong *primitiveArray;
task_t gTask = getTask(env, this_obj);
tid = lwp_id;
tid = lookupThreadFromThreadId(gTask, thread_id);
result = thread_get_state(tid, HSDB_THREAD_STATE, (thread_state_t)&state, &count);
@@ -328,19 +402,21 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_
}
/*
* Class: sun_jvm_hotspot_debugger_macosx_MacOSXDebuggerLocal
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal
* Method: translateTID0
* Signature: (I)I
*/
JNIEXPORT jint JNICALL
Java_sun_jvm_hotspot_debugger_macosx_MacOSXDebuggerLocal_translateTID0(JNIEnv *env, jobject this_obj, jint tid) {
Java_sun_jvm_hotspot_debugger_macosx_MacOSXDebuggerLocal_translateTID0(
JNIEnv *env, jobject this_obj, jint tid)
{
if (debug)
printf("translateTID0 called on tid = 0x%x\n", (int)tid);
kern_return_t result;
thread_t foreign_tid, usable_tid;
mach_msg_type_name_t type;
foreign_tid = tid;
task_t gTask = getTask(env, this_obj);
@@ -356,19 +432,90 @@ Java_sun_jvm_hotspot_debugger_macosx_MacOSXDebuggerLocal_translateTID0(JNIEnv *e
return (jint) usable_tid;
}
static bool ptrace_continue(pid_t pid, int signal) {
// pass the signal to the process so we don't swallow it
int res;
if ((res = ptrace(PT_CONTINUE, pid, (caddr_t)1, signal)) < 0) {
fprintf(stderr, "attach: ptrace(PT_CONTINUE, %d) failed with %d\n", pid, res);
return false;
}
return true;
}
// waits until the ATTACH has stopped the process
// by signal SIGSTOP
static bool ptrace_waitpid(pid_t pid) {
int ret;
int status;
while (true) {
// Wait for debuggee to stop.
ret = waitpid(pid, &status, 0);
if (ret >= 0) {
if (WIFSTOPPED(status)) {
// Any signal will stop the thread, make sure it is SIGSTOP. Otherwise SIGSTOP
// will still be pending and delivered when the process is DETACHED and the process
// will go to sleep.
if (WSTOPSIG(status) == SIGSTOP) {
// Debuggee stopped by SIGSTOP.
return true;
}
if (!ptrace_continue(pid, WSTOPSIG(status))) {
fprintf(stderr, "attach: Failed to correctly attach to VM. VM might HANG! [PTRACE_CONT failed, stopped by %d]\n", WSTOPSIG(status));
return false;
}
} else {
fprintf(stderr, "attach: waitpid(): Child process exited/terminated (status = 0x%x)\n", status);
return false;
}
} else {
switch (errno) {
case EINTR:
continue;
break;
case ECHILD:
fprintf(stderr, "attach: waitpid() failed. Child process pid (%d) does not exist \n", pid);
break;
case EINVAL:
fprintf(stderr, "attach: waitpid() failed. Invalid options argument.\n");
break;
default:
fprintf(stderr, "attach: waitpid() failed. Unexpected error %d\n",errno);
break;
}
return false;
}
}
}
// attach to a process/thread specified by "pid"
static bool ptrace_attach(pid_t pid) {
int res;
if ((res = ptrace(PT_ATTACH, pid, 0, 0)) < 0) {
fprintf(stderr, "ptrace(PT_ATTACH, %d) failed with %d\n", pid, res);
return false;
} else {
return ptrace_waitpid(pid);
}
}
/*
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal
* Method: attach0
* Signature: (I)V
*/
JNIEXPORT void JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_attach0__I(JNIEnv *env, jobject this_obj, jint jpid) {
JNIEXPORT void JNICALL
Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_attach0__I(
JNIEnv *env, jobject this_obj, jint jpid)
{
JNF_COCOA_ENTER(env);
if (getenv("JAVA_SAPROC_DEBUG") != NULL)
debug = JNI_TRUE;
else
debug = JNI_FALSE;
if (debug) printf("attach0 called for jpid=%d\n", (int)jpid);
// get the task from the pid
kern_return_t result;
task_t gTask = 0;
result = task_for_pid(mach_task_self(), jpid, &gTask);
@@ -378,6 +525,13 @@ JNF_COCOA_ENTER(env);
}
putTask(env, this_obj, gTask);
// use ptrace to stop the process
// on os x, ptrace only needs to be called on the process, not the individual threads
if (ptrace_attach(jpid) != true) {
mach_port_deallocate(mach_task_self(), gTask);
THROW_NEW_DEBUGGER_EXCEPTION("Can't attach to the process");
}
id symbolicator = nil;
id jrsSymbolicator = objc_lookUpClass("JRSSymbolicator");
if (jrsSymbolicator != nil) {
@@ -401,11 +555,29 @@ JNF_COCOA_EXIT(env);
* Method: detach0
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_detach0(JNIEnv *env, jobject this_obj) {
JNIEXPORT void JNICALL
Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_detach0(
JNIEnv *env, jobject this_obj)
{
JNF_COCOA_ENTER(env);
if (debug) printf("detach0 called\n");
task_t gTask = getTask(env, this_obj);
// detach from the ptraced process causing it to resume execution
int pid;
kern_return_t k_res;
k_res = pid_for_task(gTask, &pid);
if (k_res != KERN_SUCCESS) {
fprintf(stderr, "detach: pid_for_task(%d) failed (%d)\n", pid, k_res);
}
else {
int res = ptrace(PT_DETACH, pid, 0, 0);
if (res < 0) {
fprintf(stderr, "detach: ptrace(PT_DETACH, %d) failed (%d)\n", pid, res);
}
}
mach_port_deallocate(mach_task_self(), gTask);
id symbolicator = getSymbolicator(env, this_obj);
if (symbolicator != nil) {
@@ -419,10 +591,13 @@ JNF_COCOA_EXIT(env);
* Method: load_library
* Signature: (Ljava/lang/String;)L
*/
JNIEXPORT jlong JNICALL Java_sun_jvm_hotspot_asm_Disassembler_load_1library(JNIEnv * env,
jclass disclass,
jstring jrepath_s,
jstring libname_s) {
JNIEXPORT jlong JNICALL
Java_sun_jvm_hotspot_asm_Disassembler_load_1library(
JNIEnv * env,
jclass disclass,
jstring jrepath_s,
jstring libname_s)
{
uintptr_t func = 0;
const char* error_message = NULL;
const char* java_home;
@@ -455,7 +630,7 @@ JNIEXPORT jlong JNICALL Java_sun_jvm_hotspot_asm_Disassembler_load_1library(JNIE
/* Couldn't find entry point. error_message should contain some
* platform dependent error message.
*/
THROW_NEW_DEBUGGER_EXCEPTION(error_message);
THROW_NEW_DEBUGGER_EXCEPTION_(error_message, (jlong)func);
}
return (jlong)func;
}
@@ -533,13 +708,16 @@ static int printf_to_env(void* env_pv, const char* format, ...) {
* Method: decode
* Signature: (Lsun/jvm/hotspot/asm/InstructionVisitor;J[BLjava/lang/String;J)V
*/
JNIEXPORT void JNICALL Java_sun_jvm_hotspot_asm_Disassembler_decode(JNIEnv * env,
jobject dis,
jobject visitor,
jlong startPc,
jbyteArray code,
jstring options_s,
jlong decode_instructions_virtual) {
JNIEXPORT void JNICALL
Java_sun_jvm_hotspot_asm_Disassembler_decode(
JNIEnv * env,
jobject dis,
jobject visitor,
jlong startPc,
jbyteArray code,
jstring options_s,
jlong decode_instructions_virtual)
{
jboolean isCopy;
jbyte* start = (*env)->GetByteArrayElements(env, code, &isCopy);
jbyte* end = start + (*env)->GetArrayLength(env, code);

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -91,6 +91,14 @@ void print_debug(const char* format,...) {
}
}
void print_error(const char* format,...) {
va_list alist;
va_start(alist, format);
fputs("ERROR: ", stderr);
vfprintf(stderr, format, alist);
va_end(alist);
}
bool is_debug() {
return _libsaproc_debug;
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -107,6 +107,7 @@ struct ps_prochandle {
int pathmap_open(const char* name);
void print_debug(const char* format,...);
void print_error(const char* format,...);
bool is_debug();
typedef bool (*thread_info_callback)(struct ps_prochandle* ph, pthread_t pid, lwpid_t lwpid);

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -129,42 +129,66 @@ static bool process_get_lwp_info(struct ps_prochandle *ph, lwpid_t lwp_id, void
return (errno == 0)? true: false;
}
static bool ptrace_continue(pid_t pid, int signal) {
// pass the signal to the process so we don't swallow it
if (ptrace(PTRACE_CONT, pid, NULL, signal) < 0) {
print_debug("ptrace(PTRACE_CONT, ..) failed for %d\n", pid);
return false;
}
return true;
}
// waits until the ATTACH has stopped the process
// by signal SIGSTOP
static bool ptrace_waitpid(pid_t pid) {
int ret;
int status;
do {
// Wait for debuggee to stop.
ret = waitpid(pid, &status, 0);
if (ret >= 0) {
if (WIFSTOPPED(status)) {
// Any signal will stop the thread, make sure it is SIGSTOP. Otherwise SIGSTOP
// will still be pending and delivered when the process is DETACHED and the process
// will go to sleep.
if (WSTOPSIG(status) == SIGSTOP) {
// Debuggee stopped by SIGSTOP.
return true;
}
if (!ptrace_continue(pid, WSTOPSIG(status))) {
print_error("Failed to correctly attach to VM. VM might HANG! [PTRACE_CONT failed, stopped by %d]\n", WSTOPSIG(status));
return false;
}
} else {
print_debug("waitpid(): Child process exited/terminated (status = 0x%x)\n", status);
return false;
}
} else {
switch (errno) {
case EINTR:
continue;
break;
case ECHILD:
print_debug("waitpid() failed. Child process pid (%d) does not exist \n", pid);
break;
case EINVAL:
print_debug("waitpid() failed. Invalid options argument.\n");
break;
default:
print_debug("waitpid() failed. Unexpected error %d\n",errno);
}
return false;
}
} while(true);
}
// attach to a process/thread specified by "pid"
static bool ptrace_attach(pid_t pid) {
if (ptrace(PT_ATTACH, pid, NULL, 0) < 0) {
print_debug("ptrace(PTRACE_ATTACH, ..) failed for %d\n", pid);
return false;
} else {
int ret;
int status;
do {
// Wait for debuggee to stop.
ret = waitpid(pid, &status, 0);
if (ret >= 0) {
if (WIFSTOPPED(status)) {
// Debuggee stopped.
return true;
} else {
print_debug("waitpid(): Child process exited/terminated (status = 0x%x)\n", status);
return false;
}
} else {
switch (errno) {
case EINTR:
continue;
break;
case ECHILD:
print_debug("waitpid() failed. Child process pid (%d) does not exist \n", pid);
break;
case EINVAL:
print_debug("waitpid() failed. Invalid options argument.\n");
break;
default:
print_debug("waitpid() failed. Unexpected error %d\n",errno);
}
return false;
}
} while(true);
return ptrace_waitpid(pid);
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,13 @@
#include <jni.h>
#include "libproc.h"
#include <elf.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <limits.h>
#if defined(x86_64) && !defined(amd64)
#define amd64 1
#endif
@@ -154,6 +161,39 @@ static void fillThreadsAndLoadObjects(JNIEnv* env, jobject this_obj, struct ps_p
}
}
/*
* Verify that a named ELF binary file (core or executable) has the same
* bitness as ourselves.
* Throw an exception if there is a mismatch or other problem.
*
* If we proceed using a mismatched debugger/debuggee, the best to hope
* for is a missing symbol, the worst is a crash searching for debug symbols.
*/
void verifyBitness(JNIEnv *env, const char *binaryName) {
int fd = open(binaryName, O_RDONLY);
if (fd < 0) {
THROW_NEW_DEBUGGER_EXCEPTION("cannot open binary file");
}
unsigned char elf_ident[EI_NIDENT];
int i = read(fd, &elf_ident, sizeof(elf_ident));
close(fd);
if (i < 0) {
THROW_NEW_DEBUGGER_EXCEPTION("cannot read binary file");
}
#ifndef _LP64
if (elf_ident[EI_CLASS] == ELFCLASS64) {
THROW_NEW_DEBUGGER_EXCEPTION("debuggee is 64 bit, use 64-bit java for debugger");
}
#else
if (elf_ident[EI_CLASS] != ELFCLASS64) {
THROW_NEW_DEBUGGER_EXCEPTION("debuggee is 32 bit, use 32 bit java for debugger");
}
#endif
}
/*
* Class: sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal
* Method: attach0
@@ -162,6 +202,12 @@ static void fillThreadsAndLoadObjects(JNIEnv* env, jobject this_obj, struct ps_p
JNIEXPORT void JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_attach0__I
(JNIEnv *env, jobject this_obj, jint jpid) {
// For bitness checking, locate binary at /proc/jpid/exe
char buf[PATH_MAX];
snprintf((char *) &buf, PATH_MAX, "/proc/%d/exe", jpid);
verifyBitness(env, (char *) &buf);
CHECK_EXCEPTION;
struct ps_prochandle* ph;
if ( (ph = Pgrab(jpid)) == NULL) {
THROW_NEW_DEBUGGER_EXCEPTION("Can't attach to the process");
@@ -187,6 +233,9 @@ JNIEXPORT void JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_at
coreName_cstr = (*env)->GetStringUTFChars(env, coreName, &isCopy);
CHECK_EXCEPTION;
verifyBitness(env, execName_cstr);
CHECK_EXCEPTION;
if ( (ph = Pgrab_core(execName_cstr, coreName_cstr)) == NULL) {
(*env)->ReleaseStringUTFChars(env, execName, execName_cstr);
(*env)->ReleaseStringUTFChars(env, coreName, coreName_cstr);
@@ -280,7 +329,7 @@ JNIEXPORT jbyteArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLo
return (err == PS_OK)? array : 0;
}
#if defined(i386) || defined(ia64) || defined(amd64) || defined(sparc) || defined(sparcv9)
#if defined(i386) || defined(amd64) || defined(sparc) || defined(sparcv9)
JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_getThreadIntegerRegisterSet0
(JNIEnv *env, jobject this_obj, jint lwp_id) {
@@ -299,9 +348,6 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLo
#ifdef i386
#define NPRGREG sun_jvm_hotspot_debugger_x86_X86ThreadContext_NPRGREG
#endif
#ifdef ia64
#define NPRGREG IA64_REG_COUNT
#endif
#ifdef amd64
#define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG
#endif
@@ -336,13 +382,6 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLo
#endif /* i386 */
#if ia64
regs = (*env)->GetLongArrayElements(env, array, &isCopy);
for (i = 0; i < NPRGREG; i++ ) {
regs[i] = 0xDEADDEAD;
}
#endif /* ia64 */
#ifdef amd64
#define REG_INDEX(reg) sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_##reg

View File

@@ -79,14 +79,6 @@ combination of ptrace and /proc calls.
*************************************************************************************/
#ifdef ia64
struct user_regs_struct {
/* copied from user.h which doesn't define this in a struct */
#define IA64_REG_COUNT (EF_SIZE/8+32) /* integer and fp regs */
unsigned long regs[IA64_REG_COUNT]; /* integer and fp regs */
};
#endif
#if defined(sparc) || defined(sparcv9)
#define user_regs_struct pt_regs

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -92,6 +92,14 @@ void print_debug(const char* format,...) {
}
}
void print_error(const char* format,...) {
va_list alist;
va_start(alist, format);
fputs("ERROR: ", stderr);
vfprintf(stderr, format, alist);
va_end(alist);
}
bool is_debug() {
return _libsaproc_debug;
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -105,6 +105,7 @@ struct ps_prochandle {
int pathmap_open(const char* name);
void print_debug(const char* format,...);
void print_error(const char* format,...);
bool is_debug();
typedef bool (*thread_info_callback)(struct ps_prochandle* ph, pthread_t pid, lwpid_t lwpid);

View File

@@ -132,12 +132,12 @@ static map_info* add_map_info(struct ps_prochandle* ph, int fd, off_t offset,
}
// Part of the class sharing workaround
static map_info* add_class_share_map_info(struct ps_prochandle* ph, off_t offset,
static void add_class_share_map_info(struct ps_prochandle* ph, off_t offset,
uintptr_t vaddr, size_t memsz) {
map_info* map;
if ((map = allocate_init_map(ph->core->classes_jsa_fd,
offset, vaddr, memsz)) == NULL) {
return NULL;
return;
}
map->next = ph->core->class_share_maps;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <errno.h>
#include <sys/ptrace.h>
#include "libproc_impl.h"
@@ -142,46 +143,71 @@ static bool process_get_lwp_regs(struct ps_prochandle* ph, pid_t pid, struct use
}
static bool ptrace_continue(pid_t pid, int signal) {
// pass the signal to the process so we don't swallow it
if (ptrace(PTRACE_CONT, pid, NULL, signal) < 0) {
print_debug("ptrace(PTRACE_CONT, ..) failed for %d\n", pid);
return false;
}
return true;
}
// waits until the ATTACH has stopped the process
// by signal SIGSTOP
static bool ptrace_waitpid(pid_t pid) {
int ret;
int status;
while (true) {
// Wait for debuggee to stop.
ret = waitpid(pid, &status, 0);
if (ret == -1 && errno == ECHILD) {
// try cloned process.
ret = waitpid(pid, &status, __WALL);
}
if (ret >= 0) {
if (WIFSTOPPED(status)) {
// Any signal will stop the thread, make sure it is SIGSTOP. Otherwise SIGSTOP
// will still be pending and delivered when the process is DETACHED and the process
// will go to sleep.
if (WSTOPSIG(status) == SIGSTOP) {
// Debuggee stopped by SIGSTOP.
return true;
}
if (!ptrace_continue(pid, WSTOPSIG(status))) {
print_error("Failed to correctly attach to VM. VM might HANG! [PTRACE_CONT failed, stopped by %d]\n", WSTOPSIG(status));
return false;
}
} else {
print_debug("waitpid(): Child process exited/terminated (status = 0x%x)\n", status);
return false;
}
} else {
switch (errno) {
case EINTR:
continue;
break;
case ECHILD:
print_debug("waitpid() failed. Child process pid (%d) does not exist \n", pid);
break;
case EINVAL:
print_debug("waitpid() failed. Invalid options argument.\n");
break;
default:
print_debug("waitpid() failed. Unexpected error %d\n",errno);
break;
}
return false;
}
}
}
// attach to a process/thread specified by "pid"
static bool ptrace_attach(pid_t pid) {
if (ptrace(PTRACE_ATTACH, pid, NULL, NULL) < 0) {
print_debug("ptrace(PTRACE_ATTACH, ..) failed for %d\n", pid);
return false;
} else {
int ret;
int status;
do {
// Wait for debuggee to stop.
ret = waitpid(pid, &status, 0);
if (ret == -1 && errno == ECHILD) {
// try cloned process.
ret = waitpid(pid, &status, __WALL);
}
if (ret >= 0) {
if (WIFSTOPPED(status)) {
// Debuggee stopped.
return true;
} else {
print_debug("waitpid(): Child process exited/terminated (status = 0x%x)\n", status);
return false;
}
} else {
switch (errno) {
case EINTR:
continue;
break;
case ECHILD:
print_debug("waitpid() failed. Child process pid (%d) does not exist \n", pid);
break;
case EINVAL:
print_debug("waitpid() failed. Invalid options argument.\n");
break;
default:
print_debug("waitpid() failed. Unexpected error %d\n",errno);
}
return false;
}
} while(true);
return ptrace_waitpid(pid);
}
}

View File

@@ -27,10 +27,7 @@
#include "sun_jvm_hotspot_debugger_windbg_WindbgDebuggerLocal.h"
#ifdef _M_IA64
#include "sun_jvm_hotspot_debugger_ia64_IA64ThreadContext.h"
#define NPRGREG sun_jvm_hotspot_debugger_ia64_IA64ThreadContext_NPRGREG
#elif _M_IX86
#ifdef _M_IX86
#include "sun_jvm_hotspot_debugger_x86_X86ThreadContext.h"
#define NPRGREG sun_jvm_hotspot_debugger_x86_X86ThreadContext_NPRGREG
#elif _M_AMD64
@@ -375,8 +372,7 @@ static bool attachToProcess(JNIEnv* env, jobject obj, jint pid) {
We are attaching to a process in 'read-only' mode. i.e., we do not want to
put breakpoints, suspend/resume threads etc. For read-only JDI and HSDB kind of
usage this should suffice. We are not intending to use this for full-fledged
ProcessControl implementation to be used with BugSpotAgent.
usage this should suffice.
Please refer to DEBUG_ATTACH_NONINVASIVE mode source comments from dbgeng.h.
In this mode, debug engine does not call DebugActiveProrcess. i.e., we are not
@@ -491,92 +487,7 @@ static bool addThreads(JNIEnv* env, jobject obj) {
memset(&context, 0, sizeof(CONTEXT));
#undef REG_INDEX
#ifdef _M_IA64
#define REG_INDEX(x) sun_jvm_hotspot_debugger_ia64_IA64ThreadContext_##x
context.ContextFlags = CONTEXT_FULL | CONTEXT_DEBUG;
ptrIDebugAdvanced->GetThreadContext(&context, sizeof(CONTEXT));
ptrRegs[REG_INDEX(GR0)] = 0; // always 0
ptrRegs[REG_INDEX(GR1)] = context.IntGp; // r1
ptrRegs[REG_INDEX(GR2)] = context.IntT0; // r2-r3
ptrRegs[REG_INDEX(GR3)] = context.IntT1;
ptrRegs[REG_INDEX(GR4)] = context.IntS0; // r4-r7
ptrRegs[REG_INDEX(GR5)] = context.IntS1;
ptrRegs[REG_INDEX(GR6)] = context.IntS2;
ptrRegs[REG_INDEX(GR7)] = context.IntS3;
ptrRegs[REG_INDEX(GR8)] = context.IntV0; // r8
ptrRegs[REG_INDEX(GR9)] = context.IntT2; // r9-r11
ptrRegs[REG_INDEX(GR10)] = context.IntT3;
ptrRegs[REG_INDEX(GR11)] = context.IntT4;
ptrRegs[REG_INDEX(GR12)] = context.IntSp; // r12 stack pointer
ptrRegs[REG_INDEX(GR13)] = context.IntTeb; // r13 teb
ptrRegs[REG_INDEX(GR14)] = context.IntT5; // r14-r31
ptrRegs[REG_INDEX(GR15)] = context.IntT6;
ptrRegs[REG_INDEX(GR16)] = context.IntT7;
ptrRegs[REG_INDEX(GR17)] = context.IntT8;
ptrRegs[REG_INDEX(GR18)] = context.IntT9;
ptrRegs[REG_INDEX(GR19)] = context.IntT10;
ptrRegs[REG_INDEX(GR20)] = context.IntT11;
ptrRegs[REG_INDEX(GR21)] = context.IntT12;
ptrRegs[REG_INDEX(GR22)] = context.IntT13;
ptrRegs[REG_INDEX(GR23)] = context.IntT14;
ptrRegs[REG_INDEX(GR24)] = context.IntT15;
ptrRegs[REG_INDEX(GR25)] = context.IntT16;
ptrRegs[REG_INDEX(GR26)] = context.IntT17;
ptrRegs[REG_INDEX(GR27)] = context.IntT18;
ptrRegs[REG_INDEX(GR28)] = context.IntT19;
ptrRegs[REG_INDEX(GR29)] = context.IntT20;
ptrRegs[REG_INDEX(GR30)] = context.IntT21;
ptrRegs[REG_INDEX(GR31)] = context.IntT22;
ptrRegs[REG_INDEX(INT_NATS)] = context.IntNats;
ptrRegs[REG_INDEX(PREDS)] = context.Preds;
ptrRegs[REG_INDEX(BR_RP)] = context.BrRp;
ptrRegs[REG_INDEX(BR1)] = context.BrS0; // b1-b5
ptrRegs[REG_INDEX(BR2)] = context.BrS1;
ptrRegs[REG_INDEX(BR3)] = context.BrS2;
ptrRegs[REG_INDEX(BR4)] = context.BrS3;
ptrRegs[REG_INDEX(BR5)] = context.BrS4;
ptrRegs[REG_INDEX(BR6)] = context.BrT0; // b6-b7
ptrRegs[REG_INDEX(BR7)] = context.BrT1;
ptrRegs[REG_INDEX(AP_UNAT)] = context.ApUNAT;
ptrRegs[REG_INDEX(AP_LC)] = context.ApLC;
ptrRegs[REG_INDEX(AP_EC)] = context.ApEC;
ptrRegs[REG_INDEX(AP_CCV)] = context.ApCCV;
ptrRegs[REG_INDEX(AP_DCR)] = context.ApDCR;
ptrRegs[REG_INDEX(RS_PFS)] = context.RsPFS;
ptrRegs[REG_INDEX(RS_BSP)] = context.RsBSP;
ptrRegs[REG_INDEX(RS_BSPSTORE)] = context.RsBSPSTORE;
ptrRegs[REG_INDEX(RS_RSC)] = context.RsRSC;
ptrRegs[REG_INDEX(RS_RNAT)] = context.RsRNAT;
ptrRegs[REG_INDEX(ST_IPSR)] = context.StIPSR;
ptrRegs[REG_INDEX(ST_IIP)] = context.StIIP;
ptrRegs[REG_INDEX(ST_IFS)] = context.StIFS;
ptrRegs[REG_INDEX(DB_I0)] = context.DbI0;
ptrRegs[REG_INDEX(DB_I1)] = context.DbI1;
ptrRegs[REG_INDEX(DB_I2)] = context.DbI2;
ptrRegs[REG_INDEX(DB_I3)] = context.DbI3;
ptrRegs[REG_INDEX(DB_I4)] = context.DbI4;
ptrRegs[REG_INDEX(DB_I5)] = context.DbI5;
ptrRegs[REG_INDEX(DB_I6)] = context.DbI6;
ptrRegs[REG_INDEX(DB_I7)] = context.DbI7;
ptrRegs[REG_INDEX(DB_D0)] = context.DbD0;
ptrRegs[REG_INDEX(DB_D1)] = context.DbD1;
ptrRegs[REG_INDEX(DB_D2)] = context.DbD2;
ptrRegs[REG_INDEX(DB_D3)] = context.DbD3;
ptrRegs[REG_INDEX(DB_D4)] = context.DbD4;
ptrRegs[REG_INDEX(DB_D5)] = context.DbD5;
ptrRegs[REG_INDEX(DB_D6)] = context.DbD6;
ptrRegs[REG_INDEX(DB_D7)] = context.DbD7;
#elif _M_IX86
#ifdef _M_IX86
#define REG_INDEX(x) sun_jvm_hotspot_debugger_x86_X86ThreadContext_##x
context.ContextFlags = CONTEXT_FULL | CONTEXT_DEBUG_REGISTERS;

View File

@@ -1,64 +0,0 @@
/*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.asm.amd64;
import sun.jvm.hotspot.asm.Register;
import sun.jvm.hotspot.utilities.Assert;
public class AMD64FloatRegister extends Register {
public AMD64FloatRegister(int number) {
super(number);
}
public int getNumber() {
return number;
}
public int getNumberOfRegisters() {
return AMD64FloatRegisters.getNumRegisters();
}
public boolean isFloat() {
return true;
}
public boolean isFramePointer() {
return false;
}
public boolean isStackPointer() {
return false;
}
public boolean isValid() {
return number >= 0 && number < AMD64FloatRegisters.getNumRegisters();
}
public String toString() {
return AMD64FloatRegisters.getRegisterName(number);
}
}

View File

@@ -1,799 +0,0 @@
/*
* Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot;
import java.io.PrintStream;
import java.net.*;
import java.rmi.*;
import sun.jvm.hotspot.*;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.debugger.bsd.*;
import sun.jvm.hotspot.debugger.proc.*;
import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.debugger.windbg.*;
import sun.jvm.hotspot.debugger.linux.*;
import sun.jvm.hotspot.debugger.sparc.*;
import sun.jvm.hotspot.debugger.remote.*;
import sun.jvm.hotspot.livejvm.*;
import sun.jvm.hotspot.memory.*;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.types.*;
import sun.jvm.hotspot.utilities.*;
/** <P> This class wraps the basic functionality for connecting to the
* target process or debug server. It makes it simple to start up the
* debugging system. </P>
*
* <P> This agent (as compared to the HotSpotAgent) can connect to
* and interact with arbitrary processes. If the target process
* happens to be a HotSpot JVM, the Java debugging features of the
* Serviceability Agent are enabled. Further, if the Serviceability
* Agent's JVMDI module is loaded into the target VM, interaction
* with the live Java program is possible, specifically the catching
* of exceptions and setting of breakpoints. </P>
*
* <P> The BugSpot debugger requires that the underlying Debugger
* support C/C++ debugging via the CDebugger interface. </P>
*
* <P> FIXME: especially with the addition of remote debugging, this
* has turned into a mess; needs rethinking. </P> */
public class BugSpotAgent {
private JVMDebugger debugger;
private MachineDescription machDesc;
private TypeDataBase db;
private String os;
private String cpu;
private String fileSep;
// The system can work in several ways:
// - Attaching to local process
// - Attaching to local core file
// - Connecting to remote debug server
// - Starting debug server for process
// - Starting debug server for core file
// These are options for the "client" side of things
private static final int PROCESS_MODE = 0;
private static final int CORE_FILE_MODE = 1;
private static final int REMOTE_MODE = 2;
private int startupMode;
// This indicates whether we are really starting a server or not
private boolean isServer;
// All possible required information for connecting
private int pid;
private String executableName;
private String coreFileName;
private String debugServerID;
// All needed information for server side
private String serverID;
// Indicates whether we are attached to a HotSpot JVM or not
private boolean javaMode;
// Indicates whether we have process control over a live HotSpot JVM
// or not; non-null if so.
private ServiceabilityAgentJVMDIModule jvmdi;
// While handling C breakpoints interactivity with the Java program
// is forbidden. Too many invariants are broken while the target is
// stopped at a C breakpoint to risk making JVMDI calls.
private boolean javaInteractionDisabled;
private String[] jvmLibNames;
private String[] saLibNames;
// FIXME: make these configurable, i.e., via a dotfile; also
// consider searching within the JDK from which this Java executable
// comes to find them
private static final String defaultDbxPathPrefix = "/net/jano.eng/export/disk05/hotspot/sa";
private static final String defaultDbxSvcAgentDSOPathPrefix = "/net/jano.eng/export/disk05/hotspot/sa";
private static final boolean DEBUG;
static {
DEBUG = System.getProperty("sun.jvm.hotspot.bugspot.BugSpotAgent.DEBUG")
!= null;
}
static void debugPrintln(String str) {
if (DEBUG) {
System.err.println(str);
}
}
static void showUsage() {
System.out.println(" You can also pass these -D options to java to specify where to find dbx and the \n" +
" Serviceability Agent plugin for dbx:");
System.out.println(" -DdbxPathName=<path-to-dbx-executable>\n" +
" Default is derived from dbxPathPrefix");
System.out.println(" or");
System.out.println(" -DdbxPathPrefix=<xxx>\n" +
" where xxx is the path name of a dir structure that contains:\n" +
" <os>/<arch>/bin/dbx\n" +
" The default is " + defaultDbxPathPrefix);
System.out.println(" and");
System.out.println(" -DdbxSvcAgentDSOPathName=<path-to-dbx-serviceability-agent-module>\n" +
" Default is determined from dbxSvcAgentDSOPathPrefix");
System.out.println(" or");
System.out.println(" -DdbxSvcAgentDSOPathPrefix=<xxx>\n" +
" where xxx is the pathname of a dir structure that contains:\n" +
" <os>/<arch>/bin/lib/libsvc_agent_dbx.so\n" +
" The default is " + defaultDbxSvcAgentDSOPathPrefix);
}
public BugSpotAgent() {
// for non-server add shutdown hook to clean-up debugger in case
// of forced exit. For remote server, shutdown hook is added by
// DebugServer.
Runtime.getRuntime().addShutdownHook(new java.lang.Thread(
new Runnable() {
public void run() {
synchronized (BugSpotAgent.this) {
if (!isServer) {
detach();
}
}
}
}));
}
//--------------------------------------------------------------------------------
// Accessors (once the system is set up)
//
public synchronized Debugger getDebugger() {
return debugger;
}
public synchronized CDebugger getCDebugger() {
return getDebugger().getCDebugger();
}
public synchronized ProcessControl getProcessControl() {
return getCDebugger().getProcessControl();
}
public synchronized TypeDataBase getTypeDataBase() {
return db;
}
/** Indicates whether the target process is suspended
completely. Equivalent to getProcessControl().isSuspended(). */
public synchronized boolean isSuspended() throws DebuggerException {
return getProcessControl().isSuspended();
}
/** Suspends the target process completely. Equivalent to
getProcessControl().suspend(). */
public synchronized void suspend() throws DebuggerException {
getProcessControl().suspend();
}
/** Resumes the target process completely. Equivalent to
getProcessControl().suspend(). */
public synchronized void resume() throws DebuggerException {
getProcessControl().resume();
}
/** Indicates whether we are attached to a Java HotSpot virtual
machine */
public synchronized boolean isJavaMode() {
return javaMode;
}
/** Temporarily disables interaction with the target process via
JVMDI. This is done while the target process is stopped at a C
breakpoint. Can be called even if the JVMDI agent has not been
initialized. */
public synchronized void disableJavaInteraction() {
javaInteractionDisabled = true;
}
/** Re-enables interaction with the target process via JVMDI. This
is done while the target process is continued past a C
braekpoint. Can be called even if the JVMDI agent has not been
initialized. */
public synchronized void enableJavaInteraction() {
javaInteractionDisabled = false;
}
/** Indicates whether Java interaction has been disabled */
public synchronized boolean isJavaInteractionDisabled() {
return javaInteractionDisabled;
}
/** Indicates whether we can talk to the Serviceability Agent's
JVMDI module to be able to set breakpoints */
public synchronized boolean canInteractWithJava() {
return (jvmdi != null) && !javaInteractionDisabled;
}
/** Suspends all Java threads in the target process. Can only be
called if we are attached to a HotSpot JVM and can connect to
the SA's JVMDI module. Must not be called when the target
process has been suspended with suspend(). */
public synchronized void suspendJava() throws DebuggerException {
if (!canInteractWithJava()) {
throw new DebuggerException("Could not connect to SA's JVMDI module");
}
if (jvmdi.isSuspended()) {
throw new DebuggerException("Target process already suspended via JVMDI");
}
jvmdi.suspend();
}
/** Resumes all Java threads in the target process. Can only be
called if we are attached to a HotSpot JVM and can connect to
the SA's JVMDI module. Must not be called when the target
process has been suspended with suspend(). */
public synchronized void resumeJava() throws DebuggerException {
if (!canInteractWithJava()) {
throw new DebuggerException("Could not connect to SA's JVMDI module");
}
if (!jvmdi.isSuspended()) {
throw new DebuggerException("Target process already resumed via JVMDI");
}
jvmdi.resume();
}
/** Indicates whether the target process has been suspended at the
Java language level via the SA's JVMDI module */
public synchronized boolean isJavaSuspended() throws DebuggerException {
return jvmdi.isSuspended();
}
/** Toggle a Java breakpoint at the given location. */
public synchronized ServiceabilityAgentJVMDIModule.BreakpointToggleResult
toggleJavaBreakpoint(String srcFileName,
String pkgName,
int lineNo) {
if (!canInteractWithJava()) {
throw new DebuggerException("Could not connect to SA's JVMDI module; can not toggle Java breakpoints");
}
return jvmdi.toggleBreakpoint(srcFileName, pkgName, lineNo);
}
/** Access to JVMDI module's eventPending */
public synchronized boolean javaEventPending() throws DebuggerException {
if (!canInteractWithJava()) {
throw new DebuggerException("Could not connect to SA's JVMDI module; can not poll for Java debug events");
}
return jvmdi.eventPending();
}
/** Access to JVMDI module's eventPoll */
public synchronized Event javaEventPoll() throws DebuggerException {
if (!canInteractWithJava()) {
throw new DebuggerException("Could not connect to SA's JVMDI module; can not poll for Java debug events");
}
return jvmdi.eventPoll();
}
/** Access to JVMDI module's eventContinue */
public synchronized void javaEventContinue() throws DebuggerException {
if (!canInteractWithJava()) {
throw new DebuggerException("Could not connect to SA's JVMDI module; can not continue past Java debug events");
}
jvmdi.eventContinue();
}
// FIXME: add other accessors. For example, suspension and
// resumption should be done through this interface, as well as
// interaction with the live Java process such as breakpoint setting.
// Probably should not expose the ServiceabilityAgentJVMDIModule
// from this interface.
//--------------------------------------------------------------------------------
// Client-side operations
//
/** This attaches to a process running on the local machine. */
public synchronized void attach(int processID)
throws DebuggerException {
if (debugger != null) {
throw new DebuggerException("Already attached");
}
pid = processID;
startupMode = PROCESS_MODE;
isServer = false;
go();
}
/** This opens a core file on the local machine */
public synchronized void attach(String executableName, String coreFileName)
throws DebuggerException {
if (debugger != null) {
throw new DebuggerException("Already attached");
}
if ((executableName == null) || (coreFileName == null)) {
throw new DebuggerException("Both the core file name and executable name must be specified");
}
this.executableName = executableName;
this.coreFileName = coreFileName;
startupMode = CORE_FILE_MODE;
isServer = false;
go();
}
/** This attaches to a "debug server" on a remote machine; this
remote server has already attached to a process or opened a
core file and is waiting for RMI calls on the Debugger object to
come in. */
public synchronized void attach(String remoteServerID)
throws DebuggerException {
if (debugger != null) {
throw new DebuggerException("Already attached to a process");
}
if (remoteServerID == null) {
throw new DebuggerException("Debug server id must be specified");
}
debugServerID = remoteServerID;
startupMode = REMOTE_MODE;
isServer = false;
go();
}
/** This should only be called by the user on the client machine,
not the server machine */
public synchronized boolean detach() throws DebuggerException {
if (isServer) {
throw new DebuggerException("Should not call detach() for server configuration");
}
return detachInternal();
}
//--------------------------------------------------------------------------------
// Server-side operations
//
/** This attaches to a process running on the local machine and
starts a debug server, allowing remote machines to connect and
examine this process. uniqueID is used to uniquely identify the
debuggee */
public synchronized void startServer(int processID, String uniqueID)
throws DebuggerException {
if (debugger != null) {
throw new DebuggerException("Already attached");
}
pid = processID;
startupMode = PROCESS_MODE;
isServer = true;
serverID = uniqueID;
go();
}
/** This attaches to a process running on the local machine and
starts a debug server, allowing remote machines to connect and
examine this process. */
public synchronized void startServer(int processID)
throws DebuggerException {
startServer(processID, null);
}
/** This opens a core file on the local machine and starts a debug
server, allowing remote machines to connect and examine this
core file. uniqueID is used to uniquely identify the
debuggee */
public synchronized void startServer(String executableName, String coreFileName,
String uniqueID)
throws DebuggerException {
if (debugger != null) {
throw new DebuggerException("Already attached");
}
if ((executableName == null) || (coreFileName == null)) {
throw new DebuggerException("Both the core file name and Java executable name must be specified");
}
this.executableName = executableName;
this.coreFileName = coreFileName;
startupMode = CORE_FILE_MODE;
isServer = true;
serverID = uniqueID;
go();
}
/** This opens a core file on the local machine and starts a debug
server, allowing remote machines to connect and examine this
core file.*/
public synchronized void startServer(String executableName, String coreFileName)
throws DebuggerException {
startServer(executableName, coreFileName, null);
}
/** This may only be called on the server side after startServer()
has been called */
public synchronized boolean shutdownServer() throws DebuggerException {
if (!isServer) {
throw new DebuggerException("Should not call shutdownServer() for client configuration");
}
return detachInternal();
}
//--------------------------------------------------------------------------------
// Internals only below this point
//
private boolean detachInternal() {
if (debugger == null) {
return false;
}
if (canInteractWithJava()) {
jvmdi.detach();
jvmdi = null;
}
boolean retval = true;
if (!isServer) {
VM.shutdown();
}
// We must not call detach() if we are a client and are connected
// to a remote debugger
Debugger dbg = null;
DebuggerException ex = null;
if (isServer) {
try {
RMIHelper.unbind(serverID);
}
catch (DebuggerException de) {
ex = de;
}
dbg = debugger;
} else {
if (startupMode != REMOTE_MODE) {
dbg = debugger;
}
}
if (dbg != null) {
retval = dbg.detach();
}
debugger = null;
machDesc = null;
db = null;
if (ex != null) {
throw(ex);
}
return retval;
}
private void go() {
setupDebugger();
javaMode = setupVM();
}
private void setupDebugger() {
if (startupMode != REMOTE_MODE) {
//
// Local mode (client attaching to local process or setting up
// server, but not client attaching to server)
//
try {
os = PlatformInfo.getOS();
cpu = PlatformInfo.getCPU();
}
catch (UnsupportedPlatformException e) {
throw new DebuggerException(e);
}
fileSep = System.getProperty("file.separator");
if (os.equals("solaris")) {
setupDebuggerSolaris();
} else if (os.equals("win32")) {
setupDebuggerWin32();
} else if (os.equals("linux")) {
setupDebuggerLinux();
} else if (os.equals("bsd")) {
setupDebuggerBsd();
} else {
// Add support for more operating systems here
throw new DebuggerException("Operating system " + os + " not yet supported");
}
if (isServer) {
RemoteDebuggerServer remote = null;
try {
remote = new RemoteDebuggerServer(debugger);
}
catch (RemoteException rem) {
throw new DebuggerException(rem);
}
RMIHelper.rebind(serverID, remote);
}
} else {
//
// Remote mode (client attaching to server)
//
// Create and install a security manager
// FIXME: currently commented out because we were having
// security problems since we're "in the sun.* hierarchy" here.
// Perhaps a permissive policy file would work around this. In
// the long run, will probably have to move into com.sun.*.
// if (System.getSecurityManager() == null) {
// System.setSecurityManager(new RMISecurityManager());
// }
connectRemoteDebugger();
}
}
private boolean setupVM() {
// We need to instantiate a HotSpotTypeDataBase on both the client
// and server machine. On the server it is only currently used to
// configure the Java primitive type sizes (which we should
// consider making constant). On the client it is used to
// configure the VM.
try {
if (os.equals("solaris")) {
db = new HotSpotTypeDataBase(machDesc, new HotSpotSolarisVtblAccess(debugger, jvmLibNames),
debugger, jvmLibNames);
} else if (os.equals("win32")) {
db = new HotSpotTypeDataBase(machDesc, new Win32VtblAccess(debugger, jvmLibNames),
debugger, jvmLibNames);
} else if (os.equals("linux")) {
db = new HotSpotTypeDataBase(machDesc, new LinuxVtblAccess(debugger, jvmLibNames),
debugger, jvmLibNames);
} else if (os.equals("bsd")) {
db = new HotSpotTypeDataBase(machDesc, new BsdVtblAccess(debugger, jvmLibNames),
debugger, jvmLibNames);
} else {
throw new DebuggerException("OS \"" + os + "\" not yet supported (no VtblAccess implemented yet)");
}
}
catch (NoSuchSymbolException e) {
e.printStackTrace();
return false;
}
if (startupMode != REMOTE_MODE) {
// Configure the debugger with the primitive type sizes just obtained from the VM
debugger.configureJavaPrimitiveTypeSizes(db.getJBooleanType().getSize(),
db.getJByteType().getSize(),
db.getJCharType().getSize(),
db.getJDoubleType().getSize(),
db.getJFloatType().getSize(),
db.getJIntType().getSize(),
db.getJLongType().getSize(),
db.getJShortType().getSize());
}
if (!isServer) {
// Do not initialize the VM on the server (unnecessary, since it's
// instantiated on the client)
VM.initialize(db, debugger);
}
try {
jvmdi = new ServiceabilityAgentJVMDIModule(debugger, saLibNames);
if (jvmdi.canAttach()) {
jvmdi.attach();
jvmdi.setCommandTimeout(6000);
debugPrintln("Attached to Serviceability Agent's JVMDI module.");
// Jog VM to suspended point with JVMDI module
resume();
suspendJava();
suspend();
debugPrintln("Suspended all Java threads.");
} else {
debugPrintln("Could not locate SA's JVMDI module; skipping attachment");
jvmdi = null;
}
} catch (Exception e) {
e.printStackTrace();
jvmdi = null;
}
return true;
}
//--------------------------------------------------------------------------------
// OS-specific debugger setup/connect routines
//
//
// Solaris
//
private void setupDebuggerSolaris() {
setupJVMLibNamesSolaris();
ProcDebuggerLocal dbg = new ProcDebuggerLocal(null, true);
debugger = dbg;
attachDebugger();
// Set up CPU-dependent stuff
if (cpu.equals("x86")) {
machDesc = new MachineDescriptionIntelX86();
} else if (cpu.equals("sparc")) {
int addressSize = dbg.getRemoteProcessAddressSize();
if (addressSize == -1) {
throw new DebuggerException("Error occurred while trying to determine the remote process's address size");
}
if (addressSize == 32) {
machDesc = new MachineDescriptionSPARC32Bit();
} else if (addressSize == 64) {
machDesc = new MachineDescriptionSPARC64Bit();
} else {
throw new DebuggerException("Address size " + addressSize + " is not supported on SPARC");
}
} else if (cpu.equals("amd64")) {
machDesc = new MachineDescriptionAMD64();
} else {
throw new DebuggerException("Solaris only supported on sparc/sparcv9/x86/amd64");
}
dbg.setMachineDescription(machDesc);
}
private void connectRemoteDebugger() throws DebuggerException {
RemoteDebugger remote =
(RemoteDebugger) RMIHelper.lookup(debugServerID);
debugger = new RemoteDebuggerClient(remote);
machDesc = ((RemoteDebuggerClient) debugger).getMachineDescription();
os = debugger.getOS();
if (os.equals("solaris")) {
setupJVMLibNamesSolaris();
} else if (os.equals("win32")) {
setupJVMLibNamesWin32();
} else if (os.equals("linux")) {
setupJVMLibNamesLinux();
} else if (os.equals("bsd")) {
setupJVMLibNamesBsd();
} else {
throw new RuntimeException("Unknown OS type");
}
cpu = debugger.getCPU();
}
private void setupJVMLibNamesSolaris() {
jvmLibNames = new String[] { "libjvm.so", "libjvm_g.so", "gamma_g" };
saLibNames = new String[] { "libsa.so", "libsa_g.so" };
}
//
// Win32
//
private void setupDebuggerWin32() {
setupJVMLibNamesWin32();
if (cpu.equals("x86")) {
machDesc = new MachineDescriptionIntelX86();
} else if (cpu.equals("amd64")) {
machDesc = new MachineDescriptionAMD64();
} else if (cpu.equals("ia64")) {
machDesc = new MachineDescriptionIA64();
} else {
throw new DebuggerException("Win32 supported under x86, amd64 and ia64 only");
}
// Note we do not use a cache for the local debugger in server
// mode; it will be taken care of on the client side (once remote
// debugging is implemented).
debugger = new WindbgDebuggerLocal(machDesc, !isServer);
attachDebugger();
}
private void setupJVMLibNamesWin32() {
jvmLibNames = new String[] { "jvm.dll", "jvm_g.dll" };
saLibNames = new String[] { "sa.dll", "sa_g.dll" };
}
//
// Linux
//
private void setupDebuggerLinux() {
setupJVMLibNamesLinux();
if (cpu.equals("x86")) {
machDesc = new MachineDescriptionIntelX86();
} else if (cpu.equals("ia64")) {
machDesc = new MachineDescriptionIA64();
} else if (cpu.equals("amd64")) {
machDesc = new MachineDescriptionAMD64();
} else if (cpu.equals("sparc")) {
if (LinuxDebuggerLocal.getAddressSize()==8) {
machDesc = new MachineDescriptionSPARC64Bit();
} else {
machDesc = new MachineDescriptionSPARC32Bit();
}
} else {
try {
machDesc = (MachineDescription)
Class.forName("sun.jvm.hotspot.debugger.MachineDescription" +
cpu.toUpperCase()).newInstance();
} catch (Exception e) {
throw new DebuggerException("unsupported machine type");
}
}
// Note we do not use a cache for the local debugger in server
// mode; it will be taken care of on the client side (once remote
// debugging is implemented).
debugger = new LinuxDebuggerLocal(machDesc, !isServer);
attachDebugger();
}
private void setupJVMLibNamesLinux() {
// same as solaris
setupJVMLibNamesSolaris();
}
//
// BSD
//
private void setupDebuggerBsd() {
setupJVMLibNamesBsd();
if (cpu.equals("x86")) {
machDesc = new MachineDescriptionIntelX86();
} else if (cpu.equals("amd64") || (cpu.equals("x86_64"))) {
machDesc = new MachineDescriptionAMD64();
} else {
throw new DebuggerException("Bsd only supported on x86/x86_64. Current arch: " + cpu);
}
// Note we do not use a cache for the local debugger in server
// mode; it will be taken care of on the client side (once remote
// debugging is implemented).
debugger = new BsdDebuggerLocal(machDesc, !isServer);
attachDebugger();
}
private void setupJVMLibNamesBsd() {
// same as solaris
setupJVMLibNamesSolaris();
}
/** Convenience routine which should be called by per-platform
debugger setup. Should not be called when startupMode is
REMOTE_MODE. */
private void attachDebugger() {
if (startupMode == PROCESS_MODE) {
debugger.attach(pid);
} else if (startupMode == CORE_FILE_MODE) {
debugger.attach(executableName, coreFileName);
} else {
throw new DebuggerException("Should not call attach() for startupMode == " + startupMode);
}
}
}

View File

@@ -1,55 +0,0 @@
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot;
import sun.jvm.hotspot.oops.*;
/** Wrapper class which describes line number information for Java
class files. The line number table is converted into this
representation on demand. These objects are then sorted by line
number for fast lookup when setting breakpoints in a particular
source file. */
public class JavaLineNumberInfo {
private InstanceKlass klass;
private Method method;
private int startBCI;
private int lineNumber;
public JavaLineNumberInfo(InstanceKlass klass,
Method method,
int startBCI,
int lineNumber) {
this.klass = klass;
this.method = method;
this.startBCI = startBCI;
this.lineNumber = lineNumber;
}
public InstanceKlass getKlass() { return klass; }
public Method getMethod() { return method; }
public int getStartBCI() { return startBCI; }
public int getLineNumber() { return lineNumber; }
}

View File

@@ -1,96 +0,0 @@
/*
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.debugger.cdbg.*;
/** Helper class for locating a program counter. Indicates the
confidence of the find. */
public class PCFinder {
public static final int LOW_CONFIDENCE = 1;
public static final int HIGH_CONFIDENCE = 2;
public static class Info {
private String name;
private long offset;
private int confidence;
public Info(String name, long offset, int confidence) {
this.name = name;
this.offset = offset;
this.confidence = confidence;
}
/** May be null */
public String getName() { return name; }
/** If this is -1, a symbol could not be found, and the offset
should not be shown */
public long getOffset() { return offset; }
/** PCFinder.LOW_CONFIDENCE or PCFinder.HIGH_CONFIDENCE */
public int getConfidence() { return confidence; }
}
/** Passed loadobject may be null in which case the returned Info
object has low confidence */
public static Info findPC(Address pc, LoadObject lo, CDebugger dbg) {
if (lo == null) {
return new Info(null, -1, LOW_CONFIDENCE);
}
// First try debug info
BlockSym sym = lo.debugInfoForPC(pc);
while (sym != null) {
if (sym.isFunction()) {
// Highest confidence
return new Info(sym.toString(), pc.minus(sym.getAddress()), HIGH_CONFIDENCE);
}
}
// Now try looking up symbol in loadobject
// FIXME: must add support for mapfiles on Win32 and try looking
// up there first if possible. Should we hide that behind
// LoadObject.closestSymbolToPC and have the ClosestSymbol return
// confidence? I think so. On Solaris there is no notion of a
// mapfile, and the confidence for closestSymbolToPC will be high
// instead of low.
int confidence = HIGH_CONFIDENCE;
ClosestSymbol cs = lo.closestSymbolToPC(pc);
if (cs != null) {
// FIXME: currently low confidence (only on Win32)
return new Info(cs.getName() + "()", cs.getOffset(), LOW_CONFIDENCE);
}
// Unknown location
return new Info(dbg.getNameOfFile(lo.getName()).toUpperCase() +
"! " + pc + "()", -1, HIGH_CONFIDENCE);
}
}

View File

@@ -1,89 +0,0 @@
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot;
import java.io.*;
/** Scans a .java file for the package that it is in. */
public class PackageScanner {
public PackageScanner() {
}
public String scan(String filename) {
return scan(new File(filename));
}
/** Returns the String comprising the package name of the classes in
this .java file. Returns the (non-null) empty string if any
error occurs or if the classes are in the unnamed package. */
public String scan(File file) {
BufferedReader buf = null;
String res = "";
try {
buf = new BufferedReader(new FileReader(file));
StreamTokenizer tok = new StreamTokenizer(buf);
tok.slashStarComments(true);
tok.slashSlashComments(true);
if (tok.nextToken() != StreamTokenizer.TT_WORD) {
return res;
}
if (!tok.sval.equals("package")) {
return res;
}
if (tok.nextToken() != StreamTokenizer.TT_WORD) {
return res;
}
res = tok.sval;
return res;
} catch (FileNotFoundException e) {
return res;
} catch (IOException e) {
return res;
} finally {
try {
if (buf != null) {
buf.close();
}
} catch (IOException e) {
}
}
}
public static void main(String[] args) {
if (args.length != 1) {
usage();
}
System.out.println(new PackageScanner().scan(args[0]));
}
private static void usage() {
System.err.println("Usage: java PackageScanner <.java file name>");
System.err.println("Prints package the .java file is in to stdout.");
System.exit(1);
}
}

View File

@@ -1,173 +0,0 @@
/*
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot;
import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import sun.jvm.hotspot.debugger.*;
/** Displays registers in a window. FIXME: this will need more work to
understand and handle register windows. */
public class RegisterPanel extends JPanel {
private java.util.List/*<RegisterInfo>*/ registers;
private AbstractTableModel dataModel;
private boolean valid;
private boolean editable;
private String nullAddressString;
private ThreadProxy curThread;
private JTable table;
static class RegisterInfo {
private String name;
private Address value;
RegisterInfo(String name, Address value) {
this.name = name;
this.value = value;
}
String getName() { return name; }
Address getValue() { return value; }
}
public RegisterPanel() {
super();
registers = new ArrayList();
dataModel = new AbstractTableModel() {
public int getColumnCount() { return 2; }
public int getRowCount() { return registers.size(); }
public String getColumnName(int col) {
switch (col) {
case 0:
return "Register Name";
case 1:
return "Register Value";
default:
throw new RuntimeException("Index " + col + " out of bounds");
}
}
public Object getValueAt(int row, int col) {
RegisterInfo info = (RegisterInfo) registers.get(row);
switch (col) {
case 0:
return info.getName();
case 1:
if (valid) {
Address val = info.getValue();
if (val != null) {
return val;
} else {
return nullAddressString;
}
} else {
return "-";
}
default:
throw new RuntimeException("Index (" + col + ", " + row + ") out of bounds");
}
}
public boolean isCellEditable(int row, int col) {
if (col == 0) return false;
if (!valid) return false;
if (curThread == null) return false;
if (!curThread.canSetContext()) return false;
// FIXME: add listener to watch for register changes
// return true;
return false;
}
};
// Build user interface
setLayout(new BorderLayout());
table = new JTable(dataModel);
table.setCellSelectionEnabled(true);
table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
table.setDragEnabled(true);
JTableHeader header = table.getTableHeader();
header.setReorderingAllowed(false);
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane, BorderLayout.CENTER);
}
/** Updates the register panel with the register set from the
specified thread. Call this when the process has been suspended
and the current thread has been set. FIXME: this interface will
need to change to support register windows. */
public void update(ThreadProxy curThread) {
this.curThread = curThread;
ThreadContext context = curThread.getContext();
editable = curThread.canSetContext();
registers.clear();
for (int i = 0; i < context.getNumRegisters(); i++) {
String name = context.getRegisterName(i);
Address addr = context.getRegisterAsAddress(i);
if ((nullAddressString == null) && (addr != null)) {
String addrStr = addr.toString();
StringBuffer buf = new StringBuffer();
buf.append("0x");
int len = addrStr.length() - 2;
for (int j = 0; j < len; j++) {
buf.append("0");
}
nullAddressString = buf.toString();
}
registers.add(new RegisterInfo(name, addr));
}
valid = true;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
dataModel.fireTableDataChanged();
}
});
}
/** Clears the registers' values. Call this when the processs has
been resumed. */
public void clear() {
valid = false;
nullAddressString = null;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
dataModel.fireTableDataChanged();
}
});
}
public void setFont(Font font) {
super.setFont(font);
if (table != null) {
table.setFont(font);
}
}
}

View File

@@ -1,87 +0,0 @@
/*
* Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot;
import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
/** This class describes a frame in a stack trace. It abstracts over
C/C++ and Java frames. */
public class StackTraceEntry {
private CFrame cFrame;
private CDebugger dbg;
private JavaVFrame javaFrame;
private String value; // What is displayed in a stack trace
// For merging C and Java stack traces.
// For more precise stack traces, should probably have a way to
// convert a CFrame to a sun.jvm.hotspot.runtime.Frame. For now,
// doing similar algorithm to jdbx (which does not have intimate
// knowledge of the VM).
private boolean isUnknownCFrame;
public StackTraceEntry(CFrame cFrame, CDebugger dbg) {
this.cFrame = cFrame;
this.dbg = dbg;
computeValue();
}
public StackTraceEntry(JavaVFrame javaFrame) {
this.javaFrame = javaFrame;
computeValue();
}
public boolean isCFrame() { return (cFrame != null); }
public boolean isJavaFrame() { return (javaFrame != null); }
public CFrame getCFrame() { return cFrame; }
public JavaVFrame getJavaFrame() { return javaFrame; }
public boolean isUnknownCFrame() { return isUnknownCFrame; }
public String toString() {
return value;
}
private void computeValue() {
isUnknownCFrame = true;
value = "<unknown>";
if (cFrame != null) {
PCFinder.Info info = PCFinder.findPC(cFrame.pc(), cFrame.loadObjectForPC(), dbg);
if (info.getName() != null) {
value = "(C) " + info.getName();
isUnknownCFrame = false;
if (info.getConfidence() == PCFinder.LOW_CONFIDENCE) {
value = value + " (?)";
}
if (info.getOffset() >= 0) {
value = value + " + 0x" + Long.toHexString(info.getOffset());
}
}
} else if (javaFrame != null) {
isUnknownCFrame = false;
Method m = javaFrame.getMethod();
value = "(J) " + m.externalNameAndSignature();
}
}
}

View File

@@ -1,115 +0,0 @@
/*
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.ui.*;
/** This panel contains a ListBox with all of the stack frames in a
given thread. When a given entry is selected, an event is
fired. */
public class StackTracePanel extends JPanel {
public interface Listener {
public void frameChanged(CFrame fr, JavaVFrame jfr);
}
class Model extends AbstractListModel implements ComboBoxModel {
private Object selectedItem;
public Object getElementAt(int index) {
if (trace == null) return null;
return trace.get(index);
}
public int getSize() {
if (trace == null) return 0;
return trace.size();
}
public Object getSelectedItem() {
return selectedItem;
}
public void setSelectedItem(Object item) {
selectedItem = item;
}
public void dataChanged() {
fireContentsChanged(this, 0, trace.size());
}
}
private java.util.List trace;
private Model model;
private JComboBox list;
private java.util.List listeners;
public StackTracePanel() {
super();
model = new Model();
// Build user interface
setLayout(new BorderLayout());
setBorder(GraphicsUtilities.newBorder(5));
list = new JComboBox(model);
list.setPrototypeDisplayValue("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ");
add(list, BorderLayout.CENTER);
// Add selection listener
list.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
fireFrameChanged();
}
}
});
}
/** Takes a List of StackTraceEntry objects */
public void setTrace(java.util.List trace) {
this.trace = trace;
model.dataChanged();
list.setSelectedIndex(0);
fireFrameChanged();
}
public void addListener(Listener listener) {
if (listeners == null) {
listeners = new ArrayList();
}
listeners.add(listener);
}
protected void fireFrameChanged() {
if (listeners != null) {
StackTraceEntry entry = (StackTraceEntry) trace.get(list.getSelectedIndex());
for (Iterator iter = listeners.iterator(); iter.hasNext(); ) {
((Listener) iter.next()).frameChanged(entry.getCFrame(), entry.getJavaFrame());
}
}
}
}

View File

@@ -1,237 +0,0 @@
/*
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.ui.*;
// NOTE: this class was not placed in sun.jvm.hotspot.ui to prevent
// mixing components designed for C and C++ debugging with the ones
// that work with the core serviceability agent functionality (which
// does not require that the CDebugger interface be implemented).
/** The ThreadListPanel is used for C and C++ debugging and can
visualize all threads in the target process. The caller passes in
a CDebugger attached to the target process and can request that
JavaThreads' associations with these underlying threads be
displayed; this option is only valid when attached to a HotSpot
JVM and when the {@link sun.jvm.hotspot.runtime.VM} has been
initialized. */
public class ThreadListPanel extends JPanel {
/** Listener which can be added to receive "Set Focus" events */
public static interface Listener {
/** ThreadProxy will always be provided; JavaThread will only be
present if displayJavaThreads was specified in the constructor
for the panel and the thread was a JavaThread. */
public void setFocus(ThreadProxy thread, JavaThread jthread);
}
static class ThreadInfo {
private ThreadProxy thread;
// Distinguish between PC == null and no top frame
private boolean gotPC;
private Address pc;
private String location;
private JavaThread javaThread;
private String javaThreadName;
public ThreadInfo(ThreadProxy thread, CDebugger dbg, JavaThread jthread) {
this.thread = thread;
this.location = "<unknown>";
CFrame fr = dbg.topFrameForThread(thread);
if (fr != null) {
gotPC = true;
pc = fr.pc();
PCFinder.Info info = PCFinder.findPC(pc, fr.loadObjectForPC(), dbg);
if (info.getName() != null) {
location = info.getName();
if (info.getConfidence() == PCFinder.LOW_CONFIDENCE) {
location = location + " (?)";
}
if (info.getOffset() < 0) {
location = location + " + 0x" + Long.toHexString(info.getOffset());
}
}
}
if (jthread != null) {
javaThread = jthread;
javaThreadName = jthread.getThreadName();
}
}
public ThreadProxy getThread() { return thread; }
public boolean hasPC() { return gotPC; }
public Address getPC() { return pc; }
public String getLocation() { return location; }
public boolean isJavaThread() { return (javaThread != null); }
public JavaThread getJavaThread() { return javaThread; }
public String getJavaThreadName() { return javaThreadName; }
}
// List<ThreadInfo>
private java.util.List threadList;
private JTable table;
private AbstractTableModel dataModel;
// List<Listener>
private java.util.List listeners;
/** Takes a CDebugger from which the thread list is queried.
displayJavaThreads must only be set to true if the debugger is
attached to a HotSpot JVM and if the VM has already been
initialized. */
public ThreadListPanel(CDebugger dbg, final boolean displayJavaThreads) {
super();
Map threadToJavaThreadMap = null;
if (displayJavaThreads) {
// Collect Java threads from virtual machine and insert them in
// table for later querying
threadToJavaThreadMap = new HashMap();
Threads threads = VM.getVM().getThreads();
for (JavaThread thr = threads.first(); thr != null; thr = thr.next()) {
threadToJavaThreadMap.put(thr.getThreadProxy(), thr);
}
}
java.util.List/*<ThreadProxy>*/ threads = dbg.getThreadList();
threadList = new ArrayList(threads.size());
for (Iterator iter = threads.iterator(); iter.hasNext(); ) {
ThreadProxy thr = (ThreadProxy) iter.next();
JavaThread jthr = null;
if (displayJavaThreads) {
jthr = (JavaThread) threadToJavaThreadMap.get(thr);
}
threadList.add(new ThreadInfo(thr, dbg, jthr));
}
// Thread ID, current PC, current symbol, Java Thread, [Java thread name]
dataModel = new AbstractTableModel() {
public int getColumnCount() { return (displayJavaThreads ? 5 : 3); }
public int getRowCount() { return threadList.size(); }
public String getColumnName(int col) {
switch (col) {
case 0:
return "Thread ID";
case 1:
return "PC";
case 2:
return "Location";
case 3:
return "Java?";
case 4:
return "Java Thread Name";
default:
throw new RuntimeException("Index " + col + " out of bounds");
}
}
public Object getValueAt(int row, int col) {
ThreadInfo info = (ThreadInfo) threadList.get(row);
switch (col) {
case 0:
return info.getThread();
case 1:
{
if (info.hasPC()) {
return info.getPC();
}
return "<no frames on stack>";
}
case 2:
return info.getLocation();
case 3:
if (info.isJavaThread()) {
return "Yes";
} else {
return "";
}
case 4:
if (info.isJavaThread()) {
return info.getJavaThreadName();
} else {
return "";
}
default:
throw new RuntimeException("Index (" + col + ", " + row + ") out of bounds");
}
}
};
// Build user interface
setLayout(new BorderLayout());
table = new JTable(dataModel);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JTableHeader header = table.getTableHeader();
header.setReorderingAllowed(false);
table.setRowSelectionAllowed(true);
table.setColumnSelectionAllowed(false);
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane, BorderLayout.CENTER);
if (threadList.size() > 0) {
table.setRowSelectionInterval(0, 0);
}
JButton button = new JButton("Set Focus");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int i = table.getSelectedRow();
if (i < 0) {
return;
}
ThreadInfo info = (ThreadInfo) threadList.get(i);
for (Iterator iter = listeners.iterator(); iter.hasNext(); ) {
((Listener) iter.next()).setFocus(info.getThread(), info.getJavaThread());
}
}
});
JPanel focusPanel = new JPanel();
focusPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
focusPanel.setLayout(new BoxLayout(focusPanel, BoxLayout.Y_AXIS));
focusPanel.add(Box.createGlue());
focusPanel.add(button);
focusPanel.add(Box.createGlue());
add(focusPanel, BorderLayout.EAST);
// FIXME: make listener model for the debugger so if the user
// specifies a mapfile for or path to a given DSO later we can
// update our state
}
public void addListener(Listener l) {
if (listeners == null) {
listeners = new ArrayList();
}
listeners.add(l);
}
}

View File

@@ -1,252 +0,0 @@
/*
* Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.bugspot.tree.*;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
import sun.jvm.hotspot.ui.tree.*;
import sun.jvm.hotspot.ui.treetable.*;
/** Manages display of a set of local variables in a frame, or the
contents of the "this" pointer */
public class VariablePanel extends JPanel {
private JTreeTable treeTable;
private SimpleTreeTableModel model;
private SimpleTreeGroupNode root;
public VariablePanel() {
super();
model = new SimpleTreeTableModel();
model.setValuesEditable(false);
root = new SimpleTreeGroupNode();
model.setRoot(root);
treeTable = new JTreeTable(model);
treeTable.setRootVisible(false);
treeTable.setShowsRootHandles(true);
treeTable.setShowsIcons(false);
treeTable.setTreeEditable(false);
treeTable.getTableHeader().setReorderingAllowed(false);
treeTable.setCellSelectionEnabled(true);
treeTable.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
treeTable.setDragEnabled(true);
JScrollPane sp = new JScrollPane(treeTable);
sp.getViewport().setBackground(Color.white);
setLayout(new BorderLayout());
add(sp, BorderLayout.CENTER);
}
/** Clear the contents of this VariablePanel */
public void clear() {
root.removeAllChildren();
model.fireTreeStructureChanged();
}
/** Update the contents of this VariablePanel from the given CFrame */
public void update(CFrame fr) {
// Collect locals
CCollector coll = new CCollector();
fr.iterateLocals(coll);
update(coll);
}
/** Update the contents of this VariablePanel from the given JavaVFrame */
public void update(JavaVFrame jfr) {
Method m = jfr.getMethod();
if (!m.hasLocalVariableTable()) {
return;
}
int bci = jfr.getBCI();
// Get local variable table
LocalVariableTableElement[] locals = m.getLocalVariableTable();
// Get locals as StackValueCollection
StackValueCollection coll = jfr.getLocals();
root.removeAllChildren();
// See which locals are live
for (int i = 0; i < locals.length; i++) {
LocalVariableTableElement local = locals[i];
if (local.getStartBCI() <= bci && bci < local.getStartBCI() + local.getLength()) {
// Valid; add it
SimpleTreeNode node = null;
Symbol name = null;
try {
name = m.getConstants().getSymbolAt(local.getNameCPIndex());
if (name == null) {
System.err.println("Null name at slot " +
local.getNameCPIndex() +
" for local variable at slot " +
local.getSlot());
continue;
}
} catch (Exception e) {
System.err.println("Unable to fetch name at slot " +
local.getNameCPIndex() +
" for local variable at slot " +
local.getSlot());
e.printStackTrace();
continue;
}
sun.jvm.hotspot.oops.NamedFieldIdentifier f =
new sun.jvm.hotspot.oops.NamedFieldIdentifier(name.asString());
Symbol descriptor = null;
try {
descriptor = m.getConstants().getSymbolAt(local.getDescriptorCPIndex());
} catch (Exception e) {
System.err.println("Unable to fetch descriptor at slot " +
local.getDescriptorCPIndex() +
" for local variable " + f.getName() +
" at slot " + local.getSlot());
e.printStackTrace();
continue;
}
if (descriptor != null) {
switch (descriptor.getByteAt(0)) {
case 'F': {
node = new sun.jvm.hotspot.ui.tree.FloatTreeNodeAdapter(coll.floatAt(local.getSlot()), f, true);
break;
}
case 'D': {
node = new sun.jvm.hotspot.ui.tree.DoubleTreeNodeAdapter(coll.doubleAt(local.getSlot()), f, true);
break;
}
case 'C': {
node = new sun.jvm.hotspot.ui.tree.CharTreeNodeAdapter((char) coll.intAt(local.getSlot()), f, true);
break;
}
case 'B':
case 'S':
case 'I': {
node = new sun.jvm.hotspot.ui.tree.LongTreeNodeAdapter(coll.intAt(local.getSlot()), f, true);
break;
}
case 'Z': {
node = new sun.jvm.hotspot.ui.tree.BooleanTreeNodeAdapter(
((coll.intAt(local.getSlot()) != 0) ? true : false), f, true
);
break;
}
case 'J': {
node = new sun.jvm.hotspot.ui.tree.LongTreeNodeAdapter(coll.longAt(local.getSlot()), f, true);
break;
}
default: {
try {
node = new sun.jvm.hotspot.ui.tree.OopTreeNodeAdapter(
VM.getVM().getObjectHeap().newOop(coll.oopHandleAt(local.getSlot())), f, true
);
} catch (AddressException e) {
node = new sun.jvm.hotspot.ui.tree.FieldTreeNodeAdapter(f, true) {
public int getChildCount() { return 0; }
public SimpleTreeNode getChild(int i) { return null; }
public boolean isLeaf() { return false; }
public int getIndexOfChild(SimpleTreeNode child) { return 0; }
public String getValue() {
return "<Bad oop>";
}
};
}
break;
}
}
if (node != null) {
root.addChild(node);
}
}
}
}
model.fireTreeStructureChanged();
}
/** Update the contents of this VariablePanel from the given "this"
pointer of the given type */
public void update(Address thisAddr, Type type) {
// Collect fields
CCollector coll = new CCollector();
type.iterateObject(thisAddr, coll);
update(coll);
}
private void update(CCollector coll) {
root.removeAllChildren();
for (int i = 0; i < coll.getNumChildren(); i++) {
root.addChild(coll.getChild(i));
}
model.fireTreeStructureChanged();
}
static class CCollector extends DefaultObjectVisitor {
private java.util.List children;
public CCollector() {
children = new ArrayList();
}
public int getNumChildren() {
return children.size();
}
public SimpleTreeNode getChild(int i) {
return (SimpleTreeNode) children.get(i);
}
public void doBit(sun.jvm.hotspot.debugger.cdbg.FieldIdentifier f, long val) {
children.add(new sun.jvm.hotspot.bugspot.tree.LongTreeNodeAdapter(val, f, true));
}
public void doInt(sun.jvm.hotspot.debugger.cdbg.FieldIdentifier f, long val) {
children.add(new sun.jvm.hotspot.bugspot.tree.LongTreeNodeAdapter(val, f, true));
}
public void doEnum(sun.jvm.hotspot.debugger.cdbg.FieldIdentifier f, long val, String enumName) {
children.add(new sun.jvm.hotspot.bugspot.tree.EnumTreeNodeAdapter(enumName, val, f, true));
}
public void doFloat(sun.jvm.hotspot.debugger.cdbg.FieldIdentifier f, float val) {
children.add(new sun.jvm.hotspot.bugspot.tree.FloatTreeNodeAdapter(val, f, true));
}
public void doDouble(sun.jvm.hotspot.debugger.cdbg.FieldIdentifier f, double val) {
children.add(new sun.jvm.hotspot.bugspot.tree.DoubleTreeNodeAdapter(val, f, true));
}
public void doPointer(sun.jvm.hotspot.debugger.cdbg.FieldIdentifier f, Address val) {
children.add(new sun.jvm.hotspot.bugspot.tree.AddressTreeNodeAdapter(val, f, true));
}
public void doArray(sun.jvm.hotspot.debugger.cdbg.FieldIdentifier f, Address val) {
children.add(new sun.jvm.hotspot.bugspot.tree.AddressTreeNodeAdapter(val, f, true));
}
public void doRef(sun.jvm.hotspot.debugger.cdbg.FieldIdentifier f, Address val) {
children.add(new sun.jvm.hotspot.bugspot.tree.AddressTreeNodeAdapter(val, f, true));
}
public void doCompound(sun.jvm.hotspot.debugger.cdbg.FieldIdentifier f, Address val) {
children.add(new sun.jvm.hotspot.bugspot.tree.ObjectTreeNodeAdapter(val, f, true));
}
}
}

View File

@@ -1,67 +0,0 @@
/*
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot.tree;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.ui.tree.SimpleTreeNode;
/** Encapsulates a float value in a tree handled by SimpleTreeModel */
public class AddressTreeNodeAdapter extends FieldTreeNodeAdapter {
private Address val;
public AddressTreeNodeAdapter(Address val, FieldIdentifier id) {
this(val, id, false);
}
public AddressTreeNodeAdapter(Address val, FieldIdentifier id, boolean treeTableMode) {
super(id, treeTableMode);
this.val = val;
}
public int getChildCount() {
return 0;
}
public SimpleTreeNode getChild(int index) {
return null;
}
public boolean isLeaf() {
return true;
}
public int getIndexOfChild(SimpleTreeNode child) {
return 0;
}
public String getValue() {
if (val != null) {
return val.toString();
}
return "NULL";
}
}

View File

@@ -1,63 +0,0 @@
/*
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot.tree;
import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.ui.tree.SimpleTreeNode;
/** Encapsulates a double value in a tree handled by SimpleTreeModel */
public class DoubleTreeNodeAdapter extends FieldTreeNodeAdapter {
private double val;
public DoubleTreeNodeAdapter(double val, FieldIdentifier id) {
this(val, id, false);
}
public DoubleTreeNodeAdapter(double val, FieldIdentifier id, boolean treeTableMode) {
super(id, treeTableMode);
this.val = val;
}
public int getChildCount() {
return 0;
}
public SimpleTreeNode getChild(int index) {
return null;
}
public boolean isLeaf() {
return true;
}
public int getIndexOfChild(SimpleTreeNode child) {
return 0;
}
public String getValue() {
return Double.toString(val);
}
}

View File

@@ -1,69 +0,0 @@
/*
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot.tree;
import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.ui.tree.SimpleTreeNode;
/** Encapsulates an enumerated value in a tree handled by SimpleTreeModel */
public class EnumTreeNodeAdapter extends FieldTreeNodeAdapter {
private long val;
private String enumName;
public EnumTreeNodeAdapter(String enumName, long val, FieldIdentifier id) {
this(enumName, val, id, false);
}
public EnumTreeNodeAdapter(String enumName, long val, FieldIdentifier id, boolean treeTableMode) {
super(id, treeTableMode);
this.enumName = enumName;
this.val = val;
}
public int getChildCount() {
return 0;
}
public SimpleTreeNode getChild(int index) {
return null;
}
public boolean isLeaf() {
return true;
}
public int getIndexOfChild(SimpleTreeNode child) {
return 0;
}
public String getValue() {
if (enumName != null) {
return enumName;
} else {
return Long.toString(val);
}
}
}

View File

@@ -1,73 +0,0 @@
/*
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot.tree;
import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.ui.tree.SimpleTreeNode;
/** Abstract base class for all adapters for fields of C/C++ objects */
public abstract class FieldTreeNodeAdapter implements SimpleTreeNode {
private FieldIdentifier id;
private boolean treeTableMode;
/** The identifier may be null, i.e., for the root of the tree */
public FieldTreeNodeAdapter(FieldIdentifier id, boolean treeTableMode) {
this.id = id;
this.treeTableMode = treeTableMode;
}
public FieldIdentifier getID() {
return id;
}
/** Defaults to false in subclasses */
public boolean getTreeTableMode() {
return treeTableMode;
}
public Type getType() {
return getID().getType();
}
public String getName() {
if (getID() != null) {
return getID().toString();
}
return "";
}
public String toString() {
if (treeTableMode) {
return getName();
} else {
if (getID() != null) {
return getName() + ": " + getValue();
} else {
return getValue();
}
}
}
}

View File

@@ -1,63 +0,0 @@
/*
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot.tree;
import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.ui.tree.SimpleTreeNode;
/** Encapsulates a float value in a tree handled by SimpleTreeModel */
public class FloatTreeNodeAdapter extends FieldTreeNodeAdapter {
private float val;
public FloatTreeNodeAdapter(float val, FieldIdentifier id) {
this(val, id, false);
}
public FloatTreeNodeAdapter(float val, FieldIdentifier id, boolean treeTableMode) {
super(id, treeTableMode);
this.val = val;
}
public int getChildCount() {
return 0;
}
public SimpleTreeNode getChild(int index) {
return null;
}
public boolean isLeaf() {
return true;
}
public int getIndexOfChild(SimpleTreeNode child) {
return 0;
}
public String getValue() {
return Float.toString(val);
}
}

View File

@@ -1,63 +0,0 @@
/*
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot.tree;
import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.ui.tree.SimpleTreeNode;
/** Encapsulates a long value in a tree handled by SimpleTreeModel */
public class LongTreeNodeAdapter extends FieldTreeNodeAdapter {
private long val;
public LongTreeNodeAdapter(long val, FieldIdentifier id) {
this(val, id, false);
}
public LongTreeNodeAdapter(long val, FieldIdentifier id, boolean treeTableMode) {
super(id, treeTableMode);
this.val = val;
}
public int getChildCount() {
return 0;
}
public SimpleTreeNode getChild(int index) {
return null;
}
public boolean isLeaf() {
return true;
}
public int getIndexOfChild(SimpleTreeNode child) {
return 0;
}
public String getValue() {
return Long.toString(val);
}
}

View File

@@ -1,216 +0,0 @@
/*
* Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.bugspot.tree;
import java.io.*;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.debugger.cdbg.*;
import sun.jvm.hotspot.ui.tree.SimpleTreeNode;
/** An adapter class which allows C/C++ objects to be displayed in a
tree via the SimpleTreeNode interface. */
public class ObjectTreeNodeAdapter extends FieldTreeNodeAdapter {
// Address of object
private Address addr;
/** The address may be null (for object fields of objcets which are
null). The FieldIdentifier should not be null. treeTableMode
defaults to false. */
public ObjectTreeNodeAdapter(Address addr, FieldIdentifier id) {
this(addr, id, false);
}
/** The address may be null (for object fields of objcets which are
null). The FieldIdentifier should not be null. */
public ObjectTreeNodeAdapter(Address addr, FieldIdentifier id, boolean treeTableMode) {
super(id, treeTableMode);
this.addr = addr;
}
public int getChildCount() {
if (addr == null) {
return 0;
}
Counter c = new Counter();
getType().iterateObject(addr, c);
return c.getNumFields();
}
public SimpleTreeNode getChild(int index) {
if (addr == null) {
return null;
}
Fetcher f = new Fetcher(index);
getType().iterateObject(addr, f);
return f.getChild();
}
public boolean isLeaf() {
return (addr == null);
}
public int getIndexOfChild(SimpleTreeNode child) {
FieldIdentifier id = ((FieldTreeNodeAdapter) child).getID();
Finder f = new Finder(id);
getType().iterateObject(addr, f);
return f.getIndex();
}
public String getValue() {
if (addr != null) {
return addr.toString();
}
return "NULL";
}
/** Should be used only once, then have the number of fields
fetched. */
static class Counter extends DefaultObjectVisitor {
private int numFields;
public int getNumFields() {
return numFields;
}
public void doBit(FieldIdentifier f, long val) { ++numFields; }
public void doInt(FieldIdentifier f, long val) { ++numFields; }
public void doEnum(FieldIdentifier f, long val, String enumName) { ++numFields; }
public void doFloat(FieldIdentifier f, float val) { ++numFields; }
public void doDouble(FieldIdentifier f, double val) { ++numFields; }
public void doPointer(FieldIdentifier f, Address val) { ++numFields; }
public void doArray(FieldIdentifier f, Address val) { ++numFields; }
public void doRef(FieldIdentifier f, Address val) { ++numFields; }
public void doCompound(FieldIdentifier f, Address addr) { ++numFields; }
}
/** Creates a new SimpleTreeNode for the given field. */
class Fetcher extends DefaultObjectVisitor {
private int index;
private int curField;
private SimpleTreeNode child;
public Fetcher(int index) {
this.index = index;
}
public SimpleTreeNode getChild() {
return child;
}
public void doBit(FieldIdentifier f, long val) {
if (curField == index) {
child = new LongTreeNodeAdapter(val, f, getTreeTableMode());
}
++curField;
}
public void doInt(FieldIdentifier f, long val) {
if (curField == index) {
child = new LongTreeNodeAdapter(val, f, getTreeTableMode());
}
++curField;
}
public void doEnum(FieldIdentifier f, long val, String enumName) {
if (curField == index) {
child = new EnumTreeNodeAdapter(enumName, val, f, getTreeTableMode());
}
++curField;
}
public void doFloat(FieldIdentifier f, float val) {
if (curField == index) {
child = new FloatTreeNodeAdapter(val, f, getTreeTableMode());
}
++curField;
}
public void doDouble(FieldIdentifier f, double val) {
if (curField == index) {
child = new DoubleTreeNodeAdapter(val, f, getTreeTableMode());
}
++curField;
}
public void doPointer(FieldIdentifier f, Address val) {
if (curField == index) {
child = new AddressTreeNodeAdapter(val, f, getTreeTableMode());
}
++curField;
}
public void doArray(FieldIdentifier f, Address val) {
if (curField == index) {
child = new AddressTreeNodeAdapter(val, f, getTreeTableMode());
}
++curField;
}
public void doRef(FieldIdentifier f, Address val) {
if (curField == index) {
child = new AddressTreeNodeAdapter(val, f, getTreeTableMode());
}
++curField;
}
public void doCompound(FieldIdentifier f, Address val) {
if (curField == index) {
child = new ObjectTreeNodeAdapter(val, f, getTreeTableMode());
}
++curField;
}
}
/** Finds the index of the given FieldIdentifier. */
static class Finder extends DefaultObjectVisitor {
private FieldIdentifier id;
private int curField;
private int index = -1;
public Finder(FieldIdentifier id) {
this.id = id;
}
/** Returns -1 if not found */
public int getIndex() {
return index;
}
public void doBit(FieldIdentifier f, long val) { if (f.equals(id)) { index = curField; } ++curField; }
public void doInt(FieldIdentifier f, long val) { if (f.equals(id)) { index = curField; } ++curField; }
public void doEnum(FieldIdentifier f, long val,
String enumName) { if (f.equals(id)) { index = curField; } ++curField; }
public void doFloat(FieldIdentifier f, float val) { if (f.equals(id)) { index = curField; } ++curField; }
public void doDouble(FieldIdentifier f, double val) { if (f.equals(id)) { index = curField; } ++curField; }
public void doPointer(FieldIdentifier f, Address val) { if (f.equals(id)) { index = curField; } ++curField; }
public void doArray(FieldIdentifier f, Address val) { if (f.equals(id)) { index = curField; } ++curField; }
public void doRef(FieldIdentifier f, Address val) { if (f.equals(id)) { index = curField; } ++curField; }
public void doCompound(FieldIdentifier f,
Address val) { if (f.equals(id)) { index = curField; } ++curField; }
}
}

View File

@@ -49,7 +49,7 @@ public interface BsdDebugger extends JVMDebugger {
public BsdAddress readCompKlassAddress(long address) throws DebuggerException;
public BsdOopHandle readOopHandle(long address) throws DebuggerException;
public BsdOopHandle readCompOopHandle(long address) throws DebuggerException;
public long[] getThreadIntegerRegisterSet(int lwp_id) throws DebuggerException;
public long[] getThreadIntegerRegisterSet(long unique_thread_id) throws DebuggerException;
public long getAddressValue(Address addr) throws DebuggerException;
public Address newAddress(long value) throws DebuggerException;

View File

@@ -90,7 +90,7 @@ public class BsdDebuggerLocal extends DebuggerBase implements BsdDebugger {
throws DebuggerException;
private native ClosestSymbol lookupByAddress0(long address)
throws DebuggerException;
private native long[] getThreadIntegerRegisterSet0(int lwp_id)
private native long[] getThreadIntegerRegisterSet0(long unique_thread_id)
throws DebuggerException;
private native byte[] readBytesFromProcess0(long address, long numBytes)
throws DebuggerException;
@@ -400,9 +400,14 @@ public class BsdDebuggerLocal extends DebuggerBase implements BsdDebugger {
//
/** From the ThreadAccess interface via Debugger and JVMDebugger */
public ThreadProxy getThreadForIdentifierAddress(Address addr) {
return new BsdThread(this, addr);
public ThreadProxy getThreadForIdentifierAddress(Address threadIdAddr, Address uniqueThreadIdAddr) {
return new BsdThread(this, threadIdAddr, uniqueThreadIdAddr);
}
@Override
public ThreadProxy getThreadForIdentifierAddress(Address addr) {
throw new RuntimeException("unimplemented");
}
/** From the ThreadAccess interface via Debugger and JVMDebugger */
public ThreadProxy getThreadForThreadId(long id) {
@@ -455,22 +460,22 @@ public class BsdDebuggerLocal extends DebuggerBase implements BsdDebugger {
// Thread context access
//
public synchronized long[] getThreadIntegerRegisterSet(int lwp_id)
public synchronized long[] getThreadIntegerRegisterSet(long unique_thread_id)
throws DebuggerException {
requireAttach();
if (isCore) {
return getThreadIntegerRegisterSet0(lwp_id);
return getThreadIntegerRegisterSet0(unique_thread_id);
} else {
class GetThreadIntegerRegisterSetTask implements WorkerThreadTask {
int lwp_id;
long unique_thread_id;
long[] result;
public void doit(BsdDebuggerLocal debugger) {
result = debugger.getThreadIntegerRegisterSet0(lwp_id);
result = debugger.getThreadIntegerRegisterSet0(unique_thread_id);
}
}
GetThreadIntegerRegisterSetTask task = new GetThreadIntegerRegisterSetTask();
task.lwp_id = lwp_id;
task.unique_thread_id = unique_thread_id;
workerThread.execute(task);
return task.result;
}

View File

@@ -28,21 +28,23 @@ import sun.jvm.hotspot.debugger.*;
class BsdThread implements ThreadProxy {
private BsdDebugger debugger;
private int lwp_id;
private int thread_id;
private long unique_thread_id;
/** The address argument must be the address of the _thread_id in the
OSThread. It's value is result ::gettid() call. */
BsdThread(BsdDebugger debugger, Address addr) {
BsdThread(BsdDebugger debugger, Address threadIdAddr, Address uniqueThreadIdAddr) {
this.debugger = debugger;
// FIXME: size of data fetched here should be configurable.
// However, making it so would produce a dependency on the "types"
// package from the debugger package, which is not desired.
this.lwp_id = (int) addr.getCIntegerAt(0, 4, true);
this.thread_id = (int) threadIdAddr.getCIntegerAt(0, 4, true);
this.unique_thread_id = uniqueThreadIdAddr.getCIntegerAt(0, 8, true);
}
BsdThread(BsdDebugger debugger, long id) {
this.debugger = debugger;
this.lwp_id = (int) id;
this.thread_id = (int) id;
}
public boolean equals(Object obj) {
@@ -50,19 +52,19 @@ class BsdThread implements ThreadProxy {
return false;
}
return (((BsdThread) obj).lwp_id == lwp_id);
return (((BsdThread) obj).thread_id == thread_id);
}
public int hashCode() {
return lwp_id;
return thread_id;
}
public String toString() {
return Integer.toString(lwp_id);
return Integer.toString(thread_id);
}
public ThreadContext getContext() throws IllegalThreadStateException {
long[] data = debugger.getThreadIntegerRegisterSet(lwp_id);
long[] data = debugger.getThreadIntegerRegisterSet(unique_thread_id);
ThreadContext context = BsdThreadContextFactory.createThreadContext(debugger);
for (int i = 0; i < data.length; i++) {
context.setRegister(i, data[i]);

View File

@@ -60,8 +60,13 @@ final public class LinuxAMD64CFrame extends BasicCFrame {
return null;
}
// Check alignment of rbp
if ( dbg.getAddressValue(rbp) % ADDRESS_SIZE != 0) {
return null;
}
Address nextRBP = rbp.getAddressAt( 0 * ADDRESS_SIZE);
if (nextRBP == null) {
if (nextRBP == null || nextRBP.lessThanOrEqual(rbp)) {
return null;
}
Address nextPC = rbp.getAddressAt( 1 * ADDRESS_SIZE);

View File

@@ -61,8 +61,13 @@ final public class LinuxX86CFrame extends BasicCFrame {
return null;
}
// Check alignment of ebp
if ( dbg.getAddressValue(ebp) % ADDRESS_SIZE != 0) {
return null;
}
Address nextEBP = ebp.getAddressAt( 0 * ADDRESS_SIZE);
if (nextEBP == null) {
if (nextEBP == null || nextEBP.lessThanOrEqual(ebp)) {
return null;
}
Address nextPC = ebp.getAddressAt( 1 * ADDRESS_SIZE);

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,21 +34,11 @@ class WindbgAMD64Thread implements ThreadProxy {
private boolean gotID;
private long id;
/** The address argument must be the address of the HANDLE of the
desired thread in the target process. */
// The address argument must be the address of the OSThread::_thread_id
WindbgAMD64Thread(WindbgDebugger debugger, Address addr) {
this.debugger = debugger;
// FIXME: size of data fetched here should be configurable.
// However, making it so would produce a dependency on the "types"
// package from the debugger package, which is not desired.
// another hack here is that we use sys thread id instead of handle.
// windbg can't get details based on handles it seems.
// I assume that osThread_win32 thread struct has _thread_id (which
// sys thread id) just after handle field.
this.sysId = (int) addr.addOffsetTo(debugger.getAddressSize()).getCIntegerAt(0, 4, true);
gotID = false;
this.sysId = (long)addr.getCIntegerAt(0, 4, true);
gotID = false;
}
WindbgAMD64Thread(WindbgDebugger debugger, long sysId) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,21 +34,11 @@ class WindbgX86Thread implements ThreadProxy {
private boolean gotID;
private long id;
/** The address argument must be the address of the HANDLE of the
desired thread in the target process. */
// The address argument must be the address of OSThread::_thread_id
WindbgX86Thread(WindbgDebugger debugger, Address addr) {
this.debugger = debugger;
// FIXME: size of data fetched here should be configurable.
// However, making it so would produce a dependency on the "types"
// package from the debugger package, which is not desired.
// another hack here is that we use sys thread id instead of handle.
// windbg can't get details based on handles it seems.
// I assume that osThread_win32 thread struct has _thread_id (which
// sys thread id) just after handle field.
this.sysId = (int) addr.addOffsetTo(debugger.getAddressSize()).getCIntegerAt(0, 4, true);
gotID = false;
this.sysId = (long)addr.getCIntegerAt(0, 4, true);
gotID = false;
}
WindbgX86Thread(WindbgDebugger debugger, long sysId) {

View File

@@ -1,69 +0,0 @@
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.livejvm;
import java.io.UnsupportedEncodingException;
import sun.jvm.hotspot.debugger.*;
class CStringAccessor {
private Address addr;
private int bufLen;
CStringAccessor(Address addr, int bufLen) {
this.addr = addr;
this.bufLen = bufLen;
}
String getValue() throws DebuggerException {
int len = 0;
while ((addr.getCIntegerAt(len, 1, true) != 0) && (len < bufLen)) {
++len;
}
byte[] res = new byte[len];
for (int i = 0; i < len; i++) {
res[i] = (byte) addr.getCIntegerAt(i, 1, true);
}
try {
return new String(res, "US-ASCII");
} catch (UnsupportedEncodingException e) {
throw new DebuggerException("Unable to use US-ASCII encoding");
}
}
void setValue(String value) throws DebuggerException {
try {
byte[] data = value.getBytes("US-ASCII");
if (data.length >= bufLen) {
throw new DebuggerException("String too long");
}
for (int i = 0; i < data.length; i++) {
addr.setCIntegerAt(i, 1, data[i]);
}
addr.setCIntegerAt(data.length, 1, 0);
} catch (UnsupportedEncodingException e) {
throw new DebuggerException("Unable to use US-ASCII encoding");
}
}
}

View File

@@ -1,67 +0,0 @@
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.livejvm;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
public class ExceptionEvent extends Event {
private Oop thread;
private Oop clazz;
private JNIid method;
private int location;
private Oop exception;
private Oop catchClass;
private JNIid catchMethod;
private int catchLocation;
public ExceptionEvent(Oop thread,
Oop clazz,
JNIid method,
int location,
Oop exception,
Oop catchClass,
JNIid catchMethod,
int catchLocation) {
super(Event.Type.EXCEPTION);
this.thread = thread;
this.clazz = clazz;
this.method = method;
this.location = location;
this.exception = exception;
this.catchClass = catchClass;
this.catchMethod = catchMethod;
this.catchLocation = catchLocation;
}
public Oop thread() { return thread; }
public Oop clazz() { return clazz; }
public JNIid methodID() { return method; }
public int location() { return location; }
public Oop exception() { return exception; }
public Oop catchClass() { return catchClass; }
public JNIid catchMethodID() { return catchMethod; }
public int catchLocation() { return catchLocation; }
}

View File

@@ -1,415 +0,0 @@
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.livejvm;
import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.oops.*;
import sun.jvm.hotspot.runtime.*;
/** Provides Java programming language-level interaction with a live
Java HotSpot VM via the use of the SA's JVMDI module. This is an
experimental mechanism. The BugSpot debugger should be converted
to use the JVMDI/JDWP-based JDI implementation for live process
interaction once the JDI binding for the SA is complete. */
public class ServiceabilityAgentJVMDIModule {
private Debugger dbg;
private String[] saLibNames;
private String saLibName;
private boolean attached;
private boolean suspended;
private static final int JVMDI_EVENT_BREAKPOINT = 2;
private static final int JVMDI_EVENT_EXCEPTION = 4;
private static long timeoutMillis = 3000;
// Values in target process
// Events sent from VM to SA
private CIntegerAccessor saAttached;
private CIntegerAccessor saEventPending;
private CIntegerAccessor saEventKind;
// Exception events
private JNIHandleAccessor saExceptionThread;
private JNIHandleAccessor saExceptionClass;
private JNIid saExceptionMethod;
private CIntegerAccessor saExceptionLocation;
private JNIHandleAccessor saExceptionException;
private JNIHandleAccessor saExceptionCatchClass;
private JNIid saExceptionCatchMethod;
private CIntegerAccessor saExceptionCatchLocation;
// Breakpoint events
private JNIHandleAccessor saBreakpointThread;
private JNIHandleAccessor saBreakpointClass;
private JNIid saBreakpointMethod;
private CIntegerAccessor saBreakpointLocation;
// Commands sent by the SA to the VM
private int SA_CMD_SUSPEND_ALL;
private int SA_CMD_RESUME_ALL;
private int SA_CMD_TOGGLE_BREAKPOINT;
private int SA_CMD_BUF_SIZE;
private CIntegerAccessor saCmdPending;
private CIntegerAccessor saCmdType;
private CIntegerAccessor saCmdResult;
private CStringAccessor saCmdResultErrMsg;
// Toggle breakpoint command arguments
private CStringAccessor saCmdBkptSrcFileName;
private CStringAccessor saCmdBkptPkgName;
private CIntegerAccessor saCmdBkptLineNumber;
private CIntegerAccessor saCmdBkptResWasError;
private CIntegerAccessor saCmdBkptResLineNumber;
private CIntegerAccessor saCmdBkptResBCI;
private CIntegerAccessor saCmdBkptResWasSet;
private CStringAccessor saCmdBkptResMethodName;
private CStringAccessor saCmdBkptResMethodSig;
public ServiceabilityAgentJVMDIModule(Debugger dbg, String[] saLibNames) {
this.dbg = dbg;
this.saLibNames = saLibNames;
}
/** Indicates whether a call to attach() should complete without an
exception. */
public boolean canAttach() {
return setupLookup("SA_CMD_SUSPEND_ALL");
}
/** Attempt to initiate a connection with the JVMDI module in the
target VM. */
public void attach() throws DebuggerException {
if (!canAttach()) {
throw new DebuggerException("Unable to initiate symbol lookup in SA's JVMDI module");
}
if (attached) {
throw new DebuggerException("Already attached");
}
// Attempt to look up well-known symbols in the target VM.
SA_CMD_SUSPEND_ALL = lookupConstInt("SA_CMD_SUSPEND_ALL");
SA_CMD_RESUME_ALL = lookupConstInt("SA_CMD_RESUME_ALL");
SA_CMD_TOGGLE_BREAKPOINT = lookupConstInt("SA_CMD_TOGGLE_BREAKPOINT");
SA_CMD_BUF_SIZE = lookupConstInt("SA_CMD_BUF_SIZE");
saAttached = lookupCInt("saAttached");
saEventPending = lookupCInt("saEventPending");
saEventKind = lookupCInt("saEventKind");
saCmdPending = lookupCInt("saCmdPending");
saCmdType = lookupCInt("saCmdType");
saCmdResult = lookupCInt("saCmdResult");
saCmdResultErrMsg = lookupCString("saCmdResultErrMsg", SA_CMD_BUF_SIZE);
// Toggling of breakpoints
saCmdBkptSrcFileName = lookupCString("saCmdBkptSrcFileName", SA_CMD_BUF_SIZE);
saCmdBkptPkgName = lookupCString("saCmdBkptPkgName", SA_CMD_BUF_SIZE);
saCmdBkptLineNumber = lookupCInt("saCmdBkptLineNumber");
saCmdBkptResWasError = lookupCInt("saCmdBkptResWasError");
saCmdBkptResLineNumber = lookupCInt("saCmdBkptResLineNumber");
saCmdBkptResBCI = lookupCInt("saCmdBkptResBCI");
saCmdBkptResWasSet = lookupCInt("saCmdBkptResWasSet");
saCmdBkptResMethodName = lookupCString("saCmdBkptResMethodName", SA_CMD_BUF_SIZE);
saCmdBkptResMethodSig = lookupCString("saCmdBkptResMethodSig", SA_CMD_BUF_SIZE);
// Check for existence of symbols needed later
// FIXME: should probably cache these since we can't support the
// -Xrun module or the VM getting unloaded anyway
lookup("saExceptionThread");
lookup("saExceptionClass");
lookup("saExceptionMethod");
lookup("saExceptionLocation");
lookup("saExceptionException");
lookup("saExceptionCatchClass");
lookup("saExceptionCatchMethod");
lookup("saExceptionCatchLocation");
lookup("saBreakpointThread");
lookup("saBreakpointClass");
lookup("saBreakpointMethod");
lookup("saBreakpointLocation");
saAttached.setValue(1);
attached = true;
}
public void detach() {
saAttached.setValue(0);
attached = false;
saLibName = null;
}
/** Set the timeout value (in milliseconds) for the VM to reply to
commands. Once this timeout has elapsed, the VM is assumed to
have disconnected. Defaults to 3000 milliseconds (3 seconds). */
public void setCommandTimeout(long millis) {
timeoutMillis = millis;
}
/** Get the timeout value (in milliseconds) for the VM to reply to
commands. Once this timeout has elapsed, the VM is assumed to
have disconnected. Defaults to 3000 milliseconds (3 seconds). */
public long getCommandTimeout() {
return timeoutMillis;
}
/** Indicates whether a Java debug event is pending */
public boolean eventPending() {
return (saEventPending.getValue() != 0);
}
/** Poll for event; returns null if none pending. */
public Event eventPoll() {
if (saEventPending.getValue() == 0) {
return null;
}
int kind = (int) saEventKind.getValue();
switch (kind) {
case JVMDI_EVENT_EXCEPTION: {
JNIHandleAccessor thread = lookupJNIHandle("saExceptionThread");
JNIHandleAccessor clazz = lookupJNIHandle("saExceptionClass");
JNIid method = lookupJNIid("saExceptionMethod");
CIntegerAccessor location = lookupCInt("saExceptionLocation");
JNIHandleAccessor exception = lookupJNIHandle("saExceptionException");
JNIHandleAccessor catchClass = lookupJNIHandle("saExceptionCatchClass");
JNIid catchMethod = lookupJNIid("saExceptionCatchMethod");
CIntegerAccessor catchLocation = lookupCInt("saExceptionCatchLocation");
return new ExceptionEvent(thread.getValue(), clazz.getValue(), method,
(int) location.getValue(), exception.getValue(),
catchClass.getValue(), catchMethod, (int) catchLocation.getValue());
}
case JVMDI_EVENT_BREAKPOINT: {
JNIHandleAccessor thread = lookupJNIHandle("saBreakpointThread");
JNIHandleAccessor clazz = lookupJNIHandle("saBreakpointClass");
JNIid method = lookupJNIid("saBreakpointMethod");
CIntegerAccessor location = lookupCInt("saBreakpointLocation");
return new BreakpointEvent(thread.getValue(), clazz.getValue(),
method, (int) location.getValue());
}
default:
throw new DebuggerException("Unsupported event type " + kind);
}
}
/** Continue past current event */
public void eventContinue() {
saEventPending.setValue(0);
}
/** Suspend all Java threads in the target VM. Throws
DebuggerException if the VM disconnected. */
public void suspend() {
saCmdType.setValue(SA_CMD_SUSPEND_ALL);
saCmdPending.setValue(1);
waitForCommandCompletion();
suspended = true;
}
/** Resume all Java threads in the target VM. Throws
DebuggerException if the VM disconnected. */
public void resume() {
saCmdType.setValue(SA_CMD_RESUME_ALL);
saCmdPending.setValue(1);
waitForCommandCompletion();
suspended = false;
}
/** Indicates whether all Java threads have been suspended via this
interface. */
public boolean isSuspended() {
return suspended;
}
/** Information about toggling of breakpoints */
public static class BreakpointToggleResult {
private boolean success;
private String errMsg;
private int lineNumber;
private int bci;
private boolean wasSet;
private String methodName;
private String methodSig;
/** Success constructor */
public BreakpointToggleResult(int lineNumber, int bci, boolean wasSet,
String methodName, String methodSig) {
this.lineNumber = lineNumber;
this.bci = bci;
this.wasSet = wasSet;
this.methodName = methodName;
this.methodSig = methodSig;
success = true;
}
/** Failure constructor */
public BreakpointToggleResult(String errMsg) {
this.errMsg = errMsg;
success = false;
}
/** Indicates whether this represents a successful return or not */
public boolean getSuccess() { return success; }
/** Valid only if getSuccess() returns false */
public String getErrMsg() { return errMsg; }
/** Line number at which breakpoint toggle occurred; valid only if
getSuccess() returns true. */
public int getLineNumber() { return lineNumber; }
/** BCI at which breakpoint toggle occurred; valid only if
getSuccess() returns true. */
public int getBCI() { return bci; }
/** Indicates whether the breakpoint toggle was the set of a
breakpoint or not; valid only if getSuccess() returns true. */
public boolean getWasSet() { return wasSet; }
/** Method name in which the breakpoint toggle occurred; valid
only if getSuccess() returns true. */
public String getMethodName() { return methodName; }
/** Method signature in which the breakpoint toggle occurred;
valid only if getSuccess() returns true. */
public String getMethodSignature() { return methodSig; }
}
/** Toggle a breakpoint. Throws DebuggerException if a real error
occurred; otherwise returns non-null BreakpointToggleResult. The
work of scanning the loaded classes is done in the target VM
because it turns out to be significantly faster than scanning
through the system dictionary from the SA, and interactivity
when setting breakpoints is important. */
public BreakpointToggleResult toggleBreakpoint(String srcFileName,
String pkgName,
int lineNo) {
saCmdBkptSrcFileName.setValue(srcFileName);
saCmdBkptPkgName.setValue(pkgName);
saCmdBkptLineNumber.setValue(lineNo);
saCmdType.setValue(SA_CMD_TOGGLE_BREAKPOINT);
saCmdPending.setValue(1);
if (waitForCommandCompletion(true)) {
return new BreakpointToggleResult((int) saCmdBkptResLineNumber.getValue(),
(int) saCmdBkptResBCI.getValue(),
(saCmdBkptResWasSet.getValue() != 0),
saCmdBkptResMethodName.getValue(),
saCmdBkptResMethodSig.getValue());
} else {
return new BreakpointToggleResult(saCmdResultErrMsg.getValue());
}
}
//----------------------------------------------------------------------
// Internals only below this point
//
private CIntegerAccessor lookupCInt(String symbolName) {
return new CIntegerAccessor(lookup(symbolName), 4, false);
}
private CStringAccessor lookupCString(String symbolName, int bufLen) {
return new CStringAccessor(lookup(symbolName), bufLen);
}
private JNIHandleAccessor lookupJNIHandle(String symbolName) {
return new JNIHandleAccessor(lookup(symbolName), VM.getVM().getObjectHeap());
}
private JNIid lookupJNIid(String symbolName) {
Address idAddr = lookup(symbolName).getAddressAt(0);
if (idAddr == null) {
return null;
}
return new JNIid(idAddr, VM.getVM().getObjectHeap());
}
private int lookupConstInt(String symbolName) {
Address addr = lookup(symbolName);
return (int) addr.getCIntegerAt(0, 4, false);
}
private boolean setupLookup(String symbolName) {
if (saLibName == null) {
for (int i = 0; i < saLibNames.length; i++) {
Address addr = dbg.lookup(saLibNames[i], symbolName);
if (addr != null) {
saLibName = saLibNames[i];
return true;
}
}
return false;
}
return true;
}
private Address lookup(String symbolName) {
if (saLibName == null) {
for (int i = 0; i < saLibNames.length; i++) {
Address addr = dbg.lookup(saLibNames[i], symbolName);
if (addr != null) {
saLibName = saLibNames[i];
return addr;
}
}
throw new DebuggerException("Unable to find symbol " + symbolName + " in any of the known names for the SA");
}
Address addr = dbg.lookup(saLibName, symbolName);
if (addr == null) {
throw new DebuggerException("Unable to find symbol " + symbolName + " in " + saLibName);
}
return addr;
}
private void waitForCommandCompletion() {
waitForCommandCompletion(false);
}
/** Returns true if command succeeded, false if not */
private boolean waitForCommandCompletion(boolean forBreakpoint) {
long start = System.currentTimeMillis();
long cur = start;
while ((saCmdPending.getValue() != 0) &&
(cur - start < timeoutMillis)) {
try {
java.lang.Thread.currentThread().sleep(10);
} catch (InterruptedException e) {
}
cur = System.currentTimeMillis();
}
if (saCmdPending.getValue() != 0) {
detach();
throw new DebuggerException("VM appears to have died");
}
boolean succeeded = saCmdResult.getValue() == 0;
if (!succeeded &&
(!forBreakpoint || saCmdBkptResWasError.getValue() != 0)) {
String err = saCmdResultErrMsg.getValue();
throw new DebuggerException("Error executing JVMDI command: " + err);
}
return succeeded;
}
}

View File

@@ -1,6 +1,6 @@
/*
* @(#)BinaryTreeDictionary.java
* Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -30,7 +30,7 @@ import sun.jvm.hotspot.debugger.*;
import sun.jvm.hotspot.types.*;
import sun.jvm.hotspot.runtime.*;
public class BinaryTreeDictionary extends VMObject {
public class AFLBinaryTreeDictionary extends VMObject {
static {
VM.registerVMInitializedObserver(new Observer() {
public void update(Observable o, Object data) {
@@ -40,8 +40,8 @@ public class BinaryTreeDictionary extends VMObject {
}
private static synchronized void initialize(TypeDataBase db) {
Type type = db.lookupType("BinaryTreeDictionary");
totalSizeField = type.getCIntegerField("_totalSize");
Type type = db.lookupType("AFLBinaryTreeDictionary");
totalSizeField = type.getCIntegerField("_total_size");
}
// Fields
@@ -53,7 +53,7 @@ public class BinaryTreeDictionary extends VMObject {
}
// Constructor
public BinaryTreeDictionary(Address addr) {
public AFLBinaryTreeDictionary(Address addr) {
super(addr);
}
}

Some files were not shown because too many files have changed in this diff Show More