[vmkit-commits] [vmkit] r58201 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaClass.cpp JavaClass.h JnjvmModule.cpp JnjvmModule.h
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Oct 26 12:55:13 PDT 2008
Author: geoffray
Date: Sun Oct 26 14:55:12 2008
New Revision: 58201
URL: http://llvm.org/viewvc/llvm-project?rev=58201&view=rev
Log:
Move initialisation of a field in JavaField.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=58201&r1=58200&r2=58201&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Sun Oct 26 14:55:12 2008
@@ -619,12 +619,51 @@
}
}
+void JavaField::InitField(JavaObject* obj, uint64 val) {
+
+ Typedef* type = getSignature();
+ if (!type->isPrimitive()) {
+ ((sint32*)((uint64)obj + ptrOffset))[0] = (sint32)val;
+ return;
+ }
+
+ PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
+ if (prim->isLong()) {
+ ((sint64*)((uint64)obj + ptrOffset))[0] = val;
+ } else if (prim->isInt()) {
+ ((sint32*)((uint64)obj + ptrOffset))[0] = (sint32)val;
+ } else if (prim->isChar()) {
+ ((uint16*)((uint64)obj + ptrOffset))[0] = (uint16)val;
+ } else if (prim->isShort()) {
+ ((sint16*)((uint64)obj + ptrOffset))[0] = (sint16)val;
+ } else if (prim->isByte()) {
+ ((sint8*)((uint64)obj + ptrOffset))[0] = (sint8)val;
+ } else if (prim->isBool()) {
+ ((uint8*)((uint64)obj + ptrOffset))[0] = (uint8)val;
+ } else {
+ // 0 value for everything else
+ ((sint32*)((uint64)obj + ptrOffset))[0] = (sint32)val;
+ }
+}
+
+void JavaField::InitField(JavaObject* obj, JavaObject* val) {
+ ((JavaObject**)((uint64)obj + ptrOffset))[0] = val;
+}
+
+void JavaField::InitField(JavaObject* obj, double val) {
+ ((double*)((uint64)obj + ptrOffset))[0] = val;
+}
+
+void JavaField::InitField(JavaObject* obj, float val) {
+ ((float*)((uint64)obj + ptrOffset))[0] = val;
+}
+
void JavaField::initField(JavaObject* obj, Jnjvm* vm) {
const Typedef* type = getSignature();
Attribut* attribut = lookupAttribut(Attribut::constantAttribut);
if (!attribut) {
- JnjvmModule::InitField(this, obj);
+ InitField(obj);
} else {
Reader reader(attribut, classDef->bytes);
JavaConstantPool * ctpInfo = classDef->ctpInfo;
@@ -632,18 +671,17 @@
if (type->isPrimitive()) {
UserCommonClass* cl = type->assocClass(vm->bootstrapLoader);
if (cl == vm->upcalls->OfLong) {
- JnjvmModule::InitField(this, obj, (uint64)ctpInfo->LongAt(idx));
+ InitField(obj, (uint64)ctpInfo->LongAt(idx));
} else if (cl == vm->upcalls->OfDouble) {
- JnjvmModule::InitField(this, obj, ctpInfo->DoubleAt(idx));
+ InitField(obj, ctpInfo->DoubleAt(idx));
} else if (cl == vm->upcalls->OfFloat) {
- JnjvmModule::InitField(this, obj, ctpInfo->FloatAt(idx));
+ InitField(obj, ctpInfo->FloatAt(idx));
} else {
- JnjvmModule::InitField(this, obj, (uint64)ctpInfo->IntegerAt(idx));
+ InitField(obj, (uint64)ctpInfo->IntegerAt(idx));
}
} else if (type->isReference()){
const UTF8* utf8 = ctpInfo->UTF8At(ctpInfo->ctpDef[idx]);
- JnjvmModule::InitField(this, obj,
- (JavaObject*)ctpInfo->resolveString(utf8, idx));
+ InitField(obj, (JavaObject*)ctpInfo->resolveString(utf8, idx));
} else {
JavaThread::get()->isolate->
unknownError("unknown constant %s\n", type->printString());
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=58201&r1=58200&r2=58201&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Sun Oct 26 14:55:12 2008
@@ -884,6 +884,14 @@
/// _signature - The signature of the field. Null if not resolved.
///
Typedef* _signature;
+
+ /// InitField - Set an initial value to the field of an object.
+ ///
+ void InitField(JavaObject* obj, uint64 val = 0);
+ void InitField(JavaObject* obj, JavaObject* val);
+ void InitField(JavaObject* obj, double val);
+ void InitField(JavaObject* obj, float val);
+
public:
/// ~JavaField - Destroy the field as well as its attributs.
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp?rev=58201&r1=58200&r2=58201&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp Sun Oct 26 14:55:12 2008
@@ -941,46 +941,6 @@
LLVMAssessorInfo::initialise();
}
-void JnjvmModule::InitField(JavaField* field, JavaObject* obj, uint64 val) {
-
- Typedef* type = field->getSignature();
- if (!type->isPrimitive()) {
- ((sint32*)((uint64)obj + field->ptrOffset))[0] = (sint32)val;
- return;
- }
-
- PrimitiveTypedef* prim = (PrimitiveTypedef*)type;
- if (prim->isLong()) {
- ((sint64*)((uint64)obj + field->ptrOffset))[0] = val;
- } else if (prim->isInt()) {
- ((sint32*)((uint64)obj + field->ptrOffset))[0] = (sint32)val;
- } else if (prim->isChar()) {
- ((uint16*)((uint64)obj + field->ptrOffset))[0] = (uint16)val;
- } else if (prim->isShort()) {
- ((sint16*)((uint64)obj + field->ptrOffset))[0] = (sint16)val;
- } else if (prim->isByte()) {
- ((sint8*)((uint64)obj + field->ptrOffset))[0] = (sint8)val;
- } else if (prim->isBool()) {
- ((uint8*)((uint64)obj + field->ptrOffset))[0] = (uint8)val;
- } else {
- // 0 value for everything else
- ((sint32*)((uint64)obj + field->ptrOffset))[0] = (sint32)val;
- }
-}
-
-void
-JnjvmModule::InitField(JavaField* field, JavaObject* obj, JavaObject* val) {
- ((JavaObject**)((uint64)obj + field->ptrOffset))[0] = val;
-}
-
-void JnjvmModule::InitField(JavaField* field, JavaObject* obj, double val) {
- ((double*)((uint64)obj + field->ptrOffset))[0] = val;
-}
-
-void JnjvmModule::InitField(JavaField* field, JavaObject* obj, float val) {
- ((float*)((uint64)obj + field->ptrOffset))[0] = val;
-}
-
void JnjvmModule::setMethod(JavaMethod* meth, const char* name) {
llvm::Function* func = getMethodInfo(meth)->getMethod();
func->setName(name);
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h?rev=58201&r1=58200&r2=58201&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h Sun Oct 26 14:55:12 2008
@@ -338,13 +338,6 @@
llvm::Function* OutOfMemoryErrorFunction;
llvm::Function* NegativeArraySizeExceptionFunction;
- static void InitField(JavaField* field);
- static void InitField(JavaField* field, JavaObject* obj, uint64 val = 0);
- static void InitField(JavaField* field, JavaObject* obj, JavaObject* val);
- static void InitField(JavaField* field, JavaObject* obj, double val);
- static void InitField(JavaField* field, JavaObject* obj, float val);
-
-
static void resolveVirtualClass(Class* cl);
static void resolveStaticClass(Class* cl);
static void setMethod(JavaMethod* meth, const char* name);
More information about the vmkit-commits
mailing list