This commit is contained in:
Yuri Nesterenko 2009-07-13 09:37:50 -07:00
commit 08c5418a0b
660 changed files with 157219 additions and 6335 deletions

View File

@ -36,3 +36,5 @@ d60a9ce3c3eabf28f5d50ae839d18be04a551bc2 jdk7-b58
c33e7d38c9210741dbc285507403a4b20bd802a0 jdk7-b59
5a10e4d0b14d7beac53a7b2213ae6864afe1fd3e jdk7-b60
dbb955b1ee59b876dd1f133952b557b48b1d7732 jdk7-b61
6107cbff3130c747d243c25a7874cd59db5744a8 jdk7-b62
dfd8506f74c3731bb169ce93c72612d78ee0413b jdk7-b63

View File

@ -36,3 +36,5 @@ ffd09e767dfa6d21466183a400f72cf62d53297f jdk7-b57
030142474602b4a067662fffc0c8e541de5a78df jdk7-b59
39565502682c7085369bd09e51640919dc741097 jdk7-b60
472c21584cfd7e9c0229ad6a100366a5c03d2976 jdk7-b61
c7ed15ab92ce36a09d264a5e34025884b2d7607f jdk7-b62
57f7e028c7ad1806500ae89eb3f4cd9a51b10e18 jdk7-b63

View File

@ -36,3 +36,5 @@ bec82237d694f9802b820fa11bbb4f7fa9bf8e77 jdk7-b52
7e6b2b55c00cc523b468272353ada3979adbbf16 jdk7-b59
f1e1cccbd13aa96d2d8bd872782ff764010bc22c jdk7-b60
e906b16a12a9a63b615898afa5d9673cbd1c5ab8 jdk7-b61
65b66117dbd70a493e9644aeb4033cf95a4e3c99 jdk7-b62
d20e45cd539f20405ff843652069cfd7550c5ab3 jdk7-b63

View File

@ -365,10 +365,10 @@ ifndef COPYRIGHT_YEAR
COPYRIGHT_YEAR = 2007
endif
RC_FLAGS += -d "J2SE_BUILD_ID=$(FULL_VERSION)" \
-d "J2SE_COMPANY=$(COMPANY_NAME)" \
-d "J2SE_COMPONENT=$(PRODUCT_NAME) Platform SE binary" \
-d "J2SE_VER=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(J2SE_UPDATE_VER).$(COOKED_BUILD_NUMBER)" \
-d "J2SE_COPYRIGHT=Copyright \xA9 $(COPYRIGHT_YEAR)" \
-d "J2SE_NAME=$(PRODUCT_NAME) Platform SE $(JDK_MINOR_VERSION) $(J2SE_UPDATE_META_TAG)" \
-d "J2SE_FVER=$(JDK_VERSION)"
RC_FLAGS += -d "JDK_BUILD_ID=$(FULL_VERSION)" \
-d "JDK_COMPANY=$(COMPANY_NAME)" \
-d "JDK_COMPONENT=$(PRODUCT_NAME) Platform SE binary" \
-d "JDK_VER=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VER).$(COOKED_BUILD_NUMBER)" \
-d "JDK_COPYRIGHT=Copyright \xA9 $(COPYRIGHT_YEAR)" \
-d "JDK_NAME=$(PRODUCT_NAME) Platform SE $(JDK_MINOR_VERSION) $(JDK_UPDATE_META_TAG)" \
-d "JDK_FVER=$(JDK_VERSION)"

View File

@ -158,9 +158,9 @@ ifndef LOCAL_RESOURCE_FILE
endif
@$(ECHO) Created $@
RC_FLAGS += /D "J2SE_FNAME=$(LIBRARY).dll" \
/D "J2SE_INTERNAL_NAME=$(LIBRARY)" \
/D "J2SE_FTYPE=0x2L"
RC_FLAGS += /D "JDK_FNAME=$(LIBRARY).dll" \
/D "JDK_INTERNAL_NAME=$(LIBRARY)" \
/D "JDK_FTYPE=0x2L"
$(OBJDIR)/$(LIBRARY).res: $(VERSIONINFO_RESOURCE)
ifndef LOCAL_RESOURCE_FILE

View File

@ -32,6 +32,12 @@ PACKAGE = com.sun.tools.corba.se.idl
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
# This program must contain a manifest that defines the execution level
# needed to follow standard Vista User Access Control Guidelines
# This must be set before Program.gmk is included
#
BUILD_MANIFEST=true
#
# Files
#

View File

@ -37,8 +37,8 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION J2SE_FVER
PRODUCTVERSION J2SE_FVER
FILEVERSION JDK_FVER
PRODUCTVERSION JDK_FVER
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -48,22 +48,22 @@ VS_VERSION_INFO VERSIONINFO
// FILEOS 0x4 is Win32, 0x40004 is Win32 NT only
FILEOS 0x4L
// FILETYPE should be 0x1 for .exe and 0x2 for .dll
FILETYPE J2SE_FTYPE
FILETYPE JDK_FTYPE
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "000004b0"
BEGIN
VALUE "CompanyName", XSTR(J2SE_COMPANY) "\0"
VALUE "FileDescription", XSTR(J2SE_COMPONENT) "\0"
VALUE "FileVersion", XSTR(J2SE_VER) "\0"
VALUE "Full Version", XSTR(J2SE_BUILD_ID) "\0"
VALUE "InternalName", XSTR(J2SE_INTERNAL_NAME) "\0"
VALUE "LegalCopyright", XSTR(J2SE_COPYRIGHT) "\0"
VALUE "OriginalFilename", XSTR(J2SE_FNAME) "\0"
VALUE "ProductName", XSTR(J2SE_NAME) "\0"
VALUE "ProductVersion", XSTR(J2SE_VER) "\0"
VALUE "CompanyName", XSTR(JDK_COMPANY) "\0"
VALUE "FileDescription", XSTR(JDK_COMPONENT) "\0"
VALUE "FileVersion", XSTR(JDK_VER) "\0"
VALUE "Full Version", XSTR(JDK_BUILD_ID) "\0"
VALUE "InternalName", XSTR(JDK_INTERNAL_NAME) "\0"
VALUE "LegalCopyright", XSTR(JDK_COPYRIGHT) "\0"
VALUE "OriginalFilename", XSTR(JDK_FNAME) "\0"
VALUE "ProductName", XSTR(JDK_NAME) "\0"
VALUE "ProductVersion", XSTR(JDK_VER) "\0"
END
END
BLOCK "VarFileInfo"

View File

@ -36,3 +36,5 @@ f4cbf78110c726919f46b59a3b054c54c7e889b4 jdk7-b57
c55be0c7bd32c016c52218eb4c8b5da8a75450b5 jdk7-b59
a77eddcd510c3972717c025cfcef9a60bfa4ecac jdk7-b60
27b728fd1281ab62e9d7e4424f8bbb6ca438d803 jdk7-b61
a88386380bdaaa5ab4ffbedf22c57bac5dbec034 jdk7-b62
32c83fb84370a35344676991a48440378e6b6c8a jdk7-b63

View File

@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2009
HS_MAJOR_VER=16
HS_MINOR_VER=0
HS_BUILD_NUMBER=04
HS_BUILD_NUMBER=05
JDK_MAJOR_VER=1
JDK_MINOR_VER=7

View File

