mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 11:34:38 +02:00
Merge
This commit is contained in:
commit
74c57a988e
682 changed files with 158270 additions and 6492 deletions
2
.hgtags
2
.hgtags
|
@ -36,3 +36,5 @@ d60a9ce3c3eabf28f5d50ae839d18be04a551bc2 jdk7-b58
|
||||||
c33e7d38c9210741dbc285507403a4b20bd802a0 jdk7-b59
|
c33e7d38c9210741dbc285507403a4b20bd802a0 jdk7-b59
|
||||||
5a10e4d0b14d7beac53a7b2213ae6864afe1fd3e jdk7-b60
|
5a10e4d0b14d7beac53a7b2213ae6864afe1fd3e jdk7-b60
|
||||||
dbb955b1ee59b876dd1f133952b557b48b1d7732 jdk7-b61
|
dbb955b1ee59b876dd1f133952b557b48b1d7732 jdk7-b61
|
||||||
|
6107cbff3130c747d243c25a7874cd59db5744a8 jdk7-b62
|
||||||
|
dfd8506f74c3731bb169ce93c72612d78ee0413b jdk7-b63
|
||||||
|
|
|
@ -36,3 +36,5 @@ ffd09e767dfa6d21466183a400f72cf62d53297f jdk7-b57
|
||||||
030142474602b4a067662fffc0c8e541de5a78df jdk7-b59
|
030142474602b4a067662fffc0c8e541de5a78df jdk7-b59
|
||||||
39565502682c7085369bd09e51640919dc741097 jdk7-b60
|
39565502682c7085369bd09e51640919dc741097 jdk7-b60
|
||||||
472c21584cfd7e9c0229ad6a100366a5c03d2976 jdk7-b61
|
472c21584cfd7e9c0229ad6a100366a5c03d2976 jdk7-b61
|
||||||
|
c7ed15ab92ce36a09d264a5e34025884b2d7607f jdk7-b62
|
||||||
|
57f7e028c7ad1806500ae89eb3f4cd9a51b10e18 jdk7-b63
|
||||||
|
|
|
@ -36,3 +36,5 @@ bec82237d694f9802b820fa11bbb4f7fa9bf8e77 jdk7-b52
|
||||||
7e6b2b55c00cc523b468272353ada3979adbbf16 jdk7-b59
|
7e6b2b55c00cc523b468272353ada3979adbbf16 jdk7-b59
|
||||||
f1e1cccbd13aa96d2d8bd872782ff764010bc22c jdk7-b60
|
f1e1cccbd13aa96d2d8bd872782ff764010bc22c jdk7-b60
|
||||||
e906b16a12a9a63b615898afa5d9673cbd1c5ab8 jdk7-b61
|
e906b16a12a9a63b615898afa5d9673cbd1c5ab8 jdk7-b61
|
||||||
|
65b66117dbd70a493e9644aeb4033cf95a4e3c99 jdk7-b62
|
||||||
|
d20e45cd539f20405ff843652069cfd7550c5ab3 jdk7-b63
|
||||||
|
|
|
@ -365,10 +365,10 @@ ifndef COPYRIGHT_YEAR
|
||||||
COPYRIGHT_YEAR = 2007
|
COPYRIGHT_YEAR = 2007
|
||||||
endif
|
endif
|
||||||
|
|
||||||
RC_FLAGS += -d "J2SE_BUILD_ID=$(FULL_VERSION)" \
|
RC_FLAGS += -d "JDK_BUILD_ID=$(FULL_VERSION)" \
|
||||||
-d "J2SE_COMPANY=$(COMPANY_NAME)" \
|
-d "JDK_COMPANY=$(COMPANY_NAME)" \
|
||||||
-d "J2SE_COMPONENT=$(PRODUCT_NAME) Platform SE binary" \
|
-d "JDK_COMPONENT=$(PRODUCT_NAME) Platform SE binary" \
|
||||||
-d "J2SE_VER=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(J2SE_UPDATE_VER).$(COOKED_BUILD_NUMBER)" \
|
-d "JDK_VER=$(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VER).$(COOKED_BUILD_NUMBER)" \
|
||||||
-d "J2SE_COPYRIGHT=Copyright \xA9 $(COPYRIGHT_YEAR)" \
|
-d "JDK_COPYRIGHT=Copyright \xA9 $(COPYRIGHT_YEAR)" \
|
||||||
-d "J2SE_NAME=$(PRODUCT_NAME) Platform SE $(JDK_MINOR_VERSION) $(J2SE_UPDATE_META_TAG)" \
|
-d "JDK_NAME=$(PRODUCT_NAME) Platform SE $(JDK_MINOR_VERSION) $(JDK_UPDATE_META_TAG)" \
|
||||||
-d "J2SE_FVER=$(JDK_VERSION)"
|
-d "JDK_FVER=$(JDK_VERSION)"
|
||||||
|
|
|
@ -158,9 +158,9 @@ ifndef LOCAL_RESOURCE_FILE
|
||||||
endif
|
endif
|
||||||
@$(ECHO) Created $@
|
@$(ECHO) Created $@
|
||||||
|
|
||||||
RC_FLAGS += /D "J2SE_FNAME=$(LIBRARY).dll" \
|
RC_FLAGS += /D "JDK_FNAME=$(LIBRARY).dll" \
|
||||||
/D "J2SE_INTERNAL_NAME=$(LIBRARY)" \
|
/D "JDK_INTERNAL_NAME=$(LIBRARY)" \
|
||||||
/D "J2SE_FTYPE=0x2L"
|
/D "JDK_FTYPE=0x2L"
|
||||||
|
|
||||||
$(OBJDIR)/$(LIBRARY).res: $(VERSIONINFO_RESOURCE)
|
$(OBJDIR)/$(LIBRARY).res: $(VERSIONINFO_RESOURCE)
|
||||||
ifndef LOCAL_RESOURCE_FILE
|
ifndef LOCAL_RESOURCE_FILE
|
||||||
|
|
|
@ -32,6 +32,12 @@ PACKAGE = com.sun.tools.corba.se.idl
|
||||||
PRODUCT = sun
|
PRODUCT = sun
|
||||||
include $(BUILDDIR)/common/Defs.gmk
|
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
|
# Files
|
||||||
#
|
#
|
||||||
|
|
|
@ -37,8 +37,8 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION J2SE_FVER
|
FILEVERSION JDK_FVER
|
||||||
PRODUCTVERSION J2SE_FVER
|
PRODUCTVERSION JDK_FVER
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -48,22 +48,22 @@ VS_VERSION_INFO VERSIONINFO
|
||||||
// FILEOS 0x4 is Win32, 0x40004 is Win32 NT only
|
// FILEOS 0x4 is Win32, 0x40004 is Win32 NT only
|
||||||
FILEOS 0x4L
|
FILEOS 0x4L
|
||||||
// FILETYPE should be 0x1 for .exe and 0x2 for .dll
|
// FILETYPE should be 0x1 for .exe and 0x2 for .dll
|
||||||
FILETYPE J2SE_FTYPE
|
FILETYPE JDK_FTYPE
|
||||||
FILESUBTYPE 0x0L
|
FILESUBTYPE 0x0L
|
||||||
BEGIN
|
BEGIN
|
||||||
BLOCK "StringFileInfo"
|
BLOCK "StringFileInfo"
|
||||||
BEGIN
|
BEGIN
|
||||||
BLOCK "000004b0"
|
BLOCK "000004b0"
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", XSTR(J2SE_COMPANY) "\0"
|
VALUE "CompanyName", XSTR(JDK_COMPANY) "\0"
|
||||||
VALUE "FileDescription", XSTR(J2SE_COMPONENT) "\0"
|
VALUE "FileDescription", XSTR(JDK_COMPONENT) "\0"
|
||||||
VALUE "FileVersion", XSTR(J2SE_VER) "\0"
|
VALUE "FileVersion", XSTR(JDK_VER) "\0"
|
||||||
VALUE "Full Version", XSTR(J2SE_BUILD_ID) "\0"
|
VALUE "Full Version", XSTR(JDK_BUILD_ID) "\0"
|
||||||
VALUE "InternalName", XSTR(J2SE_INTERNAL_NAME) "\0"
|
VALUE "InternalName", XSTR(JDK_INTERNAL_NAME) "\0"
|
||||||
VALUE "LegalCopyright", XSTR(J2SE_COPYRIGHT) "\0"
|
VALUE "LegalCopyright", XSTR(JDK_COPYRIGHT) "\0"
|
||||||
VALUE "OriginalFilename", XSTR(J2SE_FNAME) "\0"
|
VALUE "OriginalFilename", XSTR(JDK_FNAME) "\0"
|
||||||
VALUE "ProductName", XSTR(J2SE_NAME) "\0"
|
VALUE "ProductName", XSTR(JDK_NAME) "\0"
|
||||||
VALUE "ProductVersion", XSTR(J2SE_VER) "\0"
|
VALUE "ProductVersion", XSTR(JDK_VER) "\0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
@ -36,3 +36,5 @@ f4cbf78110c726919f46b59a3b054c54c7e889b4 jdk7-b57
|
||||||
c55be0c7bd32c016c52218eb4c8b5da8a75450b5 jdk7-b59
|
c55be0c7bd32c016c52218eb4c8b5da8a75450b5 jdk7-b59
|
||||||
a77eddcd510c3972717c025cfcef9a60bfa4ecac jdk7-b60
|
a77eddcd510c3972717c025cfcef9a60bfa4ecac jdk7-b60
|
||||||
27b728fd1281ab62e9d7e4424f8bbb6ca438d803 jdk7-b61
|
27b728fd1281ab62e9d7e4424f8bbb6ca438d803 jdk7-b61
|
||||||
|
a88386380bdaaa5ab4ffbedf22c57bac5dbec034 jdk7-b62
|
||||||
|
32c83fb84370a35344676991a48440378e6b6c8a jdk7-b63
|
||||||
|
|
|
@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2009
|
||||||
|
|
||||||
HS_MAJOR_VER=16
|
HS_MAJOR_VER=16
|
||||||
HS_MINOR_VER=0
|
HS_MINOR_VER=0
|
||||||
HS_BUILD_NUMBER=04
|
HS_BUILD_NUMBER=05
|
||||||
|
|
||||||
JDK_MAJOR_VER=1
|
JDK_MAJOR_VER=1
|
||||||
JDK_MINOR_VER=7
|
JDK_MINOR_VER=7
|
||||||
|
|
|
@ -1157,6 +1157,13 @@ void ConcurrentMark::checkpointRootsFinal(bool clear_all_soft_refs) {
|
||||||
} else {
|
} else {
|
||||||
// We're done with marking.
|
// We're done with marking.
|
||||||
JavaThread::satb_mark_queue_set().set_active_all_threads(false);
|
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
|
#if VERIFY_OBJS_PROCESSED
|
||||||
|
@ -1747,12 +1754,12 @@ void ConcurrentMark::cleanup() {
|
||||||
// races with it goes around and waits for completeCleanup to finish.
|
// races with it goes around and waits for completeCleanup to finish.
|
||||||
g1h->increment_total_collections();
|
g1h->increment_total_collections();
|
||||||
|
|
||||||
#ifndef PRODUCT
|
|
||||||
if (VerifyDuringGC) {
|
if (VerifyDuringGC) {
|
||||||
G1CollectedHeap::heap()->prepare_for_verify();
|
g1h->prepare_for_verify();
|
||||||
G1CollectedHeap::heap()->verify(true,false);
|
g1h->verify(/* allow_dirty */ true,
|
||||||
|
/* silent */ false,
|
||||||
|
/* use_prev_marking */ true);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConcurrentMark::completeCleanup() {
|
void ConcurrentMark::completeCleanup() {
|
||||||
|
|
|
@ -1535,6 +1535,15 @@ jint G1CollectedHeap::initialize() {
|
||||||
guarantee(_hrs != NULL, "Couldn't allocate HeapRegionSeq");
|
guarantee(_hrs != NULL, "Couldn't allocate HeapRegionSeq");
|
||||||
guarantee(_cur_alloc_region == NULL, "from constructor");
|
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,
|
_bot_shared = new G1BlockOffsetSharedArray(_reserved,
|
||||||
heap_word_size(init_byte_size));
|
heap_word_size(init_byte_size));
|
||||||
|
|
||||||
|
@ -2127,17 +2136,22 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
class VerifyObjsInRegionClosure: public ObjectClosure {
|
class VerifyObjsInRegionClosure: public ObjectClosure {
|
||||||
|
private:
|
||||||
G1CollectedHeap* _g1h;
|
G1CollectedHeap* _g1h;
|
||||||
size_t _live_bytes;
|
size_t _live_bytes;
|
||||||
HeapRegion *_hr;
|
HeapRegion *_hr;
|
||||||
|
bool _use_prev_marking;
|
||||||
public:
|
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();
|
_g1h = G1CollectedHeap::heap();
|
||||||
}
|
}
|
||||||
void do_object(oop o) {
|
void do_object(oop o) {
|
||||||
VerifyLivenessOopClosure isLive(_g1h);
|
VerifyLivenessOopClosure isLive(_g1h);
|
||||||
assert(o != NULL, "Huh?");
|
assert(o != NULL, "Huh?");
|
||||||
if (!_g1h->is_obj_dead(o)) {
|
if (!_g1h->is_obj_dead_cond(o, _use_prev_marking)) {
|
||||||
o->oop_iterate(&isLive);
|
o->oop_iterate(&isLive);
|
||||||
if (!_hr->obj_allocated_since_prev_marking(o))
|
if (!_hr->obj_allocated_since_prev_marking(o))
|
||||||
_live_bytes += (o->size() * HeapWordSize);
|
_live_bytes += (o->size() * HeapWordSize);
|
||||||
|
@ -2176,17 +2190,22 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
class VerifyRegionClosure: public HeapRegionClosure {
|
class VerifyRegionClosure: public HeapRegionClosure {
|
||||||
public:
|
private:
|
||||||
bool _allow_dirty;
|
bool _allow_dirty;
|
||||||
bool _par;
|
bool _par;
|
||||||
VerifyRegionClosure(bool allow_dirty, bool par = false)
|
bool _use_prev_marking;
|
||||||
: _allow_dirty(allow_dirty), _par(par) {}
|
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) {
|
bool doHeapRegion(HeapRegion* r) {
|
||||||
guarantee(_par || r->claim_value() == HeapRegion::InitialClaimValue,
|
guarantee(_par || r->claim_value() == HeapRegion::InitialClaimValue,
|
||||||
"Should be unclaimed at verify points.");
|
"Should be unclaimed at verify points.");
|
||||||
if (!r->continuesHumongous()) {
|
if (!r->continuesHumongous()) {
|
||||||
VerifyObjsInRegionClosure not_dead_yet_cl(r);
|
VerifyObjsInRegionClosure not_dead_yet_cl(r, _use_prev_marking);
|
||||||
r->verify(_allow_dirty);
|
r->verify(_allow_dirty, _use_prev_marking);
|
||||||
r->object_iterate(¬_dead_yet_cl);
|
r->object_iterate(¬_dead_yet_cl);
|
||||||
guarantee(r->max_live_bytes() >= not_dead_yet_cl.live_bytes(),
|
guarantee(r->max_live_bytes() >= not_dead_yet_cl.live_bytes(),
|
||||||
"More live objects than counted in last complete marking.");
|
"More live objects than counted in last complete marking.");
|
||||||
|
@ -2199,10 +2218,13 @@ class VerifyRootsClosure: public OopsInGenClosure {
|
||||||
private:
|
private:
|
||||||
G1CollectedHeap* _g1h;
|
G1CollectedHeap* _g1h;
|
||||||
bool _failures;
|
bool _failures;
|
||||||
|
bool _use_prev_marking;
|
||||||
public:
|
public:
|
||||||
VerifyRootsClosure() :
|
// use_prev_marking == true -> use "prev" marking information,
|
||||||
_g1h(G1CollectedHeap::heap()), _failures(false) { }
|
// 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; }
|
bool failures() { return _failures; }
|
||||||
|
|
||||||
|
@ -2213,7 +2235,7 @@ public:
|
||||||
void do_oop(oop* p) {
|
void do_oop(oop* p) {
|
||||||
oop obj = *p;
|
oop obj = *p;
|
||||||
if (obj != NULL) {
|
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" "
|
gclog_or_tty->print_cr("Root location "PTR_FORMAT" "
|
||||||
"points to dead obj "PTR_FORMAT, p, (void*) obj);
|
"points to dead obj "PTR_FORMAT, p, (void*) obj);
|
||||||
obj->print_on(gclog_or_tty);
|
obj->print_on(gclog_or_tty);
|
||||||
|
@ -2229,24 +2251,35 @@ class G1ParVerifyTask: public AbstractGangTask {
|
||||||
private:
|
private:
|
||||||
G1CollectedHeap* _g1h;
|
G1CollectedHeap* _g1h;
|
||||||
bool _allow_dirty;
|
bool _allow_dirty;
|
||||||
|
bool _use_prev_marking;
|
||||||
|
|
||||||
public:
|
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"),
|
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) {
|
void work(int worker_i) {
|
||||||
HandleMark hm;
|
HandleMark hm;
|
||||||
VerifyRegionClosure blk(_allow_dirty, true);
|
VerifyRegionClosure blk(_allow_dirty, true, _use_prev_marking);
|
||||||
_g1h->heap_region_par_iterate_chunked(&blk, worker_i,
|
_g1h->heap_region_par_iterate_chunked(&blk, worker_i,
|
||||||
HeapRegion::ParVerifyClaimValue);
|
HeapRegion::ParVerifyClaimValue);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void G1CollectedHeap::verify(bool allow_dirty, bool silent) {
|
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 (SafepointSynchronize::is_at_safepoint() || ! UseTLAB) {
|
||||||
if (!silent) { gclog_or_tty->print("roots "); }
|
if (!silent) { gclog_or_tty->print("roots "); }
|
||||||
VerifyRootsClosure rootsCl;
|
VerifyRootsClosure rootsCl(use_prev_marking);
|
||||||
process_strong_roots(false,
|
process_strong_roots(false,
|
||||||
SharedHeap::SO_AllClasses,
|
SharedHeap::SO_AllClasses,
|
||||||
&rootsCl,
|
&rootsCl,
|
||||||
|
@ -2257,7 +2290,7 @@ void G1CollectedHeap::verify(bool allow_dirty, bool silent) {
|
||||||
assert(check_heap_region_claim_values(HeapRegion::InitialClaimValue),
|
assert(check_heap_region_claim_values(HeapRegion::InitialClaimValue),
|
||||||
"sanity check");
|
"sanity check");
|
||||||
|
|
||||||
G1ParVerifyTask task(this, allow_dirty);
|
G1ParVerifyTask task(this, allow_dirty, use_prev_marking);
|
||||||
int n_workers = workers()->total_workers();
|
int n_workers = workers()->total_workers();
|
||||||
set_par_threads(n_workers);
|
set_par_threads(n_workers);
|
||||||
workers()->run_task(&task);
|
workers()->run_task(&task);
|
||||||
|
@ -2271,7 +2304,7 @@ void G1CollectedHeap::verify(bool allow_dirty, bool silent) {
|
||||||
assert(check_heap_region_claim_values(HeapRegion::InitialClaimValue),
|
assert(check_heap_region_claim_values(HeapRegion::InitialClaimValue),
|
||||||
"sanity check");
|
"sanity check");
|
||||||
} else {
|
} else {
|
||||||
VerifyRegionClosure blk(allow_dirty);
|
VerifyRegionClosure blk(allow_dirty, false, use_prev_marking);
|
||||||
_hrs->iterate(&blk);
|
_hrs->iterate(&blk);
|
||||||
}
|
}
|
||||||
if (!silent) gclog_or_tty->print("remset ");
|
if (!silent) gclog_or_tty->print("remset ");
|
||||||
|
|
|
@ -59,6 +59,9 @@ class ConcurrentZFThread;
|
||||||
typedef GenericTaskQueue<oop*> RefToScanQueue;
|
typedef GenericTaskQueue<oop*> RefToScanQueue;
|
||||||
typedef GenericTaskQueueSet<oop*> RefToScanQueueSet;
|
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 {
|
enum G1GCThreadGroups {
|
||||||
G1CRGroup = 0,
|
G1CRGroup = 0,
|
||||||
G1ZFGroup = 1,
|
G1ZFGroup = 1,
|
||||||
|
@ -1046,6 +1049,17 @@ public:
|
||||||
virtual void prepare_for_verify();
|
virtual void prepare_for_verify();
|
||||||
|
|
||||||
// Perform verification.
|
// 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 verify(bool allow_dirty, bool silent);
|
||||||
virtual void print() const;
|
virtual void print() const;
|
||||||
virtual void print_on(outputStream* st) const;
|
virtual void print_on(outputStream* st) const;
|
||||||
|
@ -1122,6 +1136,18 @@ public:
|
||||||
bool isMarkedPrev(oop obj) const;
|
bool isMarkedPrev(oop obj) const;
|
||||||
bool isMarkedNext(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
|
// Determine if an object is dead, given the object and also
|
||||||
// the region to which the object belongs. An object is dead
|
// the region to which the object belongs. An object is dead
|
||||||
// iff a) it was not allocated since the last mark and b) it
|
// 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 in permanent gen it isn't dead.
|
||||||
// Added if it is NULL it isn't dead.
|
// Added if it is NULL it isn't dead.
|
||||||
|
|
||||||
bool is_obj_dead(oop obj) {
|
// use_prev_marking == true -> use "prev" marking information,
|
||||||
HeapRegion* hr = heap_region_containing(obj);
|
// 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 (hr == NULL) {
|
||||||
if (Universe::heap()->is_in_permanent(obj))
|
if (Universe::heap()->is_in_permanent(obj))
|
||||||
return false;
|
return false;
|
||||||
|
@ -1170,8 +1207,8 @@ public:
|
||||||
else return is_obj_dead(obj, hr);
|
else return is_obj_dead(obj, hr);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_obj_ill(oop obj) {
|
bool is_obj_ill(const oop obj) {
|
||||||
HeapRegion* hr = heap_region_containing(obj);
|
const HeapRegion* hr = heap_region_containing(obj);
|
||||||
if (hr == NULL) {
|
if (hr == NULL) {
|
||||||
if (Universe::heap()->is_in_permanent(obj))
|
if (Universe::heap()->is_in_permanent(obj))
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -40,15 +40,19 @@ FilterOutOfRegionClosure::FilterOutOfRegionClosure(HeapRegion* r,
|
||||||
{}
|
{}
|
||||||
|
|
||||||
class VerifyLiveClosure: public OopClosure {
|
class VerifyLiveClosure: public OopClosure {
|
||||||
|
private:
|
||||||
G1CollectedHeap* _g1h;
|
G1CollectedHeap* _g1h;
|
||||||
CardTableModRefBS* _bs;
|
CardTableModRefBS* _bs;
|
||||||
oop _containing_obj;
|
oop _containing_obj;
|
||||||
bool _failures;
|
bool _failures;
|
||||||
int _n_failures;
|
int _n_failures;
|
||||||
|
bool _use_prev_marking;
|
||||||
public:
|
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),
|
_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();
|
BarrierSet* bs = _g1h->barrier_set();
|
||||||
if (bs->is_a(BarrierSet::CardTableModRef))
|
if (bs->is_a(BarrierSet::CardTableModRef))
|
||||||
|
@ -68,11 +72,13 @@ public:
|
||||||
|
|
||||||
void do_oop(oop* p) {
|
void do_oop(oop* p) {
|
||||||
assert(_containing_obj != NULL, "Precondition");
|
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;
|
oop obj = *p;
|
||||||
if (obj != NULL) {
|
if (obj != NULL) {
|
||||||
bool failed = false;
|
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) {
|
if (!_failures) {
|
||||||
gclog_or_tty->print_cr("");
|
gclog_or_tty->print_cr("");
|
||||||
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);
|
G1OffsetTableContigSpace::print_on(st);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HeapRegion::verify(bool allow_dirty) const {
|
||||||
|
verify(allow_dirty, /* use_prev_marking */ true);
|
||||||
|
}
|
||||||
|
|
||||||
#define OBJ_SAMPLE_INTERVAL 0
|
#define OBJ_SAMPLE_INTERVAL 0
|
||||||
#define BLOCK_SAMPLE_INTERVAL 100
|
#define BLOCK_SAMPLE_INTERVAL 100
|
||||||
|
|
||||||
// This really ought to be commoned up into OffsetTableContigSpace somehow.
|
// This really ought to be commoned up into OffsetTableContigSpace somehow.
|
||||||
// We would need a mechanism to make that code skip dead objects.
|
// 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();
|
G1CollectedHeap* g1 = G1CollectedHeap::heap();
|
||||||
HeapWord* p = bottom();
|
HeapWord* p = bottom();
|
||||||
HeapWord* prev_p = NULL;
|
HeapWord* prev_p = NULL;
|
||||||
int objs = 0;
|
int objs = 0;
|
||||||
int blocks = 0;
|
int blocks = 0;
|
||||||
VerifyLiveClosure vl_cl(g1);
|
VerifyLiveClosure vl_cl(g1, use_prev_marking);
|
||||||
while (p < top()) {
|
while (p < top()) {
|
||||||
size_t size = oop(p)->size();
|
size_t size = oop(p)->size();
|
||||||
if (blocks == BLOCK_SAMPLE_INTERVAL) {
|
if (blocks == BLOCK_SAMPLE_INTERVAL) {
|
||||||
|
@ -671,7 +681,7 @@ void HeapRegion::verify(bool allow_dirty) const {
|
||||||
}
|
}
|
||||||
if (objs == OBJ_SAMPLE_INTERVAL) {
|
if (objs == OBJ_SAMPLE_INTERVAL) {
|
||||||
oop obj = oop(p);
|
oop obj = oop(p);
|
||||||
if (!g1->is_obj_dead(obj, this)) {
|
if (!g1->is_obj_dead_cond(obj, this, use_prev_marking)) {
|
||||||
obj->verify();
|
obj->verify();
|
||||||
vl_cl.set_containing_obj(obj);
|
vl_cl.set_containing_obj(obj);
|
||||||
obj->oop_iterate(&vl_cl);
|
obj->oop_iterate(&vl_cl);
|
||||||
|
|
|
@ -782,7 +782,16 @@ class HeapRegion: public G1OffsetTableContigSpace {
|
||||||
void print() const;
|
void print() const;
|
||||||
void print_on(outputStream* st) 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;
|
virtual void verify(bool allow_dirty) const;
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
|
|
@ -109,7 +109,7 @@ protected:
|
||||||
return new PerRegionTable(hr);
|
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 (!_bm.at(from_card)) {
|
||||||
if (par) {
|
if (par) {
|
||||||
if (_bm.par_at_put(from_card, 1)) {
|
if (_bm.par_at_put(from_card, 1)) {
|
||||||
|
@ -141,11 +141,11 @@ protected:
|
||||||
// and adding a bit to the new table is never incorrect.
|
// and adding a bit to the new table is never incorrect.
|
||||||
if (loc_hr->is_in_reserved(from)) {
|
if (loc_hr->is_in_reserved(from)) {
|
||||||
size_t hw_offset = pointer_delta((HeapWord*)from, loc_hr->bottom());
|
size_t hw_offset = pointer_delta((HeapWord*)from, loc_hr->bottom());
|
||||||
size_t from_card =
|
CardIdx_t from_card = (CardIdx_t)
|
||||||
hw_offset >>
|
hw_offset >> (CardTableModRefBS::card_shift - LogHeapWordSize);
|
||||||
(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
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_card(short from_card_index) {
|
void add_card(CardIdx_t from_card_index) {
|
||||||
add_card_work(from_card_index, /*parallel*/ true);
|
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);
|
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.
|
// Note that this may be a continued H region.
|
||||||
HeapRegion* from_hr = _g1h->heap_region_containing_raw(from);
|
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 the region is already coarsened, return.
|
||||||
if (_coarse_map.at(from_hrs_ind)) {
|
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_bot_card_index =
|
||||||
uintptr_t(from_hr->bottom())
|
uintptr_t(from_hr->bottom())
|
||||||
>> CardTableModRefBS::card_shift;
|
>> 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,
|
assert(0 <= card_index && card_index < PosParPRT::CardsPerRegion,
|
||||||
"Must be in range.");
|
"Must be in range.");
|
||||||
if (G1HRRSUseSparseTable &&
|
if (G1HRRSUseSparseTable &&
|
||||||
_sparse_table.add_card((short) from_hrs_ind, card_index)) {
|
_sparse_table.add_card(from_hrs_ind, card_index)) {
|
||||||
if (G1RecordHRRSOops) {
|
if (G1RecordHRRSOops) {
|
||||||
HeapRegionRemSet::record(hr(), from);
|
HeapRegionRemSet::record(hr(), from);
|
||||||
#if HRRS_VERBOSE
|
#if HRRS_VERBOSE
|
||||||
|
@ -656,9 +656,9 @@ void OtherRegionsTable::add_reference(oop* from, int tid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise, transfer from sparse to fine-grain.
|
// Otherwise, transfer from sparse to fine-grain.
|
||||||
short cards[SparsePRTEntry::CardsPerEntry];
|
CardIdx_t cards[SparsePRTEntry::CardsPerEntry];
|
||||||
if (G1HRRSUseSparseTable) {
|
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");
|
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.
|
// Add in the cards from the sparse table.
|
||||||
if (G1HRRSUseSparseTable) {
|
if (G1HRRSUseSparseTable) {
|
||||||
for (int i = 0; i < SparsePRTEntry::CardsPerEntry; i++) {
|
for (int i = 0; i < SparsePRTEntry::CardsPerEntry; i++) {
|
||||||
short c = cards[i];
|
CardIdx_t c = cards[i];
|
||||||
if (c != SparsePRTEntry::NullEntry) {
|
if (c != SparsePRTEntry::NullEntry) {
|
||||||
prt->add_card(c);
|
prt->add_card(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Now we can delete the sparse entry.
|
// 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.");
|
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 {
|
bool OtherRegionsTable::contains_reference_locked(oop* from) const {
|
||||||
HeapRegion* hr = _g1h->heap_region_containing_raw(from);
|
HeapRegion* hr = _g1h->heap_region_containing_raw(from);
|
||||||
if (hr == NULL) return false;
|
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?
|
// Is this region in the coarse map?
|
||||||
if (_coarse_map.at(hr_ind)) return true;
|
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_bot_card_index =
|
||||||
uintptr_t(hr->bottom()) >> CardTableModRefBS::card_shift;
|
uintptr_t(hr->bottom()) >> CardTableModRefBS::card_shift;
|
||||||
assert(from_card >= hr_bot_card_index, "Inv");
|
assert(from_card >= hr_bot_card_index, "Inv");
|
||||||
int card_index = from_card - hr_bot_card_index;
|
CardIdx_t card_index = from_card - hr_bot_card_index;
|
||||||
return _sparse_table.contains_card((short)hr_ind, card_index);
|
assert(0 <= card_index && card_index < PosParPRT::CardsPerRegion, "Must be in range.");
|
||||||
|
return _sparse_table.contains_card(hr_ind, card_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ void SparsePRT::init_iterator(SparsePRTIter* sprt_iter) {
|
||||||
sprt_iter->init(this);
|
sprt_iter->init(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SparsePRTEntry::init(short region_ind) {
|
void SparsePRTEntry::init(RegionIdx_t region_ind) {
|
||||||
_region_ind = region_ind;
|
_region_ind = region_ind;
|
||||||
_next_index = NullEntry;
|
_next_index = NullEntry;
|
||||||
#if UNROLL_CARD_LOOPS
|
#if UNROLL_CARD_LOOPS
|
||||||
|
@ -43,11 +43,12 @@ void SparsePRTEntry::init(short region_ind) {
|
||||||
_cards[2] = NullEntry;
|
_cards[2] = NullEntry;
|
||||||
_cards[3] = NullEntry;
|
_cards[3] = NullEntry;
|
||||||
#else
|
#else
|
||||||
for (int i = 0; i < CardsPerEntry; i++) _cards[i] = NullEntry;
|
for (int i = 0; i < CardsPerEntry; i++)
|
||||||
|
_cards[i] = NullEntry;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SparsePRTEntry::contains_card(short card_index) const {
|
bool SparsePRTEntry::contains_card(CardIdx_t card_index) const {
|
||||||
#if UNROLL_CARD_LOOPS
|
#if UNROLL_CARD_LOOPS
|
||||||
assert(CardsPerEntry == 4, "Assumption. If changes, un-unroll.");
|
assert(CardsPerEntry == 4, "Assumption. If changes, un-unroll.");
|
||||||
if (_cards[0] == card_index) return true;
|
if (_cards[0] == card_index) return true;
|
||||||
|
@ -80,10 +81,10 @@ int SparsePRTEntry::num_valid_cards() const {
|
||||||
return sum;
|
return sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
SparsePRTEntry::AddCardResult SparsePRTEntry::add_card(short card_index) {
|
SparsePRTEntry::AddCardResult SparsePRTEntry::add_card(CardIdx_t card_index) {
|
||||||
#if UNROLL_CARD_LOOPS
|
#if UNROLL_CARD_LOOPS
|
||||||
assert(CardsPerEntry == 4, "Assumption. If changes, un-unroll.");
|
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 == card_index) return found;
|
||||||
if (c == NullEntry) { _cards[0] = card_index; return added; }
|
if (c == NullEntry) { _cards[0] = card_index; return added; }
|
||||||
c = _cards[1];
|
c = _cards[1];
|
||||||
|
@ -97,16 +98,19 @@ SparsePRTEntry::AddCardResult SparsePRTEntry::add_card(short card_index) {
|
||||||
if (c == NullEntry) { _cards[3] = card_index; return added; }
|
if (c == NullEntry) { _cards[3] = card_index; return added; }
|
||||||
#else
|
#else
|
||||||
for (int i = 0; i < CardsPerEntry; i++) {
|
for (int i = 0; i < CardsPerEntry; i++) {
|
||||||
short c = _cards[i];
|
CardIdx_t c = _cards[i];
|
||||||
if (c == card_index) return found;
|
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
|
#endif
|
||||||
// Otherwise, we're full.
|
// Otherwise, we're full.
|
||||||
return overflow;
|
return overflow;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SparsePRTEntry::copy_cards(short* cards) const {
|
void SparsePRTEntry::copy_cards(CardIdx_t* cards) const {
|
||||||
#if UNROLL_CARD_LOOPS
|
#if UNROLL_CARD_LOOPS
|
||||||
assert(CardsPerEntry == 4, "Assumption. If changes, un-unroll.");
|
assert(CardsPerEntry == 4, "Assumption. If changes, un-unroll.");
|
||||||
cards[0] = _cards[0];
|
cards[0] = _cards[0];
|
||||||
|
@ -130,7 +134,7 @@ RSHashTable::RSHashTable(size_t capacity) :
|
||||||
_capacity(capacity), _capacity_mask(capacity-1),
|
_capacity(capacity), _capacity_mask(capacity-1),
|
||||||
_occupied_entries(0), _occupied_cards(0),
|
_occupied_entries(0), _occupied_cards(0),
|
||||||
_entries(NEW_C_HEAP_ARRAY(SparsePRTEntry, capacity)),
|
_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),
|
_next_deleted(NULL), _deleted(false),
|
||||||
_free_list(NullEntry), _free_region(0)
|
_free_list(NullEntry), _free_region(0)
|
||||||
{
|
{
|
||||||
|
@ -143,7 +147,7 @@ RSHashTable::~RSHashTable() {
|
||||||
_entries = NULL;
|
_entries = NULL;
|
||||||
}
|
}
|
||||||
if (_buckets != NULL) {
|
if (_buckets != NULL) {
|
||||||
FREE_C_HEAP_ARRAY(short, _buckets);
|
FREE_C_HEAP_ARRAY(int, _buckets);
|
||||||
_buckets = NULL;
|
_buckets = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -153,14 +157,18 @@ void RSHashTable::clear() {
|
||||||
_occupied_cards = 0;
|
_occupied_cards = 0;
|
||||||
guarantee(_entries != NULL, "INV");
|
guarantee(_entries != NULL, "INV");
|
||||||
guarantee(_buckets != 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.
|
// This will put -1 == NullEntry in the key field of all entries.
|
||||||
memset(_entries, -1, _capacity * sizeof(SparsePRTEntry));
|
memset(_entries, -1, _capacity * sizeof(SparsePRTEntry));
|
||||||
memset(_buckets, -1, _capacity * sizeof(short));
|
memset(_buckets, -1, _capacity * sizeof(int));
|
||||||
_free_list = NullEntry;
|
_free_list = NullEntry;
|
||||||
_free_region = 0;
|
_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);
|
SparsePRTEntry* e = entry_for_region_ind_create(region_ind);
|
||||||
assert(e != NULL && e->r_ind() == region_ind,
|
assert(e != NULL && e->r_ind() == region_ind,
|
||||||
"Postcondition of call above.");
|
"Postcondition of call above.");
|
||||||
|
@ -175,9 +183,9 @@ bool RSHashTable::add_card(short region_ind, short card_index) {
|
||||||
return res != SparsePRTEntry::overflow;
|
return res != SparsePRTEntry::overflow;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RSHashTable::get_cards(short region_ind, short* cards) {
|
bool RSHashTable::get_cards(RegionIdx_t region_ind, CardIdx_t* cards) {
|
||||||
short ind = (short) (region_ind & capacity_mask());
|
int ind = (int) (region_ind & capacity_mask());
|
||||||
short cur_ind = _buckets[ind];
|
int cur_ind = _buckets[ind];
|
||||||
SparsePRTEntry* cur;
|
SparsePRTEntry* cur;
|
||||||
while (cur_ind != NullEntry &&
|
while (cur_ind != NullEntry &&
|
||||||
(cur = entry(cur_ind))->r_ind() != region_ind) {
|
(cur = entry(cur_ind))->r_ind() != region_ind) {
|
||||||
|
@ -192,10 +200,10 @@ bool RSHashTable::get_cards(short region_ind, short* cards) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RSHashTable::delete_entry(short region_ind) {
|
bool RSHashTable::delete_entry(RegionIdx_t region_ind) {
|
||||||
short ind = (short) (region_ind & capacity_mask());
|
int ind = (int) (region_ind & capacity_mask());
|
||||||
short* prev_loc = &_buckets[ind];
|
int* prev_loc = &_buckets[ind];
|
||||||
short cur_ind = *prev_loc;
|
int cur_ind = *prev_loc;
|
||||||
SparsePRTEntry* cur;
|
SparsePRTEntry* cur;
|
||||||
while (cur_ind != NullEntry &&
|
while (cur_ind != NullEntry &&
|
||||||
(cur = entry(cur_ind))->r_ind() != region_ind) {
|
(cur = entry(cur_ind))->r_ind() != region_ind) {
|
||||||
|
@ -212,10 +220,11 @@ bool RSHashTable::delete_entry(short region_ind) {
|
||||||
return true;
|
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");
|
assert(occupied_entries() < capacity(), "Precondition");
|
||||||
short ind = (short) (region_ind & capacity_mask());
|
int ind = (int) (region_ind & capacity_mask());
|
||||||
short cur_ind = _buckets[ind];
|
int cur_ind = _buckets[ind];
|
||||||
SparsePRTEntry* cur;
|
SparsePRTEntry* cur;
|
||||||
// XXX
|
// XXX
|
||||||
// int k = 0;
|
// 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);
|
SparsePRTEntry* res = entry_for_region_ind(region_ind);
|
||||||
if (res == NULL) {
|
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.");
|
assert(0 <= new_ind && (size_t)new_ind < capacity(), "There should be room.");
|
||||||
res = entry(new_ind);
|
res = entry(new_ind);
|
||||||
res->init(region_ind);
|
res->init(region_ind);
|
||||||
// Insert at front.
|
// Insert at front.
|
||||||
short ind = (short) (region_ind & capacity_mask());
|
int ind = (int) (region_ind & capacity_mask());
|
||||||
res->set_next_index(_buckets[ind]);
|
res->set_next_index(_buckets[ind]);
|
||||||
_buckets[ind] = new_ind;
|
_buckets[ind] = new_ind;
|
||||||
_occupied_entries++;
|
_occupied_entries++;
|
||||||
|
@ -258,8 +268,8 @@ SparsePRTEntry* RSHashTable::entry_for_region_ind_create(short region_ind) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
short RSHashTable::alloc_entry() {
|
int RSHashTable::alloc_entry() {
|
||||||
short res;
|
int res;
|
||||||
if (_free_list != NullEntry) {
|
if (_free_list != NullEntry) {
|
||||||
res = _free_list;
|
res = _free_list;
|
||||||
_free_list = entry(res)->next_index();
|
_free_list = entry(res)->next_index();
|
||||||
|
@ -273,13 +283,11 @@ short RSHashTable::alloc_entry() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RSHashTable::free_entry(int fi) {
|
||||||
void RSHashTable::free_entry(short fi) {
|
|
||||||
entry(fi)->set_next_index(_free_list);
|
entry(fi)->set_next_index(_free_list);
|
||||||
_free_list = fi;
|
_free_list = fi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void RSHashTable::add_entry(SparsePRTEntry* e) {
|
void RSHashTable::add_entry(SparsePRTEntry* e) {
|
||||||
assert(e->num_valid_cards() > 0, "Precondition.");
|
assert(e->num_valid_cards() > 0, "Precondition.");
|
||||||
SparsePRTEntry* e2 = entry_for_region_ind_create(e->r_ind());
|
SparsePRTEntry* e2 = entry_for_region_ind_create(e->r_ind());
|
||||||
|
@ -322,8 +330,8 @@ RSHashTable* RSHashTable::get_from_deleted_list() {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
short /* RSHashTable:: */ RSHashTableIter::find_first_card_in_list() {
|
CardIdx_t /* RSHashTable:: */ RSHashTableIter::find_first_card_in_list() {
|
||||||
short res;
|
CardIdx_t res;
|
||||||
while (_bl_ind != RSHashTable::NullEntry) {
|
while (_bl_ind != RSHashTable::NullEntry) {
|
||||||
res = _rsht->entry(_bl_ind)->card(0);
|
res = _rsht->entry(_bl_ind)->card(0);
|
||||||
if (res != SparsePRTEntry::NullEntry) {
|
if (res != SparsePRTEntry::NullEntry) {
|
||||||
|
@ -336,7 +344,7 @@ short /* RSHashTable:: */ RSHashTableIter::find_first_card_in_list() {
|
||||||
return SparsePRTEntry::NullEntry;
|
return SparsePRTEntry::NullEntry;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t /* RSHashTable:: */ RSHashTableIter::compute_card_ind(short ci) {
|
size_t /* RSHashTable:: */ RSHashTableIter::compute_card_ind(CardIdx_t ci) {
|
||||||
return
|
return
|
||||||
_heap_bot_card_ind
|
_heap_bot_card_ind
|
||||||
+ (_rsht->entry(_bl_ind)->r_ind() * CardsPerRegion)
|
+ (_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) {
|
bool /* RSHashTable:: */ RSHashTableIter::has_next(size_t& card_index) {
|
||||||
_card_ind++;
|
_card_ind++;
|
||||||
short ci;
|
CardIdx_t ci;
|
||||||
if (_card_ind < SparsePRTEntry::CardsPerEntry &&
|
if (_card_ind < SparsePRTEntry::CardsPerEntry &&
|
||||||
((ci = _rsht->entry(_bl_ind)->card(_card_ind)) !=
|
((ci = _rsht->entry(_bl_ind)->card(_card_ind)) !=
|
||||||
SparsePRTEntry::NullEntry)) {
|
SparsePRTEntry::NullEntry)) {
|
||||||
|
@ -379,16 +387,16 @@ bool /* RSHashTable:: */ RSHashTableIter::has_next(size_t& card_index) {
|
||||||
return false;
|
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);
|
SparsePRTEntry* e = entry_for_region_ind(region_index);
|
||||||
return (e != NULL && e->contains_card(card_index));
|
return (e != NULL && e->contains_card(card_index));
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t RSHashTable::mem_size() const {
|
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;
|
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* SparsePRT::get_from_expanded_list() {
|
||||||
SparsePRT* hd = _head_expanded_list;
|
SparsePRT* hd = _head_expanded_list;
|
||||||
while (hd != NULL) {
|
while (hd != NULL) {
|
||||||
|
@ -452,6 +461,7 @@ SparsePRT::SparsePRT(HeapRegion* hr) :
|
||||||
_next = _cur;
|
_next = _cur;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SparsePRT::~SparsePRT() {
|
SparsePRT::~SparsePRT() {
|
||||||
assert(_next != NULL && _cur != NULL, "Inv");
|
assert(_next != NULL && _cur != NULL, "Inv");
|
||||||
if (_cur != _next) { delete _cur; }
|
if (_cur != _next) { delete _cur; }
|
||||||
|
@ -465,7 +475,7 @@ size_t SparsePRT::mem_size() const {
|
||||||
return sizeof(this) + _next->mem_size();
|
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
|
#if SPARSE_PRT_VERBOSE
|
||||||
gclog_or_tty->print_cr(" Adding card %d from region %d to region %d sparse.",
|
gclog_or_tty->print_cr(" Adding card %d from region %d to region %d sparse.",
|
||||||
card_index, region_id, _hr->hrs_index());
|
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);
|
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);
|
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);
|
return _next->delete_entry(region_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,32 +35,32 @@
|
||||||
|
|
||||||
class SparsePRTEntry: public CHeapObj {
|
class SparsePRTEntry: public CHeapObj {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
enum SomePublicConstants {
|
enum SomePublicConstants {
|
||||||
CardsPerEntry = (short)4,
|
CardsPerEntry = 4,
|
||||||
NullEntry = (short)-1,
|
NullEntry = -1
|
||||||
DeletedEntry = (short)-2
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
short _region_ind;
|
RegionIdx_t _region_ind;
|
||||||
short _next_index;
|
int _next_index;
|
||||||
short _cards[CardsPerEntry];
|
CardIdx_t _cards[CardsPerEntry];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Set the region_ind to the given value, and delete all cards.
|
// 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; }
|
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; }
|
int next_index() const { return _next_index; }
|
||||||
short* next_index_addr() { return &_next_index; }
|
int* next_index_addr() { return &_next_index; }
|
||||||
void set_next_index(short ni) { _next_index = ni; }
|
void set_next_index(int ni) { _next_index = ni; }
|
||||||
|
|
||||||
// Returns "true" iff the entry contains the given card index.
|
// 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.
|
// Returns the number of non-NULL card entries.
|
||||||
inline int num_valid_cards() const;
|
inline int num_valid_cards() const;
|
||||||
|
@ -73,14 +73,14 @@ public:
|
||||||
found,
|
found,
|
||||||
added
|
added
|
||||||
};
|
};
|
||||||
inline AddCardResult add_card(short card_index);
|
inline AddCardResult add_card(CardIdx_t card_index);
|
||||||
|
|
||||||
// Copy the current entry's cards into "cards".
|
// 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."
|
// Copy the current entry's cards into the "_card" array of "e."
|
||||||
inline void copy_cards(SparsePRTEntry* e) const;
|
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;
|
size_t _occupied_cards;
|
||||||
|
|
||||||
SparsePRTEntry* _entries;
|
SparsePRTEntry* _entries;
|
||||||
short* _buckets;
|
int* _buckets;
|
||||||
short _free_region;
|
int _free_region;
|
||||||
short _free_list;
|
int _free_list;
|
||||||
|
|
||||||
static RSHashTable* _head_deleted_list;
|
static RSHashTable* _head_deleted_list;
|
||||||
RSHashTable* _next_deleted;
|
RSHashTable* _next_deleted;
|
||||||
|
@ -113,20 +113,20 @@ class RSHashTable : public CHeapObj {
|
||||||
// operations, and that the the table be less than completely full. If
|
// 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
|
// an entry for "region_ind" is already in the table, finds it and
|
||||||
// returns its address; otherwise returns "NULL."
|
// 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
|
// Requires that the caller hold a lock preventing parallel modifying
|
||||||
// operations, and that the the table be less than completely full. If
|
// 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
|
// an entry for "region_ind" is already in the table, finds it and
|
||||||
// returns its address; otherwise allocates, initializes, inserts and
|
// returns its address; otherwise allocates, initializes, inserts and
|
||||||
// returns a new entry for "region_ind".
|
// 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".
|
// 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
|
// Declares the entry "fi" to be free. (It must have already been
|
||||||
// deleted from any bucket lists.
|
// deleted from any bucket lists.
|
||||||
void free_entry(short fi);
|
void free_entry(int fi);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RSHashTable(size_t capacity);
|
RSHashTable(size_t capacity);
|
||||||
|
@ -138,12 +138,12 @@ public:
|
||||||
// Otherwise, returns "false" to indicate that the addition would
|
// Otherwise, returns "false" to indicate that the addition would
|
||||||
// overflow the entry for the region. The caller must transfer these
|
// overflow the entry for the region. The caller must transfer these
|
||||||
// entries to a larger-capacity representation.
|
// 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 get_cards(RegionIdx_t region_id, CardIdx_t* cards);
|
||||||
bool delete_entry(short region_id);
|
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);
|
void add_entry(SparsePRTEntry* e);
|
||||||
|
|
||||||
|
@ -162,52 +162,50 @@ public:
|
||||||
|
|
||||||
static void add_to_deleted_list(RSHashTable* rsht);
|
static void add_to_deleted_list(RSHashTable* rsht);
|
||||||
static RSHashTable* get_from_deleted_list();
|
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 {
|
class RSHashTableIter VALUE_OBJ_CLASS_SPEC {
|
||||||
short _tbl_ind;
|
int _tbl_ind; // [-1, 0.._rsht->_capacity)
|
||||||
short _bl_ind;
|
int _bl_ind; // [-1, 0.._rsht->_capacity)
|
||||||
short _card_ind;
|
short _card_ind; // [0..CardsPerEntry)
|
||||||
RSHashTable* _rsht;
|
RSHashTable* _rsht;
|
||||||
size_t _heap_bot_card_ind;
|
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);
|
|
||||||
|
|
||||||
|
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
|
// Concurrent accesss to a SparsePRT must be serialized by some external
|
||||||
// mutex.
|
// mutex.
|
||||||
|
|
||||||
|
@ -238,7 +236,6 @@ class SparsePRT VALUE_OBJ_CLASS_SPEC {
|
||||||
SparsePRT* next_expanded() { return _next_expanded; }
|
SparsePRT* next_expanded() { return _next_expanded; }
|
||||||
void set_next_expanded(SparsePRT* nxt) { _next_expanded = nxt; }
|
void set_next_expanded(SparsePRT* nxt) { _next_expanded = nxt; }
|
||||||
|
|
||||||
|
|
||||||
static SparsePRT* _head_expanded_list;
|
static SparsePRT* _head_expanded_list;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -255,16 +252,16 @@ public:
|
||||||
// Otherwise, returns "false" to indicate that the addition would
|
// Otherwise, returns "false" to indicate that the addition would
|
||||||
// overflow the entry for the region. The caller must transfer these
|
// overflow the entry for the region. The caller must transfer these
|
||||||
// entries to a larger-capacity representation.
|
// 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
|
// If the table hold an entry for "region_ind", Copies its
|
||||||
// cards into "cards", which must be an array of length at least
|
// cards into "cards", which must be an array of length at least
|
||||||
// "CardsPerEntry", and returns "true"; otherwise, returns "false".
|
// "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";
|
// If there is an entry for "region_ind", removes it and return "true";
|
||||||
// otherwise returns "false."
|
// otherwise returns "false."
|
||||||
bool delete_entry(short region_ind);
|
bool delete_entry(RegionIdx_t region_ind);
|
||||||
|
|
||||||
// Clear the table, and reinitialize to initial capacity.
|
// Clear the table, and reinitialize to initial capacity.
|
||||||
void clear();
|
void clear();
|
||||||
|
@ -276,13 +273,12 @@ public:
|
||||||
static void cleanup_all();
|
static void cleanup_all();
|
||||||
RSHashTable* cur() const { return _cur; }
|
RSHashTable* cur() const { return _cur; }
|
||||||
|
|
||||||
|
|
||||||
void init_iterator(SparsePRTIter* sprt_iter);
|
void init_iterator(SparsePRTIter* sprt_iter);
|
||||||
|
|
||||||
static void add_to_expanded_list(SparsePRT* sprt);
|
static void add_to_expanded_list(SparsePRT* sprt);
|
||||||
static SparsePRT* get_from_expanded_list();
|
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);
|
return _next->contains_card(region_id, card_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,6 @@ concurrentG1Refine.hpp globalDefinitions.hpp
|
||||||
concurrentG1Refine.hpp allocation.hpp
|
concurrentG1Refine.hpp allocation.hpp
|
||||||
concurrentG1Refine.hpp thread.hpp
|
concurrentG1Refine.hpp thread.hpp
|
||||||
|
|
||||||
|
|
||||||
concurrentG1RefineThread.cpp concurrentG1Refine.hpp
|
concurrentG1RefineThread.cpp concurrentG1Refine.hpp
|
||||||
concurrentG1RefineThread.cpp concurrentG1RefineThread.hpp
|
concurrentG1RefineThread.cpp concurrentG1RefineThread.hpp
|
||||||
concurrentG1RefineThread.cpp g1CollectedHeap.inline.hpp
|
concurrentG1RefineThread.cpp g1CollectedHeap.inline.hpp
|
||||||
|
@ -334,6 +333,7 @@ sparsePRT.cpp space.inline.hpp
|
||||||
sparsePRT.hpp allocation.hpp
|
sparsePRT.hpp allocation.hpp
|
||||||
sparsePRT.hpp cardTableModRefBS.hpp
|
sparsePRT.hpp cardTableModRefBS.hpp
|
||||||
sparsePRT.hpp globalDefinitions.hpp
|
sparsePRT.hpp globalDefinitions.hpp
|
||||||
|
sparsePRT.hpp g1CollectedHeap.inline.hpp
|
||||||
sparsePRT.hpp heapRegion.hpp
|
sparsePRT.hpp heapRegion.hpp
|
||||||
sparsePRT.hpp mutex.hpp
|
sparsePRT.hpp mutex.hpp
|
||||||
|
|
||||||
|
|
|
@ -177,6 +177,7 @@ private:
|
||||||
// are double-word aligned in 32-bit VMs, but not in 64-bit VMs, so the 32-bit
|
// 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.
|
// granularity is 2, 64-bit is 1.
|
||||||
static inline size_t obj_granularity() { return size_t(MinObjAlignment); }
|
static inline size_t obj_granularity() { return size_t(MinObjAlignment); }
|
||||||
|
static inline int obj_granularity_shift() { return LogMinObjAlignment; }
|
||||||
|
|
||||||
HeapWord* _region_start;
|
HeapWord* _region_start;
|
||||||
size_t _region_size;
|
size_t _region_size;
|
||||||
|
@ -299,13 +300,13 @@ inline bool ParMarkBitMap::is_unmarked(oop obj) const
|
||||||
inline size_t
|
inline size_t
|
||||||
ParMarkBitMap::bits_to_words(idx_t bits)
|
ParMarkBitMap::bits_to_words(idx_t bits)
|
||||||
{
|
{
|
||||||
return bits * obj_granularity();
|
return bits << obj_granularity_shift();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline ParMarkBitMap::idx_t
|
inline ParMarkBitMap::idx_t
|
||||||
ParMarkBitMap::words_to_bits(size_t words)
|
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
|
inline size_t ParMarkBitMap::obj_size(idx_t beg_bit, idx_t end_bit) const
|
||||||
|
|
|
@ -387,7 +387,7 @@ c1_ValueMap.hpp c1_ValueSet.hpp
|
||||||
c1_ValueSet.cpp c1_ValueSet.hpp
|
c1_ValueSet.cpp c1_ValueSet.hpp
|
||||||
|
|
||||||
c1_ValueSet.hpp allocation.hpp
|
c1_ValueSet.hpp allocation.hpp
|
||||||
c1_ValueSet.hpp bitMap.hpp
|
c1_ValueSet.hpp bitMap.inline.hpp
|
||||||
c1_ValueSet.hpp c1_Instruction.hpp
|
c1_ValueSet.hpp c1_Instruction.hpp
|
||||||
|
|
||||||
c1_ValueStack.cpp c1_IR.hpp
|
c1_ValueStack.cpp c1_IR.hpp
|
||||||
|
|
|
@ -242,6 +242,31 @@ class Pause_No_Safepoint_Verifier : public Pause_No_GC_Verifier {
|
||||||
#endif
|
#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
|
// JRT_LEAF currently can be called from either _thread_in_Java or
|
||||||
// _thread_in_native mode. In _thread_in_native, it is ok
|
// _thread_in_native mode. In _thread_in_native, it is ok
|
||||||
// for another thread to trigger GC. The rest of the JRT_LEAF
|
// for another thread to trigger GC. The rest of the JRT_LEAF
|
||||||
|
|
|
@ -66,11 +66,14 @@ void InterfaceSupport::trace(const char* result_type, const char* header) {
|
||||||
|
|
||||||
void InterfaceSupport::gc_alot() {
|
void InterfaceSupport::gc_alot() {
|
||||||
Thread *thread = Thread::current();
|
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.
|
// Check for new, not quite initialized thread. A thread in new mode cannot initiate a GC.
|
||||||
JavaThread *current_thread = (JavaThread *)thread;
|
JavaThread *current_thread = (JavaThread *)thread;
|
||||||
if (current_thread->active_handles() == NULL) return;
|
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 (is_init_completed()) {
|
||||||
|
|
||||||
if (++_fullgc_alot_invocation < FullGCALotStart) {
|
if (++_fullgc_alot_invocation < FullGCALotStart) {
|
||||||
|
|
|
@ -127,6 +127,7 @@ Thread::Thread() {
|
||||||
debug_only(_owned_locks = NULL;)
|
debug_only(_owned_locks = NULL;)
|
||||||
debug_only(_allow_allocation_count = 0;)
|
debug_only(_allow_allocation_count = 0;)
|
||||||
NOT_PRODUCT(_allow_safepoint_count = 0;)
|
NOT_PRODUCT(_allow_safepoint_count = 0;)
|
||||||
|
NOT_PRODUCT(_skip_gcalot = false;)
|
||||||
CHECK_UNHANDLED_OOPS_ONLY(_gc_locked_out_count = 0;)
|
CHECK_UNHANDLED_OOPS_ONLY(_gc_locked_out_count = 0;)
|
||||||
_jvmti_env_iteration_count = 0;
|
_jvmti_env_iteration_count = 0;
|
||||||
_vm_operation_started_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
|
// We could enter a safepoint here and thus have a gc
|
||||||
InterfaceSupport::check_gc_alot();
|
InterfaceSupport::check_gc_alot();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -191,6 +191,9 @@ class Thread: public ThreadShadow {
|
||||||
NOT_PRODUCT(int _allow_safepoint_count;) // If 0, thread allow a safepoint to happen
|
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.
|
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
|
// Record when GC is locked out via the GC_locker mechanism
|
||||||
CHECK_UNHANDLED_OOPS_ONLY(int _gc_locked_out_count;)
|
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; }
|
bool is_gc_locked_out() { return _gc_locked_out_count > 0; }
|
||||||
#endif // CHECK_UNHANDLED_OOPS
|
#endif // CHECK_UNHANDLED_OOPS
|
||||||
|
|
||||||
|
#ifndef PRODUCT
|
||||||
|
bool skip_gcalot() { return _skip_gcalot; }
|
||||||
|
void set_skip_gcalot(bool v) { _skip_gcalot = v; }
|
||||||
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Installs a pending exception to be inserted later
|
// Installs a pending exception to be inserted later
|
||||||
static void send_async_exception(oop thread_oop, oop java_throwable);
|
static void send_async_exception(oop thread_oop, oop java_throwable);
|
||||||
|
|
|
@ -531,6 +531,7 @@ void VMThread::execute(VM_Operation* op) {
|
||||||
Thread* t = Thread::current();
|
Thread* t = Thread::current();
|
||||||
|
|
||||||
if (!t->is_VM_thread()) {
|
if (!t->is_VM_thread()) {
|
||||||
|
SkipGCALot sgcalot(t); // avoid re-entrant attempts to gc-a-lot
|
||||||
// JavaThread or WatcherThread
|
// JavaThread or WatcherThread
|
||||||
t->check_for_valid_safepoint_state(true);
|
t->check_for_valid_safepoint_state(true);
|
||||||
|
|
||||||
|
|
|
@ -41,19 +41,6 @@ BitMap::BitMap(idx_t size_in_bits, bool in_resource_area) :
|
||||||
resize(size_in_bits, 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) {
|
void BitMap::resize(idx_t size_in_bits, bool in_resource_area) {
|
||||||
assert(size_in_bits >= 0, "just checking");
|
assert(size_in_bits >= 0, "just checking");
|
||||||
idx_t old_size_in_words = size_in_words();
|
idx_t old_size_in_words = size_in_words();
|
||||||
|
|
|
@ -93,10 +93,12 @@ class BitMap VALUE_OBJ_CLASS_SPEC {
|
||||||
// The index of the first full word in a range.
|
// The index of the first full word in a range.
|
||||||
idx_t word_index_round_up(idx_t bit) const;
|
idx_t word_index_round_up(idx_t bit) const;
|
||||||
|
|
||||||
// Verification, statistics.
|
// Verification.
|
||||||
void verify_index(idx_t index) const;
|
inline void verify_index(idx_t index) const NOT_DEBUG_RETURN;
|
||||||
void verify_range(idx_t beg_index, idx_t end_index) const;
|
inline void verify_range(idx_t beg_index, idx_t end_index) const
|
||||||
|
NOT_DEBUG_RETURN;
|
||||||
|
|
||||||
|
// Statistics.
|
||||||
static idx_t* _pop_count_table;
|
static idx_t* _pop_count_table;
|
||||||
static void init_pop_count_table();
|
static void init_pop_count_table();
|
||||||
static idx_t num_set_bits(bm_word_t w);
|
static idx_t num_set_bits(bm_word_t w);
|
||||||
|
@ -287,7 +289,6 @@ class BitMap VALUE_OBJ_CLASS_SPEC {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Convenience class wrapping BitMap which provides multiple bits per slot.
|
// Convenience class wrapping BitMap which provides multiple bits per slot.
|
||||||
class BitMap2D VALUE_OBJ_CLASS_SPEC {
|
class BitMap2D VALUE_OBJ_CLASS_SPEC {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -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) {
|
inline void BitMap::set_bit(idx_t bit) {
|
||||||
verify_index(bit);
|
verify_index(bit);
|
||||||
|
|
|
@ -106,11 +106,13 @@
|
||||||
#ifdef ASSERT
|
#ifdef ASSERT
|
||||||
#define DEBUG_ONLY(code) code
|
#define DEBUG_ONLY(code) code
|
||||||
#define NOT_DEBUG(code)
|
#define NOT_DEBUG(code)
|
||||||
|
#define NOT_DEBUG_RETURN /*next token must be ;*/
|
||||||
// Historical.
|
// Historical.
|
||||||
#define debug_only(code) code
|
#define debug_only(code) code
|
||||||
#else // ASSERT
|
#else // ASSERT
|
||||||
#define DEBUG_ONLY(code)
|
#define DEBUG_ONLY(code)
|
||||||
#define NOT_DEBUG(code) code
|
#define NOT_DEBUG(code) code
|
||||||
|
#define NOT_DEBUG_RETURN {}
|
||||||
#define debug_only(code)
|
#define debug_only(code)
|
||||||
#endif // ASSERT
|
#endif // ASSERT
|
||||||
|
|
||||||
|
|
|
@ -36,3 +36,5 @@ e4851e9f7be26fc52a628be06ffa8aaea0919bd7 jdk7-b57
|
||||||
75113d7ce083048e7576b9d0d60a4e80db6b181f jdk7-b59
|
75113d7ce083048e7576b9d0d60a4e80db6b181f jdk7-b59
|
||||||
259aef5045a155eb6a2f8dd0e2429c6dbe0f652f jdk7-b60
|
259aef5045a155eb6a2f8dd0e2429c6dbe0f652f jdk7-b60
|
||||||
f1ac756616eaaad795f77f7f5e7f7c7bfdc9c1de jdk7-b61
|
f1ac756616eaaad795f77f7f5e7f7c7bfdc9c1de jdk7-b61
|
||||||
|
a97dd57a62604c35c79bc2fa77a612ed547f6135 jdk7-b62
|
||||||
|
ae449e9c04c1fe651bd30f0f4d4cc24ba794e0c4 jdk7-b63
|
||||||
|
|
|
@ -36,3 +36,5 @@ e0eebd978b830c09e7862cff3f77a914c15651c9 jdk7-b55
|
||||||
f64566bf4c2bc92e65ab2b9fab51b119f0d493d1 jdk7-b59
|
f64566bf4c2bc92e65ab2b9fab51b119f0d493d1 jdk7-b59
|
||||||
3b054db3e277ca224fe6576c59ed6f4ab5ed0bb5 jdk7-b60
|
3b054db3e277ca224fe6576c59ed6f4ab5ed0bb5 jdk7-b60
|
||||||
aeabf802f2a1ca72b87d7397c5ece58058e000a9 jdk7-b61
|
aeabf802f2a1ca72b87d7397c5ece58058e000a9 jdk7-b61
|
||||||
|
75c801c13ea1ddebc58b1a8c8da9318d72750e62 jdk7-b62
|
||||||
|
b8a6e883c0a6708f6d818815040525d472262495 jdk7-b63
|
||||||
|
|
|
@ -36,3 +36,5 @@ d5a1223e961891564de25c39fba6f2442d0fb045 jdk7-b57
|
||||||
2a5a1b269e89f27ebe419ef4cf6e66a3face0df1 jdk7-b59
|
2a5a1b269e89f27ebe419ef4cf6e66a3face0df1 jdk7-b59
|
||||||
0c3ef2d612a47667829eb17a192decef23f1c536 jdk7-b60
|
0c3ef2d612a47667829eb17a192decef23f1c536 jdk7-b60
|
||||||
f72c0dc047b9b2e797beee68ae0b50decb1f020d jdk7-b61
|
f72c0dc047b9b2e797beee68ae0b50decb1f020d jdk7-b61
|
||||||
|
12e11fab9a839a9666a996a8f9a02fd8fa03aab6 jdk7-b62
|
||||||
|
2ed6ed6b5bfc7dd724925b90dbb31223df59c25d jdk7-b63
|
||||||
|
|
|
@ -91,10 +91,10 @@ ifeq ($(PLATFORM), windows)
|
||||||
CXXFLAGS_COMMON += $(MS_RUNTIME_OPTION)
|
CXXFLAGS_COMMON += $(MS_RUNTIME_OPTION)
|
||||||
LDOUTPUT = -Fe
|
LDOUTPUT = -Fe
|
||||||
|
|
||||||
# J2SE name required here
|
# JDK name required here
|
||||||
RC_FLAGS += /D "J2SE_FNAME=$(PGRM).exe" \
|
RC_FLAGS += /D "JDK_FNAME=$(PGRM).exe" \
|
||||||
/D "J2SE_INTERNAL_NAME=$(PGRM)" \
|
/D "JDK_INTERNAL_NAME=$(PGRM)" \
|
||||||
/D "J2SE_FTYPE=0x1L"
|
/D "JDK_FTYPE=0x1L"
|
||||||
|
|
||||||
RES = $(OBJDIR)/$(PGRM).res
|
RES = $(OBJDIR)/$(PGRM).res
|
||||||
else
|
else
|
||||||
|
@ -133,13 +133,19 @@ unpacker:
|
||||||
$(MAKE) $(UNPACK_EXE) STANDALONE=true LDMAPFLAGS_OPT= LDMAPFLAGS_DBG=
|
$(MAKE) $(UNPACK_EXE) STANDALONE=true LDMAPFLAGS_OPT= LDMAPFLAGS_DBG=
|
||||||
|
|
||||||
ifeq ($(PLATFORM), windows)
|
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)
|
winres:: $(RES)
|
||||||
else
|
else
|
||||||
|
updatefiles::
|
||||||
|
$(ECHO) "Manifest not required for Unix"
|
||||||
winres::
|
winres::
|
||||||
$(ECHO) "Resource files not required for Unix"
|
$(ECHO) "Resource files not required for Unix"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(UNPACK_EXE): $(UNPACK_EXE_FILES_o) winres
|
$(UNPACK_EXE): $(UNPACK_EXE_FILES_o) updatefiles winres
|
||||||
$(prep-target)
|
$(prep-target)
|
||||||
$(LINKER) $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(RES) $(LIBCXX) $(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX)
|
$(LINKER) $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(RES) $(LIBCXX) $(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX)
|
||||||
ifdef MT
|
ifdef MT
|
||||||
|
|
|
@ -27,6 +27,7 @@ SUNWprivate_1.1 {
|
||||||
global:
|
global:
|
||||||
Java_sun_nio_ch_SctpNet_socket0;
|
Java_sun_nio_ch_SctpNet_socket0;
|
||||||
Java_sun_nio_ch_SctpNet_bindx;
|
Java_sun_nio_ch_SctpNet_bindx;
|
||||||
|
Java_sun_nio_ch_SctpNet_branch0;
|
||||||
Java_sun_nio_ch_SctpNet_getLocalAddresses0;
|
Java_sun_nio_ch_SctpNet_getLocalAddresses0;
|
||||||
Java_sun_nio_ch_SctpNet_getRemoteAddresses0;
|
Java_sun_nio_ch_SctpNet_getRemoteAddresses0;
|
||||||
Java_sun_nio_ch_SctpNet_getPrimAddrOption0;
|
Java_sun_nio_ch_SctpNet_getPrimAddrOption0;
|
||||||
|
|
|
@ -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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -464,11 +464,48 @@ JDK_RC_NAME = \
|
||||||
JDK_RC_FVER = \
|
JDK_RC_FVER = \
|
||||||
$(JDK_MINOR_VERSION),$(JDK_MICRO_VERSION),$(JDK_UPDATE_VER),$(COOKED_BUILD_NUMBER)
|
$(JDK_MINOR_VERSION),$(JDK_MICRO_VERSION),$(JDK_UPDATE_VER),$(COOKED_BUILD_NUMBER)
|
||||||
|
|
||||||
# J2SE name required here
|
# JDK name required here
|
||||||
RC_FLAGS += -d "J2SE_BUILD_ID=$(JDK_RC_BUILD_ID)" \
|
RC_FLAGS += -d "JDK_BUILD_ID=$(JDK_RC_BUILD_ID)" \
|
||||||
-d "J2SE_COMPANY=$(JDK_RC_COMPANY)" \
|
-d "JDK_COMPANY=$(JDK_RC_COMPANY)" \
|
||||||
-d "J2SE_COMPONENT=$(JDK_RC_COMPONENT)" \
|
-d "JDK_COMPONENT=$(JDK_RC_COMPONENT)" \
|
||||||
-d "J2SE_VER=$(JDK_RC_VER)" \
|
-d "JDK_VER=$(JDK_RC_VER)" \
|
||||||
-d "J2SE_COPYRIGHT=$(JDK_RC_COPYRIGHT)" \
|
-d "JDK_COPYRIGHT=$(JDK_RC_COPYRIGHT)" \
|
||||||
-d "J2SE_NAME=$(JDK_RC_NAME)" \
|
-d "JDK_NAME=$(JDK_RC_NAME)" \
|
||||||
-d "J2SE_FVER=$(JDK_RC_FVER)"
|
-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
|
||||||
|
|
|
@ -207,10 +207,10 @@ ifndef LOCAL_RESOURCE_FILE
|
||||||
endif
|
endif
|
||||||
@$(ECHO) Created $@
|
@$(ECHO) Created $@
|
||||||
|
|
||||||
# J2SE name required here
|
# JDK name required here
|
||||||
RC_FLAGS += /D "J2SE_FNAME=$(LIBRARY).dll" \
|
RC_FLAGS += /D "JDK_FNAME=$(LIBRARY).dll" \
|
||||||
/D "J2SE_INTERNAL_NAME=$(LIBRARY)" \
|
/D "JDK_INTERNAL_NAME=$(LIBRARY)" \
|
||||||
/D "J2SE_FTYPE=0x2L"
|
/D "JDK_FTYPE=0x2L"
|
||||||
|
|
||||||
$(OBJDIR)/$(LIBRARY).res: $(VERSIONINFO_RESOURCE)
|
$(OBJDIR)/$(LIBRARY).res: $(VERSIONINFO_RESOURCE)
|
||||||
ifndef LOCAL_RESOURCE_FILE
|
ifndef LOCAL_RESOURCE_FILE
|
||||||
|
|
|
@ -123,10 +123,10 @@ $(ACTUAL_PROGRAM):: classes $(JVMCFG) $(INIT)
|
||||||
#
|
#
|
||||||
ifeq ($(PLATFORM), windows)
|
ifeq ($(PLATFORM), windows)
|
||||||
|
|
||||||
# J2SE name required here
|
# JDK name required here
|
||||||
RC_FLAGS += /D "J2SE_FNAME=$(PROGRAM)$(EXE_SUFFIX)" \
|
RC_FLAGS += /D "JDK_FNAME=$(PROGRAM)$(EXE_SUFFIX)" \
|
||||||
/D "J2SE_INTERNAL_NAME=$(PROGRAM)" \
|
/D "JDK_INTERNAL_NAME=$(PROGRAM)" \
|
||||||
/D "J2SE_FTYPE=0x1L"
|
/D "JDK_FTYPE=0x1L"
|
||||||
|
|
||||||
$(OBJDIR)/$(PROGRAM).res: $(VERSIONINFO_RESOURCE)
|
$(OBJDIR)/$(PROGRAM).res: $(VERSIONINFO_RESOURCE)
|
||||||
@$(prep-target)
|
@$(prep-target)
|
||||||
|
|
|
@ -97,7 +97,7 @@ else
|
||||||
ifeq ($(PLATFORM), windows)
|
ifeq ($(PLATFORM), windows)
|
||||||
LICENSE_DOCLIST_JDK = $(subst $(LICENSE_VERSION),,\
|
LICENSE_DOCLIST_JDK = $(subst $(LICENSE_VERSION),,\
|
||||||
$(shell $(CD) $(SHARE_JDK_DOC_SRC) && \
|
$(shell $(CD) $(SHARE_JDK_DOC_SRC) && \
|
||||||
$(LS) *LICENSE*$(LICENSE_VERSION)))
|
$(LS) *LICENSE*$(LICENSE_VERSION)))
|
||||||
LICENSE_DOCLIST_JRE = $(subst $(LICENSE_VERSION),,\
|
LICENSE_DOCLIST_JRE = $(subst $(LICENSE_VERSION),,\
|
||||||
$(shell $(CD) $(SHARE_JRE_DOC_SRC) && \
|
$(shell $(CD) $(SHARE_JRE_DOC_SRC) && \
|
||||||
$(LS) *LICENSE*$(LICENSE_VERSION)))
|
$(LS) *LICENSE*$(LICENSE_VERSION)))
|
||||||
|
@ -401,7 +401,7 @@ TOOLS = \
|
||||||
sun/tools/jstack \
|
sun/tools/jstack \
|
||||||
sun/tools/jinfo \
|
sun/tools/jinfo \
|
||||||
sun/tools/jmap
|
sun/tools/jmap
|
||||||
|
|
||||||
# classes that go into jsse.jar
|
# classes that go into jsse.jar
|
||||||
JSSE_CLASSES_DIRS = \
|
JSSE_CLASSES_DIRS = \
|
||||||
sun/security/provider/Sun.class \
|
sun/security/provider/Sun.class \
|
||||||
|
@ -645,7 +645,7 @@ $(RT_JAR_FILELIST) + $(RES_JAR_FILELIST): \
|
||||||
@$(java-vm-cleanup)
|
@$(java-vm-cleanup)
|
||||||
|
|
||||||
# Create the manifest file.
|
# Create the manifest file.
|
||||||
JAR_MANIFEST_FILE=$(TEMPDIR)/manifest.tmp
|
JAR_MANIFEST_FILE=$(ABS_TEMPDIR)/manifest.tmp
|
||||||
$(JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST)
|
$(JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST)
|
||||||
$(prep-target)
|
$(prep-target)
|
||||||
$(SED) -e "s/@@RELEASE@@/$(RELEASE)/" $(MAINMANIFEST) >> $@
|
$(SED) -e "s/@@RELEASE@@/$(RELEASE)/" $(MAINMANIFEST) >> $@
|
||||||
|
@ -653,25 +653,22 @@ $(JAR_MANIFEST_FILE): $(MAINMANIFEST) $(BEANMANIFEST)
|
||||||
$(CAT) $(BEANMANIFEST) >> $@
|
$(CAT) $(BEANMANIFEST) >> $@
|
||||||
|
|
||||||
# Create resources.jar containing non-class files
|
# Create resources.jar containing non-class files
|
||||||
RESOURCES_JAR=$(TEMPDIR)/resources-orig.jar
|
RESOURCES_JAR=$(ABS_TEMPDIR)/resources-orig.jar
|
||||||
RES_JAR_ARGLIST=$(RES_JAR_FILELIST)_args
|
$(RESOURCES_JAR): $(RES_JAR_FILELIST) $(JAR_MANIFEST_FILE)
|
||||||
$(RES_JAR_ARGLIST): $(RES_JAR_FILELIST)
|
|
||||||
$(prep-target)
|
$(prep-target)
|
||||||
$(SED) -e "s@^@-C $(CLASSBINDIR) @" $< > $@
|
$(CD) $(CLASSBINDIR) && \
|
||||||
$(RESOURCES_JAR): $(RES_JAR_ARGLIST) $(JAR_MANIFEST_FILE)
|
$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
|
||||||
$(prep-target)
|
@$(RES_JAR_FILELIST) $(BOOT_JAR_JFLAGS)
|
||||||
$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
|
@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
|
||||||
@$(RES_JAR_ARGLIST) $(BOOT_JAR_JFLAGS)
|
|
||||||
@$(java-vm-cleanup)
|
|
||||||
|
|
||||||
# Create jsse.jar containing SunJSSE implementation classes
|
# 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)
|
$(JSSE_JAR): $(JAR_MANIFEST_FILE)
|
||||||
$(prep-target)
|
$(prep-target)
|
||||||
$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
|
$(CD) $(CLASSBINDIR) && \
|
||||||
$(JSSE_CLASSES_DIRS:%=-C $(CLASSBINDIR) %) \
|
$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
|
||||||
$(BOOT_JAR_JFLAGS)
|
$(JSSE_CLASSES_DIRS) $(BOOT_JAR_JFLAGS)
|
||||||
@$(java-vm-cleanup)
|
@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
|
||||||
|
|
||||||
# Create sec-bin.zip
|
# Create sec-bin.zip
|
||||||
SEC_FILES_ZIP=$(ABS_TEMPDIR)/sec-bin.zip
|
SEC_FILES_ZIP=$(ABS_TEMPDIR)/sec-bin.zip
|
||||||
|
@ -713,15 +710,12 @@ endif
|
||||||
|
|
||||||
# Create rt.jar
|
# Create rt.jar
|
||||||
RT_JAR=$(ABS_TEMPDIR)/rt-orig.jar
|
RT_JAR=$(ABS_TEMPDIR)/rt-orig.jar
|
||||||
RT_JAR_ARGLIST=$(RT_JAR_FILELIST)_args
|
$(RT_JAR): $(RT_JAR_FILELIST) $(JAR_MANIFEST_FILE)
|
||||||
$(RT_JAR_ARGLIST): $(RT_JAR_FILELIST)
|
|
||||||
$(prep-target)
|
$(prep-target)
|
||||||
$(SED) -e "s@^@-C $(CLASSBINDIR) @" $< > $@
|
$(CD) $(CLASSBINDIR) && \
|
||||||
$(RT_JAR): $(RT_JAR_ARGLIST) $(JAR_MANIFEST_FILE)
|
$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
|
||||||
$(prep-target)
|
@$(RT_JAR_FILELIST) $(BOOT_JAR_JFLAGS)
|
||||||
$(BOOT_JAR_CMD) c0mf $(JAR_MANIFEST_FILE) $@ \
|
@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
|
||||||
@$(RT_JAR_ARGLIST) $(BOOT_JAR_JFLAGS)
|
|
||||||
@$(java-vm-cleanup)
|
|
||||||
|
|
||||||
# Meta-index construction to make core class loaders lazier
|
# Meta-index construction to make core class loaders lazier
|
||||||
|
|
||||||
|
@ -795,6 +789,11 @@ ifeq ($(PLATFORM), windows)
|
||||||
$(CD) $(JRE_IMAGE_DIR)/lib && \
|
$(CD) $(JRE_IMAGE_DIR)/lib && \
|
||||||
$(RM) java.$(LIB_SUFFIX) jvm.$(LIB_SUFFIX) \
|
$(RM) java.$(LIB_SUFFIX) jvm.$(LIB_SUFFIX) \
|
||||||
hpi.$(LIB_SUFFIX) awt.$(LIB_SUFFIX) jawt.$(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
|
endif # Windows
|
||||||
ifneq ($(PLATFORM), windows)
|
ifneq ($(PLATFORM), windows)
|
||||||
$(call copy-man-pages,$(JRE_IMAGE_DIR),$(JRE_MAN_PAGES))
|
$(call copy-man-pages,$(JRE_IMAGE_DIR),$(JRE_MAN_PAGES))
|
||||||
|
@ -944,10 +943,10 @@ initial-image-jdk:: initial-image-jdk-setup \
|
||||||
@#
|
@#
|
||||||
@# lib/tools.jar
|
@# lib/tools.jar
|
||||||
@#
|
@#
|
||||||
$(BOOT_JAR_CMD) c0f $(LIBDIR)/tools.jar $(addprefix \
|
$(CD) $(CLASSBINDIR) && \
|
||||||
-C $(CLASSBINDIR) , $(TOOLS)) \
|
$(BOOT_JAR_CMD) c0f $(ABS_LIBDIR)/tools.jar \
|
||||||
$(BOOT_JAR_JFLAGS)
|
$(TOOLS) $(BOOT_JAR_JFLAGS)
|
||||||
@$(java-vm-cleanup)
|
@$(CD) $(CLASSBINDIR) && $(java-vm-cleanup)
|
||||||
$(CP) $(LIBDIR)/tools.jar $(JDK_IMAGE_DIR)/lib/tools.jar
|
$(CP) $(LIBDIR)/tools.jar $(JDK_IMAGE_DIR)/lib/tools.jar
|
||||||
@#
|
@#
|
||||||
@# lib/ct.sym
|
@# lib/ct.sym
|
||||||
|
|
|
@ -35,8 +35,8 @@ ifeq ($(PLATFORM), windows)
|
||||||
LIBEXE = $(COMPILER_PATH)lib
|
LIBEXE = $(COMPILER_PATH)lib
|
||||||
LINK = $(COMPILER_PATH)link
|
LINK = $(COMPILER_PATH)link
|
||||||
RC = $(MSDEVTOOLS_PATH)rc
|
RC = $(MSDEVTOOLS_PATH)rc
|
||||||
|
RSC = $(MSDEVTOOLS_PATH)rc
|
||||||
LINK32 = $(LINK)
|
LINK32 = $(LINK)
|
||||||
RSC = $(RC)
|
|
||||||
|
|
||||||
# Fill in unknown values
|
# Fill in unknown values
|
||||||
COMPILER_NAME=Unknown MSVC Compiler
|
COMPILER_NAME=Unknown MSVC Compiler
|
||||||
|
@ -98,6 +98,9 @@ ifeq ($(PLATFORM), windows)
|
||||||
endif
|
endif
|
||||||
ifeq ($(CC_MAJORVER), 14)
|
ifeq ($(CC_MAJORVER), 14)
|
||||||
ifeq ($(ARCH), amd64)
|
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)
|
ifeq ($(CC_MICROVER), 30701)
|
||||||
# This should be: CC_VER=14.00.30701 LINK_VER=8.00.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
|
# 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_NAME=Microsoft Platform SDK - April 2005 Edition (3790.1830)
|
||||||
COMPILER_VERSION=VS2005
|
COMPILER_VERSION=VS2005
|
||||||
endif
|
endif
|
||||||
|
else
|
||||||
|
REBASE = $(COMPILER_PATH)../rebase
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifeq ($(CC_MAJORVER), 15)
|
ifeq ($(CC_MAJORVER), 15)
|
||||||
|
@ -120,7 +125,6 @@ ifeq ($(PLATFORM), windows)
|
||||||
endif
|
endif
|
||||||
# This will cause problems if ALT_COMPILER_PATH is defined to ""
|
# This will cause problems if ALT_COMPILER_PATH is defined to ""
|
||||||
# which is a directive to use the PATH.
|
# which is a directive to use the PATH.
|
||||||
REBASE = $(COMPILER_PATH)../REBASE
|
|
||||||
ifndef COMPILER_PATH
|
ifndef COMPILER_PATH
|
||||||
COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
|
COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -72,6 +72,7 @@ ADB = $(UTILS_COMMAND_PATH)adb
|
||||||
AR = $(UTILS_CCS_BIN_PATH)ar
|
AR = $(UTILS_CCS_BIN_PATH)ar
|
||||||
AS = $(UTILS_CCS_BIN_PATH)as
|
AS = $(UTILS_CCS_BIN_PATH)as
|
||||||
BASENAME = $(UTILS_COMMAND_PATH)basename
|
BASENAME = $(UTILS_COMMAND_PATH)basename
|
||||||
|
BZIP2 = $(UTILS_COMMAND_PATH)bzip2
|
||||||
CAT = $(UTILS_COMMAND_PATH)cat
|
CAT = $(UTILS_COMMAND_PATH)cat
|
||||||
CHMOD = $(UTILS_COMMAND_PATH)chmod
|
CHMOD = $(UTILS_COMMAND_PATH)chmod
|
||||||
CMP = $(UTILS_USR_BIN_PATH)cmp
|
CMP = $(UTILS_USR_BIN_PATH)cmp
|
||||||
|
@ -157,6 +158,7 @@ ifeq ($(PLATFORM),windows)
|
||||||
endif
|
endif
|
||||||
# Re-define some utilities
|
# Re-define some utilities
|
||||||
LEX =# override GNU Make intrinsic: no lex on windows
|
LEX =# override GNU Make intrinsic: no lex on windows
|
||||||
|
SHA1SUM = $(UNIXCOMMAND_PATH)openssl sha1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Linux specific
|
# Linux specific
|
||||||
|
|
|
@ -520,7 +520,7 @@ ifdef ALT_INSTALL_MSSDK
|
||||||
xALT_INSTALL_MSSDK :="$(subst \,/,$(ALT_INSTALL_MSSDK))"
|
xALT_INSTALL_MSSDK :="$(subst \,/,$(ALT_INSTALL_MSSDK))"
|
||||||
INSTALL_MSSDK :=$(call FullPath,$(xALT_INSTALL_MSSDK))
|
INSTALL_MSSDK :=$(call FullPath,$(xALT_INSTALL_MSSDK))
|
||||||
else
|
else
|
||||||
INSTALL_MSSDK :=$(_psdk)
|
INSTALL_MSSDK :=$(_ms_sdk)
|
||||||
endif
|
endif
|
||||||
INSTALL_MSSDK:=$(call AltCheckSpaces,INSTALL_MSSDK)
|
INSTALL_MSSDK:=$(call AltCheckSpaces,INSTALL_MSSDK)
|
||||||
|
|
||||||
|
@ -631,7 +631,12 @@ JDK_IMPORT_PATH:=$(call AltCheckValue,JDK_IMPORT_PATH)
|
||||||
ifdef ALT_HOTSPOT_IMPORT_PATH
|
ifdef ALT_HOTSPOT_IMPORT_PATH
|
||||||
HOTSPOT_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_IMPORT_PATH))
|
HOTSPOT_IMPORT_PATH :=$(call FullPath,$(ALT_HOTSPOT_IMPORT_PATH))
|
||||||
else
|
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
|
endif
|
||||||
HOTSPOT_IMPORT_PATH:=$(call AltCheckSpaces,HOTSPOT_IMPORT_PATH)
|
HOTSPOT_IMPORT_PATH:=$(call AltCheckSpaces,HOTSPOT_IMPORT_PATH)
|
||||||
HOTSPOT_IMPORT_PATH:=$(call AltCheckValue,HOTSPOT_IMPORT_PATH)
|
HOTSPOT_IMPORT_PATH:=$(call AltCheckValue,HOTSPOT_IMPORT_PATH)
|
||||||
|
@ -665,4 +670,3 @@ else
|
||||||
endif
|
endif
|
||||||
HOTSPOT_LIB_PATH:=$(call AltCheckSpaces,HOTSPOT_LIB_PATH)
|
HOTSPOT_LIB_PATH:=$(call AltCheckSpaces,HOTSPOT_LIB_PATH)
|
||||||
HOTSPOT_LIB_PATH:=$(call AltCheckValue,HOTSPOT_LIB_PATH)
|
HOTSPOT_LIB_PATH:=$(call AltCheckValue,HOTSPOT_LIB_PATH)
|
||||||
|
|
||||||
|
|
|
@ -292,6 +292,7 @@ endif
|
||||||
PROMOTED_RE_AREA = $(SLASH_JAVA)/re/jdk/$(JDK_VERSION)/promoted
|
PROMOTED_RE_AREA = $(SLASH_JAVA)/re/jdk/$(JDK_VERSION)/promoted
|
||||||
PROMOTED_BUILD_LATEST = latest
|
PROMOTED_BUILD_LATEST = latest
|
||||||
PROMOTED_BUILD_BASEDIR = $(PROMOTED_RE_AREA)/$(PROMOTED_BUILD_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
|
PROMOTED_BUILD_BINARIES = $(PROMOTED_BUILD_BASEDIR)/binaries
|
||||||
|
|
||||||
# PARALLEL_COMPILE_JOBS: is the number of compiles done in parallel.
|
# PARALLEL_COMPILE_JOBS: is the number of compiles done in parallel.
|
||||||
|
|
|
@ -1568,9 +1568,49 @@ ifeq ($(ARCH_DATA_MODEL), 32)
|
||||||
"" >> $(ERROR_FILE) ; \
|
"" >> $(ERROR_FILE) ; \
|
||||||
fi
|
fi
|
||||||
endif
|
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
|
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
|
# SECURITY_BASELINE_142 test
|
||||||
######################################################
|
######################################################
|
||||||
|
@ -1597,6 +1637,19 @@ ifeq ($(PLATFORM), windows)
|
||||||
fi
|
fi
|
||||||
endif
|
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.
|
# this should be the last rule in any target's sanity rule.
|
||||||
|
|
|
@ -217,6 +217,7 @@ CORE_PKGS = \
|
||||||
javax.swing.plaf.basic \
|
javax.swing.plaf.basic \
|
||||||
javax.swing.plaf.metal \
|
javax.swing.plaf.metal \
|
||||||
javax.swing.plaf.multi \
|
javax.swing.plaf.multi \
|
||||||
|
javax.swing.plaf.nimbus \
|
||||||
javax.swing.plaf.synth \
|
javax.swing.plaf.synth \
|
||||||
javax.tools \
|
javax.tools \
|
||||||
javax.transaction \
|
javax.transaction \
|
||||||
|
|
|
@ -64,6 +64,7 @@ FILES_c = \
|
||||||
jio.c \
|
jio.c \
|
||||||
logging.c \
|
logging.c \
|
||||||
jni_util.c \
|
jni_util.c \
|
||||||
|
jni_util_md.c \
|
||||||
jdk_util.c \
|
jdk_util.c \
|
||||||
jdk_util_md.c \
|
jdk_util_md.c \
|
||||||
check_version.c \
|
check_version.c \
|
||||||
|
|
|
@ -412,6 +412,7 @@ JAVA_JAVA_java = \
|
||||||
java/io/FileReader.java \
|
java/io/FileReader.java \
|
||||||
java/io/PipedReader.java \
|
java/io/PipedReader.java \
|
||||||
java/io/StringReader.java \
|
java/io/StringReader.java \
|
||||||
|
java/io/TempFileHelper.java \
|
||||||
java/io/Writer.java \
|
java/io/Writer.java \
|
||||||
java/io/BufferedWriter.java \
|
java/io/BufferedWriter.java \
|
||||||
java/io/PrintWriter.java \
|
java/io/PrintWriter.java \
|
||||||
|
|
|
@ -280,6 +280,9 @@ SUNWprivate_1.1 {
|
||||||
Java_sun_misc_VM_initialize;
|
Java_sun_misc_VM_initialize;
|
||||||
Java_sun_misc_VMSupport_initAgentProperties;
|
Java_sun_misc_VMSupport_initAgentProperties;
|
||||||
|
|
||||||
|
# ZipFile.c needs this one
|
||||||
|
throwFileNotFoundException;
|
||||||
|
|
||||||
# Java_sun_misc_VM_getState; threads.c
|
# Java_sun_misc_VM_getState; threads.c
|
||||||
# Java_sun_misc_VM_threadsSuspended; threads.c
|
# Java_sun_misc_VM_threadsSuspended; threads.c
|
||||||
# Java_sun_misc_VM_unsuspendSomeThreads; threads.c
|
# Java_sun_misc_VM_unsuspendSomeThreads; threads.c
|
||||||
|
|
|
@ -86,8 +86,6 @@ FILES_src = \
|
||||||
java/nio/file/CopyOption.java \
|
java/nio/file/CopyOption.java \
|
||||||
java/nio/file/DirectoryNotEmptyException.java \
|
java/nio/file/DirectoryNotEmptyException.java \
|
||||||
java/nio/file/DirectoryStream.java \
|
java/nio/file/DirectoryStream.java \
|
||||||
java/nio/file/DirectoryStreamFilters.java \
|
|
||||||
java/nio/file/FileAction.java \
|
|
||||||
java/nio/file/FileAlreadyExistsException.java \
|
java/nio/file/FileAlreadyExistsException.java \
|
||||||
java/nio/file/FileRef.java \
|
java/nio/file/FileRef.java \
|
||||||
java/nio/file/FileStore.java \
|
java/nio/file/FileStore.java \
|
||||||
|
@ -141,6 +139,7 @@ FILES_src = \
|
||||||
java/nio/file/attribute/FileStoreAttributeView.java \
|
java/nio/file/attribute/FileStoreAttributeView.java \
|
||||||
java/nio/file/attribute/FileStoreSpaceAttributeView.java \
|
java/nio/file/attribute/FileStoreSpaceAttributeView.java \
|
||||||
java/nio/file/attribute/FileStoreSpaceAttributes.java \
|
java/nio/file/attribute/FileStoreSpaceAttributes.java \
|
||||||
|
java/nio/file/attribute/FileTime.java \
|
||||||
java/nio/file/attribute/GroupPrincipal.java \
|
java/nio/file/attribute/GroupPrincipal.java \
|
||||||
java/nio/file/attribute/UserDefinedFileAttributeView.java \
|
java/nio/file/attribute/UserDefinedFileAttributeView.java \
|
||||||
java/nio/file/attribute/PosixFileAttributeView.java \
|
java/nio/file/attribute/PosixFileAttributeView.java \
|
||||||
|
@ -151,7 +150,6 @@ FILES_src = \
|
||||||
java/nio/file/attribute/UserPrincipalLookupService.java \
|
java/nio/file/attribute/UserPrincipalLookupService.java \
|
||||||
java/nio/file/attribute/UserPrincipalNotFoundException.java \
|
java/nio/file/attribute/UserPrincipalNotFoundException.java \
|
||||||
\
|
\
|
||||||
java/nio/file/spi/AbstractPath.java \
|
|
||||||
java/nio/file/spi/FileSystemProvider.java \
|
java/nio/file/spi/FileSystemProvider.java \
|
||||||
java/nio/file/spi/FileTypeDetector.java \
|
java/nio/file/spi/FileTypeDetector.java \
|
||||||
\
|
\
|
||||||
|
@ -248,8 +246,8 @@ FILES_src = \
|
||||||
\
|
\
|
||||||
sun/nio/fs/AbstractAclFileAttributeView.java \
|
sun/nio/fs/AbstractAclFileAttributeView.java \
|
||||||
sun/nio/fs/AbstractBasicFileAttributeView.java \
|
sun/nio/fs/AbstractBasicFileAttributeView.java \
|
||||||
sun/nio/fs/AbstractFileStoreSpaceAttributeView.java \
|
|
||||||
sun/nio/fs/AbstractFileTypeDetector.java \
|
sun/nio/fs/AbstractFileTypeDetector.java \
|
||||||
|
sun/nio/fs/AbstractPath.java \
|
||||||
sun/nio/fs/AbstractPoller.java \
|
sun/nio/fs/AbstractPoller.java \
|
||||||
sun/nio/fs/AbstractUserDefinedFileAttributeView.java \
|
sun/nio/fs/AbstractUserDefinedFileAttributeView.java \
|
||||||
sun/nio/fs/AbstractWatchKey.java \
|
sun/nio/fs/AbstractWatchKey.java \
|
||||||
|
@ -258,12 +256,13 @@ FILES_src = \
|
||||||
sun/nio/fs/Cancellable.java \
|
sun/nio/fs/Cancellable.java \
|
||||||
sun/nio/fs/DefaultFileSystemProvider.java \
|
sun/nio/fs/DefaultFileSystemProvider.java \
|
||||||
sun/nio/fs/DefaultFileTypeDetector.java \
|
sun/nio/fs/DefaultFileTypeDetector.java \
|
||||||
|
sun/nio/fs/DynamicFileAttributeView.java \
|
||||||
sun/nio/fs/FileOwnerAttributeViewImpl.java \
|
sun/nio/fs/FileOwnerAttributeViewImpl.java \
|
||||||
sun/nio/fs/Globs.java \
|
sun/nio/fs/Globs.java \
|
||||||
sun/nio/fs/MimeType.java \
|
|
||||||
sun/nio/fs/NativeBuffer.java \
|
sun/nio/fs/NativeBuffer.java \
|
||||||
sun/nio/fs/NativeBuffers.java \
|
sun/nio/fs/NativeBuffers.java \
|
||||||
sun/nio/fs/Reflect.java \
|
sun/nio/fs/Reflect.java \
|
||||||
|
sun/nio/fs/Util.java \
|
||||||
\
|
\
|
||||||
java/net/DatagramSocket.java \
|
java/net/DatagramSocket.java \
|
||||||
java/net/DatagramSocketImpl.java \
|
java/net/DatagramSocketImpl.java \
|
||||||
|
|
|
@ -142,7 +142,7 @@ SUNWprivate_1.1 {
|
||||||
Java_sun_nio_fs_LinuxNativeDispatcher_fremovexattr0;
|
Java_sun_nio_fs_LinuxNativeDispatcher_fremovexattr0;
|
||||||
Java_sun_nio_fs_LinuxNativeDispatcher_setmntent0;
|
Java_sun_nio_fs_LinuxNativeDispatcher_setmntent0;
|
||||||
Java_sun_nio_fs_LinuxNativeDispatcher_endmntent;
|
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_getcwd;
|
||||||
Java_sun_nio_fs_UnixNativeDispatcher_strerror;
|
Java_sun_nio_fs_UnixNativeDispatcher_strerror;
|
||||||
Java_sun_nio_fs_UnixNativeDispatcher_dup;
|
Java_sun_nio_fs_UnixNativeDispatcher_dup;
|
||||||
|
|
|
@ -120,7 +120,7 @@ SUNWprivate_1.1 {
|
||||||
Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGio;
|
Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGio;
|
||||||
Java_sun_nio_fs_GnomeFileTypeDetector_initializeGnomeVfs;
|
Java_sun_nio_fs_GnomeFileTypeDetector_initializeGnomeVfs;
|
||||||
Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGnomeVfs;
|
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_getcwd;
|
||||||
Java_sun_nio_fs_UnixNativeDispatcher_strerror;
|
Java_sun_nio_fs_UnixNativeDispatcher_strerror;
|
||||||
Java_sun_nio_fs_UnixNativeDispatcher_dup;
|
Java_sun_nio_fs_UnixNativeDispatcher_dup;
|
||||||
|
|
|
@ -119,10 +119,15 @@ IMPORT_LIST += \
|
||||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMMAP_NAME) \
|
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMMAP_NAME) \
|
||||||
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMPDB_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)
|
ifeq ($(ARCH_DATA_MODEL), 32)
|
||||||
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMMAP_NAME) \
|
IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMMAP_NAME) \
|
||||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMPDB_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
|
endif
|
||||||
|
|
||||||
$(LIBDIR)/$(JVMLIB_NAME): $(HOTSPOT_LIB_PATH)/$(JVMLIB_NAME)
|
$(LIBDIR)/$(JVMLIB_NAME): $(HOTSPOT_LIB_PATH)/$(JVMLIB_NAME)
|
||||||
|
@ -134,6 +139,10 @@ $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMMAP_NAME):
|
||||||
@$(prep-target)
|
@$(prep-target)
|
||||||
-$(CP) $(HOTSPOT_CLIENT_PATH)/$(JVMMAP_NAME) $@
|
-$(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):
|
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMMAP_NAME):
|
||||||
@$(prep-target)
|
@$(prep-target)
|
||||||
-$(CP) $(HOTSPOT_SERVER_PATH)/$(JVMMAP_NAME) $@
|
-$(CP) $(HOTSPOT_SERVER_PATH)/$(JVMMAP_NAME) $@
|
||||||
|
@ -142,6 +151,10 @@ $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMPDB_NAME):
|
||||||
@$(prep-target)
|
@$(prep-target)
|
||||||
-$(CP) $(HOTSPOT_CLIENT_PATH)/$(JVMPDB_NAME) $@
|
-$(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):
|
$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMPDB_NAME):
|
||||||
@$(prep-target)
|
@$(prep-target)
|
||||||
-$(CP) $(HOTSPOT_SERVER_PATH)/$(JVMPDB_NAME) $@
|
-$(CP) $(HOTSPOT_SERVER_PATH)/$(JVMPDB_NAME) $@
|
||||||
|
@ -195,6 +208,9 @@ endif # PLATFORM
|
||||||
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME): $(HOTSPOT_CLIENT_PATH)/$(JVM_NAME)
|
$(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME): $(HOTSPOT_CLIENT_PATH)/$(JVM_NAME)
|
||||||
$(install-import-file)
|
$(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)
|
$(LIB_LOCATION)/$(LIBJSIG_NAME): $(HOTSPOT_SERVER_PATH)/$(LIBJSIG_NAME)
|
||||||
$(install-import-file)
|
$(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
|
$(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt : $(HOTSPOT_CLIENT_PATH)/Xusage.txt
|
||||||
$(install-import-file)
|
$(install-import-file)
|
||||||
|
|
||||||
|
$(LIB_LOCATION)/$(KERNEL_LOCATION)/Xusage.txt : $(HOTSPOT_KERNEL_PATH)/Xusage.txt
|
||||||
|
$(install-file)
|
||||||
|
|
||||||
ifeq ($(INCLUDE_SA), true)
|
ifeq ($(INCLUDE_SA), true)
|
||||||
# The Serviceability Agent is built in the Hotspot workspace.
|
# The Serviceability Agent is built in the Hotspot workspace.
|
||||||
# It contains two files:
|
# It contains two files:
|
||||||
|
|
|
@ -51,6 +51,7 @@ SUNWprivate_1.1 {
|
||||||
Java_java_util_zip_Inflater_reset;
|
Java_java_util_zip_Inflater_reset;
|
||||||
Java_java_util_zip_Inflater_setDictionary;
|
Java_java_util_zip_Inflater_setDictionary;
|
||||||
Java_java_util_zip_ZipFile_close;
|
Java_java_util_zip_ZipFile_close;
|
||||||
|
Java_java_util_zip_ZipFile_getCommentBytes;
|
||||||
Java_java_util_zip_ZipFile_freeEntry;
|
Java_java_util_zip_ZipFile_freeEntry;
|
||||||
Java_java_util_zip_ZipFile_getEntry;
|
Java_java_util_zip_ZipFile_getEntry;
|
||||||
Java_java_util_zip_ZipFile_getEntryBytes;
|
Java_java_util_zip_ZipFile_getEntryBytes;
|
||||||
|
|
|
@ -33,6 +33,12 @@ PRODUCT = jpda
|
||||||
PROGRAM = jdb
|
PROGRAM = jdb
|
||||||
include $(BUILDDIR)/common/Defs.gmk
|
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.
|
# Java Files to compile are found automatically.
|
||||||
#
|
#
|
||||||
|
|
|
@ -59,7 +59,7 @@ else
|
||||||
RENDER_SUBDIR = dcpr
|
RENDER_SUBDIR = dcpr
|
||||||
endif
|
endif
|
||||||
# nio need to be compiled before awt to have all charsets ready
|
# 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) \
|
nio awt splashscreen $(XAWT_SUBDIR) \
|
||||||
$(HEADLESS_SUBDIR) $(DGA_SUBDIR) \
|
$(HEADLESS_SUBDIR) $(DGA_SUBDIR) \
|
||||||
font jpeg cmm applet rmi beans $(JDBC_SUBDIR) \
|
font jpeg cmm applet rmi beans $(JDBC_SUBDIR) \
|
||||||
|
|
|
@ -32,6 +32,12 @@ PACKAGE = sun.applet
|
||||||
PRODUCT = sun
|
PRODUCT = sun
|
||||||
include $(BUILDDIR)/common/Defs.gmk
|
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.
|
# Files to compile.
|
||||||
#
|
#
|
||||||
|
|
|
@ -32,6 +32,13 @@ PACKAGE = sun.tools
|
||||||
PRODUCT = sun
|
PRODUCT = sun
|
||||||
include $(BUILDDIR)/common/Defs.gmk
|
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
|
# Files
|
||||||
#
|
#
|
||||||
|
|
|
@ -54,9 +54,9 @@ Link America/Los_Angeles PST
|
||||||
Link Pacific/Guadalcanal SST
|
Link Pacific/Guadalcanal SST
|
||||||
Link Asia/Saigon VST
|
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
|
# 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
|
# of Asia/Tehran. This line must be removed if a full set of Olson
|
||||||
# zones is generated. Otherwise, MET appears twice in the
|
# zones is generated. Otherwise, MET appears twice in the
|
||||||
# ZoneInfoMappings.IDs table.
|
# ZoneInfoMappings.IDs table.
|
||||||
|
|
|
@ -32,6 +32,13 @@ PACKAGE = sun.tools.jconsole
|
||||||
PRODUCT = sun
|
PRODUCT = sun
|
||||||
include $(BUILDDIR)/common/Defs.gmk
|
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
|
JARFILE = $(LIBDIR)/jconsole.jar
|
||||||
|
|
||||||
OTHER_JAVACFLAGS += -encoding iso8859-1
|
OTHER_JAVACFLAGS += -encoding iso8859-1
|
||||||
|
|
|
@ -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.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# 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
|
# 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
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
@ -21,51 +23,20 @@
|
||||||
# have any questions.
|
# have any questions.
|
||||||
#
|
#
|
||||||
|
|
||||||
# @test
|
FILES_cpp = \
|
||||||
# @bug 4313887
|
stdafx.cpp \
|
||||||
# @summary Unit test for probeContentType method
|
kernel.cpp \
|
||||||
# @library ..
|
DownloadDialog.cpp \
|
||||||
# @build ContentType SimpleFileTypeDetector
|
DownloadHelper.cpp \
|
||||||
# @run shell content_type.sh
|
DownloadHelper.cpp
|
||||||
|
|
||||||
# if TESTJAVA isn't set then we assume an interactive run.
|
|
||||||
|
|
||||||
if [ -z "$TESTJAVA" ]; then
|
FILES_rc = kernel.rc
|
||||||
TESTSRC=.
|
|
||||||
TESTCLASSES=.
|
|
||||||
JAVA=java
|
|
||||||
else
|
|
||||||
JAVA="${TESTJAVA}/bin/java"
|
|
||||||
fi
|
|
||||||
|
|
||||||
OS=`uname -s`
|
# FILES_export definitions for Win32
|
||||||
case "$OS" in
|
|
||||||
Windows_* )
|
|
||||||
CLASSPATH="${TESTCLASSES};${TESTSRC}"
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
CLASSPATH=${TESTCLASSES}:${TESTSRC}
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
export CLASSPATH
|
|
||||||
|
|
||||||
failures=0
|
FILES_export = \
|
||||||
|
sun/jkernel/DownloadManager.java \
|
||||||
go() {
|
sun/jkernel/Mutex.java \
|
||||||
echo ''
|
sun/jkernel/Bundle.java \
|
||||||
$JAVA $1 $2 $3 2>&1
|
sun/jkernel/BackgroundDownloader.java \
|
||||||
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
|
|
41
jdk/make/sun/jkernel/FILES_java.gmk
Normal file
41
jdk/make/sun/jkernel/FILES_java.gmk
Normal 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
|
90
jdk/make/sun/jkernel/Makefile
Normal file
90
jdk/make/sun/jkernel/Makefile
Normal 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
|
|
@ -33,6 +33,13 @@ PRODUCT = sun
|
||||||
OTHER_JAVACFLAGS += -Xlint:serial -Werror
|
OTHER_JAVACFLAGS += -Xlint:serial -Werror
|
||||||
include $(BUILDDIR)/common/Defs.gmk
|
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
|
# Files
|
||||||
#
|
#
|
||||||
|
|
|
@ -66,6 +66,9 @@ FILES_java = \
|
||||||
sun/net/www/protocol/file/Handler.java \
|
sun/net/www/protocol/file/Handler.java \
|
||||||
sun/net/www/protocol/file/FileURLConnection.java \
|
sun/net/www/protocol/file/FileURLConnection.java \
|
||||||
sun/net/www/http/HttpClient.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/PosterOutputStream.java \
|
||||||
sun/net/www/http/ChunkedInputStream.java \
|
sun/net/www/http/ChunkedInputStream.java \
|
||||||
sun/net/www/http/ChunkedOutputStream.java \
|
sun/net/www/http/ChunkedOutputStream.java \
|
||||||
|
@ -75,6 +78,7 @@ FILES_java = \
|
||||||
sun/net/www/http/Hurryable.java \
|
sun/net/www/http/Hurryable.java \
|
||||||
sun/net/www/protocol/http/Handler.java \
|
sun/net/www/protocol/http/Handler.java \
|
||||||
sun/net/www/protocol/http/HttpURLConnection.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/HttpAuthenticator.java \
|
||||||
sun/net/www/protocol/http/AuthenticationHeader.java \
|
sun/net/www/protocol/http/AuthenticationHeader.java \
|
||||||
sun/net/www/protocol/http/AuthenticationInfo.java \
|
sun/net/www/protocol/http/AuthenticationInfo.java \
|
||||||
|
|
|
@ -151,7 +151,6 @@ FILES_src = \
|
||||||
sun/io/ByteToCharJISAutoDetect.java \
|
sun/io/ByteToCharJISAutoDetect.java \
|
||||||
sun/io/ByteToCharJohab.java \
|
sun/io/ByteToCharJohab.java \
|
||||||
sun/io/ByteToCharMS874.java \
|
sun/io/ByteToCharMS874.java \
|
||||||
sun/io/ByteToCharMS932DB.java \
|
|
||||||
sun/io/ByteToCharMS932.java \
|
sun/io/ByteToCharMS932.java \
|
||||||
sun/io/ByteToCharMS936.java \
|
sun/io/ByteToCharMS936.java \
|
||||||
sun/io/ByteToCharMS949.java \
|
sun/io/ByteToCharMS949.java \
|
||||||
|
@ -283,7 +282,6 @@ FILES_src = \
|
||||||
sun/io/CharToByteISO8859_8.java \
|
sun/io/CharToByteISO8859_8.java \
|
||||||
sun/io/CharToByteJohab.java \
|
sun/io/CharToByteJohab.java \
|
||||||
sun/io/CharToByteMS874.java \
|
sun/io/CharToByteMS874.java \
|
||||||
sun/io/CharToByteMS932DB.java \
|
|
||||||
sun/io/CharToByteMS932.java \
|
sun/io/CharToByteMS932.java \
|
||||||
sun/io/CharToByteMS936.java \
|
sun/io/CharToByteMS936.java \
|
||||||
sun/io/CharToByteMS949.java \
|
sun/io/CharToByteMS949.java \
|
||||||
|
@ -388,7 +386,15 @@ FILES_gen_extcs = \
|
||||||
sun/nio/cs/ext/IBM948.java \
|
sun/nio/cs/ext/IBM948.java \
|
||||||
sun/nio/cs/ext/IBM949.java \
|
sun/nio/cs/ext/IBM949.java \
|
||||||
sun/nio/cs/ext/IBM950.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)
|
FILES_java = $(FILES_src) $(FILES_gen_extcs)
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH): \
|
||||||
$(install-file)
|
$(install-file)
|
||||||
|
|
||||||
$(CHARSETS_JAR): $(FILES_class) $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH) $(FILES_DAT)
|
$(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) sun \
|
||||||
-C $(CLASSDESTDIR) $(SERVICE_DESCRIPTION_PATH) \
|
-C $(CLASSDESTDIR) $(SERVICE_DESCRIPTION_PATH) \
|
||||||
$(BOOT_JAR_JFLAGS)
|
$(BOOT_JAR_JFLAGS)
|
||||||
|
|
|
@ -32,6 +32,13 @@ PACKAGE = sun.rmi.rmic
|
||||||
PRODUCT = sun
|
PRODUCT = sun
|
||||||
include $(BUILDDIR)/common/Defs.gmk
|
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
|
# Files
|
||||||
#
|
#
|
||||||
|
|
|
@ -32,6 +32,14 @@ PACKAGE = sun.tools.serialver
|
||||||
PRODUCT = sun
|
PRODUCT = sun
|
||||||
include $(BUILDDIR)/common/Defs.gmk
|
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
|
# Files
|
||||||
#
|
#
|
||||||
|
|
|
@ -125,6 +125,7 @@ SUNWprivate_1.1 {
|
||||||
Java_sun_awt_X11_XlibWrapper_XFree;
|
Java_sun_awt_X11_XlibWrapper_XFree;
|
||||||
Java_sun_awt_X11_XlibWrapper_ServerVendor;
|
Java_sun_awt_X11_XlibWrapper_ServerVendor;
|
||||||
Java_sun_awt_X11_XlibWrapper_VendorRelease;
|
Java_sun_awt_X11_XlibWrapper_VendorRelease;
|
||||||
|
Java_sun_awt_X11_XlibWrapper_IsXsunKPBehavior;
|
||||||
Java_sun_awt_X11_XlibWrapper_SetToolkitErrorHandler;
|
Java_sun_awt_X11_XlibWrapper_SetToolkitErrorHandler;
|
||||||
Java_sun_awt_X11_XlibWrapper_XSetErrorHandler;
|
Java_sun_awt_X11_XlibWrapper_XSetErrorHandler;
|
||||||
Java_sun_awt_X11_XlibWrapper_CallErrorHandler;
|
Java_sun_awt_X11_XlibWrapper_CallErrorHandler;
|
||||||
|
|
7578
jdk/make/tools/CharsetMapping/EUC_CN.map
Normal file
7578
jdk/make/tools/CharsetMapping/EUC_CN.map
Normal file
File diff suppressed because it is too large
Load diff
8365
jdk/make/tools/CharsetMapping/EUC_KR.map
Normal file
8365
jdk/make/tools/CharsetMapping/EUC_KR.map
Normal file
File diff suppressed because it is too large
Load diff
24074
jdk/make/tools/CharsetMapping/GBK.map
Normal file
24074
jdk/make/tools/CharsetMapping/GBK.map
Normal file
File diff suppressed because it is too large
Load diff
17196
jdk/make/tools/CharsetMapping/Johab.map
Normal file
17196
jdk/make/tools/CharsetMapping/Johab.map
Normal file
File diff suppressed because it is too large
Load diff
21
jdk/make/tools/CharsetMapping/MS932.c2b
Normal file
21
jdk/make/tools/CharsetMapping/MS932.c2b
Normal 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
|
||||||
|
|
9809
jdk/make/tools/CharsetMapping/MS932.map
Normal file
9809
jdk/make/tools/CharsetMapping/MS932.map
Normal file
File diff suppressed because it is too large
Load diff
402
jdk/make/tools/CharsetMapping/MS932.nr
Normal file
402
jdk/make/tools/CharsetMapping/MS932.nr
Normal 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
|
24099
jdk/make/tools/CharsetMapping/MS936.map
Normal file
24099
jdk/make/tools/CharsetMapping/MS936.map
Normal file
File diff suppressed because it is too large
Load diff
17384
jdk/make/tools/CharsetMapping/MS949.map
Normal file
17384
jdk/make/tools/CharsetMapping/MS949.map
Normal file
File diff suppressed because it is too large
Load diff
19886
jdk/make/tools/CharsetMapping/MS950.map
Normal file
19886
jdk/make/tools/CharsetMapping/MS950.map
Normal file
File diff suppressed because it is too large
Load diff
18
jdk/make/tools/CharsetMapping/MS950.nr
Normal file
18
jdk/make/tools/CharsetMapping/MS950.nr
Normal 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
|
|
@ -1,6 +1,14 @@
|
||||||
#
|
#
|
||||||
#clzName csName hisName dbtype pkg ascii b1min b1max b2min b2max
|
#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
|
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
|
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
|
IBM930 x-IBM930 Cp930 ebcdic sun.nio.cs.ext false 0x40 0x7f 0x40 0xfe
|
||||||
|
|
|
@ -35,7 +35,7 @@ import static build.tools.charsetmapping.CharsetMapping.*;
|
||||||
|
|
||||||
public class GenerateDBCS {
|
public class GenerateDBCS {
|
||||||
// pattern used by this class to read in mapping table
|
// 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 {
|
public static void genDBCS(String args[]) throws Exception {
|
||||||
|
|
||||||
Scanner s = new Scanner(new File(args[0], args[2]));
|
Scanner s = new Scanner(new File(args[0], args[2]));
|
||||||
|
@ -260,10 +260,12 @@ public class GenerateDBCS {
|
||||||
"StandardCharsets.aliases_" + clzName :
|
"StandardCharsets.aliases_" + clzName :
|
||||||
"ExtendedCharsets.aliasesFor(\"" + csName + "\")")
|
"ExtendedCharsets.aliasesFor(\"" + csName + "\")")
|
||||||
.replace("$NAME_CS$" , csName)
|
.replace("$NAME_CS$" , csName)
|
||||||
.replace("$CONTAINS$", isASCII ?
|
.replace("$CONTAINS$",
|
||||||
" return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof "
|
"MS932".equals(clzName)?
|
||||||
+ clzName + "));":
|
"return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof JIS_X_0201) || (cs instanceof " + clzName + "));":
|
||||||
" return (cs instanceof " + clzName + ");")
|
(isASCII ?
|
||||||
|
"return ((cs.name().equals(\"US-ASCII\")) || (cs instanceof " + clzName + "));":
|
||||||
|
"return (cs instanceof " + clzName + ");"))
|
||||||
.replace("$HISTORICALNAME$",
|
.replace("$HISTORICALNAME$",
|
||||||
(hisName == null)? "" :
|
(hisName == null)? "" :
|
||||||
" public String historicalName() { return \"" + hisName + "\"; }")
|
" public String historicalName() { return \"" + hisName + "\"; }")
|
||||||
|
|
|
@ -683,10 +683,16 @@ static void
|
||||||
SetClassPath(const char *s)
|
SetClassPath(const char *s)
|
||||||
{
|
{
|
||||||
char *def;
|
char *def;
|
||||||
|
const char *orig = s;
|
||||||
|
static const char format[] = "-Djava.class.path=%s";
|
||||||
s = JLI_WildcardExpandClasspath(s);
|
s = JLI_WildcardExpandClasspath(s);
|
||||||
def = JLI_MemAlloc(JLI_StrLen(s) + 40);
|
def = JLI_MemAlloc(sizeof(format)
|
||||||
sprintf(def, "-Djava.class.path=%s", s);
|
- 2 /* strlen("%s") */
|
||||||
|
+ JLI_StrLen(s));
|
||||||
|
sprintf(def, format, s);
|
||||||
AddOption(def, NULL);
|
AddOption(def, NULL);
|
||||||
|
if (s != orig)
|
||||||
|
JLI_MemFree((char *) s);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -506,6 +506,19 @@ public class BMPImageWriter extends ImageWriter implements BMPConstants {
|
||||||
|
|
||||||
writeFileHeader(fileSize, offset);
|
writeFileHeader(fileSize, offset);
|
||||||
|
|
||||||
|
/* According to MSDN description, the top-down image layout
|
||||||
|
* is allowed only if compression type is BI_RGB or BI_BITFIELDS.
|
||||||
|
* Images with any other compression type must be wrote in the
|
||||||
|
* bottom-up layout.
|
||||||
|
*/
|
||||||
|
if (compressionType == BMPConstants.BI_RGB ||
|
||||||
|
compressionType == BMPConstants.BI_BITFIELDS)
|
||||||
|
{
|
||||||
|
isTopDown = bmpParam.isTopDown();
|
||||||
|
} else {
|
||||||
|
isTopDown = false;
|
||||||
|
}
|
||||||
|
|
||||||
writeInfoHeader(headerSize, bitsPerPixel);
|
writeInfoHeader(headerSize, bitsPerPixel);
|
||||||
|
|
||||||
// compression
|
// compression
|
||||||
|
@ -588,8 +601,6 @@ public class BMPImageWriter extends ImageWriter implements BMPConstants {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
isTopDown = bmpParam.isTopDown();
|
|
||||||
|
|
||||||
int maxBandOffset = bandOffsets[0];
|
int maxBandOffset = bandOffsets[0];
|
||||||
for (int i = 1; i < bandOffsets.length; i++)
|
for (int i = 1; i < bandOffsets.length; i++)
|
||||||
if (bandOffsets[i] > maxBandOffset)
|
if (bandOffsets[i] > maxBandOffset)
|
||||||
|
@ -1299,7 +1310,7 @@ public class BMPImageWriter extends ImageWriter implements BMPConstants {
|
||||||
stream.writeInt(w);
|
stream.writeInt(w);
|
||||||
|
|
||||||
// height
|
// height
|
||||||
stream.writeInt(h);
|
stream.writeInt(isTopDown ? -h : h);
|
||||||
|
|
||||||
// number of planes
|
// number of planes
|
||||||
stream.writeShort(1);
|
stream.writeShort(1);
|
||||||
|
|
|
@ -27,6 +27,8 @@ package com.sun.imageio.plugins.common;
|
||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
|
import java.io.IOException;
|
||||||
|
import javax.imageio.stream.ImageInputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class contains utility methods that may be useful to ImageReader
|
* This class contains utility methods that may be useful to ImageReader
|
||||||
|
@ -198,4 +200,17 @@ public class ReaderUtil {
|
||||||
vals, 1);
|
vals, 1);
|
||||||
return vals;
|
return vals;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int readMultiByteInteger(ImageInputStream iis)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
int value = iis.readByte();
|
||||||
|
int result = value & 0x7f;
|
||||||
|
while((value & 0x80) == 0x80) {
|
||||||
|
result <<= 7;
|
||||||
|
value = iis.readByte();
|
||||||
|
result |= (value & 0x7f);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -215,17 +215,21 @@ public class JPEG {
|
||||||
public static class JCS {
|
public static class JCS {
|
||||||
public static final ColorSpace sRGB =
|
public static final ColorSpace sRGB =
|
||||||
ColorSpace.getInstance(ColorSpace.CS_sRGB);
|
ColorSpace.getInstance(ColorSpace.CS_sRGB);
|
||||||
public static final ColorSpace YCC;
|
|
||||||
|
|
||||||
static {
|
private static ColorSpace YCC = null;
|
||||||
ColorSpace cs = null;
|
private static boolean yccInited = false;
|
||||||
try {
|
|
||||||
cs = ColorSpace.getInstance(ColorSpace.CS_PYCC);
|
public static ColorSpace getYCC() {
|
||||||
} catch (IllegalArgumentException e) {
|
if (!yccInited) {
|
||||||
// PYCC.pf may not always be installed
|
try {
|
||||||
} finally {
|
YCC = ColorSpace.getInstance(ColorSpace.CS_PYCC);
|
||||||
YCC = cs;
|
} catch (IllegalArgumentException e) {
|
||||||
|
// PYCC.pf may not always be installed
|
||||||
|
} finally {
|
||||||
|
yccInited = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return YCC;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@ import java.awt.Rectangle;
|
||||||
import java.awt.color.ColorSpace;
|
import java.awt.color.ColorSpace;
|
||||||
import java.awt.color.ICC_Profile;
|
import java.awt.color.ICC_Profile;
|
||||||
import java.awt.color.ICC_ColorSpace;
|
import java.awt.color.ICC_ColorSpace;
|
||||||
|
import java.awt.color.CMMException;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.awt.image.Raster;
|
import java.awt.image.Raster;
|
||||||
import java.awt.image.WritableRaster;
|
import java.awt.image.WritableRaster;
|
||||||
|
@ -53,6 +54,7 @@ import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.NoSuchElementException;
|
||||||
|
|
||||||
import sun.java2d.Disposer;
|
import sun.java2d.Disposer;
|
||||||
import sun.java2d.DisposerRecord;
|
import sun.java2d.DisposerRecord;
|
||||||
|
@ -215,51 +217,6 @@ public class JPEGImageReader extends ImageReader {
|
||||||
/** The DisposerRecord that handles the actual disposal of this reader. */
|
/** The DisposerRecord that handles the actual disposal of this reader. */
|
||||||
private DisposerRecord disposerRecord;
|
private DisposerRecord disposerRecord;
|
||||||
|
|
||||||
/**
|
|
||||||
* Maintain an array of the default image types corresponding to the
|
|
||||||
* various supported IJG colorspace codes.
|
|
||||||
*/
|
|
||||||
private static final ImageTypeSpecifier [] defaultTypes =
|
|
||||||
new ImageTypeSpecifier [JPEG.NUM_JCS_CODES];
|
|
||||||
|
|
||||||
static {
|
|
||||||
defaultTypes[JPEG.JCS_GRAYSCALE] =
|
|
||||||
ImageTypeSpecifier.createFromBufferedImageType
|
|
||||||
(BufferedImage.TYPE_BYTE_GRAY);
|
|
||||||
defaultTypes[JPEG.JCS_RGB] =
|
|
||||||
ImageTypeSpecifier.createInterleaved
|
|
||||||
(JPEG.JCS.sRGB,
|
|
||||||
JPEG.bOffsRGB,
|
|
||||||
DataBuffer.TYPE_BYTE,
|
|
||||||
false,
|
|
||||||
false);
|
|
||||||
defaultTypes[JPEG.JCS_RGBA] =
|
|
||||||
ImageTypeSpecifier.createPacked
|
|
||||||
(JPEG.JCS.sRGB,
|
|
||||||
0xff000000,
|
|
||||||
0x00ff0000,
|
|
||||||
0x0000ff00,
|
|
||||||
0x000000ff,
|
|
||||||
DataBuffer.TYPE_INT,
|
|
||||||
false);
|
|
||||||
if (JPEG.JCS.YCC != null) {
|
|
||||||
defaultTypes[JPEG.JCS_YCC] =
|
|
||||||
ImageTypeSpecifier.createInterleaved
|
|
||||||
(JPEG.JCS.YCC,
|
|
||||||
JPEG.bandOffsets[2],
|
|
||||||
DataBuffer.TYPE_BYTE,
|
|
||||||
false,
|
|
||||||
false);
|
|
||||||
defaultTypes[JPEG.JCS_YCCA] =
|
|
||||||
ImageTypeSpecifier.createInterleaved
|
|
||||||
(JPEG.JCS.YCC,
|
|
||||||
JPEG.bandOffsets[3],
|
|
||||||
DataBuffer.TYPE_BYTE,
|
|
||||||
true,
|
|
||||||
false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Sets up static C structures. */
|
/** Sets up static C structures. */
|
||||||
private static native void initReaderIDs(Class iisClass,
|
private static native void initReaderIDs(Class iisClass,
|
||||||
Class qTableClass,
|
Class qTableClass,
|
||||||
|
@ -673,6 +630,17 @@ public class JPEGImageReader extends ImageReader {
|
||||||
!java.util.Arrays.equals(oldData, newData))
|
!java.util.Arrays.equals(oldData, newData))
|
||||||
{
|
{
|
||||||
iccCS = new ICC_ColorSpace(newProfile);
|
iccCS = new ICC_ColorSpace(newProfile);
|
||||||
|
// verify new color space
|
||||||
|
try {
|
||||||
|
float[] colors = iccCS.fromRGB(new float[] {1f, 0f, 0f});
|
||||||
|
} catch (CMMException e) {
|
||||||
|
/*
|
||||||
|
* Embedded profile seems to be corrupted.
|
||||||
|
* Ignore this profile.
|
||||||
|
*/
|
||||||
|
iccCS = null;
|
||||||
|
warningOccurred(WARNING_IGNORE_INVALID_ICC);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -706,11 +674,11 @@ public class JPEGImageReader extends ImageReader {
|
||||||
* Return an ImageTypeSpecifier corresponding to the given
|
* Return an ImageTypeSpecifier corresponding to the given
|
||||||
* color space code, or null if the color space is unsupported.
|
* color space code, or null if the color space is unsupported.
|
||||||
*/
|
*/
|
||||||
private ImageTypeSpecifier getImageType(int code) {
|
private ImageTypeProducer getImageType(int code) {
|
||||||
ImageTypeSpecifier ret = null;
|
ImageTypeProducer ret = null;
|
||||||
|
|
||||||
if ((code > 0) && (code < JPEG.NUM_JCS_CODES)) {
|
if ((code > 0) && (code < JPEG.NUM_JCS_CODES)) {
|
||||||
ret = defaultTypes[code];
|
ret = ImageTypeProducer.getTypeProducer(code);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -724,7 +692,7 @@ public class JPEGImageReader extends ImageReader {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns null if it can't be represented
|
// Returns null if it can't be represented
|
||||||
return getImageType(colorSpaceCode);
|
return getImageType(colorSpaceCode).getType();
|
||||||
} finally {
|
} finally {
|
||||||
clearThreadLock();
|
clearThreadLock();
|
||||||
}
|
}
|
||||||
|
@ -758,13 +726,13 @@ public class JPEGImageReader extends ImageReader {
|
||||||
|
|
||||||
// Get the raw ITS, if there is one. Note that this
|
// Get the raw ITS, if there is one. Note that this
|
||||||
// won't always be the same as the default.
|
// won't always be the same as the default.
|
||||||
ImageTypeSpecifier raw = getImageType(colorSpaceCode);
|
ImageTypeProducer raw = getImageType(colorSpaceCode);
|
||||||
|
|
||||||
// Given the encoded colorspace, build a list of ITS's
|
// Given the encoded colorspace, build a list of ITS's
|
||||||
// representing outputs you could handle starting
|
// representing outputs you could handle starting
|
||||||
// with the default.
|
// with the default.
|
||||||
|
|
||||||
ArrayList list = new ArrayList(1);
|
ArrayList<ImageTypeProducer> list = new ArrayList<ImageTypeProducer>(1);
|
||||||
|
|
||||||
switch (colorSpaceCode) {
|
switch (colorSpaceCode) {
|
||||||
case JPEG.JCS_GRAYSCALE:
|
case JPEG.JCS_GRAYSCALE:
|
||||||
|
@ -774,9 +742,7 @@ public class JPEGImageReader extends ImageReader {
|
||||||
case JPEG.JCS_RGB:
|
case JPEG.JCS_RGB:
|
||||||
list.add(raw);
|
list.add(raw);
|
||||||
list.add(getImageType(JPEG.JCS_GRAYSCALE));
|
list.add(getImageType(JPEG.JCS_GRAYSCALE));
|
||||||
if (JPEG.JCS.YCC != null) {
|
list.add(getImageType(JPEG.JCS_YCC));
|
||||||
list.add(getImageType(JPEG.JCS_YCC));
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case JPEG.JCS_RGBA:
|
case JPEG.JCS_RGBA:
|
||||||
list.add(raw);
|
list.add(raw);
|
||||||
|
@ -801,19 +767,21 @@ public class JPEGImageReader extends ImageReader {
|
||||||
list.add(getImageType(JPEG.JCS_RGB));
|
list.add(getImageType(JPEG.JCS_RGB));
|
||||||
|
|
||||||
if (iccCS != null) {
|
if (iccCS != null) {
|
||||||
list.add(ImageTypeSpecifier.createInterleaved
|
list.add(new ImageTypeProducer() {
|
||||||
|
protected ImageTypeSpecifier produce() {
|
||||||
|
return ImageTypeSpecifier.createInterleaved
|
||||||
(iccCS,
|
(iccCS,
|
||||||
JPEG.bOffsRGB, // Assume it's for RGB
|
JPEG.bOffsRGB, // Assume it's for RGB
|
||||||
DataBuffer.TYPE_BYTE,
|
DataBuffer.TYPE_BYTE,
|
||||||
false,
|
false,
|
||||||
false));
|
false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
list.add(getImageType(JPEG.JCS_GRAYSCALE));
|
list.add(getImageType(JPEG.JCS_GRAYSCALE));
|
||||||
if (JPEG.JCS.YCC != null) { // Might be null if PYCC.pf not installed
|
list.add(getImageType(JPEG.JCS_YCC));
|
||||||
list.add(getImageType(JPEG.JCS_YCC));
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case JPEG.JCS_YCbCrA: // Default is to convert to RGBA
|
case JPEG.JCS_YCbCrA: // Default is to convert to RGBA
|
||||||
// As there is no YCbCr ColorSpace, we can't support
|
// As there is no YCbCr ColorSpace, we can't support
|
||||||
|
@ -822,7 +790,7 @@ public class JPEGImageReader extends ImageReader {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return list.iterator();
|
return new ImageTypeIterator(list.iterator());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -872,6 +840,10 @@ public class JPEGImageReader extends ImageReader {
|
||||||
if (csType == ColorSpace.TYPE_RGB) { // We want RGB
|
if (csType == ColorSpace.TYPE_RGB) { // We want RGB
|
||||||
// IJG can do this for us more efficiently
|
// IJG can do this for us more efficiently
|
||||||
setOutColorSpace(structPointer, JPEG.JCS_RGB);
|
setOutColorSpace(structPointer, JPEG.JCS_RGB);
|
||||||
|
// Update java state according to changes
|
||||||
|
// in the native part of decoder.
|
||||||
|
outColorSpaceCode = JPEG.JCS_RGB;
|
||||||
|
numComponents = 3;
|
||||||
} else if (csType != ColorSpace.TYPE_GRAY) {
|
} else if (csType != ColorSpace.TYPE_GRAY) {
|
||||||
throw new IIOException("Incompatible color conversion");
|
throw new IIOException("Incompatible color conversion");
|
||||||
}
|
}
|
||||||
|
@ -881,6 +853,10 @@ public class JPEGImageReader extends ImageReader {
|
||||||
if (colorSpaceCode == JPEG.JCS_YCbCr) {
|
if (colorSpaceCode == JPEG.JCS_YCbCr) {
|
||||||
// If the jpeg space is YCbCr, IJG can do it
|
// If the jpeg space is YCbCr, IJG can do it
|
||||||
setOutColorSpace(structPointer, JPEG.JCS_GRAYSCALE);
|
setOutColorSpace(structPointer, JPEG.JCS_GRAYSCALE);
|
||||||
|
// Update java state according to changes
|
||||||
|
// in the native part of decoder.
|
||||||
|
outColorSpaceCode = JPEG.JCS_GRAYSCALE;
|
||||||
|
numComponents = 1;
|
||||||
}
|
}
|
||||||
} else if ((iccCS != null) &&
|
} else if ((iccCS != null) &&
|
||||||
(cm.getNumComponents() == numComponents) &&
|
(cm.getNumComponents() == numComponents) &&
|
||||||
|
@ -906,20 +882,26 @@ public class JPEGImageReader extends ImageReader {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case JPEG.JCS_YCC:
|
case JPEG.JCS_YCC:
|
||||||
if (JPEG.JCS.YCC == null) { // We can't do YCC at all
|
{
|
||||||
throw new IIOException("Incompatible color conversion");
|
ColorSpace YCC = JPEG.JCS.getYCC();
|
||||||
}
|
if (YCC == null) { // We can't do YCC at all
|
||||||
if ((cs != JPEG.JCS.YCC) &&
|
throw new IIOException("Incompatible color conversion");
|
||||||
(cm.getNumComponents() == numComponents)) {
|
}
|
||||||
convert = new ColorConvertOp(JPEG.JCS.YCC, cs, null);
|
if ((cs != YCC) &&
|
||||||
|
(cm.getNumComponents() == numComponents)) {
|
||||||
|
convert = new ColorConvertOp(YCC, cs, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case JPEG.JCS_YCCA:
|
case JPEG.JCS_YCCA:
|
||||||
// No conversions available; image must be YCCA
|
{
|
||||||
if ((JPEG.JCS.YCC == null) || // We can't do YCC at all
|
ColorSpace YCC = JPEG.JCS.getYCC();
|
||||||
(cs != JPEG.JCS.YCC) ||
|
// No conversions available; image must be YCCA
|
||||||
(cm.getNumComponents() != numComponents)) {
|
if ((YCC == null) || // We can't do YCC at all
|
||||||
throw new IIOException("Incompatible color conversion");
|
(cs != YCC) ||
|
||||||
|
(cm.getNumComponents() != numComponents)) {
|
||||||
|
throw new IIOException("Incompatible color conversion");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1554,3 +1536,140 @@ public class JPEGImageReader extends ImageReader {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An internal helper class that wraps producer's iterator
|
||||||
|
* and extracts specifier instances on demand.
|
||||||
|
*/
|
||||||
|
class ImageTypeIterator implements Iterator<ImageTypeSpecifier> {
|
||||||
|
private Iterator<ImageTypeProducer> producers;
|
||||||
|
private ImageTypeSpecifier theNext = null;
|
||||||
|
|
||||||
|
public ImageTypeIterator(Iterator<ImageTypeProducer> producers) {
|
||||||
|
this.producers = producers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasNext() {
|
||||||
|
if (theNext != null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!producers.hasNext()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
do {
|
||||||
|
theNext = producers.next().getType();
|
||||||
|
} while (theNext == null && producers.hasNext());
|
||||||
|
|
||||||
|
return (theNext != null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ImageTypeSpecifier next() {
|
||||||
|
if (theNext != null || hasNext()) {
|
||||||
|
ImageTypeSpecifier t = theNext;
|
||||||
|
theNext = null;
|
||||||
|
return t;
|
||||||
|
} else {
|
||||||
|
throw new NoSuchElementException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void remove() {
|
||||||
|
producers.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An internal helper class that provides means for deferred creation
|
||||||
|
* of ImageTypeSpecifier instance required to describe available
|
||||||
|
* destination types.
|
||||||
|
*
|
||||||
|
* This implementation only supports standard
|
||||||
|
* jpeg color spaces (defined by corresponding JCS color space code).
|
||||||
|
*
|
||||||
|
* To support other color spaces one can override produce() method to
|
||||||
|
* return custom instance of ImageTypeSpecifier.
|
||||||
|
*/
|
||||||
|
class ImageTypeProducer {
|
||||||
|
|
||||||
|
private ImageTypeSpecifier type = null;
|
||||||
|
boolean failed = false;
|
||||||
|
private int csCode;
|
||||||
|
|
||||||
|
public ImageTypeProducer(int csCode) {
|
||||||
|
this.csCode = csCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ImageTypeProducer() {
|
||||||
|
csCode = -1; // undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized ImageTypeSpecifier getType() {
|
||||||
|
if (!failed && type == null) {
|
||||||
|
try {
|
||||||
|
type = produce();
|
||||||
|
} catch (Throwable e) {
|
||||||
|
failed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final ImageTypeProducer [] defaultTypes =
|
||||||
|
new ImageTypeProducer [JPEG.NUM_JCS_CODES];
|
||||||
|
|
||||||
|
public synchronized static ImageTypeProducer getTypeProducer(int csCode) {
|
||||||
|
if (csCode < 0 || csCode >= JPEG.NUM_JCS_CODES) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (defaultTypes[csCode] == null) {
|
||||||
|
defaultTypes[csCode] = new ImageTypeProducer(csCode);
|
||||||
|
}
|
||||||
|
return defaultTypes[csCode];
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ImageTypeSpecifier produce() {
|
||||||
|
switch (csCode) {
|
||||||
|
case JPEG.JCS_GRAYSCALE:
|
||||||
|
return ImageTypeSpecifier.createFromBufferedImageType
|
||||||
|
(BufferedImage.TYPE_BYTE_GRAY);
|
||||||
|
case JPEG.JCS_RGB:
|
||||||
|
return ImageTypeSpecifier.createInterleaved(JPEG.JCS.sRGB,
|
||||||
|
JPEG.bOffsRGB,
|
||||||
|
DataBuffer.TYPE_BYTE,
|
||||||
|
false,
|
||||||
|
false);
|
||||||
|
case JPEG.JCS_RGBA:
|
||||||
|
return ImageTypeSpecifier.createPacked(JPEG.JCS.sRGB,
|
||||||
|
0xff000000,
|
||||||
|
0x00ff0000,
|
||||||
|
0x0000ff00,
|
||||||
|
0x000000ff,
|
||||||
|
DataBuffer.TYPE_INT,
|
||||||
|
false);
|
||||||
|
case JPEG.JCS_YCC:
|
||||||
|
if (JPEG.JCS.getYCC() != null) {
|
||||||
|
return ImageTypeSpecifier.createInterleaved(
|
||||||
|
JPEG.JCS.getYCC(),
|
||||||
|
JPEG.bandOffsets[2],
|
||||||
|
DataBuffer.TYPE_BYTE,
|
||||||
|
false,
|
||||||
|
false);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
case JPEG.JCS_YCCA:
|
||||||
|
if (JPEG.JCS.getYCC() != null) {
|
||||||
|
return ImageTypeSpecifier.createInterleaved(
|
||||||
|
JPEG.JCS.getYCC(),
|
||||||
|
JPEG.bandOffsets[3],
|
||||||
|
DataBuffer.TYPE_BYTE,
|
||||||
|
true,
|
||||||
|
false);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -812,7 +812,7 @@ public class JPEGImageWriter extends ImageWriter {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ColorSpace.TYPE_3CLR:
|
case ColorSpace.TYPE_3CLR:
|
||||||
if (cs == JPEG.JCS.YCC) {
|
if (cs == JPEG.JCS.getYCC()) {
|
||||||
if (!alpha) {
|
if (!alpha) {
|
||||||
if (jfif != null) {
|
if (jfif != null) {
|
||||||
convertTosRGB = true;
|
convertTosRGB = true;
|
||||||
|
@ -1494,7 +1494,7 @@ public class JPEGImageWriter extends ImageWriter {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ColorSpace.TYPE_3CLR:
|
case ColorSpace.TYPE_3CLR:
|
||||||
if (cs == JPEG.JCS.YCC) {
|
if (cs == JPEG.JCS.getYCC()) {
|
||||||
if (alpha) {
|
if (alpha) {
|
||||||
retval = JPEG.JCS_YCCA;
|
retval = JPEG.JCS_YCCA;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1533,7 +1533,7 @@ public class JPEGImageWriter extends ImageWriter {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ColorSpace.TYPE_3CLR:
|
case ColorSpace.TYPE_3CLR:
|
||||||
if (cs == JPEG.JCS.YCC) {
|
if (cs == JPEG.JCS.getYCC()) {
|
||||||
if (alpha) {
|
if (alpha) {
|
||||||
retval = JPEG.JCS_YCCA;
|
retval = JPEG.JCS_YCCA;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1579,7 +1579,7 @@ public class JPEGImageWriter extends ImageWriter {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ColorSpace.TYPE_3CLR:
|
case ColorSpace.TYPE_3CLR:
|
||||||
if (cs == JPEG.JCS.YCC) {
|
if (cs == JPEG.JCS.getYCC()) {
|
||||||
if (alpha) {
|
if (alpha) {
|
||||||
retval = JPEG.JCS_YCCA;
|
retval = JPEG.JCS_YCCA;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -490,7 +490,7 @@ public class JPEGMetadata extends IIOMetadata implements Cloneable {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ColorSpace.TYPE_3CLR:
|
case ColorSpace.TYPE_3CLR:
|
||||||
if (cs == JPEG.JCS.YCC) {
|
if (cs == JPEG.JCS.getYCC()) {
|
||||||
wantJFIF = false;
|
wantJFIF = false;
|
||||||
componentIDs[0] = (byte) 'Y';
|
componentIDs[0] = (byte) 'Y';
|
||||||
componentIDs[1] = (byte) 'C';
|
componentIDs[1] = (byte) 'C';
|
||||||
|
|
|
@ -45,6 +45,7 @@ import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
import com.sun.imageio.plugins.common.I18N;
|
import com.sun.imageio.plugins.common.I18N;
|
||||||
|
import com.sun.imageio.plugins.common.ReaderUtil;
|
||||||
|
|
||||||
/** This class is the Java Image IO plugin reader for WBMP images.
|
/** This class is the Java Image IO plugin reader for WBMP images.
|
||||||
* It may subsample the image, clip the image,
|
* It may subsample the image, clip the image,
|
||||||
|
@ -141,11 +142,11 @@ public class WBMPImageReader extends ImageReader {
|
||||||
metadata.wbmpType = wbmpType;
|
metadata.wbmpType = wbmpType;
|
||||||
|
|
||||||
// Read image width
|
// Read image width
|
||||||
width = readMultiByteInteger();
|
width = ReaderUtil.readMultiByteInteger(iis);
|
||||||
metadata.width = width;
|
metadata.width = width;
|
||||||
|
|
||||||
// Read image height
|
// Read image height
|
||||||
height = readMultiByteInteger();
|
height = ReaderUtil.readMultiByteInteger(iis);
|
||||||
metadata.height = height;
|
metadata.height = height;
|
||||||
|
|
||||||
gotHeader = true;
|
gotHeader = true;
|
||||||
|
@ -311,17 +312,6 @@ public class WBMPImageReader extends ImageReader {
|
||||||
gotHeader = false;
|
gotHeader = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int readMultiByteInteger() throws IOException {
|
|
||||||
int value = iis.readByte();
|
|
||||||
int result = value & 0x7f;
|
|
||||||
while((value & 0x80) == 0x80) {
|
|
||||||
result <<= 7;
|
|
||||||
value = iis.readByte();
|
|
||||||
result |= (value & 0x7f);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This method verifies that given byte is valid wbmp type marker.
|
* This method verifies that given byte is valid wbmp type marker.
|
||||||
* At the moment only 0x0 marker is described by wbmp spec.
|
* At the moment only 0x0 marker is described by wbmp spec.
|
||||||
|
|
|
@ -33,9 +33,13 @@ import javax.imageio.spi.ServiceRegistry;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import javax.imageio.ImageReader;
|
import javax.imageio.ImageReader;
|
||||||
import javax.imageio.IIOException;
|
import javax.imageio.IIOException;
|
||||||
|
import com.sun.imageio.plugins.common.ReaderUtil;
|
||||||
|
|
||||||
public class WBMPImageReaderSpi extends ImageReaderSpi {
|
public class WBMPImageReaderSpi extends ImageReaderSpi {
|
||||||
|
|
||||||
|
private static final int MAX_WBMP_WIDTH = 1024;
|
||||||
|
private static final int MAX_WBMP_HEIGHT = 768;
|
||||||
|
|
||||||
private static String [] writerSpiNames =
|
private static String [] writerSpiNames =
|
||||||
{"com.sun.imageio.plugins.wbmp.WBMPImageWriterSpi"};
|
{"com.sun.imageio.plugins.wbmp.WBMPImageWriterSpi"};
|
||||||
private static String[] formatNames = {"wbmp", "WBMP"};
|
private static String[] formatNames = {"wbmp", "WBMP"};
|
||||||
|
@ -79,16 +83,44 @@ public class WBMPImageReaderSpi extends ImageReaderSpi {
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageInputStream stream = (ImageInputStream)source;
|
ImageInputStream stream = (ImageInputStream)source;
|
||||||
byte[] b = new byte[3];
|
|
||||||
|
|
||||||
stream.mark();
|
stream.mark();
|
||||||
stream.readFully(b);
|
int type = stream.readByte(); // TypeField
|
||||||
|
int fixHeaderField = stream.readByte();
|
||||||
|
// check WBMP "header"
|
||||||
|
if (type != 0 || fixHeaderField != 0) {
|
||||||
|
// while WBMP reader does not support ext WBMP headers
|
||||||
|
stream.reset();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int width = ReaderUtil.readMultiByteInteger(stream);
|
||||||
|
int height = ReaderUtil.readMultiByteInteger(stream);
|
||||||
|
// check image dimension
|
||||||
|
if (width <= 0 || height <= 0) {
|
||||||
|
stream.reset();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
long dataLength = stream.length();
|
||||||
|
if (dataLength == -1) {
|
||||||
|
// We can't verify that amount of data in the stream
|
||||||
|
// corresponds to image dimension because we do not know
|
||||||
|
// the length of the data stream.
|
||||||
|
// Assuming that wbmp image are used for mobile devices,
|
||||||
|
// let's introduce an upper limit for image dimension.
|
||||||
|
// In case if exact amount of raster data is unknown,
|
||||||
|
// let's reject images with dimension above the limit.
|
||||||
|
stream.reset();
|
||||||
|
return (width < MAX_WBMP_WIDTH) && (height < MAX_WBMP_HEIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
dataLength -= stream.getStreamPosition();
|
||||||
stream.reset();
|
stream.reset();
|
||||||
|
|
||||||
return ((b[0] == (byte)0) && // TypeField == 0
|
long scanSize = (width / 8) + ((width % 8) == 0 ? 0 : 1);
|
||||||
b[1] == 0 && // FixHeaderField == 0xxx00000; not support ext header
|
|
||||||
((b[2] & 0x8f) != 0 || (b[2] & 0x7f) != 0)); // First width byte
|
return (dataLength == scanSize * height);
|
||||||
//XXX: b[2] & 0x8f) != 0 for the bug in Sony Ericsson encoder.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ImageReader createReaderInstance(Object extension)
|
public ImageReader createReaderInstance(Object extension)
|
||||||
|
|
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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.EventQueueDelegate;
|
||||||
import sun.awt.AppContext;
|
import sun.awt.AppContext;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.WeakHashMap;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
import java.awt.AWTEvent;
|
import java.awt.AWTEvent;
|
||||||
import java.awt.EventQueue;
|
import java.awt.EventQueue;
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
|
import java.awt.Container;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.RepaintManager;
|
import javax.swing.RepaintManager;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A collection of utility methods for Swing.
|
* A collection of utility methods for Swing.
|
||||||
|
@ -69,6 +73,43 @@ public class SwingUtilities3 {
|
||||||
repaintManager);
|
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.
|
* Returns delegate {@code RepaintManager} for {@code component} hierarchy.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* 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();
|
isSunDesktop = val.booleanValue();
|
||||||
}
|
}
|
||||||
if (isSunDesktop) {
|
if (isSunDesktop && !sun.java2d.SunGraphicsEnvironment.isOpenSolaris) {
|
||||||
isSunCJK = true;
|
isSunCJK = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,7 @@ import java.awt.peer.LightweightPeer;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
import sun.awt.AWTAccessor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The root event class for all AWT events.
|
* The root event class for all AWT events.
|
||||||
|
@ -230,6 +231,12 @@ public abstract class AWTEvent extends EventObject {
|
||||||
if (!GraphicsEnvironment.isHeadless()) {
|
if (!GraphicsEnvironment.isHeadless()) {
|
||||||
initIDs();
|
initIDs();
|
||||||
}
|
}
|
||||||
|
AWTAccessor.setAWTEventAccessor(
|
||||||
|
new AWTAccessor.AWTEventAccessor() {
|
||||||
|
public void setPosted(AWTEvent ev) {
|
||||||
|
ev.isPosted = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static synchronized Field get_InputEvent_CanAccessSystemClipboard() {
|
private static synchronized Field get_InputEvent_CanAccessSystemClipboard() {
|
||||||
|
|
|
@ -861,6 +861,17 @@ public abstract class Component implements ImageObserver, MenuContainer,
|
||||||
public boolean isVisible_NoClientCode(Component comp) {
|
public boolean isVisible_NoClientCode(Component comp) {
|
||||||
return comp.isVisible_NoClientCode();
|
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 ********************************
|
// ****************** 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,
|
// Note that the method is overriden in the Window class,
|
||||||
// a window doesn't need to be updated in the Z-order.
|
// a window doesn't need to be updated in the Z-order.
|
||||||
void updateZOrder() {
|
void updateZOrder() {
|
||||||
|
|
|
@ -425,15 +425,13 @@ public class ContainerOrderFocusTraversalPolicy extends FocusTraversalPolicy
|
||||||
}
|
}
|
||||||
if (log.isLoggable(Level.FINE)) log.fine("### Cycle is " + cycle);
|
if (log.isLoggable(Level.FINE)) log.fine("### Cycle is " + cycle);
|
||||||
|
|
||||||
for (int i = 0; i < cycle.size(); i++) {
|
for (Component comp : cycle) {
|
||||||
Component comp = cycle.get(i);
|
|
||||||
if (accept(comp)) {
|
if (accept(comp)) {
|
||||||
return comp;
|
return comp;
|
||||||
} else if (comp instanceof Container && comp != aContainer) {
|
} else if (comp != aContainer &&
|
||||||
Container cont = (Container)comp;
|
(comp = getComponentDownCycle(comp, FORWARD_TRAVERSAL)) != null)
|
||||||
if (cont.isFocusTraversalPolicyProvider()) {
|
{
|
||||||
return cont.getFocusTraversalPolicy().getDefaultComponent(cont);
|
return comp;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -262,12 +262,6 @@ public class Dialog extends Window {
|
||||||
TOOLKIT_EXCLUDE
|
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*/
|
/* operations with this list should be synchronized on tree lock*/
|
||||||
transient static IdentityArrayList<Dialog> modalDialogs = new IdentityArrayList<Dialog>();
|
transient static IdentityArrayList<Dialog> modalDialogs = new IdentityArrayList<Dialog>();
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,7 @@ import sun.awt.AWTAutoShutdown;
|
||||||
import sun.awt.PeerEvent;
|
import sun.awt.PeerEvent;
|
||||||
import sun.awt.SunToolkit;
|
import sun.awt.SunToolkit;
|
||||||
import sun.awt.EventQueueItem;
|
import sun.awt.EventQueueItem;
|
||||||
|
import sun.awt.AWTAccessor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <code>EventQueue</code> is a platform-independent class
|
* <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");
|
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() {
|
public EventQueue() {
|
||||||
for (int i = 0; i < NUM_PRIORITIES; i++) {
|
for (int i = 0; i < NUM_PRIORITIES; i++) {
|
||||||
queues[i] = new Queue();
|
queues[i] = new Queue();
|
||||||
|
|
|
@ -445,18 +445,19 @@ public class Font implements java.io.Serializable
|
||||||
*/
|
*/
|
||||||
private AttributeValues getAttributeValues() {
|
private AttributeValues getAttributeValues() {
|
||||||
if (values == null) {
|
if (values == null) {
|
||||||
values = new AttributeValues();
|
AttributeValues valuesTmp = new AttributeValues();
|
||||||
values.setFamily(name);
|
valuesTmp.setFamily(name);
|
||||||
values.setSize(pointSize); // expects the float value.
|
valuesTmp.setSize(pointSize); // expects the float value.
|
||||||
|
|
||||||
if ((style & BOLD) != 0) {
|
if ((style & BOLD) != 0) {
|
||||||
values.setWeight(2); // WEIGHT_BOLD
|
valuesTmp.setWeight(2); // WEIGHT_BOLD
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((style & ITALIC) != 0) {
|
if ((style & ITALIC) != 0) {
|
||||||
values.setPosture(.2f); // POSTURE_OBLIQUE
|
valuesTmp.setPosture(.2f); // POSTURE_OBLIQUE
|
||||||
}
|
}
|
||||||
values.defineAll(PRIMARY_MASK); // for streaming compatibility
|
valuesTmp.defineAll(PRIMARY_MASK); // for streaming compatibility
|
||||||
|
values = valuesTmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
return values;
|
return values;
|
||||||
|
|
|
@ -79,8 +79,9 @@ public abstract class GraphicsEnvironment {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// long t0 = System.currentTimeMillis();
|
// long t0 = System.currentTimeMillis();
|
||||||
localEnv =
|
ClassLoader cl = ClassLoader.getSystemClassLoader();
|
||||||
(GraphicsEnvironment) Class.forName(nm).newInstance();
|
Class geCls = Class.forName(nm, true, cl);
|
||||||
|
localEnv = (GraphicsEnvironment)geCls.newInstance();
|
||||||
// long t1 = System.currentTimeMillis();
|
// long t1 = System.currentTimeMillis();
|
||||||
// System.out.println("GE creation took " + (t1-t0)+ "ms.");
|
// System.out.println("GE creation took " + (t1-t0)+ "ms.");
|
||||||
if (isHeadless()) {
|
if (isHeadless()) {
|
||||||
|
|
|
@ -30,6 +30,7 @@ import java.io.IOException;
|
||||||
import java.io.ObjectInputStream;
|
import java.io.ObjectInputStream;
|
||||||
import sun.awt.AppContext;
|
import sun.awt.AppContext;
|
||||||
import sun.awt.SunToolkit;
|
import sun.awt.SunToolkit;
|
||||||
|
import sun.awt.AWTAccessor;
|
||||||
import javax.accessibility.*;
|
import javax.accessibility.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -109,6 +110,22 @@ public abstract class MenuComponent implements java.io.Serializable {
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = -4536902356223894379L;
|
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>.
|
* Creates a <code>MenuComponent</code>.
|
||||||
* @exception HeadlessException if
|
* @exception HeadlessException if
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue