mirror of
https://github.com/corda/corda.git
synced 2025-06-21 08:40:03 +00:00
update static table mapping code in bootimage.cpp to match machine.cpp
Commit c918cbc
added a reference to ensure
sun.misc.Unsafe.getLongVolatile could be implemented efficiently on
32-bit platforms, but I forgot to update bootimage.cpp to account for
it.
This commit is contained in:
@ -310,7 +310,7 @@ makeCodeImage(Thread* t, Zone* zone, BootImage* image, uint8_t* code,
|
|||||||
if (endsWith(".class", name, nameSize)
|
if (endsWith(".class", name, nameSize)
|
||||||
and (className == 0 or strncmp(name, className, nameSize - 6) == 0))
|
and (className == 0 or strncmp(name, className, nameSize - 6) == 0))
|
||||||
{
|
{
|
||||||
// fprintf(stderr, "%.*s\n", nameSize - 6, name);
|
// fprintf(stderr, "pass 1 %.*s\n", nameSize - 6, name);
|
||||||
object c = resolveSystemClass
|
object c = resolveSystemClass
|
||||||
(t, root(t, Machine::BootLoader),
|
(t, root(t, Machine::BootLoader),
|
||||||
makeByteArray(t, "%.*s", nameSize - 6, name), true);
|
makeByteArray(t, "%.*s", nameSize - 6, name), true);
|
||||||
@ -413,8 +413,6 @@ makeCodeImage(Thread* t, Zone* zone, BootImage* image, uint8_t* code,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (strcmp(name, "java/lang/System$Property.class") == 0) trap();
|
|
||||||
|
|
||||||
{ object array = 0;
|
{ object array = 0;
|
||||||
PROTECT(t, array);
|
PROTECT(t, array);
|
||||||
|
|
||||||
@ -454,7 +452,9 @@ makeCodeImage(Thread* t, Zone* zone, BootImage* image, uint8_t* code,
|
|||||||
targetMemberOffset = TargetBytesPerWord;
|
targetMemberOffset = TargetBytesPerWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
Field staticFields[count + 2];
|
const unsigned StaticHeader = 3;
|
||||||
|
|
||||||
|
Field staticFields[count + StaticHeader];
|
||||||
|
|
||||||
init(new (staticFields) Field, Type_object, 0, BytesPerWord, 0,
|
init(new (staticFields) Field, Type_object, 0, BytesPerWord, 0,
|
||||||
TargetBytesPerWord);
|
TargetBytesPerWord);
|
||||||
@ -462,9 +462,12 @@ makeCodeImage(Thread* t, Zone* zone, BootImage* image, uint8_t* code,
|
|||||||
init(new (staticFields + 1) Field, Type_intptr_t, BytesPerWord,
|
init(new (staticFields + 1) Field, Type_intptr_t, BytesPerWord,
|
||||||
BytesPerWord, TargetBytesPerWord, TargetBytesPerWord);
|
BytesPerWord, TargetBytesPerWord, TargetBytesPerWord);
|
||||||
|
|
||||||
unsigned staticIndex = 2;
|
init(new (staticFields + 2) Field, Type_object, BytesPerWord * 2,
|
||||||
unsigned buildStaticOffset = BytesPerWord * 2;
|
BytesPerWord, TargetBytesPerWord * 2, TargetBytesPerWord);
|
||||||
unsigned targetStaticOffset = TargetBytesPerWord * 2;
|
|
||||||
|
unsigned staticIndex = StaticHeader;
|
||||||
|
unsigned buildStaticOffset = BytesPerWord * StaticHeader;
|
||||||
|
unsigned targetStaticOffset = TargetBytesPerWord * StaticHeader;
|
||||||
|
|
||||||
for (unsigned i = 0; i < vectorSize(t, fields); ++i) {
|
for (unsigned i = 0; i < vectorSize(t, fields); ++i) {
|
||||||
object field = vectorBody(t, fields, i);
|
object field = vectorBody(t, fields, i);
|
||||||
@ -594,7 +597,7 @@ makeCodeImage(Thread* t, Zone* zone, BootImage* image, uint8_t* code,
|
|||||||
if (endsWith(".class", name, nameSize)
|
if (endsWith(".class", name, nameSize)
|
||||||
and (className == 0 or strncmp(name, className, nameSize - 6) == 0))
|
and (className == 0 or strncmp(name, className, nameSize - 6) == 0))
|
||||||
{
|
{
|
||||||
// fprintf(stderr, "%.*s\n", nameSize - 6, name);
|
// fprintf(stderr, "pass 2 %.*s\n", nameSize - 6, name);
|
||||||
object c = resolveSystemClass
|
object c = resolveSystemClass
|
||||||
(t, root(t, Machine::BootLoader),
|
(t, root(t, Machine::BootLoader),
|
||||||
makeByteArray(t, "%.*s", nameSize - 6, name), true);
|
makeByteArray(t, "%.*s", nameSize - 6, name), true);
|
||||||
|
Reference in New Issue
Block a user