You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by va...@apache.org on 2008/02/29 11:33:04 UTC
svn commit: r632286 - in /harmony/enhanced/drlvm/trunk/vm:
jitrino/src/codegenerator/ia32/ jitrino/src/codegenerator/ipf/
jitrino/src/main/ jitrino/src/optimizer/ jitrino/src/shared/
jitrino/src/translator/java/ jitrino/src/vm/ thread/src/
Author: varlax
Date: Fri Feb 29 02:32:59 2008
New Revision: 632286
URL: http://svn.apache.org/viewvc?rev=632286&view=rev
Log:
Get rid of direct calls from Jitrino to VM bypassing internal VMInterface
Modified:
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCMap.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32Tls.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstrumentator.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/PMF.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/helper_inliner.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/simplifier.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/MemoryManager.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/MemoryManager.h
harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/JITInterface.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.cpp
harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.h
harmony/enhanced/drlvm/trunk/vm/thread/src/hythr.def
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCMap.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCMap.cpp?rev=632286&r1=632285&r2=632286&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCMap.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCMap.cpp Fri Feb 29 02:32:59 2008
@@ -108,7 +108,7 @@
return false;
}
field = (FieldDesc*)info->getValue(0);
- return field_is_magic(field->getFieldHandle());
+ return field->isMagic();
}
static void checkManaged2UnmanagedConv(IRManager& irm, Opnd* opnd) {
@@ -519,13 +519,6 @@
const JitFrameContext* context, bool isFirst)
{
AutoTimer tm(enumerateTimer);
-
-/* Class_Handle parentClassHandle = method_get_class(((DrlVMMethodDesc*)methodDesc)->getDrlVMMethod());
- const char* methodName = methodDesc->getName();
- const char* className = class_get_name(parentClassHandle);
- const char* methodSignature = methodDesc->getSignatureString();
- printf("enumerate: %s::%s %s ip=%d\n", className, methodName, methodSignature, *context->p_eip);
-*/
// Compute stack information
uint32 stackInfoSize = (uint32)StackInfo::getByteSize(methodDesc);
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32Tls.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32Tls.cpp?rev=632286&r1=632285&r2=632286&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32Tls.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32Tls.cpp Fri Feb 29 02:32:59 2008
@@ -25,7 +25,7 @@
#include "Ia32Tls.h"
-#include <open/hythread_ext.h>
+#include "VMInterface.h"
namespace Jitrino {
namespace Ia32 {
@@ -78,7 +78,7 @@
Opnd* createTlsBaseLoadWin(IRManager& irManager, Node* ctrlNode, Type* tlsBaseType)
{
- if (!hythread_uses_fast_tls()) {
+ if (!VMInterface::useFastTLSAccess()) {
return createTlsBaseLoadGeneric(irManager, ctrlNode, tlsBaseType);
}
// HYTHR's structure is stored in TIB's free offset aka [fs:0x14]
@@ -90,7 +90,7 @@
Opnd* createTlsBaseLoadLin(IRManager& irManager, Node* ctrlNode, Type* tlsBaseType)
{
- if (!hythread_uses_fast_tls()) {
+ if (!VMInterface::useFastTLSAccess()) {
return createTlsBaseLoadGeneric(irManager, ctrlNode, tlsBaseType);
}
@@ -102,7 +102,7 @@
tlsBase = hythread_t
*/
- int threadOffset = hythread_get_hythread_offset_in_tls();
+ int threadOffset = VMInterface::getTLSBaseOffset();
Opnd* pTib;
#if defined(_EM64T_)
pTib = irManager.newMemOpnd(tlsBaseType, MemOpndKind_Any, NULL, 0, RegName_FS);
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstrumentator.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstrumentator.cpp?rev=632286&r1=632285&r2=632286&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstrumentator.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstrumentator.cpp Fri Feb 29 02:32:59 2008
@@ -23,7 +23,7 @@
#include "IpfInstrumentator.h"
#include "IpfIrPrinter.h"
-#include "open/vm.h"
+#include "VMInterface.h"
#include <fstream>
namespace Jitrino {
@@ -141,29 +141,20 @@
//----------------------------------------------------------------------------------------//
void Instrumentator::methodStart(Method_Handle methodHandle) {
-
ofstream rtLog;
rtLog.open("rt.log", ios::out | ios::app);
- rtLog << "Start ";
- rtLog << class_get_name(method_get_class(methodHandle));
- rtLog << "." << method_get_name(methodHandle);
- rtLog << method_get_descriptor(methodHandle) << endl;
+ rtLog << "Start " << methodHandle << endl;
rtLog.close();
}
//----------------------------------------------------------------------------------------//
void Instrumentator::methodEnd(Method_Handle methodHandle) {
-
ofstream rtLog;
rtLog.open("rt.log", ios::out | ios::app);
- rtLog << "End ";
- rtLog << class_get_name(method_get_class(methodHandle));
- rtLog << "." << method_get_name(methodHandle);
- rtLog << method_get_descriptor(methodHandle) << endl;
- rtLog.close();
+ rtLog << "End " << methodHandle << endl;
}
} // IPF
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/PMF.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/PMF.cpp?rev=632286&r1=632285&r2=632286&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/PMF.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/main/PMF.cpp Fri Feb 29 02:32:59 2008
@@ -19,7 +19,7 @@
* @version $Revision$
*/
-
+#include "VMInterface.h"
#include "PMF.h"
#include "PMFAction.h"
#include "FixFileName.h"
@@ -1357,18 +1357,11 @@
void PMF::processVMProperties ()
{
- char** keys = get_properties_keys(VM_PROPERTIES);
- int i = 0;
- while (keys[i] != NULL) {
- if (strncmp("jit.", keys[i], 4) == 0)
- {
- char* value = get_property(keys[i], VM_PROPERTIES);
- processCmd(keys[i] + 4, value);
- destroy_property_value(value);
- }
- i++;
+ VMPropertyIterator it(mm, "jit.");
+ while(!it.isOver()) {
+ it.next();
+ processCmd(it.getKey() + 4, it.getValue());
}
- destroy_properties_keys(keys);
}
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/helper_inliner.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/helper_inliner.cpp?rev=632286&r1=632285&r2=632286&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/helper_inliner.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/helper_inliner.cpp Fri Feb 29 02:32:59 2008
@@ -79,7 +79,7 @@
assert(flags.opcodeToHelperMapping.find(opcode)==flags.opcodeToHelperMapping.end());
flags.opcodeToHelperMapping[opcode] = helperId;
if (flags.helperConfigs.find(helperId)== flags.helperConfigs.end()) {
- std::string helperName = vm_helper_get_name(helperId);
+ std::string helperName = CompilationInterface::getRuntimeHelperName(helperId);
HelperConfig* h = new (globalMM) HelperConfig(helperId);
h->doInlining = getBoolArg(helperName.c_str(), false);
h->hotnessPercentToInline = getIntArg((helperName + "_hotnessPercent").c_str(), 0);
@@ -319,17 +319,18 @@
MethodDesc* HelperInliner::findHelperMethod(CompilationInterface* ci, VM_RT_SUPPORT helperId)
{
- Method_Handle mh = vm_helper_get_magic_helper(helperId);
- if (mh == NULL) {
- if (Log::isEnabled()) Log::out()<<"WARN: helper's method is not resolved:"<<vm_helper_get_name(helperId)<<std::endl;
+ MethodDesc* md = ci->getMagicHelper(helperId);
+ if (md == NULL) {
+ if (Log::isEnabled()) Log::out()<<"WARN: helper's method is not resolved:"<<CompilationInterface::getRuntimeHelperName(helperId)<<std::endl;
return NULL;
}
- Class_Handle ch = method_get_class(mh);
- if (!class_is_initialized(ch)) {
- if (Log::isEnabled()) Log::out()<<"WARN: class is not initialized:"<<class_get_name(ch)<<std::endl;
+
+ Class_Handle ch = md->getParentHandle();
+ if (!VMInterface::isInitialized(ch)) {
+ if (Log::isEnabled()) Log::out()<<"WARN: class is not initialized:"<<VMInterface::getTypeName(ch)<<std::endl;
return NULL;
}
- MethodDesc* md = ci->getMethodDesc(mh);
+
return md;
}
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/simplifier.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/simplifier.cpp?rev=632286&r1=632285&r2=632286&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/simplifier.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/simplifier.cpp Fri Feb 29 02:32:59 2008
@@ -4487,14 +4487,14 @@
case ClassIsArray:
ch = getClassHandle(inst->getSrc(0));
if (ch) {
- res = genLdConstant((int32)class_is_array(ch));
+ res = genLdConstant((int32)VMInterface::isArrayType(ch));
}
break;
case ClassGetAllocationHandle:
ch = getClassHandle(inst->getSrc(0));
if (ch) {
ConstInst::ConstValue v;
- v.i8 = (POINTER_SIZE_SINT)class_get_allocation_handle(ch);
+ v.i8 = (POINTER_SIZE_SINT)VMInterface::getAllocationHandle(ch);
res = genLdConstant(tm.getInt32Type(), v);
assert((sizeof(void*) == 4) && "TODO fix allocation helper on 64 bit");
}
@@ -4502,47 +4502,47 @@
case ClassGetTypeSize:
ch = getClassHandle(inst->getSrc(0));
if (ch) {
- res = genLdConstant((int32)class_get_boxed_data_size(ch));
+ res = genLdConstant((int32)VMInterface::getObjectSize(ch));
}
break;
case ClassGetArrayElemSize:
ch = getClassHandle(inst->getSrc(0));
if (ch) {
- res = genLdConstant((int32)class_get_array_element_size(ch));
+ res = genLdConstant((int32)VMInterface::getArrayElemSize(ch));
}
break;
case ClassIsInterface:
ch = getClassHandle(inst->getSrc(0));
if (ch) {
- res = genLdConstant((int32)class_property_is_interface2(ch));
+ res = genLdConstant((int32)VMInterface::isInterfaceType(ch));
}
break;
case ClassIsFinal:
ch = getClassHandle(inst->getSrc(0));
if (ch) {
- res = genLdConstant((int32)class_property_is_final(ch));
+ res = genLdConstant((int32)VMInterface::isFinalType(ch));
}
break;
case ClassGetArrayClass:
ch = getClassHandle(inst->getSrc(0));
if (ch) {
ConstInst::ConstValue v;
- v.i8 = (POINTER_SIZE_SINT)class_get_array_of_class(ch);
+ v.i8 = (POINTER_SIZE_SINT)VMInterface::getArrayVMTypeHandle(ch, false);
res = genLdConstant(tm.getUnmanagedPtrType(tm.getInt8Type()), v);
}
break;
case ClassIsFinalizable:
ch = getClassHandle(inst->getSrc(0));
if (ch) {
- res = genLdConstant((int32)class_is_finalizable(ch));
+ res = genLdConstant((int32)VMInterface::isFinalizable(ch));
}
break;
case ClassGetFastCheckDepth:
ch = getClassHandle(inst->getSrc(0));
if (ch) {
int depth = 0;
- if (class_get_fast_instanceof_flag(ch)) {
- depth = (int32)class_get_depth(ch);
+ if (VMInterface::getClassFastInstanceOfFlag(ch)) {
+ depth = (int32)VMInterface::getClassDepth(ch);
}
res = genLdConstant(depth);
}
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/MemoryManager.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/MemoryManager.cpp?rev=632286&r1=632285&r2=632286&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/MemoryManager.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/MemoryManager.cpp Fri Feb 29 02:32:59 2008
@@ -247,6 +247,14 @@
return (void*)mem;
}
+char*
+MemoryManager::copy(const char* str) {
+ if (!str) return NULL;
+ size_t len = strlen(str);
+ char* cp = (char*)alloc(len + 1);
+ return strcpy(cp, str);
+}
+
} //namespace Jitrino
#ifdef DEBUG_MEMORY_MANAGER
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/MemoryManager.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/MemoryManager.h?rev=632286&r1=632285&r2=632286&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/MemoryManager.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/MemoryManager.h Fri Feb 29 02:32:59 2008
@@ -38,6 +38,7 @@
virtual ~MemoryManager();
void *alloc(size_t size);
size_t bytes_allocated() { return _bytes_allocated; }
+ char* copy(const char* str);
protected:
MemoryManager(const MemoryManager&) {assert(0);}
MemoryManager& operator=(const MemoryManager&) {assert(0); return *this;}
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp?rev=632286&r1=632285&r2=632286&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp Fri Feb 29 02:32:59 2008
@@ -757,11 +757,12 @@
pushOpnd(irBuilder.genLdStatic(fieldType, field));
}
} else {
+ //field is not resolved or not static
if (!typeManager.isLazyResolutionMode()) {
// generate helper call for throwing respective exception
linkingException(constPoolIndex, OPCODE_GETSTATIC);
}
- const char* fieldTypeName = const_pool_get_field_descriptor(methodToCompile.getParentHandle(), constPoolIndex);
+ const char* fieldTypeName = CompilationInterface::getFieldSignature(methodToCompile.getParentHandle(), constPoolIndex);
bool fieldIsMagic = VMMagicUtils::isVMMagicClass(fieldTypeName);
Type* fieldType = fieldIsMagic ? convertVMMagicType2HIR(typeManager, fieldTypeName)
: compilationInterface.getFieldType(methodToCompile.getParentHandle(), constPoolIndex);
@@ -782,11 +783,12 @@
}
irBuilder.genStStatic(fieldType,field,popOpnd());
} else {
+ //field is not resolved or not static
if (!typeManager.isLazyResolutionMode()) {
// generate helper call for throwing respective exception
linkingException(constPoolIndex, OPCODE_PUTSTATIC);
}
- const char* fieldTypeName = const_pool_get_field_descriptor(methodToCompile.getParentHandle(), constPoolIndex);
+ const char* fieldTypeName = CompilationInterface::getFieldSignature(methodToCompile.getParentHandle(), constPoolIndex);
bool fieldIsMagic = VMMagicUtils::isVMMagicClass(fieldTypeName);
Type* fieldType = fieldIsMagic ? convertVMMagicType2HIR(typeManager, fieldTypeName)
: compilationInterface.getFieldType(methodToCompile.getParentHandle(), constPoolIndex);
@@ -1493,8 +1495,8 @@
if (bc != OPCODE_INVOKEINTERFACE) {
- const char* kname = const_pool_get_method_class_name(methodToCompile.getParentHandle(), cpIndex);
- const char* mname = const_pool_get_method_name(methodToCompile.getParentHandle(), cpIndex);
+ const char* kname = CompilationInterface::getMethodClassName(methodToCompile.getParentHandle(), cpIndex);
+ const char* mname = CompilationInterface::getMethodName(methodToCompile.getParentHandle(), cpIndex);
if (VMMagicUtils::isVMMagicClass(kname)) {
assert(bc == OPCODE_INVOKESTATIC || bc == OPCODE_INVOKEVIRTUAL);
UNUSED bool res = genVMMagic(mname, numArgs, args, returnType);
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/JITInterface.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/JITInterface.cpp?rev=632286&r1=632285&r2=632286&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/JITInterface.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/JITInterface.cpp Fri Feb 29 02:32:59 2008
@@ -78,8 +78,7 @@
JITEXPORT void
JIT_init(JIT_Handle jit, const char* name)
{
- std::string initMessage = std::string("Initializing Jitrino.") + name +
- " -> ";
+ std::string initMessage = std::string("Initializing Jitrino.") + name + " -> ";
std::string mode = "OPT";
#ifdef USE_FAST_PATH
if (JITInstanceContext::isNameReservedForJet(name)) mode = "JET";
@@ -88,19 +87,6 @@
INFO(initMessage.c_str());
Jitrino::Init(jit, name);
-#if defined (PLATFORM_NT) && defined (_DEBUG)
- if (!get_boolean_property("vm.assert_dialog", TRUE, VM_PROPERTIES))
- {
- _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
- _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT);
- _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
- _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDOUT);
- _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
- _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
- _set_error_mode(_OUT_TO_STDERR);
- }
-#endif
-
#ifdef USE_FAST_PATH
Jet::setup(jit, name);
#endif
@@ -211,8 +197,7 @@
OpenMethodExecutionParams compilation_params)
{
MemoryManager memManager("JIT_compile_method.memManager");
- JIT_Handle jitHandle = method_get_JIT_id(compilation);
- JITInstanceContext* jitContext = Jitrino::getJITInstanceContext(jitHandle);
+ JITInstanceContext* jitContext = Jitrino::getJITInstanceContext(jit);
assert(jitContext!= NULL);
TypeManager typeManager(memManager); typeManager.init();
@@ -241,7 +226,7 @@
<< jitContext->getJITName() << "." << pipename
<< "\tstart "
<< methodTypeName << "." << methodName << methodSig
- << "\tbyte code size=" << method_get_byte_code_size(method_handle)
+ << "\tbyte code size=" << md->getByteCodeSize()
<< std::endl;
}
#ifdef _DEBUG
@@ -252,7 +237,7 @@
#ifdef USE_FAST_PATH
if (isJET(jit))
- result = Jet::compile_with_params(jitHandle, compilation, method_handle,
+ result = Jet::compile_with_params(jit, compilation, method_handle,
compilation_params);
else
#endif // USE_FAST_PATH
@@ -270,8 +255,8 @@
//<< methodTypeName << "." << methodName << methodSig;
if (result == JIT_SUCCESS) {
- unsigned size = method_get_code_block_size_jit(method_handle, jit);
- Byte * start = size ? method_get_code_block_addr_jit(method_handle, jit) : 0;
+ unsigned size = md->getCodeBlockSize(0);
+ Byte * start = size ? md->getCodeBlockAddress(0) : 0;
info << "\tnative code size=" << size
<< " code range=[" << (void*)start << "," << (void*)(start+size) << "]";
}
@@ -323,9 +308,7 @@
{
#ifdef _DEBUG
if(Log::cat_rt()->isEnabled())
- Log::cat_rt()->out() << "UNWIND_STACK_FRAME(" <<
- class_get_name(method_get_class(method)) << "." <<
- method_get_name(method) << ")" << ::std::endl;
+ Log::cat_rt()->out() << "UNWIND_STACK_FRAME(" << method << ")" << ::std::endl;
#endif
#ifdef USE_FAST_PATH
@@ -346,9 +329,7 @@
{
#ifdef _DEBUG
if(Log::cat_rt()->isEnabled())
- Log::cat_rt()->out() << "GET_ROOT_SET_FROM_STACK_FRAME(" <<
- class_get_name(method_get_class(method)) << "." <<
- method_get_name(method) << ")" << ::std::endl;
+ Log::cat_rt()->out() << "GET_ROOT_SET_FROM_STACK_FRAME(" << method << ")" << ::std::endl;
#endif
#ifdef USE_FAST_PATH
@@ -410,9 +391,7 @@
{
#ifdef _DEBUG
if(Log::cat_rt()->isEnabled())
- Log::cat_rt()->out() << "FIX_HANDLER_CONTEXT(" <<
- class_get_name(method_get_class(method)) << "."
- << method_get_name(method) << ")" << ::std::endl;
+ Log::cat_rt()->out() << "FIX_HANDLER_CONTEXT(" << method << ")" << ::std::endl;
#endif
#ifdef USE_FAST_PATH
@@ -462,16 +441,11 @@
JITEXPORT Boolean
JIT_supports_compressed_references(JIT_Handle jit)
{
-#ifdef USE_FAST_PATH
- if (isJET(jit)) {
#ifdef _EM64T_
return true;
#else
return false;
#endif
- }
-#endif
- return (vm_references_are_compressed() != 0);
}
extern "C"
@@ -481,9 +455,7 @@
::JitFrameContext *context)
{
if(Log::cat_rt()->isEnabled()) {
- Log::cat_rt()->out() << "GET_ROOT_SET_FROM_STACK_FRAME(" <<
- class_get_name(method_get_class(method)) << "." <<
- method_get_name(method) << ")" << ::std::endl;
+ Log::cat_rt()->out() << "GET_ROOT_SET_FROM_STACK_FRAME(" << method << ")" << ::std::endl;
}
MethodDesc methodDesc(method, jit);
ThreadDumpEnumerator gcInterface;
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.cpp?rev=632286&r1=632285&r2=632286&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.cpp Fri Feb 29 02:32:59 2008
@@ -86,6 +86,16 @@
return (uint32)offset;
}
+int32
+VMInterface::getTLSBaseOffset() {
+ return (int32) hythread_get_hythread_offset_in_tls();
+}
+
+bool
+VMInterface::useFastTLSAccess() {
+ return 0 != hythread_uses_fast_tls();
+}
+
//////////////////////////////////////////////////////////////////////////////
///////////////////////// VMTypeManager /////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
@@ -215,6 +225,11 @@
}
uint32
+VMInterface::getArrayElemSize(void * vmTypeHandle) {
+ return class_get_array_element_size((Class_Handle) vmTypeHandle);
+}
+
+uint32
VMInterface::getObjectSize(void * vmTypeHandle) {
return class_get_boxed_data_size((Class_Handle) vmTypeHandle);
}
@@ -492,6 +507,12 @@
return type;
}
+MethodDesc*
+CompilationInterface::getMagicHelper(VM_RT_SUPPORT id){
+ Method_Handle mh = vm_helper_get_magic_helper(id);
+ return mh ? getMethodDesc(mh) : NULL;
+}
+
const char*
CompilationInterface::getRuntimeHelperName(VM_RT_SUPPORT id){
return vm_helper_get_name(id);
@@ -916,5 +937,49 @@
return NULL;
}
+const char*
+CompilationInterface::getMethodName(Class_Handle enclClass, uint32 cpIndex) {
+ return const_pool_get_method_name(enclClass, cpIndex);
+}
+
+const char*
+CompilationInterface::getMethodClassName(Class_Handle enclClass, uint32 cpIndex) {
+ return const_pool_get_method_class_name(enclClass, cpIndex);
+}
+
+const char*
+CompilationInterface::getFieldSignature(Class_Handle enclClass, uint32 cpIndex) {
+ return const_pool_get_field_descriptor(enclClass, cpIndex);
+}
+
+::std::ostream& operator<<(::std::ostream& os, Method_Handle method) {
+ os << class_get_name(method_get_class(method)) << "."
+ << method_get_name(method) << method_get_descriptor(method);
+ return os;
+}
+
+VMPropertyIterator::VMPropertyIterator(
+ MemoryManager& mm, const char* prefix): mm(mm), key(NULL), value(NULL), iterator(0)
+{
+ keys = get_properties_keys_staring_with(prefix, VM_PROPERTIES);
+}
+
+VMPropertyIterator::~VMPropertyIterator() {
+ destroy_properties_keys(keys);
+}
+
+bool
+VMPropertyIterator::isOver() const {
+ return keys[iterator] ? false : true;
+}
+
+void
+VMPropertyIterator::next() {
+ assert(!isOver());
+ key = mm.copy(keys[iterator]);
+ char* nval = get_property(keys[iterator++], VM_PROPERTIES);
+ value = mm.copy(nval);
+ destroy_property_value(nval);
+}
} //namespace Jitrino
Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.h?rev=632286&r1=632285&r2=632286&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.h Fri Feb 29 02:32:59 2008
@@ -70,6 +70,7 @@
static void* getAllocationHandle(void* vmTypeHandle);
static bool isSubClassOf(void* vmTypeHandle1,void* vmTypeHandle2);
static uint32 getArrayElemOffset(void* vmElemTypeHandle,bool isUnboxed);
+ static uint32 getArrayElemSize(void * vmTypeHandle);
static uint32 getObjectSize(void * vmTypeHandle);
static uint32 getArrayLengthOffset();
@@ -78,6 +79,8 @@
static uint32 flagTLSSuspendRequestOffset();
static uint32 flagTLSThreadStateOffset();
+ static int32 getTLSBaseOffset();
+ static bool useFastTLSAccess();
// returns true if vtable pointers are compressed
@@ -156,6 +159,7 @@
bool isInitOnly() const {return field_is_final(drlField)?true:false;}
// accesses to field cannot be reordered or CSEed
bool isVolatile() const {return field_is_volatile(drlField)?true:false;}
+ bool isMagic() const {return field_is_magic(drlField)?true:false;}
Type* getFieldType();
uint32 getOffset() const; // for non-static fields
void* getAddress() const {return field_get_address(drlField);} // for static fields
@@ -308,7 +312,7 @@
bool mayBeInterruptible(VM_RT_SUPPORT id);
void* getRuntimeHelperAddress(VM_RT_SUPPORT);
void* getRuntimeHelperAddressForType(VM_RT_SUPPORT, Type*);
-
+ MethodDesc* getMagicHelper(VM_RT_SUPPORT);
Type* getFieldType(Class_Handle enclClass, uint32 cpIndex);
@@ -319,6 +323,9 @@
NamedType* resolveNamedType(Class_Handle enclClass, uint32 cpIndex);
+ static const char* getMethodName(Class_Handle enclClass, uint32 cpIndex);
+ static const char* getMethodClassName(Class_Handle enclClass, uint32 cpIndex);
+ static const char* getFieldSignature(Class_Handle enclClass, uint32 cpIndex);
MethodDesc* getStaticMethod(Class_Handle enclClass, uint32 cpIndex);
MethodDesc* getVirtualMethod(Class_Handle enclClass, uint32 cpIndex);
@@ -537,6 +544,24 @@
<< (unsigned int) pid.getLocalInstructionId();
return os;
}
+
+::std::ostream& operator<<(::std::ostream& os, Method_Handle mh);
+
+class VMPropertyIterator {
+public:
+ VMPropertyIterator(MemoryManager& m, const char* prefix);
+ ~VMPropertyIterator();
+ bool isOver() const;
+ void next();
+ char* getKey() const { return key; }
+ char* getValue() const { return value; }
+private:
+ MemoryManager& mm;
+ char* key;
+ char* value;
+ char** keys;
+ size_t iterator;
+};
} //namespace Jitrino
Modified: harmony/enhanced/drlvm/trunk/vm/thread/src/hythr.def
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/thread/src/hythr.def?rev=632286&r1=632285&r2=632286&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/thread/src/hythr.def (original)
+++ harmony/enhanced/drlvm/trunk/vm/thread/src/hythr.def Fri Feb 29 02:32:59 2008
@@ -43,6 +43,7 @@
hythread_tls_get
hythread_tls_get_request_offset
hythread_tls_get_offset
+hythread_get_hythread_offset_in_tls
hythread_get_struct_size
hythread_global_lock
hythread_global_unlock