@ -1157,6 +1157,13 @@ void ConcurrentMark::checkpointRootsFinal(bool clear_all_soft_refs) {
} else {
// We're done with marking.
JavaThread::satb_mark_queue_set().set_active_all_threads(false);
if (VerifyDuringGC) {
g1h->prepare_for_verify();
g1h->verify(/* allow_dirty */ true,
/* silent */ false,
/* use_prev_marking */ false);
}
}
#if VERIFY_OBJS_PROCESSED
@ -1747,12 +1754,12 @@ void ConcurrentMark::cleanup() {
// races with it goes around and waits for completeCleanup to finish.
g1h->increment_total_collections();
#ifndef PRODUCT
if (VerifyDuringGC) {
G1CollectedHeap::heap()->prepare_for_verify();
G1CollectedHeap::heap()->verify(true,false);
g1h->prepare_for_verify();
g1h->verify(/* allow_dirty */ true,
/* silent */ false,
/* use_prev_marking */ true);
}
#endif
}
void ConcurrentMark::completeCleanup() {

View File

@ -1535,6 +1535,15 @@ jint G1CollectedHeap::initialize() {
guarantee(_hrs != NULL, "Couldn't allocate HeapRegionSeq");
guarantee(_cur_alloc_region == NULL, "from constructor");
// 6843694 - ensure that the maximum region index can fit
// in the remembered set structures.
const size_t max_region_idx = ((size_t)1 << (sizeof(RegionIdx_t)*BitsPerByte-1)) - 1;
guarantee((max_regions() - 1) <= max_region_idx, "too many regions");
const size_t cards_per_region = HeapRegion::GrainBytes >> CardTableModRefBS::card_shift;
size_t max_cards_per_region = ((size_t)1 << (sizeof(CardIdx_t)*BitsPerByte-1)) - 1;
guarantee(cards_per_region < max_cards_per_region, "too many cards per region");
_bot_shared = new G1BlockOffsetSharedArray(_reserved,
heap_word_size(init_byte_size));
@ -2127,17 +2136,22 @@ public:
};
class VerifyObjsInRegionClosure: public ObjectClosure {
private:
G1CollectedHeap* _g1h;
size_t _live_bytes;
HeapRegion *_hr;
bool _use_prev_marking;
public:
VerifyObjsInRegionClosure(HeapRegion *hr) : _live_bytes(0), _hr(hr) {
// use_prev_marking == true -> use "prev" marking information,
// use_prev_marking == false -> use "next" marking information
VerifyObjsInRegionClosure(HeapRegion *hr, bool use_prev_marking)
: _live_bytes(0), _hr(hr), _use_prev_marking(use_prev_marking) {
_g1h = G1CollectedHeap::heap();
}
void do_object(oop o) {
VerifyLivenessOopClosure isLive(_g1h);
assert(o != NULL, "Huh?");
if (!_g1h->is_obj_dead(o)) {
if (!_g1h->is_obj_dead_cond(o, _use_prev_marking)) {
o->oop_iterate(&isLive);
if (!_hr->obj_allocated_since_prev_marking(o))
_live_bytes += (o->size() * HeapWordSize);
@ -2176,17 +2190,22 @@ public:
};
class VerifyRegionClosure: public HeapRegionClosure {
public:
private:
bool _allow_dirty;
bool _par;
VerifyRegionClosure(bool allow_dirty, bool par = false)
: _allow_dirty(allow_dirty), _par(par) {}
bool _use_prev_marking;
public:
// use_prev_marking == true -> use "prev" marking information,
// use_prev_marking == false -> use "next" marking information
VerifyRegionClosure(bool allow_dirty, bool par, bool use_prev_marking)
: _allow_dirty(allow_dirty), _par(par),
_use_prev_marking(use_prev_marking) {}
bool doHeapRegion(HeapRegion* r) {
guarantee(_par || r->claim_value() == HeapRegion::InitialClaimValue,
"Should be unclaimed at verify points.");
if (!r->continuesHumongous()) {
VerifyObjsInRegionClosure not_dead_yet_cl(r);
r->verify(_allow_dirty);
VerifyObjsInRegionClosure not_dead_yet_cl(r, _use_prev_marking);
r->verify(_allow_dirty, _use_prev_marking);
r->object_iterate(&not_dead_yet_cl);
guarantee(r->max_live_bytes() >= not_dead_yet_cl.live_bytes(),
"More live objects than counted in last complete marking.");
@ -2199,10 +2218,13 @@ class VerifyRootsClosure: public OopsInGenClosure {
private:
G1CollectedHeap* _g1h;
bool _failures;
bool _use_prev_marking;
public:
VerifyRootsClosure() :
_g1h(G1CollectedHeap::heap()), _failures(false) { }
// use_prev_marking == true -> use "prev" marking information,
// use_prev_marking == false -> use "next" marking information
VerifyRootsClosure(bool use_prev_marking) :
_g1h(G1CollectedHeap::heap()), _failures(false),
_use_prev_marking(use_prev_marking) { }
bool failures() { return _failures; }
@ -2213,7 +2235,7 @@ public:
void do_oop(oop* p) {
oop obj = *p;
if (obj != NULL) {
if (_g1h->is_obj_dead(obj)) {
if (_g1h->is_obj_dead_cond(obj, _use_prev_marking)) {
gclog_or_tty->print_cr("Root location "PTR_FORMAT" "
"points to dead obj "PTR_FORMAT, p, (void*) obj);
obj->print_on(gclog_or_tty);
@ -2229,24 +2251,35 @@ class G1ParVerifyTask: public AbstractGangTask {
private:
G1CollectedHeap* _g1h;
bool _allow_dirty;
bool _use_prev_marking;
public:
G1ParVerifyTask(G1CollectedHeap* g1h, bool allow_dirty) :
// use_prev_marking == true -> use "prev" marking information,
// use_prev_marking == false -> use "next" marking information
G1ParVerifyTask(G1CollectedHeap* g1h, bool allow_dirty,
bool use_prev_marking) :
AbstractGangTask("Parallel verify task"),
_g1h(g1h), _allow_dirty(allow_dirty) { }
_g1h(g1h), _allow_dirty(allow_dirty),
_use_prev_marking(use_prev_marking) { }
void work(int worker_i) {
HandleMark hm;
VerifyRegionClosure blk(_allow_dirty, true);
VerifyRegionClosure blk(_allow_dirty, true, _use_prev_marking);
_g1h->heap_region_par_iterate_chunked(&blk, worker_i,
HeapRegion::ParVerifyClaimValue);
}
};
void G1CollectedHeap::verify(bool allow_dirty, bool silent) {
verify(allow_dirty, silent, /* use_prev_marking */ true);
}
void G1CollectedHeap::verify(bool allow_dirty,
bool silent,
bool use_prev_marking) {
if (SafepointSynchronize::is_at_safepoint() || ! UseTLAB) {
if (!silent) { gclog_or_tty->print("roots "); }
VerifyRootsClosure rootsCl;
VerifyRootsClosure rootsCl(use_prev_marking);
process_strong_roots(false,
SharedHeap::SO_AllClasses,
&rootsCl,
@ -2257,7 +2290,7 @@ void G1CollectedHeap::verify(bool allow_dirty, bool silent) {
assert(check_heap_region_claim_values(HeapRegion::InitialClaimValue),
"sanity check");
G1ParVerifyTask task(this, allow_dirty);
G1ParVerifyTask task(this, allow_dirty, use_prev_marking);
int n_workers = workers()->total_workers();
set_par_threads(n_workers);
workers()->run_task(&task);
@ -2271,7 +2304,7 @@ void G1CollectedHeap::verify(bool allow_dirty, bool silent) {
assert(check_heap_region_claim_values(HeapRegion::InitialClaimValue),
"sanity check");
} else {
VerifyRegionClosure blk(allow_dirty);
VerifyRegionClosure blk(allow_dirty, false, use_prev_marking);
_hrs->iterate(&blk);
}
if (!silent) gclog_or_tty->print("remset ");

View File

@ -59,6 +59,9 @@ class ConcurrentZFThread;
typedef GenericTaskQueue<oop*> RefToScanQueue;
typedef GenericTaskQueueSet<oop*> RefToScanQueueSet;
typedef int RegionIdx_t; // needs to hold [ 0..max_regions() )
typedef int CardIdx_t; // needs to hold [ 0..CardsPerRegion )
enum G1GCThreadGroups {
G1CRGroup = 0,
G1ZFGroup = 1,
@ -1046,6 +1049,17 @@ public:
virtual void prepare_for_verify();
// Perform verification.
// use_prev_marking == true -> use "prev" marking information,
// use_prev_marking == false -> use "next" marking information
// NOTE: Only the "prev" marking information is guaranteed to be
// consistent most of the time, so most calls to this should use
// use_prev_marking == true. Currently, there is only one case where
// this is called with use_prev_marking == false, which is to verify
// the "next" marking information at the end of remark.
void verify(bool allow_dirty, bool silent, bool use_prev_marking);
// Override; it uses the "prev" marking information
virtual void verify(bool allow_dirty, bool silent);
virtual void print() const;
virtual void print_on(outputStream* st) const;
@ -1122,6 +1136,18 @@ public:
bool isMarkedPrev(oop obj) const;
bool isMarkedNext(oop obj) const;
// use_prev_marking == true -> use "prev" marking information,
// use_prev_marking == false -> use "next" marking information
bool is_obj_dead_cond(const oop obj,
const HeapRegion* hr,
const bool use_prev_marking) const {
if (use_prev_marking) {
return is_obj_dead(obj, hr);
} else {
return is_obj_ill(obj, hr);
}
}
// Determine if an object is dead, given the object and also
// the region to which the object belongs. An object is dead
// iff a) it was not allocated since the last mark and b) it
@ -1159,8 +1185,19 @@ public:
// Added if it is in permanent gen it isn't dead.
// Added if it is NULL it isn't dead.
bool is_obj_dead(oop obj) {
HeapRegion* hr = heap_region_containing(obj);
// use_prev_marking == true -> use "prev" marking information,
// use_prev_marking == false -> use "next" marking information
bool is_obj_dead_cond(const oop obj,
const bool use_prev_marking) {
if (use_prev_marking) {
return is_obj_dead(obj);
} else {
return is_obj_ill(obj);
}
}
bool is_obj_dead(const oop obj) {
const HeapRegion* hr = heap_region_containing(obj);
if (hr == NULL) {
if (Universe::heap()->is_in_permanent(obj))
return false;
@ -1170,8 +1207,8 @@ public:
else return is_obj_dead(obj, hr);
}
bool is_obj_ill(oop obj) {
HeapRegion* hr = heap_region_containing(obj);
bool is_obj_ill(const oop obj) {
const HeapRegion* hr = heap_region_containing(obj);
if (hr == NULL) {
if (Universe::heap()->is_in_permanent(obj))
return false;

View File

@ -40,15 +40,19 @@ FilterOutOfRegionClosure::FilterOutOfRegionClosure(HeapRegion* r,
{}
class VerifyLiveClosure: public OopClosure {
private:
G1CollectedHeap* _g1h;
CardTableModRefBS* _bs;
oop _containing_obj;
bool _failures;
int _n_failures;
bool _use_prev_marking;
public:
VerifyLiveClosure(G1CollectedHeap* g1h) :
// use_prev_marking == true -> use "prev" marking information,
// use_prev_marking == false -> use "next" marking information
VerifyLiveClosure(G1CollectedHeap* g1h, bool use_prev_marking) :
_g1h(g1h), _bs(NULL), _containing_obj(NULL),
_failures(false), _n_failures(0)
_failures(false), _n_failures(0), _use_prev_marking(use_prev_marking)
{
BarrierSet* bs = _g1h->barrier_set();
if (bs->is_a(BarrierSet::CardTableModRef))
@ -68,11 +72,13 @@ public:
void do_oop(oop* p) {
assert(_containing_obj != NULL, "Precondition");
assert(!_g1h->is_obj_dead(_containing_obj), "Precondition");
assert(!_g1h->is_obj_dead_cond(_containing_obj, _use_prev_marking),
"Precondition");
oop obj = *p;
if (obj != NULL) {
bool failed = false;
if (!_g1h->is_in_closed_subset(obj) || _g1h->is_obj_dead(obj)) {
if (!_g1h->is_in_closed_subset(obj) ||
_g1h->is_obj_dead_cond(obj, _use_prev_marking)) {
if (!_failures) {
gclog_or_tty->print_cr("");
gclog_or_tty->print_cr("----------");
@ -647,19 +653,23 @@ void HeapRegion::print_on(outputStream* st) const {
G1OffsetTableContigSpace::print_on(st);
}
void HeapRegion::verify(bool allow_dirty) const {
verify(allow_dirty, /* use_prev_marking */ true);
}
#define OBJ_SAMPLE_INTERVAL 0
#define BLOCK_SAMPLE_INTERVAL 100
// This really ought to be commoned up into OffsetTableContigSpace somehow.
// We would need a mechanism to make that code skip dead objects.
void HeapRegion::verify(bool allow_dirty) const {
void HeapRegion::verify(bool allow_dirty, bool use_prev_marking) const {
G1CollectedHeap* g1 = G1CollectedHeap::heap();
HeapWord* p = bottom();
HeapWord* prev_p = NULL;
int objs = 0;
int blocks = 0;
VerifyLiveClosure vl_cl(g1);
VerifyLiveClosure vl_cl(g1, use_prev_marking);
while (p < top()) {
size_t size = oop(p)->size();
if (blocks == BLOCK_SAMPLE_INTERVAL) {
@ -671,7 +681,7 @@ void HeapRegion::verify(bool allow_dirty) const {
}
if (objs == OBJ_SAMPLE_INTERVAL) {
oop obj = oop(p);
if (!g1->is_obj_dead(obj, this)) {
if (!g1->is_obj_dead_cond(obj, this, use_prev_marking)) {
obj->verify();
vl_cl.set_containing_obj(obj);
obj->oop_iterate(&vl_cl);

View File

@ -782,7 +782,16 @@ class HeapRegion: public G1OffsetTableContigSpace {
void print() const;
void print_on(outputStream* st) const;
// Override
// use_prev_marking == true -> use "prev" marking information,
// use_prev_marking == false -> use "next" marking information
// NOTE: Only the "prev" marking information is guaranteed to be
// consistent most of the time, so most calls to this should use
// use_prev_marking == true. Currently, there is only one case where
// this is called with use_prev_marking == false, which is to verify
// the "next" marking information at the end of remark.
void verify(bool allow_dirty, bool use_prev_marking) const;
// Override; it uses the "prev" marking information
virtual void verify(bool allow_dirty) const;
#ifdef DEBUG

View File

@ -109,7 +109,7 @@ protected:
return new PerRegionTable(hr);
}
void add_card_work(short from_card, bool par) {
void add_card_work(CardIdx_t from_card, bool par) {
if (!_bm.at(from_card)) {
if (par) {
if (_bm.par_at_put(from_card, 1)) {
@ -141,11 +141,11 @@ protected:
// and adding a bit to the new table is never incorrect.
if (loc_hr->is_in_reserved(from)) {
size_t hw_offset = pointer_delta((HeapWord*)from, loc_hr->bottom());
size_t from_card =
hw_offset >>
(CardTableModRefBS::card_shift - LogHeapWordSize);
CardIdx_t from_card = (CardIdx_t)
hw_offset >> (CardTableModRefBS::card_shift - LogHeapWordSize);
add_card_work((short) from_card, par);
assert(0 <= from_card && from_card < CardsPerRegion, "Must be in range.");
add_card_work(from_card, par);
}
}
@ -190,11 +190,11 @@ public:
#endif
}
void add_card(short from_card_index) {
void add_card(CardIdx_t from_card_index) {
add_card_work(from_card_index, /*parallel*/ true);
}
void seq_add_card(short from_card_index) {
void seq_add_card(CardIdx_t from_card_index) {
add_card_work(from_card_index, /*parallel*/ false);
}
@ -604,7 +604,7 @@ void OtherRegionsTable::add_reference(oop* from, int tid) {
// Note that this may be a continued H region.
HeapRegion* from_hr = _g1h->heap_region_containing_raw(from);
size_t from_hrs_ind = (size_t)from_hr->hrs_index();
RegionIdx_t from_hrs_ind = (RegionIdx_t) from_hr->hrs_index();
// If the region is already coarsened, return.
if (_coarse_map.at(from_hrs_ind)) {
@ -627,11 +627,11 @@ void OtherRegionsTable::add_reference(oop* from, int tid) {
uintptr_t from_hr_bot_card_index =
uintptr_t(from_hr->bottom())
>> CardTableModRefBS::card_shift;
int card_index = from_card - from_hr_bot_card_index;
CardIdx_t card_index = from_card - from_hr_bot_card_index;
assert(0 <= card_index && card_index < PosParPRT::CardsPerRegion,
"Must be in range.");
if (G1HRRSUseSparseTable &&
_sparse_table.add_card((short) from_hrs_ind, card_index)) {
_sparse_table.add_card(from_hrs_ind, card_index)) {
if (G1RecordHRRSOops) {
HeapRegionRemSet::record(hr(), from);
#if HRRS_VERBOSE
@ -656,9 +656,9 @@ void OtherRegionsTable::add_reference(oop* from, int tid) {
}
// Otherwise, transfer from sparse to fine-grain.
short cards[SparsePRTEntry::CardsPerEntry];
CardIdx_t cards[SparsePRTEntry::CardsPerEntry];
if (G1HRRSUseSparseTable) {
bool res = _sparse_table.get_cards((short) from_hrs_ind, &cards[0]);
bool res = _sparse_table.get_cards(from_hrs_ind, &cards[0]);
assert(res, "There should have been an entry");
}
@ -679,13 +679,13 @@ void OtherRegionsTable::add_reference(oop* from, int tid) {
// Add in the cards from the sparse table.
if (G1HRRSUseSparseTable) {
for (int i = 0; i < SparsePRTEntry::CardsPerEntry; i++) {
short c = cards[i];
CardIdx_t c = cards[i];
if (c != SparsePRTEntry::NullEntry) {
prt->add_card(c);
}
}
// Now we can delete the sparse entry.
bool res = _sparse_table.delete_entry((short) from_hrs_ind);
bool res = _sparse_table.delete_entry(from_hrs_ind);
assert(res, "It should have been there.");
}
}
@ -1030,7 +1030,7 @@ bool OtherRegionsTable::contains_reference(oop* from) const {
bool OtherRegionsTable::contains_reference_locked(oop* from) const {
HeapRegion* hr = _g1h->heap_region_containing_raw(from);
if (hr == NULL) return false;
size_t hr_ind = hr->hrs_index();
RegionIdx_t hr_ind = (RegionIdx_t) hr->hrs_index();
// Is this region in the coarse map?
if (_coarse_map.at(hr_ind)) return true;
@ -1045,8 +1045,9 @@ bool OtherRegionsTable::contains_reference_locked(oop* from) const {
uintptr_t hr_bot_card_index =
uintptr_t(hr->bottom()) >> CardTableModRefBS::card_shift;
assert(from_card >= hr_bot_card_index, "Inv");
int card_index = from_card - hr_bot_card_index;
return _sparse_table.contains_card((short)hr_ind, card_index);
CardIdx_t card_index = from_card - hr_bot_card_index;
assert(0 <= card_index && card_index < PosParPRT::CardsPerRegion, "Must be in range.");
return _sparse_table.contains_card(hr_ind, card_index);
}

View File

@ -33,7 +33,7 @@ void SparsePRT::init_iterator(SparsePRTIter* sprt_iter) {
sprt_iter->init(this);
}
void SparsePRTEntry::init(short region_ind) {
void SparsePRTEntry::init(RegionIdx_t region_ind) {
_region_ind = region_ind;
_next_index = NullEntry;
#if UNROLL_CARD_LOOPS
@ -43,11 +43,12 @@ void SparsePRTEntry::init(short region_ind) {
_cards[2] = NullEntry;
_cards[3] = NullEntry;
#else
for (int i = 0; i < CardsPerEntry; i++) _cards[i] = NullEntry;
for (int i = 0; i < CardsPerEntry; i++)
_cards[i] = NullEntry;
#endif
}
bool SparsePRTEntry::contains_card(short card_index) const {
bool SparsePRTEntry::contains_card(CardIdx_t card_index) const {
#if UNROLL_CARD_LOOPS
assert(CardsPerEntry == 4, "Assumption. If changes, un-unroll.");
if (_cards[0] == card_index) return true;
@ -80,10 +81,10 @@ int SparsePRTEntry::num_valid_cards() const {
return sum;
}
SparsePRTEntry::AddCardResult SparsePRTEntry::add_card(short card_index) {
SparsePRTEntry::AddCardResult SparsePRTEntry::add_card(CardIdx_t card_index) {
#if UNROLL_CARD_LOOPS
assert(CardsPerEntry == 4, "Assumption. If changes, un-unroll.");
short c = _cards[0];
CardIdx_t c = _cards[0];
if (c == card_index) return found;
if (c == NullEntry) { _cards[0] = card_index; return added; }
c = _cards[1];
@ -97,16 +98,19 @@ SparsePRTEntry::AddCardResult SparsePRTEntry::add_card(short card_index) {
if (c == NullEntry) { _cards[3] = card_index; return added; }
#else
for (int i = 0; i < CardsPerEntry; i++) {
short c = _cards[i];
CardIdx_t c = _cards[i];
if (c == card_index) return found;
if (c == NullEntry) { _cards[i] = card_index; return added; }
if (c == NullEntry) {
_cards[i] = card_index;
return added;
}
}
#endif
// Otherwise, we're full.
return overflow;
}
void SparsePRTEntry::copy_cards(short* cards) const {
void SparsePRTEntry::copy_cards(CardIdx_t* cards) const {
#if UNROLL_CARD_LOOPS
assert(CardsPerEntry == 4, "Assumption. If changes, un-unroll.");
cards[0] = _cards[0];
@ -130,7 +134,7 @@ RSHashTable::RSHashTable(size_t capacity) :
_capacity(capacity), _capacity_mask(capacity-1),
_occupied_entries(0), _occupied_cards(0),
_entries(NEW_C_HEAP_ARRAY(SparsePRTEntry, capacity)),
_buckets(NEW_C_HEAP_ARRAY(short, capacity)),
_buckets(NEW_C_HEAP_ARRAY(int, capacity)),
_next_deleted(NULL), _deleted(false),
_free_list(NullEntry), _free_region(0)
{
@ -143,7 +147,7 @@ RSHashTable::~RSHashTable() {
_entries = NULL;
}
if (_buckets != NULL) {
FREE_C_HEAP_ARRAY(short, _buckets);
FREE_C_HEAP_ARRAY(int, _buckets);
_buckets = NULL;
}
}
@ -153,14 +157,18 @@ void RSHashTable::clear() {
_occupied_cards = 0;
guarantee(_entries != NULL, "INV");
guarantee(_buckets != NULL, "INV");
guarantee(_capacity <= ((size_t)1 << (sizeof(int)*BitsPerByte-1)) - 1,
"_capacity too large");
// This will put -1 == NullEntry in the key field of all entries.
memset(_entries, -1, _capacity * sizeof(SparsePRTEntry));
memset(_buckets, -1, _capacity * sizeof(short));
memset(_buckets, -1, _capacity * sizeof(int));
_free_list = NullEntry;
_free_region = 0;
}
bool RSHashTable::add_card(short region_ind, short card_index) {
bool RSHashTable::add_card(RegionIdx_t region_ind, CardIdx_t card_index) {
SparsePRTEntry* e = entry_for_region_ind_create(region_ind);
assert(e != NULL && e->r_ind() == region_ind,
"Postcondition of call above.");
@ -175,9 +183,9 @@ bool RSHashTable::add_card(short region_ind, short card_index) {
return res != SparsePRTEntry::overflow;
}
bool RSHashTable::get_cards(short region_ind, short* cards) {
short ind = (short) (region_ind & capacity_mask());
short cur_ind = _buckets[ind];
bool RSHashTable::get_cards(RegionIdx_t region_ind, CardIdx_t* cards) {
int ind = (int) (region_ind & capacity_mask());
int cur_ind = _buckets[ind];
SparsePRTEntry* cur;
while (cur_ind != NullEntry &&
(cur = entry(cur_ind))->r_ind() != region_ind) {
@ -192,10 +200,10 @@ bool RSHashTable::get_cards(short region_ind, short* cards) {
return true;
}
bool RSHashTable::delete_entry(short region_ind) {
short ind = (short) (region_ind & capacity_mask());
short* prev_loc = &_buckets[ind];
short cur_ind = *prev_loc;
bool RSHashTable::delete_entry(RegionIdx_t region_ind) {
int ind = (int) (region_ind & capacity_mask());
int* prev_loc = &_buckets[ind];
int cur_ind = *prev_loc;
SparsePRTEntry* cur;
while (cur_ind != NullEntry &&
(cur = entry(cur_ind))->r_ind() != region_ind) {
@ -212,10 +220,11 @@ bool RSHashTable::delete_entry(short region_ind) {
return true;
}
SparsePRTEntry* RSHashTable::entry_for_region_ind(short region_ind) const {
SparsePRTEntry*
RSHashTable::entry_for_region_ind(RegionIdx_t region_ind) const {
assert(occupied_entries() < capacity(), "Precondition");
short ind = (short) (region_ind & capacity_mask());
short cur_ind = _buckets[ind];
int ind = (int) (region_ind & capacity_mask());
int cur_ind = _buckets[ind];
SparsePRTEntry* cur;
// XXX
// int k = 0;
@ -242,15 +251,16 @@ SparsePRTEntry* RSHashTable::entry_for_region_ind(short region_ind) const {
}
}
SparsePRTEntry* RSHashTable::entry_for_region_ind_create(short region_ind) {
SparsePRTEntry*
RSHashTable::entry_for_region_ind_create(RegionIdx_t region_ind) {
SparsePRTEntry* res = entry_for_region_ind(region_ind);
if (res == NULL) {
short new_ind = alloc_entry();
int new_ind = alloc_entry();
assert(0 <= new_ind && (size_t)new_ind < capacity(), "There should be room.");
res = entry(new_ind);
res->init(region_ind);
// Insert at front.
short ind = (short) (region_ind & capacity_mask());
int ind = (int) (region_ind & capacity_mask());
res->set_next_index(_buckets[ind]);
_buckets[ind] = new_ind;
_occupied_entries++;
@ -258,8 +268,8 @@ SparsePRTEntry* RSHashTable::entry_for_region_ind_create(short region_ind) {
return res;
}
short RSHashTable::alloc_entry() {
short res;
int RSHashTable::alloc_entry() {
int res;
if (_free_list != NullEntry) {
res = _free_list;
_free_list = entry(res)->next_index();
@ -273,13 +283,11 @@ short RSHashTable::alloc_entry() {
}
}
void RSHashTable::free_entry(short fi) {
void RSHashTable::free_entry(int fi) {
entry(fi)->set_next_index(_free_list);
_free_list = fi;
}
void RSHashTable::add_entry(SparsePRTEntry* e) {
assert(e->num_valid_cards() > 0, "Precondition.");
SparsePRTEntry* e2 = entry_for_region_ind_create(e->r_ind());
@ -322,8 +330,8 @@ RSHashTable* RSHashTable::get_from_deleted_list() {
return NULL;
}
short /* RSHashTable:: */ RSHashTableIter::find_first_card_in_list() {
short res;
CardIdx_t /* RSHashTable:: */ RSHashTableIter::find_first_card_in_list() {
CardIdx_t res;
while (_bl_ind != RSHashTable::NullEntry) {
res = _rsht->entry(_bl_ind)->card(0);
if (res != SparsePRTEntry::NullEntry) {
@ -336,7 +344,7 @@ short /* RSHashTable:: */ RSHashTableIter::find_first_card_in_list() {
return SparsePRTEntry::NullEntry;
}
size_t /* RSHashTable:: */ RSHashTableIter::compute_card_ind(short ci) {
size_t /* RSHashTable:: */ RSHashTableIter::compute_card_ind(CardIdx_t ci) {
return
_heap_bot_card_ind
+ (_rsht->entry(_bl_ind)->r_ind() * CardsPerRegion)
@ -345,7 +353,7 @@ size_t /* RSHashTable:: */ RSHashTableIter::compute_card_ind(short ci) {
bool /* RSHashTable:: */ RSHashTableIter::has_next(size_t& card_index) {
_card_ind++;
short ci;
CardIdx_t ci;
if (_card_ind < SparsePRTEntry::CardsPerEntry &&
((ci = _rsht->entry(_bl_ind)->card(_card_ind)) !=
SparsePRTEntry::NullEntry)) {
@ -379,16 +387,16 @@ bool /* RSHashTable:: */ RSHashTableIter::has_next(size_t& card_index) {
return false;
}
bool RSHashTable::contains_card(short region_index, short card_index) const {
bool RSHashTable::contains_card(RegionIdx_t region_index, CardIdx_t card_index) const {
SparsePRTEntry* e = entry_for_region_ind(region_index);
return (e != NULL && e->contains_card(card_index));
}
size_t RSHashTable::mem_size() const {
return sizeof(this) + capacity() * (sizeof(SparsePRTEntry) + sizeof(short));
return sizeof(this) +
capacity() * (sizeof(SparsePRTEntry) + sizeof(int));
}
// ----------------------------------------------------------------------
SparsePRT* SparsePRT::_head_expanded_list = NULL;
@ -408,6 +416,7 @@ void SparsePRT::add_to_expanded_list(SparsePRT* sprt) {
}
}
SparsePRT* SparsePRT::get_from_expanded_list() {
SparsePRT* hd = _head_expanded_list;
while (hd != NULL) {
@ -452,6 +461,7 @@ SparsePRT::SparsePRT(HeapRegion* hr) :
_next = _cur;
}
SparsePRT::~SparsePRT() {
assert(_next != NULL && _cur != NULL, "Inv");
if (_cur != _next) { delete _cur; }
@ -465,7 +475,7 @@ size_t SparsePRT::mem_size() const {
return sizeof(this) + _next->mem_size();
}
bool SparsePRT::add_card(short region_id, short card_index) {
bool SparsePRT::add_card(RegionIdx_t region_id, CardIdx_t card_index) {
#if SPARSE_PRT_VERBOSE
gclog_or_tty->print_cr(" Adding card %d from region %d to region %d sparse.",
card_index, region_id, _hr->hrs_index());
@ -476,11 +486,11 @@ bool SparsePRT::add_card(short region_id, short card_index) {
return _next->add_card(region_id, card_index);
}
bool SparsePRT::get_cards(short region_id, short* cards) {
bool SparsePRT::get_cards(RegionIdx_t region_id, CardIdx_t* cards) {
return _next->get_cards(region_id, cards);
}
bool SparsePRT::delete_entry(short region_id) {
bool SparsePRT::delete_entry(RegionIdx_t region_id) {
return _next->delete_entry(region_id);
}

View File

@ -35,32 +35,32 @@
class SparsePRTEntry: public CHeapObj {
public:
enum SomePublicConstants {
CardsPerEntry = (short)4,
NullEntry = (short)-1,
DeletedEntry = (short)-2
CardsPerEntry = 4,
NullEntry = -1
};
private:
short _region_ind;
short _next_index;
short _cards[CardsPerEntry];
RegionIdx_t _region_ind;
int _next_index;
CardIdx_t _cards[CardsPerEntry];
public:
// Set the region_ind to the given value, and delete all cards.
inline void init(short region_ind);
inline void init(RegionIdx_t region_ind);
short r_ind() const { return _region_ind; }
RegionIdx_t r_ind() const { return _region_ind; }
bool valid_entry() const { return r_ind() >= 0; }
void set_r_ind(short rind) { _region_ind = rind; }
void set_r_ind(RegionIdx_t rind) { _region_ind = rind; }
short next_index() const { return _next_index; }
short* next_index_addr() { return &_next_index; }
void set_next_index(short ni) { _next_index = ni; }
int next_index() const { return _next_index; }
int* next_index_addr() { return &_next_index; }
void set_next_index(int ni) { _next_index = ni; }
// Returns "true" iff the entry contains the given card index.
inline bool contains_card(short card_index) const;
inline bool contains_card(CardIdx_t card_index) const;
// Returns the number of non-NULL card entries.
inline int num_valid_cards() const;
@ -73,14 +73,14 @@ public:
found,
added
};
inline AddCardResult add_card(short card_index);
inline AddCardResult add_card(CardIdx_t card_index);
// Copy the current entry's cards into "cards".
inline void copy_cards(short* cards) const;
inline void copy_cards(CardIdx_t* cards) const;
// Copy the current entry's cards into the "_card" array of "e."
inline void copy_cards(SparsePRTEntry* e) const;
inline short card(int i) const { return _cards[i]; }
inline CardIdx_t card(int i) const { return _cards[i]; }
};
@ -98,9 +98,9 @@ class RSHashTable : public CHeapObj {
size_t _occupied_cards;
SparsePRTEntry* _entries;
short* _buckets;
short _free_region;
short _free_list;
int* _buckets;
int _free_region;
int _free_list;
static RSHashTable* _head_deleted_list;
RSHashTable* _next_deleted;
@ -113,20 +113,20 @@ class RSHashTable : public CHeapObj {
// operations, and that the the table be less than completely full. If
// an entry for "region_ind" is already in the table, finds it and
// returns its address; otherwise returns "NULL."
SparsePRTEntry* entry_for_region_ind(short region_ind) const;
SparsePRTEntry* entry_for_region_ind(RegionIdx_t region_ind) const;
// Requires that the caller hold a lock preventing parallel modifying
// operations, and that the the table be less than completely full. If
// an entry for "region_ind" is already in the table, finds it and
// returns its address; otherwise allocates, initializes, inserts and
// returns a new entry for "region_ind".
SparsePRTEntry* entry_for_region_ind_create(short region_ind);
SparsePRTEntry* entry_for_region_ind_create(RegionIdx_t region_ind);
// Returns the index of the next free entry in "_entries".
short alloc_entry();
int alloc_entry();
// Declares the entry "fi" to be free. (It must have already been
// deleted from any bucket lists.
void free_entry(short fi);
void free_entry(int fi);
public:
RSHashTable(size_t capacity);
@ -138,12 +138,12 @@ public:
// Otherwise, returns "false" to indicate that the addition would
// overflow the entry for the region. The caller must transfer these
// entries to a larger-capacity representation.
bool add_card(short region_id, short card_index);
bool add_card(RegionIdx_t region_id, CardIdx_t card_index);
bool get_cards(short region_id, short* cards);
bool delete_entry(short region_id);
bool get_cards(RegionIdx_t region_id, CardIdx_t* cards);
bool delete_entry(RegionIdx_t region_id);
bool contains_card(short region_id, short card_index) const;
bool contains_card(RegionIdx_t region_id, CardIdx_t card_index) const;
void add_entry(SparsePRTEntry* e);
@ -162,52 +162,50 @@ public:
static void add_to_deleted_list(RSHashTable* rsht);
static RSHashTable* get_from_deleted_list();
};
// ValueObj because will be embedded in HRRS iterator.
// ValueObj because will be embedded in HRRS iterator.
class RSHashTableIter VALUE_OBJ_CLASS_SPEC {
short _tbl_ind;
short _bl_ind;
short _card_ind;
RSHashTable* _rsht;
size_t _heap_bot_card_ind;
enum SomePrivateConstants {
CardsPerRegion = HeapRegion::GrainBytes >> CardTableModRefBS::card_shift
};
// If the bucket list pointed to by _bl_ind contains a card, sets
// _bl_ind to the index of that entry, and returns the card.
// Otherwise, returns SparseEntry::NullEnty.
short find_first_card_in_list();
// Computes the proper card index for the card whose offset in the
// current region (as indicated by _bl_ind) is "ci".
// This is subject to errors when there is iteration concurrent with
// modification, but these errors should be benign.
size_t compute_card_ind(short ci);
public:
RSHashTableIter(size_t heap_bot_card_ind) :
_tbl_ind(RSHashTable::NullEntry),
_bl_ind(RSHashTable::NullEntry),
_card_ind((SparsePRTEntry::CardsPerEntry-1)),
_rsht(NULL),
_heap_bot_card_ind(heap_bot_card_ind)
{}
void init(RSHashTable* rsht) {
_rsht = rsht;
_tbl_ind = -1; // So that first increment gets to 0.
_bl_ind = RSHashTable::NullEntry;
_card_ind = (SparsePRTEntry::CardsPerEntry-1);
}
bool has_next(size_t& card_index);
int _tbl_ind; // [-1, 0.._rsht->_capacity)
int _bl_ind; // [-1, 0.._rsht->_capacity)
short _card_ind; // [0..CardsPerEntry)
RSHashTable* _rsht;
size_t _heap_bot_card_ind;
enum SomePrivateConstants {
CardsPerRegion = HeapRegion::GrainBytes >> CardTableModRefBS::card_shift
};
// If the bucket list pointed to by _bl_ind contains a card, sets
// _bl_ind to the index of that entry, and returns the card.
// Otherwise, returns SparseEntry::NullEntry.
CardIdx_t find_first_card_in_list();
// Computes the proper card index for the card whose offset in the
// current region (as indicated by _bl_ind) is "ci".
// This is subject to errors when there is iteration concurrent with
// modification, but these errors should be benign.
size_t compute_card_ind(CardIdx_t ci);
public:
RSHashTableIter(size_t heap_bot_card_ind) :
_tbl_ind(RSHashTable::NullEntry),
_bl_ind(RSHashTable::NullEntry),
_card_ind((SparsePRTEntry::CardsPerEntry-1)),
_rsht(NULL),
_heap_bot_card_ind(heap_bot_card_ind)
{}
void init(RSHashTable* rsht) {
_rsht = rsht;
_tbl_ind = -1; // So that first increment gets to 0.
_bl_ind = RSHashTable::NullEntry;
_card_ind = (SparsePRTEntry::CardsPerEntry-1);
}
bool has_next(size_t& card_index);
};
// Concurrent accesss to a SparsePRT must be serialized by some external
// mutex.
@ -238,7 +236,6 @@ class SparsePRT VALUE_OBJ_CLASS_SPEC {
SparsePRT* next_expanded() { return _next_expanded; }
void set_next_expanded(SparsePRT* nxt) { _next_expanded = nxt; }
static SparsePRT* _head_expanded_list;
public:
@ -255,16 +252,16 @@ public:
// Otherwise, returns "false" to indicate that the addition would
// overflow the entry for the region. The caller must transfer these
// entries to a larger-capacity representation.
bool add_card(short region_id, short card_index);
bool add_card(RegionIdx_t region_id, CardIdx_t card_index);
// If the table hold an entry for "region_ind", Copies its
// cards into "cards", which must be an array of length at least
// "CardsPerEntry", and returns "true"; otherwise, returns "false".
bool get_cards(short region_ind, short* cards);
bool get_cards(RegionIdx_t region_ind, CardIdx_t* cards);
// If there is an entry for "region_ind", removes it and return "true";
// otherwise returns "false."
bool delete_entry(short region_ind);
bool delete_entry(RegionIdx_t region_ind);
// Clear the table, and reinitialize to initial capacity.
void clear();
@ -276,13 +273,12 @@ public:
static void cleanup_all();
RSHashTable* cur() const { return _cur; }
void init_iterator(SparsePRTIter* sprt_iter);
static void add_to_expanded_list(SparsePRT* sprt);
static SparsePRT* get_from_expanded_list();
bool contains_card(short region_id, short card_index) const {
bool contains_card(RegionIdx_t region_id, CardIdx_t card_index) const {
return _next->contains_card(region_id, card_index);
}

View File

@ -51,7 +51,6 @@ concurrentG1Refine.hpp globalDefinitions.hpp
concurrentG1Refine.hpp allocation.hpp
concurrentG1Refine.hpp thread.hpp
concurrentG1RefineThread.cpp concurrentG1Refine.hpp
concurrentG1RefineThread.cpp concurrentG1RefineThread.hpp
concurrentG1RefineThread.cpp g1CollectedHeap.inline.hpp
@ -334,6 +333,7 @@ sparsePRT.cpp space.inline.hpp
sparsePRT.hpp allocation.hpp
sparsePRT.hpp cardTableModRefBS.hpp
sparsePRT.hpp globalDefinitions.hpp
sparsePRT.hpp g1CollectedHeap.inline.hpp
sparsePRT.hpp heapRegion.hpp
sparsePRT.hpp mutex.hpp

View File

@ -177,6 +177,7 @@ private:
// are double-word aligned in 32-bit VMs, but not in 64-bit VMs, so the 32-bit
// granularity is 2, 64-bit is 1.
static inline size_t obj_granularity() { return size_t(MinObjAlignment); }
static inline int obj_granularity_shift() { return LogMinObjAlignment; }
HeapWord* _region_start;
size_t _region_size;
@ -299,13 +300,13 @@ inline bool ParMarkBitMap::is_unmarked(oop obj) const
inline size_t
ParMarkBitMap::bits_to_words(idx_t bits)
{
return bits * obj_granularity();
return bits << obj_granularity_shift();
}
inline ParMarkBitMap::idx_t
ParMarkBitMap::words_to_bits(size_t words)
{
return words / obj_granularity();
return words >> obj_granularity_shift();
}
inline size_t ParMarkBitMap::obj_size(idx_t beg_bit, idx_t end_bit) const

View File

@ -387,7 +387,7 @@ c1_ValueMap.hpp c1_ValueSet.hpp
c1_ValueSet.cpp c1_ValueSet.hpp
c1_ValueSet.hpp allocation.hpp
c1_ValueSet.hpp bitMap.hpp
c1_ValueSet.hpp bitMap.inline.hpp
c1_ValueSet.hpp c1_Instruction.hpp
c1_ValueStack.cpp c1_IR.hpp

View File

@ -242,6 +242,31 @@ class Pause_No_Safepoint_Verifier : public Pause_No_GC_Verifier {
#endif
};
// A SkipGCALot object is used to elide the usual effect of gc-a-lot
// over a section of execution by a thread. Currently, it's used only to
// prevent re-entrant calls to GC.
class SkipGCALot : public StackObj {
private:
bool _saved;
Thread* _t;
public:
#ifdef ASSERT
SkipGCALot(Thread* t) : _t(t) {
_saved = _t->skip_gcalot();
_t->set_skip_gcalot(true);
}
~SkipGCALot() {
assert(_t->skip_gcalot(), "Save-restore protocol invariant");
_t->set_skip_gcalot(_saved);
}
#else
SkipGCALot(Thread* t) { }
~SkipGCALot() { }
#endif
};
// JRT_LEAF currently can be called from either _thread_in_Java or
// _thread_in_native mode. In _thread_in_native, it is ok
// for another thread to trigger GC. The rest of the JRT_LEAF

View File

@ -66,11 +66,14 @@ void InterfaceSupport::trace(const char* result_type, const char* header) {
void InterfaceSupport::gc_alot() {
Thread *thread = Thread::current();
if (thread->is_VM_thread()) return; // Avoid concurrent calls
if (!thread->is_Java_thread()) return; // Avoid concurrent calls
// Check for new, not quite initialized thread. A thread in new mode cannot initiate a GC.
JavaThread *current_thread = (JavaThread *)thread;
if (current_thread->active_handles() == NULL) return;
// Short-circuit any possible re-entrant gc-a-lot attempt
if (thread->skip_gcalot()) return;
if (is_init_completed()) {
if (++_fullgc_alot_invocation < FullGCALotStart) {

View File

@ -127,6 +127,7 @@ Thread::Thread() {
debug_only(_owned_locks = NULL;)
debug_only(_allow_allocation_count = 0;)
NOT_PRODUCT(_allow_safepoint_count = 0;)
NOT_PRODUCT(_skip_gcalot = false;)
CHECK_UNHANDLED_OOPS_ONLY(_gc_locked_out_count = 0;)
_jvmti_env_iteration_count = 0;
_vm_operation_started_count = 0;
@ -784,7 +785,6 @@ void Thread::check_for_valid_safepoint_state(bool potential_vm_operation) {
// We could enter a safepoint here and thus have a gc
InterfaceSupport::check_gc_alot();
}
#endif
}
#endif

View File

@ -191,6 +191,9 @@ class Thread: public ThreadShadow {
NOT_PRODUCT(int _allow_safepoint_count;) // If 0, thread allow a safepoint to happen
debug_only (int _allow_allocation_count;) // If 0, the thread is allowed to allocate oops.
// Used by SkipGCALot class.
NOT_PRODUCT(bool _skip_gcalot;) // Should we elide gc-a-lot?
// Record when GC is locked out via the GC_locker mechanism
CHECK_UNHANDLED_OOPS_ONLY(int _gc_locked_out_count;)
@ -308,6 +311,11 @@ class Thread: public ThreadShadow {
bool is_gc_locked_out() { return _gc_locked_out_count > 0; }
#endif // CHECK_UNHANDLED_OOPS
#ifndef PRODUCT
bool skip_gcalot() { return _skip_gcalot; }
void set_skip_gcalot(bool v) { _skip_gcalot = v; }
#endif
public:
// Installs a pending exception to be inserted later
static void send_async_exception(oop thread_oop, oop java_throwable);

View File

@ -531,6 +531,7 @@ void VMThread::execute(VM_Operation* op) {
Thread* t = Thread::current();
if (!t->is_VM_thread()) {
SkipGCALot sgcalot(t); // avoid re-entrant attempts to gc-a-lot
// JavaThread or WatcherThread
t->check_for_valid_safepoint_state(true);

View File

@ -41,19 +41,6 @@ BitMap::BitMap(idx_t size_in_bits, bool in_resource_area) :
resize(size_in_bits, in_resource_area);
}
void BitMap::verify_index(idx_t index) const {
assert(index < _size, "BitMap index out of bounds");
}
void BitMap::verify_range(idx_t beg_index, idx_t end_index) const {
#ifdef ASSERT
assert(beg_index <= end_index, "BitMap range error");
// Note that [0,0) and [size,size) are both valid ranges.
if (end_index != _size) verify_index(end_index);
#endif
}
void BitMap::resize(idx_t size_in_bits, bool in_resource_area) {
assert(size_in_bits >= 0, "just checking");
idx_t old_size_in_words = size_in_words();

View File

@ -93,10 +93,12 @@ class BitMap VALUE_OBJ_CLASS_SPEC {
// The index of the first full word in a range.
idx_t word_index_round_up(idx_t bit) const;
// Verification, statistics.
void verify_index(idx_t index) const;
void verify_range(idx_t beg_index, idx_t end_index) const;
// Verification.
inline void verify_index(idx_t index) const NOT_DEBUG_RETURN;
inline void verify_range(idx_t beg_index, idx_t end_index) const
NOT_DEBUG_RETURN;
// Statistics.
static idx_t* _pop_count_table;
static void init_pop_count_table();
static idx_t num_set_bits(bm_word_t w);
@ -287,7 +289,6 @@ class BitMap VALUE_OBJ_CLASS_SPEC {
#endif
};
// Convenience class wrapping BitMap which provides multiple bits per slot.
class BitMap2D VALUE_OBJ_CLASS_SPEC {
public:

View File

@ -22,6 +22,17 @@
*
*/
#ifdef ASSERT
inline void BitMap::verify_index(idx_t index) const {
assert(index < _size, "BitMap index out of bounds");
}
inline void BitMap::verify_range(idx_t beg_index, idx_t end_index) const {
assert(beg_index <= end_index, "BitMap range error");
// Note that [0,0) and [size,size) are both valid ranges.
if (end_index != _size) verify_index(end_index);
}
#endif // #ifdef ASSERT
inline void BitMap::set_bit(idx_t bit) {
verify_index(bit);

View File

@ -106,11 +106,13 @@
#ifdef ASSERT
#define DEBUG_ONLY(code) code
#define NOT_DEBUG(code)
#define NOT_DEBUG_RETURN /*next token must be ;*/
// Historical.
#define debug_only(code) code
#else // ASSERT
#define DEBUG_ONLY(code)
#define NOT_DEBUG(code) code
#define NOT_DEBUG_RETURN {}
#define debug_only(code)
#endif // ASSERT

View File

@ -36,3 +36,5 @@ e4851e9f7be26fc52a628be06ffa8aaea0919bd7 jdk7-b57
75113d7ce083048e7576b9d0d60a4e80db6b181f jdk7-b59
259aef5045a155eb6a2f8dd0e2429c6dbe0f652f jdk7-b60
f1ac756616eaaad795f77f7f5e7f7c7bfdc9c1de jdk7-b61
a97dd57a62604c35c79bc2fa77a612ed547f6135 jdk7-b62
ae449e9c04c1fe651bd30f0f4d4cc24ba794e0c4 jdk7-b63

View File

@ -36,3 +36,5 @@ e0eebd978b830c09e7862cff3f77a914c15651c9 jdk7-b55
f64566bf4c2bc92e65ab2b9fab51b119f0d493d1 jdk7-b59
3b054db3e277ca224fe6576c59ed6f4ab5ed0bb5 jdk7-b60
aeabf802f2a1ca72b87d7397c5ece58058e000a9 jdk7-b61
75c801c13ea1ddebc58b1a8c8da9318d72750e62 jdk7-b62
b8a6e883c0a6708f6d818815040525d472262495 jdk7-b63

View File

@ -36,3 +36,5 @@ d5a1223e961891564de25c39fba6f2442d0fb045 jdk7-b57
2a5a1b269e89f27ebe419ef4cf6e66a3face0df1 jdk7-b59
0c3ef2d612a47667829eb17a192decef23f1c536 jdk7-b60
f72c0dc047b9b2e797beee68ae0b50decb1f020d jdk7-b61
12e11fab9a839a9666a996a8f9a02fd8fa03aab6 jdk7-b62
2ed6ed6b5bfc7dd724925b90dbb31223df59c25d jdk7-b63

View File

@ -91,10 +91,10 @@ ifeq ($(PLATFORM), windows)
CXXFLAGS_COMMON += $(MS_RUNTIME_OPTION)
LDOUTPUT = -Fe
# J2SE name required here
RC_FLAGS += /D "J2SE_FNAME=$(PGRM).exe" \
/D "J2SE_INTERNAL_NAME=$(PGRM)" \
/D "J2SE_FTYPE=0x1L"
# JDK name required here
RC_FLAGS += /D "JDK_FNAME=$(PGRM).exe" \
/D "JDK_INTERNAL_NAME=$(PGRM)" \
/D "JDK_FTYPE=0x1L"
RES = $(OBJDIR)/$(PGRM).res
else
@ -133,13 +133,19 @@ unpacker:
$(MAKE) $(UNPACK_EXE) STANDALONE=true LDMAPFLAGS_OPT= LDMAPFLAGS_DBG=
ifeq ($(PLATFORM), windows)
IMVERSIONVALUE=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VER).$(COOKED_BUILD_NUMBER)
SED_ALL_MANIFEST=$(SED) -e 's%IMVERSION%$(IMVERSIONVALUE)%g'
updatefiles::
$(CAT) $(TOPDIR)/src/windows/resource/unpack200_proto.exe.manifest | $(SED_ALL_MANIFEST) > $(OBJDIR)/unpack200.exe.manifest
winres:: $(RES)
else
updatefiles::
$(ECHO) "Manifest not required for Unix"
winres::
$(ECHO) "Resource files not required for Unix"
endif
$(UNPACK_EXE): $(UNPACK_EXE_FILES_o) winres
$(UNPACK_EXE): $(UNPACK_EXE_FILES_o) updatefiles winres
$(prep-target)
$(LINKER) $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(RES) $(LIBCXX) $(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX)
ifdef MT

View File

@ -27,6 +27,7 @@ SUNWprivate_1.1 {
global:
Java_sun_nio_ch_SctpNet_socket0;
Java_sun_nio_ch_SctpNet_bindx;
Java_sun_nio_ch_SctpNet_branch0;
Java_sun_nio_ch_SctpNet_getLocalAddresses0;
Java_sun_nio_ch_SctpNet_getRemoteAddresses0;
Java_sun_nio_ch_SctpNet_getPrimAddrOption0;

View File

@ -1,5 +1,5 @@
#
# Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved.
# Copyright 1999-2009 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@ -464,11 +464,48 @@ JDK_RC_NAME = \
JDK_RC_FVER = \
$(JDK_MINOR_VERSION),$(JDK_MICRO_VERSION),$(JDK_UPDATE_VER),$(COOKED_BUILD_NUMBER)
# J2SE name required here
RC_FLAGS += -d "J2SE_BUILD_ID=$(JDK_RC_BUILD_ID)" \
-d "J2SE_COMPANY=$(JDK_RC_COMPANY)" \
-d "J2SE_COMPONENT=$(JDK_RC_COMPONENT)" \
-d "J2SE_VER=$(JDK_RC_VER)" \
-d "J2SE_COPYRIGHT=$(JDK_RC_COPYRIGHT)" \
-d "J2SE_NAME=$(JDK_RC_NAME)" \
-d "J2SE_FVER=$(JDK_RC_FVER)"
# JDK name required here
RC_FLAGS += -d "JDK_BUILD_ID=$(JDK_RC_BUILD_ID)" \
-d "JDK_COMPANY=$(JDK_RC_COMPANY)" \
-d "JDK_COMPONENT=$(JDK_RC_COMPONENT)" \
-d "JDK_VER=$(JDK_RC_VER)" \
-d "JDK_COPYRIGHT=$(JDK_RC_COPYRIGHT)" \
-d "JDK_NAME=$(JDK_RC_NAME)" \
-d "JDK_FVER=$(JDK_RC_FVER)"
# Enable 7-Zip LZMA file (de)compression for Java Kernel if it is available
ifeq ($(ARCH_DATA_MODEL), 32)
ifneq ($(KERNEL), off)
# This is a hack to use until 7-Zip (and UPX) bundles can be put
# under /java/devtools.
ifndef DEPLOY_TOPDIR
DEPLOY_TOPDIR=$(JDK_TOPDIR)/../deploy
endif
# Uncomment this block to cause build failure if above assumption false
#DCHK = $(shell if [ ! -d $(DEPLOY_TOPDIR) ] ; then \
# $(ECHO) deploy_not_a_peer_of_j2se ; \
#fi )
#ifeq ($(DCHK), deploy_not_a_peer_of_j2se)
# If a build failure points to control coming here it means
# it means deploy is not in the same directory
# as j2se. Java Kernel can't tolerate that for the time being.
#endif
EC_TMP = $(shell if [ -d $(DEPLOY_TOPDIR)/make/lzma ] ; then \
$(ECHO) true ; \
else \
$(ECHO) false ; \
fi )
ifeq ($(EC_TMP), true)
EXTRA_COMP_INSTALL_PATH = lib\\\\deploy\\\\lzma.dll
# Crazy but true: deploy/make/plugin/jinstall/Makefile.jkernel does
# not include deploy/make/common/Defs-windows.gmk, either directly
# or indirectly. But it does include this file, so redundantly declare
# these variables that are in deploy/make/common/Defs-windows.gmk for
# the sake of the Java Kernel part of the deploy build. Whew!
EXTRA_COMP_LIB_NAME = lzma.dll
EXTRA_COMP_PATH = $(OUTPUTDIR)/tmp/deploy/lzma/win32/obj
EXTRA_COMP_CMD_PATH = $(EXTRA_COMP_PATH)/lzma.exe
EXTRA_COMP_LIB_PATH = $(EXTRA_COMP_PATH)/$(EXTRA_COMP_LIB_NAME)
endif
endif
endif

View File

@ -207,10 +207,10 @@ ifndef LOCAL_RESOURCE_FILE
endif
@$(ECHO) Created $@
# J2SE name required here
RC_FLAGS += /D "J2SE_FNAME=$(LIBRARY).dll" \
/D "J2SE_INTERNAL_NAME=$(LIBRARY)" \
/D "J2SE_FTYPE=0x2L"
# JDK name required here
RC_FLAGS += /D "JDK_FNAME=$(LIBRARY).dll" \
/D "JDK_INTERNAL_NAME=$(LIBRARY)" \
/D "JDK_FTYPE=0x2L"
$(OBJDIR)/$(LIBRARY).res: $(VERSIONINFO_RESOURCE)
ifndef LOCAL_RESOURCE_FILE

View File

@ -123,10 +123,10 @@ $(ACTUAL_PROGRAM):: classes $(JVMCFG) $(INIT)
#
ifeq ($(PLATFORM), windows)
# J2SE name required here
RC_FLAGS += /D "J2SE_FNAME=$(PROGRAM)$(EXE_SUFFIX)" \
/D "J2SE_INTERNAL_NAME=$(PROGRAM)" \
/D "J2SE_FTYPE=0x1L"
# JDK name required here
RC_FLAGS += /D "JDK_FNAME=$(PROGRAM)$(EXE_SUFFIX)" \
/D "JDK_INTERNAL_NAME=$(PROGRAM)" \
/D "JDK_FTYPE=0x1L"
$(OBJDIR)/$(PROGRAM).res: $(VERSIONINFO_RESOURCE)
@$(prep-target)

View File

@ -97,7 +97,7 @@ else
ifeq ($(PLATFORM), windows)
LICENSE_DOCLIST_JDK = $(subst $(LICENSE_VERSION),,\
$(shell $(CD) $(SHARE_JDK_DOC_SRC) && \
$(LS) *LICENSE*$(LICENSE_VERSION)))
$(LS) *LICENSE*$(LICENSE_VERSION)))
LICENSE_DOCLIST_JRE = $(subst $(LICENSE_VERSION),,\
$(shell $(CD) $(SHARE_JRE_DOC_SRC) && \
$(LS) *LICENSE*$(LICENSE_VERSION)))
@ -401,7 +401,7 @@ TOOLS = \
sun/tools/jstack \
sun/tools/jinfo \
sun/tools/jmap
# classes that go into jsse.jar
JSSE_CLASSES_DIRS = \
sun/security/provider/Sun.class \
@ -645,7 +645,7 @@ $(RT_JAR_FILELIST) + $(RES_JAR_FILELIST): \
@$(java-vm-cleanup)
# Create the manifest file.
JAR_MANIFEST_FILE=$(TEMPDIR)/manifest.tmp
JAR_MANIFEST_FILE=$(ABS_TEMPDIR)/manifest.tmp
$(JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST)
$(prep-target)
$(SED) -e "s/@@RELEASE@@/$(RELEASE)/" $(MAINMANIFEST) >> $@
@ -653,25 +653,22 @@ $(JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST)
$(CAT) $(BEANMANIFEST) >> $@
# Create resources.jar containing non-class files
RESOURCES_JAR=$(TEMPDIR)/resources-orig.jar
RES_JAR_ARGLIST=$(RES_JAR_FILELIST)_args
$(RES_JAR_ARGLIST): $(RES_JAR_FILELIST)
RESOURCES_JAR=$(ABS_TEMPDIR)/resources-orig.jar
$(RESOURCES_JAR): $(RES_JAR_FILELIST) $(JAR_MANIFEST_FILE)
$(prep-target)
$(SED) -e "s@^@-C $(CLASSBINDIR) @" $< > $@
$(RESOURCES_JAR): $(RES_JAR_ARGLIST) $(JAR_MANIFEST_FILE)
$(prep-target)
$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
@$(RES_JAR_ARGLIST) $(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
$(CD) $(CLASSBINDIR) && \
$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
@$(RES_JAR_FILELIST) $(BOOT_JAR_JFLAGS)
@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
# Create jsse.jar containing SunJSSE implementation classes
JSSE_JAR=$(TEMPDIR)/jsse-orig.jar
JSSE_JAR=$(ABS_TEMPDIR)/jsse-orig.jar
$(JSSE_JAR): $(JAR_MANIFEST_FILE)
$(prep-target)
$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
$(JSSE_CLASSES_DIRS:%=-C $(CLASSBINDIR) %) \
$(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
$(CD) $(CLASSBINDIR) && \
$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
$(JSSE_CLASSES_DIRS) $(BOOT_JAR_JFLAGS)
@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
# Create sec-bin.zip
SEC_FILES_ZIP=$(ABS_TEMPDIR)/sec-bin.zip
@ -713,15 +710,12 @@ endif
# Create rt.jar
RT_JAR=$(ABS_TEMPDIR)/rt-orig.jar
RT_JAR_ARGLIST=$(RT_JAR_FILELIST)_args
$(RT_JAR_ARGLIST): $(RT_JAR_FILELIST)
$(RT_JAR): $(RT_JAR_FILELIST) $(JAR_MANIFEST_FILE)
$(prep-target)
$(SED) -e "s@^@-C $(CLASSBINDIR) @" $< > $@
$(RT_JAR): $(RT_JAR_ARGLIST) $(JAR_MANIFEST_FILE)
$(prep-target)
$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
@$(RT_JAR_ARGLIST) $(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
$(CD) $(CLASSBINDIR) && \
$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
@$(RT_JAR_FILELIST) $(BOOT_JAR_JFLAGS)
@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
# Meta-index construction to make core class loaders lazier
@ -795,6 +789,11 @@ ifeq ($(PLATFORM), windows)
$(CD) $(JRE_IMAGE_DIR)/lib && \
$(RM) java.$(LIB_SUFFIX) jvm.$(LIB_SUFFIX) \
hpi.$(LIB_SUFFIX) awt.$(LIB_SUFFIX) jawt.$(LIB_SUFFIX)
ifeq ($(ARCH_DATA_MODEL), 32)
@# The Java Kernel JRE image ships with a special VM. It is not included
@# in the full JRE image, so remove it. Also, is it only for 32-bit windows.
$(CD) $(JRE_IMAGE_DIR)/bin && $(RM) -r kernel
endif
endif # Windows
ifneq ($(PLATFORM), windows)
$(call copy-man-pages,$(JRE_IMAGE_DIR),$(JRE_MAN_PAGES))
@ -944,10 +943,10 @@ initial-image-jdk:: initial-image-jdk-setup \
@#
@# lib/tools.jar
@#
$(BOOT_JAR_CMD) c0f $(LIBDIR)/tools.jar $(addprefix \
-C $(CLASSBINDIR) , $(TOOLS)) \
$(BOOT_JAR_JFLAGS)
@$(java-vm-cleanup)
$(CD) $(CLASSBINDIR) && \
$(BOOT_JAR_CMD) c0f $(ABS_LIBDIR)/tools.jar \
$(TOOLS) $(BOOT_JAR_JFLAGS)
@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
$(CP) $(LIBDIR)/tools.jar $(JDK_IMAGE_DIR)/lib/tools.jar
@#
@# lib/ct.sym

View File

@ -35,8 +35,8 @@ ifeq ($(PLATFORM), windows)
LIBEXE = $(COMPILER_PATH)lib
LINK = $(COMPILER_PATH)link
RC = $(MSDEVTOOLS_PATH)rc
RSC = $(MSDEVTOOLS_PATH)rc
LINK32 = $(LINK)
RSC = $(RC)
# Fill in unknown values
COMPILER_NAME=Unknown MSVC Compiler
@ -98,6 +98,9 @@ ifeq ($(PLATFORM), windows)
endif
ifeq ($(CC_MAJORVER), 14)
ifeq ($(ARCH), amd64)
#rebase and midl moved out of Visual Studio into the SDK:
REBASE = $(MSDEVTOOLS_PATH)/rebase
MTL = $(MSDEVTOOLS_PATH)/midl.exe
ifeq ($(CC_MICROVER), 30701)
# This should be: CC_VER=14.00.30701 LINK_VER=8.00.30701
# WARNING: it says 14, but it is such an early build it doesn't
@ -110,6 +113,8 @@ ifeq ($(PLATFORM), windows)
COMPILER_NAME=Microsoft Platform SDK - April 2005 Edition (3790.1830)
COMPILER_VERSION=VS2005
endif
else
REBASE = $(COMPILER_PATH)../rebase
endif
endif
ifeq ($(CC_MAJORVER), 15)
@ -120,7 +125,6 @@ ifeq ($(PLATFORM), windows)
endif
# This will cause problems if ALT_COMPILER_PATH is defined to ""
# which is a directive to use the PATH.
REBASE = $(COMPILER_PATH)../REBASE
ifndef COMPILER_PATH
COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
endif

View File

@ -72,6 +72,7 @@ ADB = $(UTILS_COMMAND_PATH)adb
AR = $(UTILS_CCS_BIN_PATH)ar
AS = $(UTILS_CCS_BIN_PATH)as
BASENAME = $(UTILS_COMMAND_PATH)basename
BZIP2 = $(UTILS_COMMAND_PATH)bzip2
CAT = $(UTILS_COMMAND_PATH)cat
CHMOD = $(UTILS_COMMAND_PATH)chmod
CMP = $(UTILS_USR_BIN_PATH)cmp
@ -157,6 +158,7 @@ ifeq ($(PLATFORM),windows)
endif
# Re-define some utilities
LEX =# override GNU Make intrinsic: no lex on windows
SHA1SUM = $(UNIXCOMMAND_PATH)openssl sha1
endif
# Linux specific

View File

@ -520,7 +520,7 @@ ifdef ALT_INSTALL_MSSDK
xALT_INSTALL_MSSDK :="$(subst \,/,$(ALT_INSTALL_MSSDK))"
INSTALL_MSSDK :=$(call FullPath,$(xALT_INSTALL_MSSDK))
else
INSTALL_MSSDK :=$(_psdk)
INSTALL_MSSDK :=$(_ms_sdk)
endif
INSTALL_MSSDK:=$(call AltCheckSpaces,INSTALL_MSSDK)
@ -631,7 +631,12 @@ JDK_IMPORT_PATH:=$(call AltCheckValue,JDK_IMPORT_PATH)
ifdef ALT_HOTSPOT_IMPORT_PATH
HOTSPOT_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_IMPORT_PATH))
else
HOTSPOT_IMPORT_PATH =$(JDK_IMPORT_PATH)
# Default locations include the current $OUTPUTDIR, RE Promotions,
# and a JDK. Please be aware the JDK does not include a Kernel VM.
_HOTSPOT_IMPORT_PATH1 = $(OUTPUTDIR)/hotspot/import
_HOTSPOT_IMPORT_PATH2 = $(PROMOTED_BUILD_DISTDIR)/hotspot/import
_HOTSPOT_IMPORT_PATH3 = $(JDK_IMPORT_PATH)
HOTSPOT_IMPORT_PATH := $(call DirExists,$(_HOTSPOT_IMPORT_PATH1),$(_HOTSPOT_IMPORT_PATH2),$(_HOTSPOT_IMPORT_PATH3))
endif
HOTSPOT_IMPORT_PATH:=$(call AltCheckSpaces,HOTSPOT_IMPORT_PATH)
HOTSPOT_IMPORT_PATH:=$(call AltCheckValue,HOTSPOT_IMPORT_PATH)
@ -665,4 +670,3 @@ else
endif
HOTSPOT_LIB_PATH:=$(call AltCheckSpaces,HOTSPOT_LIB_PATH)
HOTSPOT_LIB_PATH:=$(call AltCheckValue,HOTSPOT_LIB_PATH)

View File

@ -292,6 +292,7 @@ endif
PROMOTED_RE_AREA = $(SLASH_JAVA)/re/jdk/$(JDK_VERSION)/promoted
PROMOTED_BUILD_LATEST = latest
PROMOTED_BUILD_BASEDIR = $(PROMOTED_RE_AREA)/$(PROMOTED_BUILD_LATEST)
PROMOTED_BUILD_DISTDIR = $(PROMOTED_BUILD_BASEDIR)/dist/$(PLATFORM)-$(ARCH)
PROMOTED_BUILD_BINARIES = $(PROMOTED_BUILD_BASEDIR)/binaries
# PARALLEL_COMPILE_JOBS: is the number of compiles done in parallel.

View File

@ -1568,9 +1568,49 @@ ifeq ($(ARCH_DATA_MODEL), 32)
"" >> $(ERROR_FILE) ; \
fi
endif
@#
@# Check for presence of headers required for new Java Plug-In ("plugin2")
@#
@if [ ! -r $(subst \,/,$(MOZILLA_HEADERS_PATH))/plugin2_mozilla_headers/npapi.h ]; then \
$(ECHO) "ERROR: You do not have access to valid Mozilla header files for the new Java Plug-In. \n" \
" Please check your access to \n" \
" $(subst \,/,$(MOZILLA_HEADERS_PATH))/plugin2_mozilla_headers/npapi.h \n" \
" and/or check your value of ALT_JDK_DEVTOOLS_DIR, ALT_MOZILLA_HEADERS_PATH, \n" \
"" >> $(ERROR_FILE) ; \
fi
endif
######################################################
# Make sure Java Kernel VM is accessible
######################################################
sane-kernel-vm:
ifeq ($(PLATFORM), windows)
ifeq ($(ARCH_DATA_MODEL), 32)
@if [ ! -r $(HOTSPOT_KERNEL_PATH)/jvm.dll ]; then \
$(ECHO) "WARNING: Your HOTSPOT_IMPORT_PATH does not include a Kernel VM... \n" \
" The kernel installer may not be built (unless hotspot is also). \n" \
" $(HOTSPOT_KERNEL_PATH)/jvm.dll \n" \
" Please check the value of ALT_HOTSPOT_IMPORT_PATH. \n" \
>> $(WARNING_FILE) ; \
fi
endif
endif
######################################################
# SECURITY_BASELINE_131 test
######################################################
security_baseline_131:
ifeq ($(PLATFORM), windows)
@if [ -z "$(SECURITY_BASELINE_131)" ]; then \
$(ECHO) "WARNING: Your SECURITY_BASELINE_131 setting is empty.\n" \
" Setting it to the default value of 1.3.1_20.\n" \
" It is recommended to set SECURITY_BASELINE_131.\n" \
"" >> $(WARNING_FILE) ; \
fi
endif
######################################################
# SECURITY_BASELINE_142 test
######################################################
@ -1597,6 +1637,19 @@ ifeq ($(PLATFORM), windows)
fi
endif
######################################################
# SECURITY_BASELINE_160 test
######################################################
security_baseline_160:
ifeq ($(PLATFORM), windows)
@if [ -z "$(SECURITY_BASELINE_160)" ]; then \
$(ECHO) "WARNING: Your SECURITY_BASELINE_160 setting is empty.\n" \
" Setting it to the default value of 1.6.0_11.\n" \
" It is recommended to set SECURITY_BASELINE_160.\n" \
"" >> $(WARNING_FILE) ; \
fi
endif
######################################################
# this should be the last rule in any target's sanity rule.

View File

@ -217,6 +217,7 @@ CORE_PKGS = \
javax.swing.plaf.basic \
javax.swing.plaf.metal \
javax.swing.plaf.multi \
javax.swing.plaf.nimbus \
javax.swing.plaf.synth \
javax.tools \
javax.transaction \

View File

@ -64,6 +64,7 @@ FILES_c = \
jio.c \
logging.c \
jni_util.c \
jni_util_md.c \
jdk_util.c \
jdk_util_md.c \
check_version.c \

View File

@ -412,6 +412,7 @@ JAVA_JAVA_java = \
java/io/FileReader.java \
java/io/PipedReader.java \
java/io/StringReader.java \
java/io/TempFileHelper.java \
java/io/Writer.java \
java/io/BufferedWriter.java \
java/io/PrintWriter.java \

View File

@ -280,6 +280,9 @@ SUNWprivate_1.1 {
Java_sun_misc_VM_initialize;
Java_sun_misc_VMSupport_initAgentProperties;
# ZipFile.c needs this one
throwFileNotFoundException;
# Java_sun_misc_VM_getState; threads.c
# Java_sun_misc_VM_threadsSuspended; threads.c
# Java_sun_misc_VM_unsuspendSomeThreads; threads.c

View File

@ -86,8 +86,6 @@ FILES_src = \
java/nio/file/CopyOption.java \
java/nio/file/DirectoryNotEmptyException.java \
java/nio/file/DirectoryStream.java \
java/nio/file/DirectoryStreamFilters.java \
java/nio/file/FileAction.java \
java/nio/file/FileAlreadyExistsException.java \
java/nio/file/FileRef.java \
java/nio/file/FileStore.java \
@ -141,6 +139,7 @@ FILES_src = \
java/nio/file/attribute/FileStoreAttributeView.java \
java/nio/file/attribute/FileStoreSpaceAttributeView.java \
java/nio/file/attribute/FileStoreSpaceAttributes.java \
java/nio/file/attribute/FileTime.java \
java/nio/file/attribute/GroupPrincipal.java \
java/nio/file/attribute/UserDefinedFileAttributeView.java \
java/nio/file/attribute/PosixFileAttributeView.java \
@ -151,7 +150,6 @@ FILES_src = \
java/nio/file/attribute/UserPrincipalLookupService.java \
java/nio/file/attribute/UserPrincipalNotFoundException.java \
\
java/nio/file/spi/AbstractPath.java \
java/nio/file/spi/FileSystemProvider.java \
java/nio/file/spi/FileTypeDetector.java \
\
@ -248,8 +246,8 @@ FILES_src = \
\
sun/nio/fs/AbstractAclFileAttributeView.java \
sun/nio/fs/AbstractBasicFileAttributeView.java \
sun/nio/fs/AbstractFileStoreSpaceAttributeView.java \
sun/nio/fs/AbstractFileTypeDetector.java \
sun/nio/fs/AbstractPath.java \
sun/nio/fs/AbstractPoller.java \
sun/nio/fs/AbstractUserDefinedFileAttributeView.java \
sun/nio/fs/AbstractWatchKey.java \
@ -258,12 +256,13 @@ FILES_src = \
sun/nio/fs/Cancellable.java \
sun/nio/fs/DefaultFileSystemProvider.java \
sun/nio/fs/DefaultFileTypeDetector.java \
sun/nio/fs/DynamicFileAttributeView.java \
sun/nio/fs/FileOwnerAttributeViewImpl.java \
sun/nio/fs/Globs.java \
sun/nio/fs/MimeType.java \
sun/nio/fs/NativeBuffer.java \
sun/nio/fs/NativeBuffers.java \
sun/nio/fs/Reflect.java \
sun/nio/fs/Util.java \
\
java/net/DatagramSocket.java \
java/net/DatagramSocketImpl.java \

View File

@ -142,7 +142,7 @@ SUNWprivate_1.1 {
Java_sun_nio_fs_LinuxNativeDispatcher_fremovexattr0;
Java_sun_nio_fs_LinuxNativeDispatcher_setmntent0;
Java_sun_nio_fs_LinuxNativeDispatcher_endmntent;
Java_sun_nio_fs_UnixNativeDispatcher_initIDs;
Java_sun_nio_fs_UnixNativeDispatcher_init;
Java_sun_nio_fs_UnixNativeDispatcher_getcwd;
Java_sun_nio_fs_UnixNativeDispatcher_strerror;
Java_sun_nio_fs_UnixNativeDispatcher_dup;

View File

@ -120,7 +120,7 @@ SUNWprivate_1.1 {
Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGio;
Java_sun_nio_fs_GnomeFileTypeDetector_initializeGnomeVfs;
Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGnomeVfs;
Java_sun_nio_fs_UnixNativeDispatcher_initIDs;
Java_sun_nio_fs_UnixNativeDispatcher_init;
Java_sun_nio_fs_UnixNativeDispatcher_getcwd;
Java_sun_nio_fs_UnixNativeDispatcher_strerror;
Java_sun_nio_fs_UnixNativeDispatcher_dup;

View File

@ -119,10 +119,15 @@ IMPORT_LIST += \
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMMAP_NAME) \
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMPDB_NAME)
# Hotspot client is only available on 32-bit builds
# Add .map and .pdb files to the import path for client and kernel VMs.
# These are only available on 32-bit windows builds.
ifeq ($(ARCH_DATA_MODEL), 32)
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMMAP_NAME) \
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMPDB_NAME)
ifeq ($(DO_KERNEL), true)
IMPORT_LIST += $(LIB_LOCATION)/$(KERNEL_LOCATION)/$(JVMMAP_NAME) \
$(LIB_LOCATION)/$(KERNEL_LOCATION)/$(JVMPDB_NAME)
endif
endif
$(LIBDIR)/$(JVMLIB_NAME): $(HOTSPOT_LIB_PATH)/$(JVMLIB_NAME)
@ -134,6 +139,10 @@ $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMMAP_NAME):
@$(prep-target)
-$(CP) $(HOTSPOT_CLIENT_PATH)/$(JVMMAP_NAME) $@
$(LIB_LOCATION)/$(KERNEL_LOCATION)/$(JVMMAP_NAME):
@$(prep-target)
-$(CP) $(HOTSPOT_KERNEL_PATH)/$(JVMMAP_NAME) $@
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMMAP_NAME):
@$(prep-target)
-$(CP) $(HOTSPOT_SERVER_PATH)/$(JVMMAP_NAME) $@
@ -142,6 +151,10 @@ $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMPDB_NAME):
@$(prep-target)
-$(CP) $(HOTSPOT_CLIENT_PATH)/$(JVMPDB_NAME) $@
$(LIB_LOCATION)/$(KERNEL_LOCATION)/$(JVMPDB_NAME):
@$(prep-target)
-$(CP) $(HOTSPOT_KERNEL_PATH)/$(JVMPDB_NAME) $@
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMPDB_NAME):
@$(prep-target)
-$(CP) $(HOTSPOT_SERVER_PATH)/$(JVMPDB_NAME) $@
@ -195,6 +208,9 @@ endif # PLATFORM
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME): $(HOTSPOT_CLIENT_PATH)/$(JVM_NAME)
$(install-import-file)
$(LIB_LOCATION)/$(KERNEL_LOCATION)/$(JVM_NAME): $(HOTSPOT_KERNEL_PATH)/$(JVM_NAME)
$(install-file)
$(LIB_LOCATION)/$(LIBJSIG_NAME): $(HOTSPOT_SERVER_PATH)/$(LIBJSIG_NAME)
$(install-import-file)
@ -224,6 +240,9 @@ $(LIB_LOCATION)/$(SERVER_LOCATION)/Xusage.txt : $(HOTSPOT_SERVER_PATH)/Xusage.tx
$(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt : $(HOTSPOT_CLIENT_PATH)/Xusage.txt
$(install-import-file)
$(LIB_LOCATION)/$(KERNEL_LOCATION)/Xusage.txt : $(HOTSPOT_KERNEL_PATH)/Xusage.txt
$(install-file)
ifeq ($(INCLUDE_SA), true)
# The Serviceability Agent is built in the Hotspot workspace.
# It contains two files:

View File

@ -51,6 +51,7 @@ SUNWprivate_1.1 {
Java_java_util_zip_Inflater_reset;
Java_java_util_zip_Inflater_setDictionary;
Java_java_util_zip_ZipFile_close;
Java_java_util_zip_ZipFile_getCommentBytes;
Java_java_util_zip_ZipFile_freeEntry;
Java_java_util_zip_ZipFile_getEntry;
Java_java_util_zip_ZipFile_getEntryBytes;

View File

@ -33,6 +33,12 @@ PRODUCT = jpda
PROGRAM = jdb
include $(BUILDDIR)/common/Defs.gmk
# This program must contain a manifest that defines the execution level
# needed to follow standard Vista User Access Control Guidelines
# This must be set before Program.gmk is included
#
BUILD_MANIFEST=true
#
# Java Files to compile are found automatically.
#

View File

@ -59,7 +59,7 @@ else
RENDER_SUBDIR = dcpr
endif
# nio need to be compiled before awt to have all charsets ready
SUBDIRS = jar security javazic misc net audio $(RENDER_SUBDIR) image \
SUBDIRS = jar security javazic misc jkernel net audio $(RENDER_SUBDIR) image \
nio awt splashscreen $(XAWT_SUBDIR) \
$(HEADLESS_SUBDIR) $(DGA_SUBDIR) \
font jpeg cmm applet rmi beans $(JDBC_SUBDIR) \

View File

@ -32,6 +32,12 @@ PACKAGE = sun.applet
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
# This program must contain a manifest that defines the execution level
# needed to follow standard Vista User Access Control Guidelines
# This must be set before Program.gmk is included
#
BUILD_MANIFEST=true
#
# Files to compile.
#

View File

@ -32,6 +32,13 @@ PACKAGE = sun.tools
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
# This program must contain a manifest that defines the execution level
# needed to follow standard Vista User Access Control Guidelines
# This must be set before Program.gmk is included
#
BUILD_MANIFEST=true
#
# Files
#

View File

@ -54,9 +54,9 @@ Link America/Los_Angeles PST
Link Pacific/Guadalcanal SST
Link Asia/Saigon VST
# The follwong link is required to generate J2SE 1.2.x and 1.3.x
# The follwong link is required to generate JDK 1.2.x and 1.3.x
# compatible zones. In the Olson public source, MET is defined as
# GMT+1:00 with the C-Eur rules. In J2SE, MET is defined as an alias
# GMT+1:00 with the C-Eur rules. In JDK, MET is defined as an alias
# of Asia/Tehran. This line must be removed if a full set of Olson
# zones is generated. Otherwise, MET appears twice in the
# ZoneInfoMappings.IDs table.

View File

@ -32,6 +32,13 @@ PACKAGE = sun.tools.jconsole
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
# This program must contain a manifest that defines the execution level
# needed to follow standard Vista User Access Control Guidelines
# This must be set before Program.gmk is included
#
BUILD_MANIFEST=true
JARFILE = $(LIBDIR)/jconsole.jar
OTHER_JAVACFLAGS += -encoding iso8859-1

View File

@ -1,10 +1,12 @@
#
# Copyright 2008-2009 Sun Microsystems, Inc. All Rights Reserved.
# Copyright 2008 - 2009 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.
# published by the Free Software Foundation. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
@ -21,51 +23,20 @@
# have any questions.
#
# @test
# @bug 4313887
# @summary Unit test for probeContentType method
# @library ..
# @build ContentType SimpleFileTypeDetector
# @run shell content_type.sh
FILES_cpp = \
stdafx.cpp \
kernel.cpp \
DownloadDialog.cpp \
DownloadHelper.cpp \
DownloadHelper.cpp
# if TESTJAVA isn't set then we assume an interactive run.
if [ -z "$TESTJAVA" ]; then
TESTSRC=.
TESTCLASSES=.
JAVA=java
else
JAVA="${TESTJAVA}/bin/java"
fi
FILES_rc = kernel.rc
OS=`uname -s`
case "$OS" in
Windows_* )
CLASSPATH="${TESTCLASSES};${TESTSRC}"
;;
* )
CLASSPATH=${TESTCLASSES}:${TESTSRC}
;;
esac
export CLASSPATH
# FILES_export definitions for Win32
failures=0
go() {
echo ''
$JAVA $1 $2 $3 2>&1
if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
}
# Run the test
go ContentType
#
# Results
#
echo ''
if [ $failures -gt 0 ];
then echo "$failures test(s) failed";
else echo "All test(s) passed"; fi
exit $failures
FILES_export = \
sun/jkernel/DownloadManager.java \
sun/jkernel/Mutex.java \
sun/jkernel/Bundle.java \
sun/jkernel/BackgroundDownloader.java \

View File

@ -0,0 +1,41 @@
#
# Copyright 2008 - 2009 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
FILES_java = \
$(TARGDIR)sun/jkernel/BackgroundDownloader.java \
$(TARGDIR)sun/jkernel/Bundle.java \
$(TARGDIR)sun/jkernel/ByteArrayToFromHexDigits.java \
$(TARGDIR)sun/jkernel/BundleCheck.java \
$(TARGDIR)sun/jkernel/DownloadManager.java \
$(TARGDIR)sun/jkernel/Mutex.java \
$(TARGDIR)sun/jkernel/StandaloneByteArrayAccess.java \
$(TARGDIR)sun/jkernel/StandaloneMessageDigest.java \
$(TARGDIR)sun/jkernel/StandaloneSHA.java \
FILES_export = \
sun/jkernel/DownloadManager.java \
sun/jkernel/Mutex.java \
sun/jkernel/Bundle.java \
sun/jkernel/BackgroundDownloader.java

View File

@ -0,0 +1,90 @@
#
# Copyright 2008 - 2009 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
BUILDDIR = ../..
PACKAGE = sun.jkernel
LIBRARY = jkernel
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
#
# Use highest optimization level
#
_OPT = $(CC_HIGHEST_OPT)
# This re-directs all the class files to a separate location
CLASSDESTDIR = $(TEMPDIR)/classes
#
# Java source files
#
include FILES_java.gmk
AUTO_FILES_JAVA_DIRS = sun/jkernel
LOCALE_SUFFIXES = $(JDK_LOCALES)
#
# Native source files
#
ifeq ($(ARCH_DATA_MODEL), 32)
ifeq ($(PLATFORM), windows)
include FILES_c_windows.gmk
vpath %.cpp $(PLATFORM_SRC)/native/sun/jkernel
VERSIONINFO_RESOURCE = $(PLATFORM_SRC)/native/sun/jkernel/kernel.rc
LDLIBS += urlmon.lib wininet.lib shlwapi.lib version.lib comctl32.lib gdi32.lib -def:$(PLATFORM_SRC)/native/sun/jkernel/kernel.def
include $(BUILDDIR)/common/Library.gmk
endif
endif
#
# Resources
#
include $(TOPDIR)/make/common/internal/Resources.gmk
#
# Rules
#
include $(BUILDDIR)/common/Classes.gmk
# If extra compression is going to be available in the deploy build enable
# its use here by defining the JRE-relative pathname of the shared library
ifeq ($(PLATFORM), windows)
ifdef EXTRA_COMP_INSTALL_PATH
CPPFLAGS += -DEXTRA_COMP_INSTALL_PATH=$(EXTRA_COMP_INSTALL_PATH)
endif
endif

View File

@ -33,6 +33,13 @@ PRODUCT = sun
OTHER_JAVACFLAGS += -Xlint:serial -Werror
include $(BUILDDIR)/common/Defs.gmk
# This program must contain a manifest that defines the execution level
# needed to follow standard Vista User Access Control Guidelines
# This must be set before Program.gmk is included
#
BUILD_MANIFEST=true
#
# Files
#

View File

@ -66,6 +66,9 @@ FILES_java = \
sun/net/www/protocol/file/Handler.java \
sun/net/www/protocol/file/FileURLConnection.java \
sun/net/www/http/HttpClient.java \
sun/net/www/http/HttpCapture.java \
sun/net/www/http/HttpCaptureInputStream.java \
sun/net/www/http/HttpCaptureOutputStream.java \
sun/net/www/http/PosterOutputStream.java \
sun/net/www/http/ChunkedInputStream.java \
sun/net/www/http/ChunkedOutputStream.java \
@ -75,6 +78,7 @@ FILES_java = \
sun/net/www/http/Hurryable.java \
sun/net/www/protocol/http/Handler.java \
sun/net/www/protocol/http/HttpURLConnection.java \
sun/net/www/protocol/http/HttpLogFormatter.java \
sun/net/www/protocol/http/HttpAuthenticator.java \
sun/net/www/protocol/http/AuthenticationHeader.java \
sun/net/www/protocol/http/AuthenticationInfo.java \

View File

@ -151,7 +151,6 @@ FILES_src = \
sun/io/ByteToCharJISAutoDetect.java \
sun/io/ByteToCharJohab.java \
sun/io/ByteToCharMS874.java \
sun/io/ByteToCharMS932DB.java \
sun/io/ByteToCharMS932.java \
sun/io/ByteToCharMS936.java \
sun/io/ByteToCharMS949.java \
@ -283,7 +282,6 @@ FILES_src = \
sun/io/CharToByteISO8859_8.java \
sun/io/CharToByteJohab.java \
sun/io/CharToByteMS874.java \
sun/io/CharToByteMS932DB.java \
sun/io/CharToByteMS932.java \
sun/io/CharToByteMS936.java \
sun/io/CharToByteMS949.java \
@ -388,7 +386,15 @@ FILES_gen_extcs = \
sun/nio/cs/ext/IBM948.java \
sun/nio/cs/ext/IBM949.java \
sun/nio/cs/ext/IBM950.java \
sun/nio/cs/ext/IBM970.java
sun/nio/cs/ext/IBM970.java \
sun/nio/cs/ext/EUC_CN.java \
sun/nio/cs/ext/EUC_KR.java \
sun/nio/cs/ext/Johab.java \
sun/nio/cs/ext/MS932.java \
sun/nio/cs/ext/MS936.java \
sun/nio/cs/ext/MS949.java \
sun/nio/cs/ext/MS950.java \
sun/nio/cs/ext/GBK.java
FILES_java = $(FILES_src) $(FILES_gen_extcs)

View File

@ -105,7 +105,7 @@ $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH): \
$(install-file)
$(CHARSETS_JAR): $(FILES_class) $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH) $(FILES_DAT)
$(BOOT_JAR_CMD) cf $(CHARSETS_JAR) \
$(BOOT_JAR_CMD) cf0 $(CHARSETS_JAR) \
-C $(CLASSDESTDIR) sun \
-C $(CLASSDESTDIR) $(SERVICE_DESCRIPTION_PATH) \
$(BOOT_JAR_JFLAGS)

View File

@ -32,6 +32,13 @@ PACKAGE = sun.rmi.rmic
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
#
# This program must contain a manifest that defines the execution level
# needed to follow standard Vista User Access Control Guidelines
# This must be set before Program.gmk is included
#
BUILD_MANIFEST=true
#
# Files
#

View File

@ -32,6 +32,14 @@ PACKAGE = sun.tools.serialver
PRODUCT = sun
include $(BUILDDIR)/common/Defs.gmk
#
# This program must contain a manifest that defines the execution level
# needed to follow standard Vista User Access Control Guidelines
# This must be set before Program.gmk is included
#
BUILD_MANIFEST=true
#
# Files
#

View File

@ -125,6 +125,7 @@ SUNWprivate_1.1 {
Java_sun_awt_X11_XlibWrapper_XFree;
Java_sun_awt_X11_XlibWrapper_ServerVendor;
Java_sun_awt_X11_XlibWrapper_VendorRelease;
Java_sun_awt_X11_XlibWrapper_IsXsunKPBehavior;
Java_sun_awt_X11_XlibWrapper_SetToolkitErrorHandler;
Java_sun_awt_X11_XlibWrapper_XSetErrorHandler;
Java_sun_awt_X11_XlibWrapper_CallErrorHandler;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,21 @@
#
# (1)entries that exist only in MS932DB.c2b.private
# (diff result of MS932DB.b2c.private and MS932DB.c2b.private)
# (2)added the jis0201 c->b only entries
# u+203e -> 0x7e
# u+00a5 -> 0x5c
#
0x7e 0x203e
0x5c 0x00a5
#
0x8143 0x00b8 # CEDILLA
0x8145 0x00b7 # MIDDLE DOT
0x8150 0x00af # MACRON
0x8191 0x00a2 # CENT SIGN
0x8192 0x00a3 # POUND SIGN
0x81ca 0x00ac # NOT SIGN
0x81e1 0x00ab # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0x81e2 0x00bb # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0x8394 0x3094 # HIRAGANA LETTER VU
0x83ca 0x00b5 # MICRO SIGN

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,402 @@
#
# These are the entries exist only in MS932DB.b2c.private
# (diff result of MS932DB.b2c.private and MS932DB.c2b.private)
#
0x8790 0x2252 # APPROXIMATELY EQUAL TO OR THE IMAGE OF
0x8791 0x2261 # IDENTICAL TO
0x8792 0x222b # INTEGRAL
0x8795 0x221a # SQUARE ROOT
0x8796 0x22a5 # UP TACK
0x8797 0x2220 # ANGLE
0x879a 0x2235 # BECAUSE
0x879b 0x2229 # INTERSECTION
0x879c 0x222a # UNION
0xed40 0x7e8a # CJK UNIFIED IDEOGRAPH-7E8A
0xed41 0x891c # CJK UNIFIED IDEOGRAPH-891C
0xed42 0x9348 # CJK UNIFIED IDEOGRAPH-9348
0xed43 0x9288 # CJK UNIFIED IDEOGRAPH-9288
0xed44 0x84dc # CJK UNIFIED IDEOGRAPH-84DC
0xed45 0x4fc9 # CJK UNIFIED IDEOGRAPH-4FC9
0xed46 0x70bb # CJK UNIFIED IDEOGRAPH-70BB
0xed47 0x6631 # CJK UNIFIED IDEOGRAPH-6631
0xed48 0x68c8 # CJK UNIFIED IDEOGRAPH-68C8
0xed49 0x92f9 # CJK UNIFIED IDEOGRAPH-92F9
0xed4a 0x66fb # CJK UNIFIED IDEOGRAPH-66FB
0xed4b 0x5f45 # CJK UNIFIED IDEOGRAPH-5F45
0xed4c 0x4e28 # CJK UNIFIED IDEOGRAPH-4E28
0xed4d 0x4ee1 # CJK UNIFIED IDEOGRAPH-4EE1
0xed4e 0x4efc # CJK UNIFIED IDEOGRAPH-4EFC
0xed4f 0x4f00 # CJK UNIFIED IDEOGRAPH-4F00
0xed50 0x4f03 # CJK UNIFIED IDEOGRAPH-4F03
0xed51 0x4f39 # CJK UNIFIED IDEOGRAPH-4F39
0xed52 0x4f56 # CJK UNIFIED IDEOGRAPH-4F56
0xed53 0x4f92 # CJK UNIFIED IDEOGRAPH-4F92
0xed54 0x4f8a # CJK UNIFIED IDEOGRAPH-4F8A
0xed55 0x4f9a # CJK UNIFIED IDEOGRAPH-4F9A
0xed56 0x4f94 # CJK UNIFIED IDEOGRAPH-4F94
0xed57 0x4fcd # CJK UNIFIED IDEOGRAPH-4FCD
0xed58 0x5040 # CJK UNIFIED IDEOGRAPH-5040
0xed59 0x5022 # CJK UNIFIED IDEOGRAPH-5022
0xed5a 0x4fff # CJK UNIFIED IDEOGRAPH-4FFF
0xed5b 0x501e # CJK UNIFIED IDEOGRAPH-501E
0xed5c 0x5046 # CJK UNIFIED IDEOGRAPH-5046
0xed5d 0x5070 # CJK UNIFIED IDEOGRAPH-5070
0xed5e 0x5042 # CJK UNIFIED IDEOGRAPH-5042
0xed5f 0x5094 # CJK UNIFIED IDEOGRAPH-5094
0xed60 0x50f4 # CJK UNIFIED IDEOGRAPH-50F4
0xed61 0x50d8 # CJK UNIFIED IDEOGRAPH-50D8
0xed62 0x514a # CJK UNIFIED IDEOGRAPH-514A
0xed63 0x5164 # CJK UNIFIED IDEOGRAPH-5164
0xed64 0x519d # CJK UNIFIED IDEOGRAPH-519D
0xed65 0x51be # CJK UNIFIED IDEOGRAPH-51BE
0xed66 0x51ec # CJK UNIFIED IDEOGRAPH-51EC
0xed67 0x5215 # CJK UNIFIED IDEOGRAPH-5215
0xed68 0x529c # CJK UNIFIED IDEOGRAPH-529C
0xed69 0x52a6 # CJK UNIFIED IDEOGRAPH-52A6
0xed6a 0x52c0 # CJK UNIFIED IDEOGRAPH-52C0
0xed6b 0x52db # CJK UNIFIED IDEOGRAPH-52DB
0xed6c 0x5300 # CJK UNIFIED IDEOGRAPH-5300
0xed6d 0x5307 # CJK UNIFIED IDEOGRAPH-5307
0xed6e 0x5324 # CJK UNIFIED IDEOGRAPH-5324
0xed6f 0x5372 # CJK UNIFIED IDEOGRAPH-5372
0xed70 0x5393 # CJK UNIFIED IDEOGRAPH-5393
0xed71 0x53b2 # CJK UNIFIED IDEOGRAPH-53B2
0xed72 0x53dd # CJK UNIFIED IDEOGRAPH-53DD
0xed73 0xfa0e # CJK COMPATIBILITY IDEOGRAPH-FA0E
0xed74 0x549c # CJK UNIFIED IDEOGRAPH-549C
0xed75 0x548a # CJK UNIFIED IDEOGRAPH-548A
0xed76 0x54a9 # CJK UNIFIED IDEOGRAPH-54A9
0xed77 0x54ff # CJK UNIFIED IDEOGRAPH-54FF
0xed78 0x5586 # CJK UNIFIED IDEOGRAPH-5586
0xed79 0x5759 # CJK UNIFIED IDEOGRAPH-5759
0xed7a 0x5765 # CJK UNIFIED IDEOGRAPH-5765
0xed7b 0x57ac # CJK UNIFIED IDEOGRAPH-57AC
0xed7c 0x57c8 # CJK UNIFIED IDEOGRAPH-57C8
0xed7d 0x57c7 # CJK UNIFIED IDEOGRAPH-57C7
0xed7e 0xfa0f # CJK COMPATIBILITY IDEOGRAPH-FA0F
0xed80 0xfa10 # CJK COMPATIBILITY IDEOGRAPH-FA10
0xed81 0x589e # CJK UNIFIED IDEOGRAPH-589E
0xed82 0x58b2 # CJK UNIFIED IDEOGRAPH-58B2
0xed83 0x590b # CJK UNIFIED IDEOGRAPH-590B
0xed84 0x5953 # CJK UNIFIED IDEOGRAPH-5953
0xed85 0x595b # CJK UNIFIED IDEOGRAPH-595B
0xed86 0x595d # CJK UNIFIED IDEOGRAPH-595D
0xed87 0x5963 # CJK UNIFIED IDEOGRAPH-5963
0xed88 0x59a4 # CJK UNIFIED IDEOGRAPH-59A4
0xed89 0x59ba # CJK UNIFIED IDEOGRAPH-59BA
0xed8a 0x5b56 # CJK UNIFIED IDEOGRAPH-5B56
0xed8b 0x5bc0 # CJK UNIFIED IDEOGRAPH-5BC0
0xed8c 0x752f # CJK UNIFIED IDEOGRAPH-752F
0xed8d 0x5bd8 # CJK UNIFIED IDEOGRAPH-5BD8
0xed8e 0x5bec # CJK UNIFIED IDEOGRAPH-5BEC
0xed8f 0x5c1e # CJK UNIFIED IDEOGRAPH-5C1E
0xed90 0x5ca6 # CJK UNIFIED IDEOGRAPH-5CA6
0xed91 0x5cba # CJK UNIFIED IDEOGRAPH-5CBA
0xed92 0x5cf5 # CJK UNIFIED IDEOGRAPH-5CF5
0xed93 0x5d27 # CJK UNIFIED IDEOGRAPH-5D27
0xed94 0x5d53 # CJK UNIFIED IDEOGRAPH-5D53
0xed95 0xfa11 # CJK COMPATIBILITY IDEOGRAPH-FA11
0xed96 0x5d42 # CJK UNIFIED IDEOGRAPH-5D42
0xed97 0x5d6d # CJK UNIFIED IDEOGRAPH-5D6D
0xed98 0x5db8 # CJK UNIFIED IDEOGRAPH-5DB8
0xed99 0x5db9 # CJK UNIFIED IDEOGRAPH-5DB9
0xed9a 0x5dd0 # CJK UNIFIED IDEOGRAPH-5DD0
0xed9b 0x5f21 # CJK UNIFIED IDEOGRAPH-5F21
0xed9c 0x5f34 # CJK UNIFIED IDEOGRAPH-5F34
0xed9d 0x5f67 # CJK UNIFIED IDEOGRAPH-5F67
0xed9e 0x5fb7 # CJK UNIFIED IDEOGRAPH-5FB7
0xed9f 0x5fde # CJK UNIFIED IDEOGRAPH-5FDE
0xeda0 0x605d # CJK UNIFIED IDEOGRAPH-605D
0xeda1 0x6085 # CJK UNIFIED IDEOGRAPH-6085
0xeda2 0x608a # CJK UNIFIED IDEOGRAPH-608A
0xeda3 0x60de # CJK UNIFIED IDEOGRAPH-60DE
0xeda4 0x60d5 # CJK UNIFIED IDEOGRAPH-60D5
0xeda5 0x6120 # CJK UNIFIED IDEOGRAPH-6120
0xeda6 0x60f2 # CJK UNIFIED IDEOGRAPH-60F2
0xeda7 0x6111 # CJK UNIFIED IDEOGRAPH-6111
0xeda8 0x6137 # CJK UNIFIED IDEOGRAPH-6137
0xeda9 0x6130 # CJK UNIFIED IDEOGRAPH-6130
0xedaa 0x6198 # CJK UNIFIED IDEOGRAPH-6198
0xedab 0x6213 # CJK UNIFIED IDEOGRAPH-6213
0xedac 0x62a6 # CJK UNIFIED IDEOGRAPH-62A6
0xedad 0x63f5 # CJK UNIFIED IDEOGRAPH-63F5
0xedae 0x6460 # CJK UNIFIED IDEOGRAPH-6460
0xedaf 0x649d # CJK UNIFIED IDEOGRAPH-649D
0xedb0 0x64ce # CJK UNIFIED IDEOGRAPH-64CE
0xedb1 0x654e # CJK UNIFIED IDEOGRAPH-654E
0xedb2 0x6600 # CJK UNIFIED IDEOGRAPH-6600
0xedb3 0x6615 # CJK UNIFIED IDEOGRAPH-6615
0xedb4 0x663b # CJK UNIFIED IDEOGRAPH-663B
0xedb5 0x6609 # CJK UNIFIED IDEOGRAPH-6609
0xedb6 0x662e # CJK UNIFIED IDEOGRAPH-662E
0xedb7 0x661e # CJK UNIFIED IDEOGRAPH-661E
0xedb8 0x6624 # CJK UNIFIED IDEOGRAPH-6624
0xedb9 0x6665 # CJK UNIFIED IDEOGRAPH-6665
0xedba 0x6657 # CJK UNIFIED IDEOGRAPH-6657
0xedbb 0x6659 # CJK UNIFIED IDEOGRAPH-6659
0xedbc 0xfa12 # CJK COMPATIBILITY IDEOGRAPH-FA12
0xedbd 0x6673 # CJK UNIFIED IDEOGRAPH-6673
0xedbe 0x6699 # CJK UNIFIED IDEOGRAPH-6699
0xedbf 0x66a0 # CJK UNIFIED IDEOGRAPH-66A0
0xedc0 0x66b2 # CJK UNIFIED IDEOGRAPH-66B2
0xedc1 0x66bf # CJK UNIFIED IDEOGRAPH-66BF
0xedc2 0x66fa # CJK UNIFIED IDEOGRAPH-66FA
0xedc3 0x670e # CJK UNIFIED IDEOGRAPH-670E
0xedc4 0xf929 # CJK COMPATIBILITY IDEOGRAPH-F929
0xedc5 0x6766 # CJK UNIFIED IDEOGRAPH-6766
0xedc6 0x67bb # CJK UNIFIED IDEOGRAPH-67BB
0xedc7 0x6852 # CJK UNIFIED IDEOGRAPH-6852
0xedc8 0x67c0 # CJK UNIFIED IDEOGRAPH-67C0
0xedc9 0x6801 # CJK UNIFIED IDEOGRAPH-6801
0xedca 0x6844 # CJK UNIFIED IDEOGRAPH-6844
0xedcb 0x68cf # CJK UNIFIED IDEOGRAPH-68CF
0xedcc 0xfa13 # CJK COMPATIBILITY IDEOGRAPH-FA13
0xedcd 0x6968 # CJK UNIFIED IDEOGRAPH-6968
0xedce 0xfa14 # CJK COMPATIBILITY IDEOGRAPH-FA14
0xedcf 0x6998 # CJK UNIFIED IDEOGRAPH-6998
0xedd0 0x69e2 # CJK UNIFIED IDEOGRAPH-69E2
0xedd1 0x6a30 # CJK UNIFIED IDEOGRAPH-6A30
0xedd2 0x6a6b # CJK UNIFIED IDEOGRAPH-6A6B
0xedd3 0x6a46 # CJK UNIFIED IDEOGRAPH-6A46
0xedd4 0x6a73 # CJK UNIFIED IDEOGRAPH-6A73
0xedd5 0x6a7e # CJK UNIFIED IDEOGRAPH-6A7E
0xedd6 0x6ae2 # CJK UNIFIED IDEOGRAPH-6AE2
0xedd7 0x6ae4 # CJK UNIFIED IDEOGRAPH-6AE4
0xedd8 0x6bd6 # CJK UNIFIED IDEOGRAPH-6BD6
0xedd9 0x6c3f # CJK UNIFIED IDEOGRAPH-6C3F
0xedda 0x6c5c # CJK UNIFIED IDEOGRAPH-6C5C
0xeddb 0x6c86 # CJK UNIFIED IDEOGRAPH-6C86
0xeddc 0x6c6f # CJK UNIFIED IDEOGRAPH-6C6F
0xeddd 0x6cda # CJK UNIFIED IDEOGRAPH-6CDA
0xedde 0x6d04 # CJK UNIFIED IDEOGRAPH-6D04
0xeddf 0x6d87 # CJK UNIFIED IDEOGRAPH-6D87
0xede0 0x6d6f # CJK UNIFIED IDEOGRAPH-6D6F
0xede1 0x6d96 # CJK UNIFIED IDEOGRAPH-6D96
0xede2 0x6dac # CJK UNIFIED IDEOGRAPH-6DAC
0xede3 0x6dcf # CJK UNIFIED IDEOGRAPH-6DCF
0xede4 0x6df8 # CJK UNIFIED IDEOGRAPH-6DF8
0xede5 0x6df2 # CJK UNIFIED IDEOGRAPH-6DF2
0xede6 0x6dfc # CJK UNIFIED IDEOGRAPH-6DFC
0xede7 0x6e39 # CJK UNIFIED IDEOGRAPH-6E39
0xede8 0x6e5c # CJK UNIFIED IDEOGRAPH-6E5C
0xede9 0x6e27 # CJK UNIFIED IDEOGRAPH-6E27
0xedea 0x6e3c # CJK UNIFIED IDEOGRAPH-6E3C
0xedeb 0x6ebf # CJK UNIFIED IDEOGRAPH-6EBF
0xedec 0x6f88 # CJK UNIFIED IDEOGRAPH-6F88
0xeded 0x6fb5 # CJK UNIFIED IDEOGRAPH-6FB5
0xedee 0x6ff5 # CJK UNIFIED IDEOGRAPH-6FF5
0xedef 0x7005 # CJK UNIFIED IDEOGRAPH-7005
0xedf0 0x7007 # CJK UNIFIED IDEOGRAPH-7007
0xedf1 0x7028 # CJK UNIFIED IDEOGRAPH-7028
0xedf2 0x7085 # CJK UNIFIED IDEOGRAPH-7085
0xedf3 0x70ab # CJK UNIFIED IDEOGRAPH-70AB
0xedf4 0x710f # CJK UNIFIED IDEOGRAPH-710F
0xedf5 0x7104 # CJK UNIFIED IDEOGRAPH-7104
0xedf6 0x715c # CJK UNIFIED IDEOGRAPH-715C
0xedf7 0x7146 # CJK UNIFIED IDEOGRAPH-7146
0xedf8 0x7147 # CJK UNIFIED IDEOGRAPH-7147
0xedf9 0xfa15 # CJK COMPATIBILITY IDEOGRAPH-FA15
0xedfa 0x71c1 # CJK UNIFIED IDEOGRAPH-71C1
0xedfb 0x71fe # CJK UNIFIED IDEOGRAPH-71FE
0xedfc 0x72b1 # CJK UNIFIED IDEOGRAPH-72B1
0xee40 0x72be # CJK UNIFIED IDEOGRAPH-72BE
0xee41 0x7324 # CJK UNIFIED IDEOGRAPH-7324
0xee42 0xfa16 # CJK COMPATIBILITY IDEOGRAPH-FA16
0xee43 0x7377 # CJK UNIFIED IDEOGRAPH-7377
0xee44 0x73bd # CJK UNIFIED IDEOGRAPH-73BD
0xee45 0x73c9 # CJK UNIFIED IDEOGRAPH-73C9
0xee46 0x73d6 # CJK UNIFIED IDEOGRAPH-73D6
0xee47 0x73e3 # CJK UNIFIED IDEOGRAPH-73E3
0xee48 0x73d2 # CJK UNIFIED IDEOGRAPH-73D2
0xee49 0x7407 # CJK UNIFIED IDEOGRAPH-7407
0xee4a 0x73f5 # CJK UNIFIED IDEOGRAPH-73F5
0xee4b 0x7426 # CJK UNIFIED IDEOGRAPH-7426
0xee4c 0x742a # CJK UNIFIED IDEOGRAPH-742A
0xee4d 0x7429 # CJK UNIFIED IDEOGRAPH-7429
0xee4e 0x742e # CJK UNIFIED IDEOGRAPH-742E
0xee4f 0x7462 # CJK UNIFIED IDEOGRAPH-7462
0xee50 0x7489 # CJK UNIFIED IDEOGRAPH-7489
0xee51 0x749f # CJK UNIFIED IDEOGRAPH-749F
0xee52 0x7501 # CJK UNIFIED IDEOGRAPH-7501
0xee53 0x756f # CJK UNIFIED IDEOGRAPH-756F
0xee54 0x7682 # CJK UNIFIED IDEOGRAPH-7682
0xee55 0x769c # CJK UNIFIED IDEOGRAPH-769C
0xee56 0x769e # CJK UNIFIED IDEOGRAPH-769E
0xee57 0x769b # CJK UNIFIED IDEOGRAPH-769B
0xee58 0x76a6 # CJK UNIFIED IDEOGRAPH-76A6
0xee59 0xfa17 # CJK COMPATIBILITY IDEOGRAPH-FA17
0xee5a 0x7746 # CJK UNIFIED IDEOGRAPH-7746
0xee5b 0x52af # CJK UNIFIED IDEOGRAPH-52AF
0xee5c 0x7821 # CJK UNIFIED IDEOGRAPH-7821
0xee5d 0x784e # CJK UNIFIED IDEOGRAPH-784E
0xee5e 0x7864 # CJK UNIFIED IDEOGRAPH-7864
0xee5f 0x787a # CJK UNIFIED IDEOGRAPH-787A
0xee60 0x7930 # CJK UNIFIED IDEOGRAPH-7930
0xee61 0xfa18 # CJK COMPATIBILITY IDEOGRAPH-FA18
0xee62 0xfa19 # CJK COMPATIBILITY IDEOGRAPH-FA19
0xee63 0xfa1a # CJK COMPATIBILITY IDEOGRAPH-FA1A
0xee64 0x7994 # CJK UNIFIED IDEOGRAPH-7994
0xee65 0xfa1b # CJK COMPATIBILITY IDEOGRAPH-FA1B
0xee66 0x799b # CJK UNIFIED IDEOGRAPH-799B
0xee67 0x7ad1 # CJK UNIFIED IDEOGRAPH-7AD1
0xee68 0x7ae7 # CJK UNIFIED IDEOGRAPH-7AE7
0xee69 0xfa1c # CJK COMPATIBILITY IDEOGRAPH-FA1C
0xee6a 0x7aeb # CJK UNIFIED IDEOGRAPH-7AEB
0xee6b 0x7b9e # CJK UNIFIED IDEOGRAPH-7B9E
0xee6c 0xfa1d # CJK COMPATIBILITY IDEOGRAPH-FA1D
0xee6d 0x7d48 # CJK UNIFIED IDEOGRAPH-7D48
0xee6e 0x7d5c # CJK UNIFIED IDEOGRAPH-7D5C
0xee6f 0x7db7 # CJK UNIFIED IDEOGRAPH-7DB7
0xee70 0x7da0 # CJK UNIFIED IDEOGRAPH-7DA0
0xee71 0x7dd6 # CJK UNIFIED IDEOGRAPH-7DD6
0xee72 0x7e52 # CJK UNIFIED IDEOGRAPH-7E52
0xee73 0x7f47 # CJK UNIFIED IDEOGRAPH-7F47
0xee74 0x7fa1 # CJK UNIFIED IDEOGRAPH-7FA1
0xee75 0xfa1e # CJK COMPATIBILITY IDEOGRAPH-FA1E
0xee76 0x8301 # CJK UNIFIED IDEOGRAPH-8301
0xee77 0x8362 # CJK UNIFIED IDEOGRAPH-8362
0xee78 0x837f # CJK UNIFIED IDEOGRAPH-837F
0xee79 0x83c7 # CJK UNIFIED IDEOGRAPH-83C7
0xee7a 0x83f6 # CJK UNIFIED IDEOGRAPH-83F6
0xee7b 0x8448 # CJK UNIFIED IDEOGRAPH-8448
0xee7c 0x84b4 # CJK UNIFIED IDEOGRAPH-84B4
0xee7d 0x8553 # CJK UNIFIED IDEOGRAPH-8553
0xee7e 0x8559 # CJK UNIFIED IDEOGRAPH-8559
0xee80 0x856b # CJK UNIFIED IDEOGRAPH-856B
0xee81 0xfa1f # CJK COMPATIBILITY IDEOGRAPH-FA1F
0xee82 0x85b0 # CJK UNIFIED IDEOGRAPH-85B0
0xee83 0xfa20 # CJK COMPATIBILITY IDEOGRAPH-FA20
0xee84 0xfa21 # CJK COMPATIBILITY IDEOGRAPH-FA21
0xee85 0x8807 # CJK UNIFIED IDEOGRAPH-8807
0xee86 0x88f5 # CJK UNIFIED IDEOGRAPH-88F5
0xee87 0x8a12 # CJK UNIFIED IDEOGRAPH-8A12
0xee88 0x8a37 # CJK UNIFIED IDEOGRAPH-8A37
0xee89 0x8a79 # CJK UNIFIED IDEOGRAPH-8A79
0xee8a 0x8aa7 # CJK UNIFIED IDEOGRAPH-8AA7
0xee8b 0x8abe # CJK UNIFIED IDEOGRAPH-8ABE
0xee8c 0x8adf # CJK UNIFIED IDEOGRAPH-8ADF
0xee8d 0xfa22 # CJK COMPATIBILITY IDEOGRAPH-FA22
0xee8e 0x8af6 # CJK UNIFIED IDEOGRAPH-8AF6
0xee8f 0x8b53 # CJK UNIFIED IDEOGRAPH-8B53
0xee90 0x8b7f # CJK UNIFIED IDEOGRAPH-8B7F
0xee91 0x8cf0 # CJK UNIFIED IDEOGRAPH-8CF0
0xee92 0x8cf4 # CJK UNIFIED IDEOGRAPH-8CF4
0xee93 0x8d12 # CJK UNIFIED IDEOGRAPH-8D12
0xee94 0x8d76 # CJK UNIFIED IDEOGRAPH-8D76
0xee95 0xfa23 # CJK COMPATIBILITY IDEOGRAPH-FA23
0xee96 0x8ecf # CJK UNIFIED IDEOGRAPH-8ECF
0xee97 0xfa24 # CJK COMPATIBILITY IDEOGRAPH-FA24
0xee98 0xfa25 # CJK COMPATIBILITY IDEOGRAPH-FA25
0xee99 0x9067 # CJK UNIFIED IDEOGRAPH-9067
0xee9a 0x90de # CJK UNIFIED IDEOGRAPH-90DE
0xee9b 0xfa26 # CJK COMPATIBILITY IDEOGRAPH-FA26
0xee9c 0x9115 # CJK UNIFIED IDEOGRAPH-9115
0xee9d 0x9127 # CJK UNIFIED IDEOGRAPH-9127
0xee9e 0x91da # CJK UNIFIED IDEOGRAPH-91DA
0xee9f 0x91d7 # CJK UNIFIED IDEOGRAPH-91D7
0xeea0 0x91de # CJK UNIFIED IDEOGRAPH-91DE
0xeea1 0x91ed # CJK UNIFIED IDEOGRAPH-91ED
0xeea2 0x91ee # CJK UNIFIED IDEOGRAPH-91EE
0xeea3 0x91e4 # CJK UNIFIED IDEOGRAPH-91E4
0xeea4 0x91e5 # CJK UNIFIED IDEOGRAPH-91E5
0xeea5 0x9206 # CJK UNIFIED IDEOGRAPH-9206
0xeea6 0x9210 # CJK UNIFIED IDEOGRAPH-9210
0xeea7 0x920a # CJK UNIFIED IDEOGRAPH-920A
0xeea8 0x923a # CJK UNIFIED IDEOGRAPH-923A
0xeea9 0x9240 # CJK UNIFIED IDEOGRAPH-9240
0xeeaa 0x923c # CJK UNIFIED IDEOGRAPH-923C
0xeeab 0x924e # CJK UNIFIED IDEOGRAPH-924E
0xeeac 0x9259 # CJK UNIFIED IDEOGRAPH-9259
0xeead 0x9251 # CJK UNIFIED IDEOGRAPH-9251
0xeeae 0x9239 # CJK UNIFIED IDEOGRAPH-9239
0xeeaf 0x9267 # CJK UNIFIED IDEOGRAPH-9267
0xeeb0 0x92a7 # CJK UNIFIED IDEOGRAPH-92A7
0xeeb1 0x9277 # CJK UNIFIED IDEOGRAPH-9277
0xeeb2 0x9278 # CJK UNIFIED IDEOGRAPH-9278
0xeeb3 0x92e7 # CJK UNIFIED IDEOGRAPH-92E7
0xeeb4 0x92d7 # CJK UNIFIED IDEOGRAPH-92D7
0xeeb5 0x92d9 # CJK UNIFIED IDEOGRAPH-92D9
0xeeb6 0x92d0 # CJK UNIFIED IDEOGRAPH-92D0
0xeeb7 0xfa27 # CJK COMPATIBILITY IDEOGRAPH-FA27
0xeeb8 0x92d5 # CJK UNIFIED IDEOGRAPH-92D5
0xeeb9 0x92e0 # CJK UNIFIED IDEOGRAPH-92E0
0xeeba 0x92d3 # CJK UNIFIED IDEOGRAPH-92D3
0xeebb 0x9325 # CJK UNIFIED IDEOGRAPH-9325
0xeebc 0x9321 # CJK UNIFIED IDEOGRAPH-9321
0xeebd 0x92fb # CJK UNIFIED IDEOGRAPH-92FB
0xeebe 0xfa28 # CJK COMPATIBILITY IDEOGRAPH-FA28
0xeebf 0x931e # CJK UNIFIED IDEOGRAPH-931E
0xeec0 0x92ff # CJK UNIFIED IDEOGRAPH-92FF
0xeec1 0x931d # CJK UNIFIED IDEOGRAPH-931D
0xeec2 0x9302 # CJK UNIFIED IDEOGRAPH-9302
0xeec3 0x9370 # CJK UNIFIED IDEOGRAPH-9370
0xeec4 0x9357 # CJK UNIFIED IDEOGRAPH-9357
0xeec5 0x93a4 # CJK UNIFIED IDEOGRAPH-93A4
0xeec6 0x93c6 # CJK UNIFIED IDEOGRAPH-93C6
0xeec7 0x93de # CJK UNIFIED IDEOGRAPH-93DE
0xeec8 0x93f8 # CJK UNIFIED IDEOGRAPH-93F8
0xeec9 0x9431 # CJK UNIFIED IDEOGRAPH-9431
0xeeca 0x9445 # CJK UNIFIED IDEOGRAPH-9445
0xeecb 0x9448 # CJK UNIFIED IDEOGRAPH-9448
0xeecc 0x9592 # CJK UNIFIED IDEOGRAPH-9592
0xeecd 0xf9dc # CJK COMPATIBILITY IDEOGRAPH-F9DC
0xeece 0xfa29 # CJK COMPATIBILITY IDEOGRAPH-FA29
0xeecf 0x969d # CJK UNIFIED IDEOGRAPH-969D
0xeed0 0x96af # CJK UNIFIED IDEOGRAPH-96AF
0xeed1 0x9733 # CJK UNIFIED IDEOGRAPH-9733
0xeed2 0x973b # CJK UNIFIED IDEOGRAPH-973B
0xeed3 0x9743 # CJK UNIFIED IDEOGRAPH-9743
0xeed4 0x974d # CJK UNIFIED IDEOGRAPH-974D
0xeed5 0x974f # CJK UNIFIED IDEOGRAPH-974F
0xeed6 0x9751 # CJK UNIFIED IDEOGRAPH-9751
0xeed7 0x9755 # CJK UNIFIED IDEOGRAPH-9755
0xeed8 0x9857 # CJK UNIFIED IDEOGRAPH-9857
0xeed9 0x9865 # CJK UNIFIED IDEOGRAPH-9865
0xeeda 0xfa2a # CJK COMPATIBILITY IDEOGRAPH-FA2A
0xeedb 0xfa2b # CJK COMPATIBILITY IDEOGRAPH-FA2B
0xeedc 0x9927 # CJK UNIFIED IDEOGRAPH-9927
0xeedd 0xfa2c # CJK COMPATIBILITY IDEOGRAPH-FA2C
0xeede 0x999e # CJK UNIFIED IDEOGRAPH-999E
0xeedf 0x9a4e # CJK UNIFIED IDEOGRAPH-9A4E
0xeee0 0x9ad9 # CJK UNIFIED IDEOGRAPH-9AD9
0xeee1 0x9adc # CJK UNIFIED IDEOGRAPH-9ADC
0xeee2 0x9b75 # CJK UNIFIED IDEOGRAPH-9B75
0xeee3 0x9b72 # CJK UNIFIED IDEOGRAPH-9B72
0xeee4 0x9b8f # CJK UNIFIED IDEOGRAPH-9B8F
0xeee5 0x9bb1 # CJK UNIFIED IDEOGRAPH-9BB1
0xeee6 0x9bbb # CJK UNIFIED IDEOGRAPH-9BBB
0xeee7 0x9c00 # CJK UNIFIED IDEOGRAPH-9C00
0xeee8 0x9d70 # CJK UNIFIED IDEOGRAPH-9D70
0xeee9 0x9d6b # CJK UNIFIED IDEOGRAPH-9D6B
0xeeea 0xfa2d # CJK COMPATIBILITY IDEOGRAPH-FA2D
0xeeeb 0x9e19 # CJK UNIFIED IDEOGRAPH-9E19
0xeeec 0x9ed1 # CJK UNIFIED IDEOGRAPH-9ED1
0xeeef 0x2170 # SMALL ROMAN NUMERAL ONE
0xeef0 0x2171 # SMALL ROMAN NUMERAL TWO
0xeef1 0x2172 # SMALL ROMAN NUMERAL THREE
0xeef2 0x2173 # SMALL ROMAN NUMERAL FOUR
0xeef3 0x2174 # SMALL ROMAN NUMERAL FIVE
0xeef4 0x2175 # SMALL ROMAN NUMERAL SIX
0xeef5 0x2176 # SMALL ROMAN NUMERAL SEVEN
0xeef6 0x2177 # SMALL ROMAN NUMERAL EIGHT
0xeef7 0x2178 # SMALL ROMAN NUMERAL NINE
0xeef8 0x2179 # SMALL ROMAN NUMERAL TEN
0xeef9 0xffe2 # FULLWIDTH NOT SIGN
0xeefa 0xffe4 # FULLWIDTH BROKEN BAR
0xeefb 0xff07 # FULLWIDTH APOSTROPHE
0xeefc 0xff02 # FULLWIDTH QUOTATION MARK
0xfa4a 0x2160 # ROMAN NUMERAL ONE
0xfa4b 0x2161 # ROMAN NUMERAL TWO
0xfa4c 0x2162 # ROMAN NUMERAL THREE
0xfa4d 0x2163 # ROMAN NUMERAL FOUR
0xfa4e 0x2164 # ROMAN NUMERAL FIVE
0xfa4f 0x2165 # ROMAN NUMERAL SIX
0xfa50 0x2166 # ROMAN NUMERAL SEVEN
0xfa51 0x2167 # ROMAN NUMERAL EIGHT
0xfa52 0x2168 # ROMAN NUMERAL NINE
0xfa53 0x2169 # ROMAN NUMERAL TEN
0xfa54 0xffe2 # FULLWIDTH NOT SIGN
0xfa58 0x3231 # PARENTHESIZED IDEOGRAPH STOCK
0xfa59 0x2116 # NUMERO SIGN
0xfa5a 0x2121 # TELEPHONE SIGN
0xfa5b 0x2235 # BECAUSE

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,18 @@
#
# copy/paste of MS950.b2c-irreversible
#
# removed the entries of MS950.c2b-irreversible etries, this .nr
# table only includes "b->c only" entries
# (we don't need a MS950.c2b, the entries of MS950.c2b-irreversible
# are added in MS950.b2c already)
#
0xF9FA 0x256D
0xF9FB 0x256E
0xF9FC 0x2570
0xF9FD 0x256F
0xA2CC 0x5341
0xA2CE 0x5345
0xF9F9 0x2550
0xF9E9 0x255E
0xF9EA 0x256A
0xF9EB 0x2561

View File

@ -1,6 +1,14 @@
#
#clzName csName hisName dbtype pkg ascii b1min b1max b2min b2max
#
Johab x-Johab x-Johab basic sun.nio.cs.ext true 0x84 0xf9 0x31 0xfe
EUC_CN GB2312 EUC_CN basic sun.nio.cs.ext true 0xa1 0xf7 0xa1 0xfe
EUC_KR EUC-KR EUC_KR basic sun.nio.cs.ext true 0xa1 0xfd 0xa1 0xfe
MS932 windows-31j MS932 basic sun.nio.cs.ext true 0x81 0xfc 0x40 0xfc
MS936 x-mswin-936 MS936 basic sun.nio.cs.ext true 0x81 0xfe 0x40 0xfe
MS949 x-windows-949 MS949 basic sun.nio.cs.ext true 0x81 0xfe 0x41 0xfe
MS950 x-windows-950 MS950 basic sun.nio.cs.ext true 0x81 0xfe 0x40 0xfe
GBK GBK GBK basic sun.nio.cs.ext true 0x81 0xfe 0x40 0xfe
IBM1381 x-IBM1381 Cp1381 basic sun.nio.cs.ext true 0x8c 0xf7 0xa1 0xfe
IBM1383 x-IBM1383 Cp1383 euc_sim sun.nio.cs.ext true 0xa1 0xfe 0xa1 0xfe
IBM930 x-IBM930 Cp930 ebcdic sun.nio.cs.ext false 0x40 0x7f 0x40 0xfe

View File

@ -35,7 +35,7 @@ import static build.tools.charsetmapping.CharsetMapping.*;
public class GenerateDBCS {
// pattern used by this class to read in mapping table
static Pattern mPattern = Pattern.compile("(\\p{XDigit}++)\\s++(\\p{XDigit}++)(\\s++#.*)?");
static Pattern mPattern = Pattern.compile("(?:0x)?(\\p{XDigit}++)\\s++(?:0x)?(\\p{XDigit}++)(?:\\s++#.*)?");
public static void genDBCS(String args[]) throws Exception {
Scanner s = new Scanner(new File(args[0], args[2]));
@ -260,10 +260,12 @@ public class GenerateDBCS {
"StandardCharsets.aliases_" + clzName :
"ExtendedCharsets.aliasesFor(\"" + csName + "\")")
.replace("$NAME_CS$" , csName)
.replace("$CONTAINS$", isASCII ?
" return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof "
+ clzName + "));":
" return (cs instanceof " + clzName + ");")
.replace("$CONTAINS$",
"MS932".equals(clzName)?
"return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof JIS_X_0201) || (cs instanceof " + clzName + "));":
(isASCII ?
"return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof " + clzName + "));":
"return (cs instanceof " + clzName + ");"))
.replace("$HISTORICALNAME$",
(hisName == null)? "" :
" public String historicalName() { return \"" + hisName + "\"; }")

View File

@ -683,10 +683,16 @@ static void
SetClassPath(const char *s)
{
char *def;
const char *orig = s;
static const char format[] = "-Djava.class.path=%s";
s = JLI_WildcardExpandClasspath(s);
def = JLI_MemAlloc(JLI_StrLen(s) + 40);
sprintf(def, "-Djava.class.path=%s", s);
def = JLI_MemAlloc(sizeof(format)
- 2 /* strlen("%s") */
+ JLI_StrLen(s));
sprintf(def, format, s);
AddOption(def, NULL);
if (s != orig)
JLI_MemFree((char *) s);
}
/*

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2002-2009 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -27,13 +27,17 @@ package com.sun.java.swing;
import sun.awt.EventQueueDelegate;
import sun.awt.AppContext;
import java.util.Collections;
import java.util.Map;
import java.util.WeakHashMap;
import java.util.concurrent.Callable;
import java.awt.AWTEvent;
import java.awt.EventQueue;
import java.awt.Component;
import java.awt.Container;
import javax.swing.JComponent;
import javax.swing.RepaintManager;
import javax.swing.SwingUtilities;
/**
* A collection of utility methods for Swing.
@ -69,6 +73,43 @@ public class SwingUtilities3 {
repaintManager);
}
private static final Map<Container, Boolean> vsyncedMap =
Collections.synchronizedMap(new WeakHashMap<Container, Boolean>());
/**
* Sets vsyncRequested state for the {@code rootContainer}. If
* {@code isRequested} is {@code true} then vsynced
* {@code BufferStrategy} is enabled for this {@code rootContainer}.
*
* Note: requesting vsynced painting does not guarantee one. The outcome
* depends on current RepaintManager's RepaintManager.PaintManager
* and on the capabilities of the graphics hardware/software and what not.
*
* @param rootContainer topmost container. Should be either {@code Window}
* or {@code Applet}
* @param isRequested the value to set vsyncRequested state to
*/
public static void setVsyncRequested(Container rootContainer,
boolean isRequested) {
assert SwingUtilities.getRoot(rootContainer) == rootContainer;
if (isRequested) {
vsyncedMap.put(rootContainer, Boolean.TRUE);
} else {
vsyncedMap.remove(rootContainer);
}
}
/**
* Checks if vsync painting is requested for {@code rootContainer}
*
* @param rootContainer topmost container. Should be either Window or Applet
* @return {@code true} if vsync painting is requested for {@code rootContainer}
*/
public static boolean isVsyncRequested(Container rootContainer) {
assert SwingUtilities.getRoot(rootContainer) == rootContainer;
return Boolean.TRUE == vsyncedMap.get(rootContainer);
}
/**
* Returns delegate {@code RepaintManager} for {@code component} hierarchy.
*/

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2002-2009 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -139,7 +139,7 @@ public class GTKLookAndFeel extends SynthLookAndFeel {
});
isSunDesktop = val.booleanValue();
}
if (isSunDesktop) {
if (isSunDesktop && !sun.java2d.SunGraphicsEnvironment.isOpenSolaris) {
isSunCJK = true;
}
}

View File

@ -32,6 +32,7 @@ import java.awt.peer.LightweightPeer;
import java.lang.reflect.Field;
import java.util.logging.Logger;
import java.util.logging.Level;
import sun.awt.AWTAccessor;
/**
* The root event class for all AWT events.
@ -230,6 +231,12 @@ public abstract class AWTEvent extends EventObject {
if (!GraphicsEnvironment.isHeadless()) {
initIDs();
}
AWTAccessor.setAWTEventAccessor(
new AWTAccessor.AWTEventAccessor() {
public void setPosted(AWTEvent ev) {
ev.isPosted = true;
}
});
}
private static synchronized Field get_InputEvent_CanAccessSystemClipboard() {

View File

@ -861,6 +861,17 @@ public abstract class Component implements ImageObserver, MenuContainer,
public boolean isVisible_NoClientCode(Component comp) {
return comp.isVisible_NoClientCode();
}
public void setRequestFocusController
(RequestFocusController requestController)
{
Component.setRequestFocusController(requestController);
}
public AppContext getAppContext(Component comp) {
return comp.appContext;
}
public void setAppContext(Component comp, AppContext appContext) {
comp.appContext = appContext;
}
});
}
@ -9824,31 +9835,6 @@ public abstract class Component implements ImageObserver, MenuContainer,
// ****************** END OF MIXING CODE ********************************
private static boolean doesClassImplement(Class cls, String interfaceName) {
if (cls == null) return false;
for (Class c : cls.getInterfaces()) {
if (c.getName().equals(interfaceName)) {
return true;
}
}
return doesClassImplement(cls.getSuperclass(), interfaceName);
}
/**
* Checks that the given object implements the given interface.
* @param obj Object to be checked
* @param interfaceName The name of the interface. Must be fully-qualified interface name.
* @return true, if this object implements the given interface,
* false, otherwise, or if obj or interfaceName is null
*/
static boolean doesImplement(Object obj, String interfaceName) {
if (obj == null) return false;
if (interfaceName == null) return false;
return doesClassImplement(obj.getClass(), interfaceName);
}
// Note that the method is overriden in the Window class,
// a window doesn't need to be updated in the Z-order.
void updateZOrder() {

View File

@ -425,15 +425,13 @@ public class ContainerOrderFocusTraversalPolicy extends FocusTraversalPolicy
}
if (log.isLoggable(Level.FINE)) log.fine("### Cycle is " + cycle);
for (int i = 0; i < cycle.size(); i++) {
Component comp = cycle.get(i);
for (Component comp : cycle) {
if (accept(comp)) {
return comp;
} else if (comp instanceof Container && comp != aContainer) {
Container cont = (Container)comp;
if (cont.isFocusTraversalPolicyProvider()) {
return cont.getFocusTraversalPolicy().getDefaultComponent(cont);
}
} else if (comp != aContainer &&
(comp = getComponentDownCycle(comp, FORWARD_TRAVERSAL)) != null)
{
return comp;
}
}
}

View File

@ -262,12 +262,6 @@ public class Dialog extends Window {
TOOLKIT_EXCLUDE
};
/**
* @since 1.6
*/
private final static ModalExclusionType DEFAULT_MODAL_EXCLUSION_TYPE =
ModalExclusionType.APPLICATION_EXCLUDE;
/* operations with this list should be synchronized on tree lock*/
transient static IdentityArrayList<Dialog> modalDialogs = new IdentityArrayList<Dialog>();

View File

@ -43,6 +43,7 @@ import sun.awt.AWTAutoShutdown;
import sun.awt.PeerEvent;
import sun.awt.SunToolkit;
import sun.awt.EventQueueItem;
import sun.awt.AWTAccessor;
/**
* <code>EventQueue</code> is a platform-independent class
@ -154,6 +155,18 @@ public class EventQueue {
private static final Logger eventLog = Logger.getLogger("java.awt.event.EventQueue");
static {
AWTAccessor.setEventQueueAccessor(
new AWTAccessor.EventQueueAccessor() {
public EventQueue getNextQueue(EventQueue eventQueue) {
return eventQueue.nextQueue;
}
public Thread getDispatchThread(EventQueue eventQueue) {
return eventQueue.dispatchThread;
}
});
}
public EventQueue() {
for (int i = 0; i < NUM_PRIORITIES; i++) {
queues[i] = new Queue();

View File

@ -30,6 +30,7 @@ import java.io.IOException;
import java.io.ObjectInputStream;
import sun.awt.AppContext;
import sun.awt.SunToolkit;
import sun.awt.AWTAccessor;
import javax.accessibility.*;
/**
@ -109,6 +110,22 @@ public abstract class MenuComponent implements java.io.Serializable {
*/
private static final long serialVersionUID = -4536902356223894379L;
static {
AWTAccessor.setMenuComponentAccessor(
new AWTAccessor.MenuComponentAccessor() {
public AppContext getAppContext(MenuComponent menuComp) {
return menuComp.appContext;
}
public void setAppContext(MenuComponent menuComp,
AppContext appContext) {
menuComp.appContext = appContext;
}
public MenuContainer getParent(MenuComponent menuComp) {
return menuComp.parent;
}
});
}
/**
* Creates a <code>MenuComponent</code>.
* @exception HeadlessException if

View File

@ -28,6 +28,7 @@ package java.awt;
import java.awt.peer.PopupMenuPeer;
import javax.accessibility.*;
import sun.awt.AWTAccessor;
/**
* A class that implements a menu which can be dynamically popped up
@ -48,6 +49,15 @@ public class PopupMenu extends Menu {
transient boolean isTrayIconPopup = false;
static {
AWTAccessor.setPopupMenuAccessor(
new AWTAccessor.PopupMenuAccessor() {
public boolean isTrayIconPopup(PopupMenu popupMenu) {
return popupMenu.isTrayIconPopup;
}
});
}
/*
* JDK 1.1 serialVersionUID
*/

View File

@ -3658,7 +3658,7 @@ public class Window extends Container implements Accessible {
private static void setLayersOpaque(Component component, boolean isOpaque) {
// Shouldn't use instanceof to avoid loading Swing classes
// if it's a pure AWT application.
if (Component.doesImplement(component, "javax.swing.RootPaneContainer")) {
if (SunToolkit.isInstanceOf(component, "javax.swing.RootPaneContainer")) {
javax.swing.RootPaneContainer rpc = (javax.swing.RootPaneContainer)component;
javax.swing.JRootPane root = rpc.getRootPane();
javax.swing.JLayeredPane lp = root.getLayeredPane();
@ -3797,6 +3797,10 @@ public class Window extends Container implements Accessible {
{
return window.calculateSecurityWarningPosition(x, y, w, h);
}
public void setLWRequestStatus(Window changed, boolean status) {
changed.syncLWRequests = status;
}
}); // WindowAccessor
} // static

View File

@ -1844,10 +1844,18 @@ public class ICC_Profile implements Serializable {
}
if (!f.isFile()) { /* try the directory of built-in profiles */
dir = System.getProperty("java.home") +
File.separatorChar + "lib" + File.separatorChar + "cmm";
fullPath = dir + File.separatorChar + fileName;
dir = System.getProperty("java.home") +
File.separatorChar + "lib" + File.separatorChar + "cmm";
fullPath = dir + File.separatorChar + fileName;
f = new File(fullPath);
if (!f.isFile()) {
//make sure file was installed in the kernel mode
try {
//kernel uses platform independent paths =>
// should not use platform separator char
sun.jkernel.DownloadManager.downloadFile("lib/cmm/"+fileName);
} catch (IOException ioe) {}
}
}
if (f.isFile()) {

View File

@ -93,7 +93,7 @@ class EnumPersistenceDelegate extends PersistenceDelegate {
protected Expression instantiate(Object oldInstance, Encoder out) {
Enum e = (Enum) oldInstance;
return new Expression(e, Enum.class, "valueOf", new Object[]{e.getClass(), e.name()});
return new Expression(e, Enum.class, "valueOf", new Object[]{e.getDeclaringClass(), e.name()});
}
}

View File

@ -30,15 +30,15 @@ import java.net.URI;
import java.net.URL;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.util.*;
import java.nio.file.*;
import java.nio.file.attribute.*;
import java.util.List;
import java.util.ArrayList;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.SecureRandom;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileAttribute;
import sun.security.action.GetPropertyAction;
/**
* An abstract representation of file and directory pathnames.
*
@ -787,7 +787,7 @@ public class File
* java.lang.SecurityManager#checkRead(java.lang.String)}</code>
* method denies read access to the file
*
* @see Attributes#readBasicFileAttributes
* @see java.nio.file.attribute.Attributes#readBasicFileAttributes
*/
public boolean isDirectory() {
SecurityManager security = System.getSecurityManager();
@ -813,7 +813,7 @@ public class File
* java.lang.SecurityManager#checkRead(java.lang.String)}</code>
* method denies read access to the file
*
* @see Attributes#readBasicFileAttributes
* @see java.nio.file.attribute.Attributes#readBasicFileAttributes
*/
public boolean isFile() {
SecurityManager security = System.getSecurityManager();
@ -863,7 +863,7 @@ public class File
* java.lang.SecurityManager#checkRead(java.lang.String)}</code>
* method denies read access to the file
*
* @see Attributes#readBasicFileAttributes
* @see java.nio.file.attribute.Attributes#readBasicFileAttributes
*/
public long lastModified() {
SecurityManager security = System.getSecurityManager();
@ -887,7 +887,7 @@ public class File
* java.lang.SecurityManager#checkRead(java.lang.String)}</code>
* method denies read access to the file
*
* @see Attributes#readBasicFileAttributes
* @see java.nio.file.attribute.Attributes#readBasicFileAttributes
*/
public long length() {
SecurityManager security = System.getSecurityManager();
@ -1369,9 +1369,10 @@ public class File
* Sets the owner's or everybody's write permission for this abstract
* pathname.
*
* <p> The {@link Attributes Attributes} class defines methods that operate
* on file attributes including file permissions. This may be used when
* finer manipulation of file permissions is required.
* <p> The {@link java.nio.file.attribute.Attributes Attributes} class
* defines methods that operate on file attributes including file
* permissions. This may be used when finer manipulation of file permissions
* is required.
*
* @param writable
* If <code>true</code>, sets the access permission to allow write
@ -1436,9 +1437,10 @@ public class File
* Sets the owner's or everybody's read permission for this abstract
* pathname.
*
* <p> The {@link Attributes Attributes} class defines methods that operate
* on file attributes including file permissions. This may be used when
* finer manipulation of file permissions is required.
* <p> The {@link java.nio.file.attribute.Attributes Attributes} class
* defines methods that operate on file attributes including file
* permissions. This may be used when finer manipulation of file permissions
* is required.
*
* @param readable
* If <code>true</code>, sets the access permission to allow read
@ -1509,9 +1511,10 @@ public class File
* Sets the owner's or everybody's execute permission for this abstract
* pathname.
*
* <p> The {@link Attributes Attributes} class defines methods that operate
* on file attributes including file permissions. This may be used when
* finer manipulation of file permissions is required.
* <p> The {@link java.nio.file.attribute.Attributes Attributes} class
* defines methods that operate on file attributes including file
* permissions. This may be used when finer manipulation of file permissions
* is required.
*
* @param executable
* If <code>true</code>, sets the access permission to allow execute
@ -1748,16 +1751,17 @@ public class File
return fs.getSpace(this, FileSystem.SPACE_USABLE);
}
/* -- Temporary files -- */
private static class TemporaryDirectory {
private TemporaryDirectory() { }
static class TempDirectory {
private TempDirectory() { }
static final String valueAsString = fs.normalize(
AccessController.doPrivileged(new GetPropertyAction("java.io.tmpdir")));
static final File valueAsFile =
new File(valueAsString, fs.prefixLength(valueAsString));
// temporary directory location
private static final File tmpdir = new File(fs.normalize(AccessController
.doPrivileged(new GetPropertyAction("java.io.tmpdir"))));
static File location() {
return tmpdir;
}
// file name generation
private static final SecureRandom random = new SecureRandom();
@ -1770,25 +1774,6 @@ public class File
}
return new File(dir, prefix + Long.toString(n) + suffix);
}
// default file permissions
static final FileAttribute<Set<PosixFilePermission>> defaultPosixFilePermissions =
PosixFilePermissions.asFileAttribute(EnumSet
.of(PosixFilePermission.OWNER_READ, PosixFilePermission.OWNER_WRITE));
static final boolean isPosix = isPosix();
static boolean isPosix() {
return AccessController.doPrivileged(
new PrivilegedAction<Boolean>() {
public Boolean run() {
try {
return FileSystems.getDefault().getPath(valueAsString)
.getFileStore().supportsFileAttributeView("posix");
} catch (IOException e) {
throw new IOError(e);
}
}
});
}
}
/**
@ -1869,12 +1854,11 @@ public class File
if (suffix == null)
suffix = ".tmp";
File tmpdir = (directory != null) ?
directory : TemporaryDirectory.valueAsFile;
File tmpdir = (directory != null) ? directory : TempDirectory.location();
SecurityManager sm = System.getSecurityManager();
File f;
do {
f = TemporaryDirectory.generateFile(prefix, suffix, tmpdir);
f = TempDirectory.generateFile(prefix, suffix, tmpdir);
if (sm != null) {
try {
sm.checkWrite(f.getPath());
@ -1891,11 +1875,17 @@ public class File
/**
* Creates an empty file in the default temporary-file directory, using
* the given prefix and suffix to generate its name. Invoking this method
* the given prefix and suffix to generate its name. Invoking this method
* is equivalent to invoking <code>{@link #createTempFile(java.lang.String,
* java.lang.String, java.io.File)
* createTempFile(prefix,&nbsp;suffix,&nbsp;null)}</code>.
*
* <p> The {@link #createTemporaryFile(String,String,FileAttribute[])} method
* provides an alternative method to create an empty file in the
* temporary-file directory. Files created by that method may have more
* restrictive access permissions to files created by this method and so
* may be more suited to security-sensitive applications.
*
* @param prefix The prefix string to be used in generating the file's
* name; must be at least three characters long
*
@ -1926,17 +1916,7 @@ public class File
/**
* Creates an empty file in the default temporary-file directory, using
* the given prefix and suffix to generate its name. This method is
* equivalent to invoking the {@link #createTempFile(String,String)
* createTempFile(prefix,&nbsp;suffix)} method with the addition that the
* resulting pathname may be requested to be deleted when the Java virtual
* machine terminates, and the initial file attributes to set atomically
* when creating the file may be specified.
*
* <p> When the value of the {@code deleteOnExit} method is {@code true}
* then the resulting file is requested to be deleted when the Java virtual
* machine terminates as if by invoking the {@link #deleteOnExit deleteOnExit}
* method.
* the given prefix and suffix to generate its name.
*
* <p> The {@code attrs} parameter is an optional array of {@link FileAttribute
* attributes} to set atomically when creating the file. Each attribute is
@ -1944,6 +1924,12 @@ public class File
* of the same name is included in the array then all but the last occurrence
* is ignored.
*
* <p> Where the {@code attrs} parameter does not specify <i>access
* permissions</i> to set atomically when creating the file, then the
* resulting file may have more restrictive access permissions than files
* created by the {@link #createTempFile(java.lang.String, java.lang.String)}
* method.
*
* @param prefix
* The prefix string to be used in generating the file's
* name; must be at least three characters long
@ -1951,9 +1937,6 @@ public class File
* The suffix string to be used in generating the file's
* name; may be {@code null}, in which case the suffix
* {@code ".tmp"} will be used
* @param deleteOnExit
* {@code true} if the file denoted by resulting pathname be
* deleted when the Java virtual machine terminates
* @param attrs
* An optional list of file attributes to set atomically when creating
* the file
@ -1961,7 +1944,7 @@ public class File
* @return An abstract pathname denoting a newly-created empty file
*
* @throws IllegalArgumentException
* If the <code>prefix</code> argument contains fewer than three
* If the {@code prefix} argument contains fewer than three
* characters
* @throws UnsupportedOperationException
* If the array contains an attribute that cannot be set atomically
@ -1971,74 +1954,19 @@ public class File
* @throws SecurityException
* If a security manager exists and its <code>{@link
* java.lang.SecurityManager#checkWrite(java.lang.String)}</code>
* method does not allow a file to be created. When the {@code
* deleteOnExit} parameter has the value {@code true} then the
* security manager's {@link
* java.lang.SecurityManager#checkDelete(java.lang.String)} is
* invoked to check delete access to the file.
* method does not allow a file to be created.
*
* @since 1.7
*/
public static File createTempFile(String prefix,
String suffix,
boolean deleteOnExit,
FileAttribute<?>... attrs)
public static File createTemporaryFile(String prefix,
String suffix,
FileAttribute<?>... attrs)
throws IOException
{
if (prefix.length() < 3)
throw new IllegalArgumentException("Prefix string too short");
suffix = (suffix == null) ? ".tmp" : suffix;
// special case POSIX environments so that 0600 is used as the file mode
if (TemporaryDirectory.isPosix) {
if (attrs.length == 0) {
// no attributes so use default permissions
attrs = new FileAttribute<?>[1];
attrs[0] = TemporaryDirectory.defaultPosixFilePermissions;
} else {
// check if posix permissions given; if not use default
boolean hasPermissions = false;
for (int i=0; i<attrs.length; i++) {
if (attrs[i].name().equals("posix:permissions")) {
hasPermissions = true;
break;
}
}
if (!hasPermissions) {
FileAttribute<?>[] copy = new FileAttribute<?>[attrs.length+1];
System.arraycopy(attrs, 0, copy, 0, attrs.length);
attrs = copy;
attrs[attrs.length-1] =
TemporaryDirectory.defaultPosixFilePermissions;
}
}
}
// use Path#createFile to create file
SecurityManager sm = System.getSecurityManager();
for (;;) {
File f = TemporaryDirectory
.generateFile(prefix, suffix, TemporaryDirectory.valueAsFile);
if (sm != null && deleteOnExit)
sm.checkDelete(f.getPath());
try {
f.toPath().createFile(attrs);
if (deleteOnExit)
DeleteOnExitHook.add(f.getPath());
return f;
} catch (InvalidPathException e) {
// don't reveal temporary directory location
if (sm != null)
throw new IllegalArgumentException("Invalid prefix or suffix");
throw e;
} catch (SecurityException e) {
// don't reveal temporary directory location
if (sm != null)
throw new SecurityException("Unable to create temporary file");
throw e;
} catch (FileAlreadyExistsException e) {
// ignore
}
}
return TempFileHelper.createFile(prefix, suffix, attrs);
}
/* -- Basic infrastructure -- */
@ -2153,40 +2081,45 @@ public class File
/**
* Returns a {@link Path java.nio.file.Path} object constructed from the
* this abstract path. The first invocation of this method works as if
* invoking it were equivalent to evaluating the expression:
* this abstract path. The resulting {@code Path} is associated with the
* {@link java.nio.file.FileSystems#getDefault default-filesystem}.
*
* <p> The first invocation of this method works as if invoking it were
* equivalent to evaluating the expression:
* <blockquote><pre>
* {@link FileSystems#getDefault FileSystems.getDefault}().{@link FileSystem#getPath getPath}(this.{@link #getPath getPath}());
* {@link java.nio.file.FileSystems#getDefault FileSystems.getDefault}().{@link
* java.nio.file.FileSystem#getPath getPath}(this.{@link #getPath getPath}());
* </pre></blockquote>
* Subsequent invocations of this method return the same {@code Path}.
*
* <p> If this abstract pathname is the empty abstract pathname then this
* method returns a {@code Path} that may be used to access to the current
* method returns a {@code Path} that may be used to access the current
* user directory.
*
* @return A {@code Path} constructed from this abstract path. The resulting
* {@code Path} is associated with the {@link FileSystems#getDefault
* default-filesystem}.
* @return a {@code Path} constructed from this abstract path
*
* @throws InvalidPathException
* If a {@code Path} object cannot be constructed from the abstract
* if a {@code Path} object cannot be constructed from the abstract
* path (see {@link java.nio.file.FileSystem#getPath FileSystem.getPath})
*
* @since 1.7
*/
public Path toPath() {
if (filePath == null) {
Path result = filePath;
if (result == null) {
synchronized (this) {
if (filePath == null) {
result = filePath;
if (result == null) {
if (path.length() == 0) {
// assume default file system treats "." as current directory
filePath = Paths.get(".");
result = Paths.get(".");
} else {
filePath = Paths.get(path);
result = Paths.get(path);
}
filePath = result;
}
}
}
return filePath;
return result;
}
}

View File

@ -0,0 +1,139 @@
/*
* Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package java.io;
import java.nio.file.FileSystems;
import java.nio.file.InvalidPathException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import static java.nio.file.attribute.PosixFilePermission.*;
import java.util.Set;
import java.util.EnumSet;
/**
* Helper class to support creation of temporary files and directory with
* initial attributes.
*/
class TempFileHelper {
private TempFileHelper() { }
// default file and directory permissions (lazily initialized)
private static class PermissionsHolder {
static final boolean hasPosixPermissions = FileSystems.getDefault()
.supportedFileAttributeViews().contains("posix");
static final FileAttribute<Set<PosixFilePermission>> filePermissions =
PosixFilePermissions.asFileAttribute(EnumSet.of(OWNER_READ, OWNER_WRITE));
static final FileAttribute<Set<PosixFilePermission>> directoryPermissions =
PosixFilePermissions.asFileAttribute(EnumSet
.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE));
}
/**
* Creates a file or directory in the temporary directory.
*/
private static File create(String prefix,
String suffix,
FileAttribute[] attrs,
boolean isDirectory)
throws IOException
{
// in POSIX environments use default file and directory permissions
// if initial permissions not given by caller.
if (PermissionsHolder.hasPosixPermissions) {
if (attrs.length == 0) {
// no attributes so use default permissions
attrs = new FileAttribute<?>[1];
attrs[0] = (isDirectory) ? PermissionsHolder.directoryPermissions :
PermissionsHolder.filePermissions;
} else {
// check if posix permissions given; if not use default
boolean hasPermissions = false;
for (int i=0; i<attrs.length; i++) {
if (attrs[i].name().equals("posix:permissions")) {
hasPermissions = true;
break;
}
}
if (!hasPermissions) {
FileAttribute<?>[] copy = new FileAttribute<?>[attrs.length+1];
System.arraycopy(attrs, 0, copy, 0, attrs.length);
attrs = copy;
attrs[attrs.length-1] = (isDirectory) ?
PermissionsHolder.directoryPermissions :
PermissionsHolder.filePermissions;
}
}
}
// loop generating random names until file or directory can be created
SecurityManager sm = System.getSecurityManager();
for (;;) {
File tmpdir = File.TempDirectory.location();
File f = File.TempDirectory.generateFile(prefix, suffix, tmpdir);
try {
if (isDirectory) {
f.toPath().createDirectory(attrs);
} else {
f.toPath().createFile(attrs);
}
return f;
} catch (InvalidPathException e) {
// don't reveal temporary directory location
if (sm != null)
throw new IllegalArgumentException("Invalid prefix or suffix");
throw e;
} catch (SecurityException e) {
// don't reveal temporary directory location
if (sm != null)
throw new SecurityException("Unable to create temporary file");
throw e;
} catch (FileAlreadyExistsException e) {
// ignore
}
}
}
/**
* Creates a file in the temporary directory.
*/
static File createFile(String prefix, String suffix, FileAttribute[] attrs)
throws IOException
{
return create(prefix, suffix, attrs, false);
}
/**
* Creates a directory in the temporary directory.
*/
static File createDirectory(String prefix, FileAttribute[] attrs)
throws IOException
{
return create(prefix, "", attrs, true);
}
}

View File

@ -58,6 +58,7 @@ import sun.misc.URLClassPath;
import sun.misc.VM;
import sun.reflect.Reflection;
import sun.security.util.SecurityConstants;
import sun.jkernel.DownloadManager;
/**
* A class loader is an object that is responsible for loading classes. The
@ -1280,6 +1281,21 @@ public abstract class ClassLoader {
* Find resources from the VM's built-in classloader.
*/
private static URL getBootstrapResource(String name) {
try {
// If this is a known JRE resource, ensure that its bundle is
// downloaded. If it isn't known, we just ignore the download
// failure and check to see if we can find the resource anyway
// (which is possible if the boot class path has been modified).
if (sun.misc.VM.isBootedKernelVM()) {
sun.jkernel.DownloadManager.getBootClassPathEntryForResource(
name);
}
} catch (NoClassDefFoundError e) {
// This happens while Java itself is being compiled; DownloadManager
// isn't accessible when this code is first invoked. It isn't an
// issue, as if we can't find DownloadManager, we can safely assume
// that additional code is not available for download.
}
URLClassPath ucp = getBootstrapClassPath();
Resource res = ucp.getResource(name);
return res != null ? res.getURL() : null;
@ -1305,13 +1321,9 @@ public abstract class ClassLoader {
// Returns the URLClassPath that is used for finding system resources.
static URLClassPath getBootstrapClassPath() {
if (bootstrapClassPath == null) {
bootstrapClassPath = sun.misc.Launcher.getBootstrapClassPath();
}
return bootstrapClassPath;
return sun.misc.Launcher.getBootstrapClassPath();
}
private static URLClassPath bootstrapClassPath;
/**
* Returns an input stream for reading the specified resource.
@ -1800,6 +1812,24 @@ public abstract class ClassLoader {
// Invoked in the java.lang.Runtime class to implement load and loadLibrary.
static void loadLibrary(Class fromClass, String name,
boolean isAbsolute) {
try {
if (VM.isBootedKernelVM() && !DownloadManager.isJREComplete() &&
!DownloadManager.isCurrentThreadDownloading()) {
DownloadManager.downloadFile("bin/" +
System.mapLibraryName(name));
// it doesn't matter if the downloadFile call returns false --
// it probably just means that this is a user library, as
// opposed to a JRE library
}
} catch (IOException e) {
throw new UnsatisfiedLinkError("Error downloading library " +
name + ": " + e);
} catch (NoClassDefFoundError e) {
// This happens while Java itself is being compiled; DownloadManager
// isn't accessible when this code is first invoked. It isn't an
// issue, as if we can't find DownloadManager, we can safely assume
// that additional code is not available for download.
}
ClassLoader loader =
(fromClass == null) ? null : fromClass.getClassLoader();
if (sys_paths == null) {

View File

@ -1106,12 +1106,22 @@ public final class System {
initProperties(props);
sun.misc.Version.init();
// Workaround until DownloadManager initialization is revisited.
// Make JavaLangAccess available early enough for internal
// Shutdown hooks to be registered
setJavaLangAccess();
// Gets and removes system properties that configure the Integer
// cache used to support the object identity semantics of autoboxing.
// At this time, the size of the cache may be controlled by the
// -XX:AutoBoxCacheMax=<size> option.
// vm option -XX:AutoBoxCacheMax=<size>.
Integer.getAndRemoveCacheProperties();
// Load the zip library now in order to keep java.util.zip.ZipFile
// from trying to use itself to load this library later.
loadLibrary("zip");
FileInputStream fdIn = new FileInputStream(FileDescriptor.in);
FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
FileOutputStream fdErr = new FileOutputStream(FileDescriptor.err);
@ -1119,10 +1129,6 @@ public final class System {
setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true));
setErr0(new PrintStream(new BufferedOutputStream(fdErr, 128), true));
// Load the zip library now in order to keep java.util.zip.ZipFile
// from trying to use itself to load this library later.
loadLibrary("zip");
// Setup Java signal handlers for HUP, TERM, and INT (where available).
Terminator.setup();
@ -1152,7 +1158,9 @@ public final class System {
// way as other threads; we must do it ourselves here.
Thread current = Thread.currentThread();
current.getThreadGroup().add(current);
}
private static void setJavaLangAccess() {
// Allow privileged classes outside of java.lang
sun.misc.SharedSecrets.setJavaLangAccess(new sun.misc.JavaLangAccess(){
public sun.reflect.ConstantPool getConstantPool(Class klass) {

View File

@ -1,5 +1,5 @@
/*
* Copyright 2003-2004 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003-2009 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -40,6 +40,12 @@ public enum ElementType {
/** Class, interface (including annotation type), or enum declaration */
TYPE,
/** Uses of a type */
TYPE_USE,
/** type parameters */
TYPE_PARAMETER,
/** Field declaration (includes enum constants) */
FIELD,

View File

@ -34,7 +34,6 @@ import java.util.logging.LoggingMXBean;
import java.util.logging.LogManager;
import java.nio.BufferPoolMXBean;
import javax.management.MBeanServerConnection;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import com.sun.management.HotSpotDiagnosticMXBean;
@ -198,10 +197,7 @@ enum PlatformComponent {
"java.nio", "BufferPool", keyProperties("name"),
new MXBeanFetcher<BufferPoolMXBean>() {
public List<BufferPoolMXBean> getMXBeans() {
List<BufferPoolMXBean> pools = new ArrayList<BufferPoolMXBean>(2);
pools.add( sun.misc.SharedSecrets.getJavaNioAccess().getDirectBufferPoolMXBean() );
pools.add( sun.nio.ch.FileChannelImpl.getMappedBufferPoolMXBean() );
return pools;
return ManagementFactoryHelper.getBufferPoolMXBeans();
}
}),

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