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/04/17 15:10:32 UTC
svn commit: r649083 [2/3] - in /harmony/enhanced/drlvm/trunk/vm: em/src/
gc_gen/src/common/ gc_gen/src/jni/ include/ include/open/ interpreter/src/
jitrino/src/codegenerator/ia32/ jitrino/src/jet/ jitrino/src/optimizer/
jitrino/src/vm/ vmcore/build/ vm...
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=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.cpp Thu Apr 17 06:10:05 2008
@@ -30,7 +30,11 @@
#include "open/vm_type_access.h"
#include "open/vm_field_access.h"
#include "open/vm_method_access.h"
+#include "open/vm_class_loading.h"
+#include "open/vm_class_info.h"
#include "open/vm_interface.h"
+#include "open/vm_ee.h"
+#include "open/vm.h"
#include "jit_import_rt.h"
#include "jit_runtime_support.h"
@@ -54,13 +58,13 @@
static class_get_array_element_class_t class_get_array_element_class = 0;
static class_get_array_element_size_t class_get_array_element_size = 0;
static class_get_array_of_class_t class_get_array_of_class = 0;
-static class_get_element_type_info_t class_get_element_type_info = 0;
+static class_is_non_ref_array_t class_is_non_ref_array = 0;
static class_get_name_t class_get_name = 0;
static class_get_super_class_t class_get_super_class = 0;
static class_get_depth_t class_get_depth = 0;
static class_get_vtable_t class_get_vtable = 0;
static class_get_allocation_handle_t class_get_allocation_handle = 0;
-static class_get_boxed_data_size_t class_get_boxed_data_size = 0;
+static class_get_object_size_t class_get_object_size = 0;
static class_cp_get_num_array_dimensions_t class_cp_get_num_array_dimensions = 0;
static class_get_class_of_primitive_type_t class_get_class_of_primitive_type = 0;
static class_get_const_string_intern_addr_t class_get_const_string_intern_addr = 0;
@@ -79,7 +83,7 @@
static class_is_initialized_t class_is_initialized = 0;
static class_is_finalizable_t class_is_finalizable = 0;
static class_is_instanceof_t class_is_instanceof = 0;
-static class_is_support_fast_instanceof_t class_is_support_fast_instanceof = 0;// class_get_fast_instanceof_flag
+static class_is_support_fast_instanceof_t class_is_support_fast_instanceof = 0;// class_is_support_fast_instanceof
static class_is_primitive_t class_is_primitive = 0;
static vm_lookup_class_with_bootstrap_t vm_lookup_class_with_bootstrap = 0;
@@ -119,7 +123,7 @@
static method_get_bytecode_length_t method_get_bytecode_length = 0;
static method_get_max_stack_t method_get_max_stack = 0;
static method_get_exc_handler_number_t method_get_exc_handler_number = 0;
-static method_get_offset_t method_get_offset = 0;
+static method_get_vtable_offset_t method_get_vtable_offset = 0;
static method_get_indirect_address_t method_get_indirect_address = 0;
static method_get_native_func_addr_t method_get_native_func_addr = 0;
static method_get_max_locals_t method_get_max_locals = 0;
@@ -141,7 +145,6 @@
static method_is_final_t method_is_final = 0;
static method_is_abstract_t method_is_abstract = 0;
static method_is_strict_t method_is_strict = 0;
-static method_is_overridden_t method_is_overridden = 0;
static method_is_no_inlining_t method_is_no_inlining = 0;
@@ -208,15 +211,13 @@
static vm_get_system_object_class_t vm_get_system_object_class = 0;
static vm_get_system_class_class_t vm_get_system_class_class = 0; // get_system_class_class
static vm_get_system_string_class_t vm_get_system_string_class = 0;
-static vm_get_vtable_base_t vm_get_vtable_base = 0; //POINTER_SIZE_INT vm_get_vtable_base()
-static vm_get_heap_base_address_t vm_get_heap_base_address = 0; //vm_heap_base_address
-static vm_get_heap_ceiling_address_t vm_get_heap_ceiling_address = 0; //vm_heap_ceiling_address
-static vm_is_heap_compressed_t vm_is_heap_compressed = 0;//vm_references_are_compressed();
-static vm_is_vtable_compressed_t vm_is_vtable_compressed = 0;//vm_vtable_pointers_are_compressed();
+static vm_get_vtable_base_address_t vm_get_vtable_base_address = 0; //POINTER_SIZE_INT vm_get_vtable_base_address()
+static vm_get_heap_base_address_t vm_get_heap_base_address = 0; //vm_get_heap_base_address
+static vm_get_heap_ceiling_address_t vm_get_heap_ceiling_address = 0; //vm_get_heap_ceiling_address
+static vm_is_heap_compressed_t vm_is_heap_compressed = 0;//vm_is_heap_compressed();
+static vm_is_vtable_compressed_t vm_is_vtable_compressed = 0;//vm_is_vtable_compressed();
static vm_patch_code_block_t vm_patch_code_block = 0;
static vm_compile_method_t vm_compile_method = 0;
-static vm_register_jit_extended_class_callback_t vm_register_jit_extended_class_callback = 0;
-static vm_register_jit_overridden_method_callback_t vm_register_jit_overridden_method_callback = 0;
static vm_register_jit_recompiled_method_callback_t vm_register_jit_recompiled_method_callback = 0;
static vm_compiled_method_load_t vm_compiled_method_load = 0;
static vm_helper_get_addr_t vm_helper_get_addr = 0;
@@ -248,13 +249,13 @@
class_get_array_element_class = GET_INTERFACE(vm, class_get_array_element_class);
class_get_array_element_size = GET_INTERFACE(vm, class_get_array_element_size);
class_get_array_of_class = GET_INTERFACE(vm, class_get_array_of_class);
- class_get_element_type_info = GET_INTERFACE(vm, class_get_element_type_info);
+ class_is_non_ref_array = GET_INTERFACE(vm, class_is_non_ref_array);
class_get_name = GET_INTERFACE(vm, class_get_name);
class_get_super_class = GET_INTERFACE(vm, class_get_super_class);
class_get_depth = GET_INTERFACE(vm, class_get_depth);
class_get_vtable = GET_INTERFACE(vm, class_get_vtable);
class_get_allocation_handle = GET_INTERFACE(vm, class_get_allocation_handle);
- class_get_boxed_data_size = GET_INTERFACE(vm, class_get_boxed_data_size);
+ class_get_object_size = GET_INTERFACE(vm, class_get_object_size);
class_cp_get_num_array_dimensions = GET_INTERFACE(vm, class_cp_get_num_array_dimensions);
class_get_class_of_primitive_type = GET_INTERFACE(vm, class_get_class_of_primitive_type);
class_get_const_string_intern_addr = GET_INTERFACE(vm, class_get_const_string_intern_addr);
@@ -313,7 +314,7 @@
method_get_bytecode_length = GET_INTERFACE(vm, method_get_bytecode_length);
method_get_max_stack = GET_INTERFACE(vm, method_get_max_stack);
method_get_exc_handler_number = GET_INTERFACE(vm, method_get_exc_handler_number);
- method_get_offset = GET_INTERFACE(vm, method_get_offset);
+ method_get_vtable_offset = GET_INTERFACE(vm, method_get_vtable_offset);
method_get_indirect_address = GET_INTERFACE(vm, method_get_indirect_address);
method_get_native_func_addr = GET_INTERFACE(vm, method_get_native_func_addr);
method_get_max_locals = GET_INTERFACE(vm, method_get_max_locals);
@@ -335,7 +336,6 @@
method_is_final = GET_INTERFACE(vm, method_is_final);
method_is_abstract = GET_INTERFACE(vm, method_is_abstract);
method_is_strict = GET_INTERFACE(vm, method_is_strict);
- method_is_overridden = GET_INTERFACE(vm, method_is_overridden);
method_is_no_inlining = GET_INTERFACE(vm, method_is_no_inlining);
@@ -402,15 +402,13 @@
vm_get_system_object_class = GET_INTERFACE(vm, vm_get_system_object_class);
vm_get_system_class_class = GET_INTERFACE(vm, vm_get_system_class_class);
vm_get_system_string_class = GET_INTERFACE(vm, vm_get_system_string_class);
- vm_get_vtable_base = GET_INTERFACE(vm, vm_get_vtable_base);
+ vm_get_vtable_base_address = GET_INTERFACE(vm, vm_get_vtable_base_address);
vm_get_heap_base_address = GET_INTERFACE(vm, vm_get_heap_base_address);
vm_get_heap_ceiling_address = GET_INTERFACE(vm, vm_get_heap_ceiling_address);
vm_is_heap_compressed = GET_INTERFACE(vm, vm_is_heap_compressed);
vm_is_vtable_compressed = GET_INTERFACE(vm, vm_is_vtable_compressed);
vm_patch_code_block = GET_INTERFACE(vm, vm_patch_code_block);
vm_compile_method = GET_INTERFACE(vm, vm_compile_method);
- vm_register_jit_extended_class_callback = GET_INTERFACE(vm, vm_register_jit_extended_class_callback);
- vm_register_jit_overridden_method_callback = GET_INTERFACE(vm, vm_register_jit_overridden_method_callback);
vm_register_jit_recompiled_method_callback = GET_INTERFACE(vm, vm_register_jit_recompiled_method_callback);
vm_compiled_method_load = GET_INTERFACE(vm, vm_compiled_method_load);
vm_helper_get_addr = GET_INTERFACE(vm, vm_helper_get_addr);
@@ -570,7 +568,7 @@
bool
VMInterface::isArrayOfPrimitiveElements(void* vmClassHandle) {
- return type_info_is_primitive(class_get_element_type_info((Class_Handle) vmClassHandle))?true:false;
+ return class_is_non_ref_array((Class_Handle) vmClassHandle);
}
bool
@@ -626,7 +624,7 @@
uint32
VMInterface::getObjectSize(void * vmTypeHandle) {
- return class_get_boxed_data_size((Class_Handle) vmTypeHandle);
+ return class_get_object_size((Class_Handle) vmTypeHandle);
}
void* VMInterface::getSuperTypeVMTypeHandle(void* vmTypeHandle) {
@@ -672,7 +670,7 @@
uint64
VMInterface::getVTableBase() {
- return (uint64)vm_get_vtable_base();
+ return (uint64)vm_get_vtable_base_address();
}
void* VMInterface::getTypeHandleFromAllocationHandle(void* vmAllocationHandle)
@@ -716,8 +714,7 @@
uint32 MethodDesc::getByteCodeSize() const {return (uint32) method_get_bytecode_length(drlMethod);}
uint16 MethodDesc::getMaxStack() const {return (uint16) method_get_max_stack(drlMethod);}
uint32 MethodDesc::getNumHandlers() const {return method_get_exc_handler_number(drlMethod);}
-bool MethodDesc::isOverridden() const {return method_is_overridden(drlMethod)?true:false;}
-uint32 MethodDesc::getOffset() const {return method_get_offset(drlMethod);}
+uint32 MethodDesc::getOffset() const {return method_get_vtable_offset(drlMethod);}
void* MethodDesc::getIndirectAddress() const {return method_get_indirect_address(drlMethod);}
void* MethodDesc::getNativeAddress() const {return method_get_native_func_addr(drlMethod);}
@@ -1034,18 +1031,6 @@
if (!m)
return NULL;
return getMethodDesc(m);
-}
-
-void CompilationInterface::setNotifyWhenClassIsExtended(ObjectType * type,
- void * callbackData) {
- void * typeHandle = type->getVMTypeHandle();
- vm_register_jit_extended_class_callback(getJitHandle(), (Class_Handle) typeHandle,callbackData);
-}
-
-void CompilationInterface::setNotifyWhenMethodIsOverridden(MethodDesc * methodDesc,
- void * callbackData) {
- Method_Handle drlMethod = methodDesc->getMethodHandle();
- vm_register_jit_overridden_method_callback(getJitHandle(), drlMethod, callbackData);
}
void CompilationInterface::setNotifyWhenMethodIsRecompiled(MethodDesc * methodDesc,
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=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.h Thu Apr 17 06:10:05 2008
@@ -85,9 +85,6 @@
// returns true if vtable pointers are compressed
static bool isVTableCompressed();
- // returns size of vtable pointer (currently 4 if compressed and 8 otherwise)
- //static uint32 getVTablePtrSize() {return vm_get_vtable_ptr_size();}
-
// returns the offset of an object's virtual table
static uint32 getVTableOffset();
// returns the base for all vtables (addend to compressed vtable pointer)
@@ -238,7 +235,6 @@
//
// DRL kernel
//
- bool isOverridden() const;
uint32 getOffset() const;
void* getIndirectAddress() const;
void* getNativeAddress() const;
@@ -381,8 +377,6 @@
void unlockMethodData(void);
// methods that register JIT to be notified of various events
- void setNotifyWhenClassIsExtended(ObjectType * type, void * callbackData);
- void setNotifyWhenMethodIsOverridden(MethodDesc * methodDesc, void * callbackData);
void setNotifyWhenMethodIsRecompiled(MethodDesc * methodDesc, void * callbackData);
// write barrier instructions
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/build/vmcore.exp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/build/vmcore.exp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/build/vmcore.exp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/build/vmcore.exp Thu Apr 17 06:10:05 2008
@@ -13,7 +13,7 @@
class_get_array_element_class;
class_get_array_element_size;
class_get_array_of_class;
- class_get_boxed_data_size;
+ class_get_object_size;
class_get_class_loader;
class_get_class_of_primitive_type;
class_initialize;
@@ -26,7 +26,7 @@
class_get_declaring_class;
class_get_depth;
class_get_element_type_info;
- class_get_fast_instanceof_flag;
+ class_is_support_fast_instanceof;
class_get_field;
class_get_field_by_name;
class_get_flags;
@@ -59,7 +59,7 @@
class_is_reference;
class_is_valuetype;
class_load_class_by_descriptor;
- class_load_class_by_name;
+ vm_load_class_with_bootstrap;
vm_lookup_class_with_bootstrap;
class_lookup_method_recursively;
class_number_fields;
@@ -70,7 +70,7 @@
class_is_abstract;
class_is_final;
class_is_interface;
- compiled_method_load;
+ vm_compiled_method_load;
compress_reference;
class_cp_get_class_name;
class_cp_get_entry_name;
@@ -128,7 +128,7 @@
class_loader_lock;
class_loader_unlock;
get_thread_ptr;
- get_vm_interface;
+ vm_get_interface;
initialize_arg_list_iterator;
init_log_system;
is_enabled;
@@ -494,7 +494,7 @@
method_get_name;
method_get_native_func_addr;
method_get_exc_handler_number;
- method_get_offset;
+ method_get_vtable_offset;
method_get_return_type;
method_get_side_effects;
method_get_signature;
@@ -586,10 +586,10 @@
vm_get_gc_thread_local;
vm_helper_get_addr;
vm_helper_get_addr_optimized;
- vm_get_vtable_base;
+ vm_get_vtable_base_address;
vm_get_vtable_ptr_size;
- vm_heap_base_address;
- vm_heap_ceiling_address;
+ vm_get_heap_base_address;
+ vm_get_heap_ceiling_address;
vm_heavy_finalizer_block_mutator;
vm_helper_get_by_name;
vm_helper_get_calling_convention;
@@ -611,7 +611,7 @@
vm_patch_code_block;
vm_reclaim_native_objs;
vm_recompile_method;
- vm_references_are_compressed;
+ vm_is_heap_compressed;
vm_register_jit_extended_class_callback;
vm_register_jit_overridden_method_callback;
vm_register_jit_recompiled_method_callback;
@@ -619,7 +619,7 @@
vm_resolve_class_new;
vm_resume_threads_after;
vm_vector_size;
- vm_vtable_pointers_are_compressed;
+ vm_is_vtable_compressed;
vtable_get_class;
vtable_get_super_array_offset;
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/include/Class.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/include/Class.h?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/include/Class.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/include/Class.h Thu Apr 17 06:10:05 2008
@@ -28,9 +28,9 @@
#include <assert.h>
#include "open/gc.h"
+#include "open/rt_types.h"
#include "port_malloc.h"
#include "String_Pool.h"
-#include "vtable.h"
#include "jit_intf.h"
#include <vector>
@@ -61,7 +61,8 @@
class Package;
struct VM_thread;
struct AnnotationTable;
-
+struct VTable;
+struct Intfc_Table;
/** The constant pool entry descriptor.
* For each constant pool entry, the descriptor content varies depending
@@ -800,9 +801,6 @@
// class; after super class is loaded, it becomes a pointer to class
// structure of the super class.
//
- // The offset of this field is returned by class_get_super_offset.
- // Make sure to update this function if the field is moved around.
- //
Class_Super m_super_class;
// class name in internal (VM, class-file) format
@@ -817,7 +815,7 @@
Package* m_package;
// Distance in the hierarchy from java/lang/Object
- int m_depth;
+ uint32 m_depth;
// The field m_is_suitable_for_fast_instanceof should be 0
// if depth==0 or depth>=vm_max_fast_instanceof_depth()
@@ -942,9 +940,6 @@
// shift corresponding to size of element of array, undefined for non-arrays
unsigned int m_array_element_shift;
- // type descriptor for array element class
- TypeDesc* m_array_element_type_desc;
-
// Number of superinterfaces
uint16 m_num_superinterfaces;
@@ -1016,10 +1011,6 @@
// thread, which currently executes <clinit>
VM_thread* m_initializing_thread;
- // Notify JITs whenever tis class is extended by calling their
- // JIT_extended_class_callback callback function,
- Class_Extended_Notification_Record* m_notify_extended_records;
-
// These fields store information for
// Class Hierarchy Analysis JIT optimizations
// first class extending this class
@@ -1131,7 +1122,7 @@
/** Gets depth in the hierarchy of the given class.
* @return A number of classes in the super-class hierarchy.*/
- int get_depth() const { return m_depth; }
+ uint32 get_depth() const { return m_depth; }
bool get_fast_instanceof_flag() const { return m_is_suitable_for_fast_instanceof; }
/** Gets the vtable for the given class.
@@ -1263,14 +1254,6 @@
return m_array_element_class;
}
- /** Gets the array-element type descriptor.
- * @return Type descriptor for the element of an array
- * represented by this class.*/
- TypeDesc* get_array_element_type_desc() const {
- assert(is_array());
- return m_array_element_type_desc;
- }
-
/** Gets the class state.
* @return The class state.*/
Class_State get_state() const { return m_state; }
@@ -1740,20 +1723,6 @@
* @return An interface vtable from object; <code>NULL</code>, if no
* such interface exists for the object.*/
static void* helper_get_interface_vtable(ManagedObject* obj, Class* iid);
-
- /** Registers a callback that is called to notify the given JIT
- * whenever the given class is extended. The <code>callback_data</code>
- * pointer will be passed back to the JIT during the callback. The JIT's callback
- * function is <code>JIT_extended_class_callback</code>.
- * @param[in] jit_to_be_notified - JIT to notify on extending the class
- * @param[in] callback_data - data to be passed back to JIT, when the callback
- * is called*/
- void register_jit_extended_class_callback(JIT* jit_to_be_notified, void* callback_data);
-
- /** Calls registered JITs callbacks to notify that the given class was
- * extended by <code>new_class</code>.
- * @param[in] new_subclass - a subclass extending the given class*/
- void do_jit_extended_class_callbacks(Class* new_subclass);
// SourceDebugExtension class attribute support
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/include/class_interface.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/include/class_interface.h?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/include/class_interface.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/include/class_interface.h Thu Apr 17 06:10:05 2008
@@ -17,9 +17,6 @@
#ifndef __CLASS_INTERFACE_H__
#define __CLASS_INTERFACE_H__
-//#include "open/types.h"
-//#include "open/common.h"
-
/**
* Enum of constant pool tags
*/
@@ -37,72 +34,5 @@
_CONSTANT_InterfaceMethodref = 11,
_CONSTANT_NameAndType = 12
} ClassConstantPoolTags;
-
-/**
- * Class interface
- */
-
-/**
- * Class loader interface
- */
-#if 0
-/**
- * Function sets verify data in class loader.
- * @param classloader - class loader handler
- * @param data - verify data
- * @note Assertion is raised if classloader is equal to null.
- * @note Function makes non thread save operation and
- * must be called in thread safe point.
- */
-void
-cl_set_verify_data_ptr( ClassLoaderHandle classloader, void *data );
-
-/**
- * Function returns verify data in class loader.
- * @param classloader - class loader handler
- * @return Verify data in class loader.
- * @note Assertion is raised if classloader is equal to null.
- */
-void *
-cl_get_verify_data_ptr( ClassLoaderHandle classloader );
-
-/**
- * Function locks class loader.
- * @param classloader - class loader handler
- * @note Assertion is raised if classloader is equal to null.
- */
-void
-cl_acquire_lock( ClassLoaderHandle classloader );
-
-/**
- * Function releases class loader.
- * @param classloader - class loader handler
- * @note Assertion is raised if classloader is equal to null.
- */
-void
-cl_release_lock( ClassLoaderHandle classloader );
-
-/**
- * Function returns loaded class in class loader.
- * @param classloader - class loader handler
- * @param name - class name
- * @return Loaded class in classloader or null if class isn't loaded in class loader.
- * @note Assertion is raised if classloader or name are equal to null.
- */
-Class_Handle
-cl_get_class( ClassLoaderHandle classloader, const char *name );
-
-/**
- * Function returns loaded class in class loader.
- * @param classloader - class loader handler
- * @param name - class name
- * @return Loaded class in classloader if class isn't loaded in class loader
- * function loads it.
- * @note Assertion is raised if classloader or name are equal to null.
- */
-Class_Handle
-cl_load_class( ClassLoaderHandle classloader, const char *name );
-
-#endif
#endif
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/include/class_member.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/include/class_member.h?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/include/class_member.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/include/class_member.h Thu Apr 17 06:10:05 2008
@@ -17,6 +17,7 @@
#ifndef __CLASS_MEMBER_H__
#define __CLASS_MEMBER_H__
+#include "open/rt_types.h"
#include "annotation.h"
#include "Class.h"
#include "vm_java_support.h"
@@ -370,9 +371,6 @@
};
-struct Inline_Record;
-
-
// 20020222 This is only temporary to support the new JIT interface.
// We will reimplement the signature support.
struct Method_Signature {
@@ -570,10 +568,6 @@
*/
CodeChunkInfo *create_code_chunk_info_mt();
- // Notify JITs whenever this method is overridden by a newly loaded class.
- void register_jit_overridden_method_callback(JIT *jit_to_be_notified, void *callback_data);
- void do_jit_overridden_method_callbacks(Method *overriding_method);
-
// Notify JITs whenever this method is recompiled or initially compiled.
void register_jit_recompiled_method_callback(JIT *jit_to_be_notified, void *callback_data);
void do_jit_recompiled_method_callbacks();
@@ -785,12 +779,7 @@
return -1;
}
- Inline_Record *inline_records;
- void set_inline_assumption(JIT *jit, Method *caller);
void method_was_overridden();
-
- Method_Change_Notification_Record *_notify_override_records;
-
// Records JITs to be notified when a method is recompiled or initially compiled.
Method_Change_Notification_Record *_notify_recompiled_records;
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/include/dll_jit_intf.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/include/dll_jit_intf.h?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/include/dll_jit_intf.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/include/dll_jit_intf.h Thu Apr 17 06:10:05 2008
@@ -151,28 +151,6 @@
}
Boolean
- extended_class_callback(Class_Handle extended_class,
- Class_Handle new_class,
- void *callback_data)
- {
- if (_extended_class_callback != NULL) {
- return _extended_class_callback(this, extended_class, new_class, callback_data);
- }
- return FALSE;
- }
-
- Boolean
- overridden_method_callback(Method_Handle overridden_method,
- Method_Handle new_method,
- void *callback_data)
- {
- if (_overridden_method_callback != NULL) {
- return _overridden_method_callback(this, overridden_method, new_method, callback_data);
- }
- return FALSE;
- }
-
- Boolean
recompiled_method_callback(Method_Handle recompiled_method,
void *callback_data)
{
@@ -305,18 +283,6 @@
Method_Handle method,
const JitFrameContext* context
);
-
- Boolean
- (*_extended_class_callback)(JIT_Handle jit,
- Class_Handle extended_class,
- Class_Handle new_class,
- void *callback_data);
-
- Boolean
- (*_overridden_method_callback)(JIT_Handle jit,
- Method_Handle overridden_method,
- Method_Handle new_method,
- void *callback_data);
Boolean
(*_recompiled_method_callback)(JIT_Handle jit,
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/include/jit_export_rt.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/include/jit_export_rt.h?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/include/jit_export_rt.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/include/jit_export_rt.h Thu Apr 17 06:10:05 2008
@@ -41,26 +41,6 @@
// to be notified whenever, e.g., a VM data structure changes that would require
// code patching or recompilation.
-// The callback that corresponds to vm_register_jit_extended_class_callback.
-// The newly loaded class is new_class. The JIT should return TRUE if any code was modified
-// (consequently the VM will ensure correctness such as synchronizing I- and D-caches),
-// and FALSE otherwise.
-JITEXPORT Boolean
-JIT_extended_class_callback(JIT_Handle jit,
- Class_Handle extended_class,
- Class_Handle new_class,
- void *callback_data);
-
-// The callback that corresponds to vm_register_jit_overridden_method_callback.
-// The overriding method is new_method. The JIT should return TRUE if any code was modified
-// (consequently the VM will ensure correctness such as synchronizing I- and D-caches),
-// and FALSE otherwise.
-JITEXPORT Boolean
-JIT_overridden_method_callback(JIT_Handle jit,
- Method_Handle overridden_method,
- Method_Handle new_method,
- void *callback_data);
-
// The callback that corresponds to vm_register_jit_recompiled_method_callback.
// The JIT should return TRUE if any code was modified (consequently the VM will ensure
// correctness such as synchronizing I- and D-caches), and FALSE otherwise.
@@ -164,7 +144,7 @@
// Returns TRUE if the JIT will compress references within objects and vector elements by representing
-// them as offsets rather than raw pointers. The JIT should call the VM function vm_references_are_compressed()
+// them as offsets rather than raw pointers. The JIT should call the VM function vm_is_heap_compressed()
// during initialization in order to decide whether it should compress references.
JITEXPORT Boolean
JIT_supports_compressed_references(JIT_Handle jit);
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/include/jit_intf_cpp.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/include/jit_intf_cpp.h?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/include/jit_intf_cpp.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/include/jit_intf_cpp.h Thu Apr 17 06:10:05 2008
@@ -28,6 +28,7 @@
#include "open/types.h"
+#include "open/rt_types.h"
#include "jit_intf.h"
#include "jit_export_jpda.h"
#include "jni.h"
@@ -76,12 +77,6 @@
OpenMethodExecutionParams flags // in
) = 0;
- virtual void
- method_was_overridden(Method_Handle UNREF caller,
- Method_Handle UNREF callee
- ) {};
-
-
//
// Unwind a stack frame for a method give the context.
@@ -203,23 +198,12 @@
void * UNREF addr1,
void * UNREF addr2){ };
-
- virtual Boolean
- extended_class_callback(Class_Handle UNREF extended_class,
- Class_Handle UNREF new_class,
- void * UNREF callback_data) { return FALSE; };
-
- virtual Boolean
- overridden_method_callback(Method_Handle UNREF overridden_method,
- Method_Handle UNREF new_method,
- void * UNREF callback_data) { return FALSE; };
-
virtual Boolean
recompiled_method_callback(Method_Handle UNREF recompiled_method,
void * UNREF callback_data) { return FALSE; };
// Returns TRUE if the JIT will compress references within objects and vector elements by representing
- // them as offsets rather than raw pointers. The JIT should call the VM function vm_references_are_compressed()
+ // them as offsets rather than raw pointers. The JIT should call the VM function vm_is_heap_compressed()
// during initialization in order to decide whether it should compress references.
virtual Boolean
supports_compressed_references() = 0;
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/include/object_layout.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/include/object_layout.h?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/include/object_layout.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/include/object_layout.h Thu Apr 17 06:10:05 2008
@@ -136,13 +136,13 @@
inline ManagedObject *get_raw_reference_pointer(ManagedObject **slot_addr)
{
#ifdef REFS_USE_RUNTIME_SWITCH
- if (vm_references_are_compressed()) {
+ if (vm_is_heap_compressed()) {
#endif // REFS_USE_RUNTIME_SWITCH
#ifdef REFS_RUNTIME_OR_COMPRESSED
COMPRESSED_REFERENCE offset = *((COMPRESSED_REFERENCE *)slot_addr);
assert(is_compressed_reference(offset));
if (offset != 0) {
- return (ManagedObject*)((POINTER_SIZE_INT)vm_heap_base_address() + offset);
+ return (ManagedObject*)((POINTER_SIZE_INT)vm_get_heap_base_address() + offset);
}
return NULL;
@@ -229,10 +229,10 @@
POINTER_SIZE_INT padding2;
};
- VTable *vt_unsafe() { return (VTable*)(vt_offset + vm_get_vtable_base()); }
+ VTable *vt_unsafe() { return (VTable*)(vt_offset + (UDATA)vm_get_vtable_base_address()); }
VTable *vt() { assert(vt_offset); return vt_unsafe(); }
static VTable *allocation_handle_to_vtable(Allocation_Handle ah) {
- return (VTable *) ((POINTER_SIZE_INT)ah + vm_get_vtable_base());
+ return (VTable *) ((UDATA)ah + (UDATA)vm_get_vtable_base_address());
}
static bool are_vtable_pointers_compressed() { return true; }
#else // USE_COMPRESSED_VTABLE_POINTERS
@@ -332,6 +332,7 @@
#endif
#endif // _OBJECT_LAYOUT_H_
+
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/C_Interface.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/C_Interface.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/C_Interface.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/C_Interface.cpp Thu Apr 17 06:10:05 2008
@@ -25,6 +25,7 @@
#include "vm_arrays.h"
#include "vm_strings.h"
#include "properties.h"
+#include "vtable.h"
#include "open/hythread_ext.h"
#include "port_mutex.h"
@@ -39,6 +40,8 @@
#include "open/vm_method_access.h"
#include "open/vm_class_manipulation.h"
#include "open/vm_class_loading.h"
+#include "open/vm_class_info.h"
+#include "open/vm_ee.h"
#include "jit_intf.h"
BOOLEAN class_is_final(Class_Handle cl) {
@@ -397,7 +400,7 @@
}
-unsigned method_get_offset(Method_Handle m)
+size_t method_get_vtable_offset(Method_Handle m)
{
assert(m);
return m->get_offset();
@@ -461,15 +464,6 @@
} // method_is_overridden
-JIT_Handle method_get_JIT_id(Compile_Handle h)
-{
- assert(h);
- Compilation_Handle* ch = (Compilation_Handle*)h;
- return ch->jit;
-} //method_get_JIT_id
-
-
-
const char* class_get_name(Class_Handle cl)
{
assert(cl);
@@ -489,26 +483,13 @@
} //class_get_flags
-int class_get_super_offset()
-{
- return sizeof(VTable*);
-} //class_get_super_offset
-
-
-int vtable_get_super_array_offset()
-{
- VTable *vtable = 0;
- return (int) (((Byte *)&vtable->superclasses) - (Byte *)vtable);
-}//vtable_get_super_array_offset
-
-
-int class_get_depth(Class_Handle cl)
+U_32 class_get_depth(Class_Handle cl)
{
assert(cl);
return cl->get_depth();
} //class_get_depth
-Boolean class_get_fast_instanceof_flag(Class_Handle cl)
+BOOLEAN class_is_support_fast_instanceof(Class_Handle cl)
{
assert(cl);
return cl->get_fast_instanceof_flag();
@@ -809,33 +790,6 @@
return (Arg_List_Iterator)((Method *)m)->get_argument_list();
}
-
-
-
-
-
-Class_Handle
-vm_resolve_class(Compile_Handle h,
- Class_Handle c,
- unsigned index)
-{
- assert(c);
- return (Class*) resolve_class(h, c, index);
-} //vm_resolve_class
-
-
-
-Class_Handle
-vm_resolve_class_new(Compile_Handle h,
- Class_Handle c,
- unsigned index)
-{
- assert(c);
- return resolve_class_new(h, c, index);
-} //vm_resolve_class_new
-
-
-
Class_Handle resolve_class_from_constant_pool(Class_Handle c_handle, unsigned index)
{
assert(c_handle);
@@ -845,13 +799,9 @@
Field_Handle class_resolve_nonstatic_field(Class_Handle clss, unsigned short cp_index)
{
- Compilation_Handle ch;
- ch.env = VM_Global_State::loader_env;
- ch.jit = NULL;
- Field_Handle fh = resolve_field(&ch, (Class_Handle)clss, cp_index);
- if(!fh || field_is_static(fh))
- return NULL;
- return fh;
+ assert(clss);
+ Field* f = clss->_resolve_field(VM_Global_State::loader_env, cp_index);
+ return (!f || f->is_static()) ? NULL : f;
} // class_resolve_nonstatic_field
@@ -862,19 +812,13 @@
return ch->get_class_loader();
} //class_get_class_loader
-
-
Class_Handle
-class_load_class_by_name(const char *name,
- Class_Handle ch)
+vm_load_class_with_bootstrap(const char *name)
{
- assert(ch);
Global_Env *env = VM_Global_State::loader_env;
String *n = env->string_pool.lookup(name);
- return ch->get_class_loader()->LoadClass(env, n);
-} //class_load_class_by_name
-
-
+ return env->bootstrap_class_loader->LoadClass(env, n);
+}
Class_Handle
vm_lookup_class_with_bootstrap(const char* name)
@@ -927,67 +871,6 @@
return ch->get_class_loader()->LoadClass(env, n);;
} //class_load_class_by_descriptor
-
-Class_Handle class_find_loaded(ClassLoaderHandle loader, const char* name)
-{
- char* name3 = strdup(name);
- char* p = name3;
- while (*p) {
- if (*p=='.') *p='/';
- p++;
- }
- Global_Env* env = VM_Global_State::loader_env;
- String* name2 = env->string_pool.lookup(name3);
- Class* ch;
- if (loader) {
- ch = loader->LookupClass(name2);
- } else {
- ch = env->bootstrap_class_loader->LookupClass(name2);
- }
- STD_FREE(name3);
- if(ch && (!ch->verify(env) || !ch->prepare(env))) return NULL;
- return ch;
-}
-
-Class_Handle class_find_class_from_loader(ClassLoaderHandle loader, const char* n, Boolean init)
-{
- ASSERT_RAISE_AREA;
- assert(hythread_is_suspend_enabled()); // -salikh
- char *new_name = strdup(n);
- char *p = new_name;
- while (*p) {
- if (*p == '.') *p = '/';
- p++;
- }
- String* name = VM_Global_State::loader_env->string_pool.lookup(new_name);
- STD_FREE(new_name);
- Class* ch;
- if (loader) {
- ch = class_load_verify_prepare_by_loader_jni(
- VM_Global_State::loader_env, name, loader);
- } else {
- assert(hythread_is_suspend_enabled());
- ch = class_load_verify_prepare_from_jni(VM_Global_State::loader_env, name);
- }
- if (!ch) return NULL;
- // All initialization from jni should not propagate exceptions and
- // should return to calling native method.
- if(init) {
- class_initialize_from_jni(ch);
-
- if (exn_raised()) {
- return NULL;
- }
- }
-
- if(exn_raised()) {
- return 0;
- }
-
- return ch;
-}
-
-
//
// The following do not cause constant pools to be resolve, if they are not
// resolved already
@@ -1071,7 +954,7 @@
*end_offset = h->get_end_pc();
*handler_offset = h->get_handler_pc();
*handler_cpindex = h->get_catch_type_index();
-} //method_get_handler_info
+}
@@ -1129,16 +1012,7 @@
} //class_lookup_method_recursively
-struct ChList {
- JIT_Handle jit;
- Compilation_Handle ch;
- ChList* next;
-};
-
-static ChList* chs = NULL;
-
-
-int object_get_vtable_offset()
+size_t object_get_vtable_offset()
{
return 0;
} //object_get_vtable_offset
@@ -1197,14 +1071,6 @@
} //vector_first_element_offset_unboxed
-int array_first_element_offset_unboxed(Class_Handle element_type)
-{
- assert(element_type);
- return vector_first_element_offset_unboxed(element_type);
-} //array_first_element_offset_unboxed
-
-
-
int vector_first_element_offset(VM_Data_Type element_type)
{
switch(element_type) {
@@ -1234,16 +1100,6 @@
} //method_is_java
-
-
-// 20020220 TO DO:
-// 1. Add the is_value_type field to the Java build of VM?
-Boolean class_is_valuetype(Class_Handle ch)
-{
- assert(ch);
- return class_is_primitive(ch);
-} //class_is_valuetype
-
BOOLEAN class_is_enum(Class_Handle ch)
{
assert(ch);
@@ -1417,7 +1273,7 @@
} // method_get_signature
-unsigned class_number_fields(Class_Handle ch)
+U_16 class_number_fields(Class_Handle ch)
{
assert(ch);
return ch->get_number_of_fields();
@@ -1443,7 +1299,7 @@
} // class_num_instance_fields_recursive
-Field_Handle class_get_field(Class_Handle ch, unsigned idx)
+Field_Handle class_get_field(Class_Handle ch, U_16 idx)
{
assert(ch);
if(idx >= ch->get_number_of_fields()) return NULL;
@@ -1595,13 +1451,6 @@
return ms->return_type_desc;
} //method_ret_type_get_type_info
-
-void free_string_buffer(char *buffer)
-{
- STD_FREE(buffer);
-} //free_string_buffer
-
-
Type_Info_Handle field_get_type_info(Field_Handle fh)
{
assert(fh);
@@ -1612,15 +1461,6 @@
} // field_get_type_info
-
-Type_Info_Handle class_get_element_type_info(Class_Handle ch)
-{
- assert(ch);
- TypeDesc* td = ch->get_array_element_type_desc();
- assert(td);
- return td;
-} //class_get_element_type_info
-
/////////////////////////////////////////////////////
// New GC stuff
@@ -1684,15 +1524,6 @@
& CL_PROP_ALIGNMENT_MASK);
} //class_get_alignment
-
-
-// (20020313) Should it always be the same as class_get_alignment?
-unsigned class_get_alignment_unboxed(Class_Handle ch)
-{
- assert(ch);
- return class_get_alignment(ch);
-} //class_get_alignment_unboxed
-
//
// Returns the size of an element in the array class.
//
@@ -1702,13 +1533,11 @@
return ch->get_array_element_size();
} //class_element_size
-
-
-unsigned class_get_boxed_data_size(Class_Handle ch)
+size_t class_get_object_size(Class_Handle ch)
{
assert(ch);
return ch->get_allocated_size();
-} //class_get_boxed_data_size
+} //class_get_object_size
@@ -1738,8 +1567,6 @@
} // method_is_no_inlining
-#define QUAL_NAME_BUFF_SIZE 128
-
// Class ch is a subclass of method_get_class(mh). The function returns a method handle
// for an accessible method overriding mh in ch or in its closest superclass that overrides mh.
// Class ch must be a class not an interface.
@@ -1854,28 +1681,28 @@
}
-VMEXPORT Boolean vm_references_are_compressed()
+BOOLEAN vm_is_heap_compressed()
{
return REFS_IS_COMPRESSED_MODE;
-} //vm_references_are_compressed
+} //vm_is_heap_compressed
-VMEXPORT void *vm_heap_base_address()
+void *vm_get_heap_base_address()
{
return (void*)VM_Global_State::loader_env->heap_base;
-} //vm_heap_base_address
+} //vm_get_heap_base_address
-VMEXPORT void *vm_heap_ceiling_address()
+void *vm_get_heap_ceiling_address()
{
return (void *)VM_Global_State::loader_env->heap_end;
-} //vm_heap_ceiling_address
+} //vm_get_heap_ceiling_address
-Boolean vm_vtable_pointers_are_compressed()
+BOOLEAN vm_is_vtable_compressed()
{
return ManagedObject::are_vtable_pointers_compressed();
-} //vm_vtable_pointers_are_compressed
+} //vm_is_vtable_compressed
Class_Handle allocation_handle_get_class(Allocation_Handle ah)
@@ -1883,9 +1710,9 @@
assert(ah);
VTable *vt;
- if (vm_vtable_pointers_are_compressed())
+ if (vm_is_vtable_compressed())
{
- vt = (VTable *) ((POINTER_SIZE_INT)ah + vm_get_vtable_base());
+ vt = (VTable *) ((UDATA)ah + (UDATA)vm_get_vtable_base_address());
}
else
{
@@ -1901,50 +1728,11 @@
return ch->get_allocation_handle();
}
-
-unsigned vm_get_vtable_ptr_size()
-{
- if(vm_vtable_pointers_are_compressed())
- {
- return sizeof(uint32);
- }
- else
- {
- return sizeof(POINTER_SIZE_INT);
- }
-}
-
-
////////////////////////////////////////////////////////////////////////////////////
// Direct call-related functions that allow a JIT to be notified whenever a VM data
// structure changes that would require code patching or recompilation.
////////////////////////////////////////////////////////////////////////////////////
-// Called by a JIT in order to be notified whenever the given class (or any of its subclasses?)
-// is extended. The callback_data pointer will be passed back to the JIT during the callback.
-// The callback function is JIT_extended_class_callback.
-void vm_register_jit_extended_class_callback(JIT_Handle jit, Class_Handle clss,
- void* callback_data)
-{
- assert(clss);
- JIT* jit_to_be_notified = (JIT*)jit;
- Class *c = (Class *)clss;
- clss->register_jit_extended_class_callback(jit_to_be_notified, callback_data);
-} // vm_register_jit_extended_class_callback
-
-
-// Called by a JIT in order to be notified whenever the given method is overridden by a newly
-// loaded class. The callback_data pointer will be passed back to the JIT during the callback.
-// The callback function is JIT_overridden_method_callback.
-void vm_register_jit_overridden_method_callback(JIT_Handle jit, Method_Handle method,
- void* callback_data)
-{
- assert(method);
- JIT* jit_to_be_notified = (JIT*)jit;
- method->register_jit_overridden_method_callback(jit_to_be_notified, callback_data);
-} //vm_register_jit_overridden_method_callback
-
-
// Called by a JIT in order to be notified whenever the given method is recompiled or
// initially compiled. The callback_data pointer will be passed back to the JIT during the callback.
// The callback method is JIT_recompiled_method_callback.
@@ -1977,17 +1765,6 @@
} //vm_patch_code_block
-
-// Called by a JIT to have the VM recompile a method using the specified JIT. After
-// recompilation, the corresponding vtable entries will be updated, and the necessary
-// callbacks to JIT_recompiled_method_callback will be made. It is a requirement that
-// the method has not already been compiled by the given JIT; this means that multiple
-// instances of a JIT may need to be active at the same time.
-void vm_recompile_method(JIT_Handle jit, Method_Handle method)
-{
- compile_do_compilation_jit((Method*) method, (JIT*) jit);
-} // vm_recompile_method
-
// Called by JIT during compilation to have the VM synchronously request a JIT (maybe another one)
// to compile another method.
JIT_Result vm_compile_method(JIT_Handle jit, Method_Handle method)
@@ -1995,10 +1772,6 @@
return compile_do_compilation_jit((Method*) method, (JIT*) jit);
} // vm_compile_method
-CallingConvention vm_managed_calling_convention()
-{
- return CC_Vm;
-} //vm_managed_calling_convention
void vm_properties_set_value(const char* key, const char* value, PropertyTable table_number)
{
@@ -2042,22 +1815,21 @@
}
}
-int vm_property_is_set(const char* key, PropertyTable table_number)
+BOOLEAN vm_property_is_set(const char* key, PropertyTable table_number)
{
- int value;
+ bool value = false;
assert(key);
switch(table_number) {
case JAVA_PROPERTIES:
- value = VM_Global_State::loader_env->JavaProperties()->is_set(key) ? 1 : 0;
+ value = VM_Global_State::loader_env->JavaProperties()->is_set(key);
break;
case VM_PROPERTIES:
- value = VM_Global_State::loader_env->VmProperties()->is_set(key) ? 1 : 0;
+ value = VM_Global_State::loader_env->VmProperties()->is_set(key);
break;
default:
- value = -1;
ASSERT(0, "Unknown property table: " << table_number);
}
- return value;
+ return value ? TRUE : FALSE;
}
char** vm_properties_get_keys(PropertyTable table_number)
@@ -2181,6 +1953,7 @@
Annotation* antn = table->table[i];
Type_Info_Handle tih = (Type_Info_Handle) type_desc_create_from_java_descriptor(antn->type->bytes, owner->get_class_loader());
if (tih) {
+ //FIXME optimize: first check if class name matches
Class* type = type_info_get_class(tih);
if (antn_type == type) {
return antn;
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Class.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Class.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Class.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Class.cpp Thu Apr 17 06:10:05 2008
@@ -41,7 +41,7 @@
#include "cci.h"
#include "interpreter.h"
#include "port_threadunsafe.h"
-
+#include "vtable.h"
#include "inline_info.h"
#ifdef _IPF_
@@ -87,7 +87,6 @@
m_num_dimensions = 0;
m_array_base_class = m_array_element_class = NULL;
- m_array_element_type_desc = NULL;
m_access_flags = 0;
m_num_superinterfaces = 0;
@@ -135,8 +134,6 @@
m_num_field_padding_bytes = 0;
- m_notify_extended_records = 0;
-
m_depth = 0;
m_is_suitable_for_fast_instanceof = 0;
@@ -167,12 +164,6 @@
if(m_lock)
delete m_lock;
-
- if(m_array_element_type_desc)
- {
- delete m_array_element_type_desc;
- m_array_element_type_desc = NULL;
- }
}
@@ -319,8 +310,6 @@
m_cha_next_sibling = get_super_class()->m_cha_first_child;
get_super_class()->m_cha_first_child = this;
}
- // Notify interested JITs that the superclass has been extended.
- superClass->do_jit_extended_class_callbacks(this);
}
//
@@ -380,7 +369,6 @@
m_state = ST_Initialized;
assert(elementClass);
- m_array_element_type_desc = type_desc_create_from_class(elementClass);
// insert Java field, required by spec - 'length I'
m_num_fields = 1;
@@ -624,9 +612,7 @@
_jits = NULL;
_side_effects = MSE_Unknown;
_method_sig = 0;
- inline_records = 0;
- _notify_override_records = NULL;
_notify_recompiled_records = NULL;
_index = 0;
_max_stack=_max_locals=_n_exceptions=_n_handlers=0;
@@ -1114,47 +1100,6 @@
}
};
-
-void Class::register_jit_extended_class_callback(JIT* jit_to_be_notified, void* callback_data)
-{
- // Don't insert the same entry repeatedly on the notify_extended_records list.
- Class_Extended_Notification_Record* nr = m_notify_extended_records;
- while(nr != NULL) {
- if(nr->equals(this, jit_to_be_notified, callback_data)) {
- return;
- }
- nr = nr->next;
- }
-
- // Insert a new notification record.
- Class_Extended_Notification_Record* new_nr =
- (Class_Extended_Notification_Record*)STD_MALLOC(sizeof(Class_Extended_Notification_Record));
- new_nr->class_of_interest = this;
- new_nr->jit = jit_to_be_notified;
- new_nr->callback_data = callback_data;
- new_nr->next = m_notify_extended_records;
- m_notify_extended_records = new_nr;
-} // Class::register_jit_extended_class_callback
-
-
-void Class::do_jit_extended_class_callbacks(Class* new_subclass)
-{
- Class_Extended_Notification_Record* nr;
- for(nr = m_notify_extended_records; nr != NULL; nr = nr->next) {
- JIT* jit_to_be_notified = nr->jit;
- Boolean code_was_modified =
- jit_to_be_notified->extended_class_callback(this,
- new_subclass, nr->callback_data);
- if(code_was_modified) {
-#ifdef _IPF_
- sync_i_cache();
- do_mf();
-#endif // _IPF_
- }
- }
-} // Class::do_jit_extended_class_callbacks
-
-
void Class::lock()
{
m_lock->_lock();
@@ -1184,11 +1129,6 @@
size += m_static_data_size;
if(!is_interface())
size += sizeof(VTable);
- for(Class_Extended_Notification_Record* mcnr = m_notify_extended_records;
- mcnr != NULL; mcnr = mcnr->next)
- {
- size += sizeof(Class_Extended_Notification_Record);
- }
size += sizeof(Lock_Manager);
return size;
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Environment.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Environment.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Environment.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Environment.cpp Thu Apr 17 06:10:05 2008
@@ -340,7 +340,8 @@
assert(pool_size);
}
-POINTER_SIZE_INT vm_get_vtable_base()
+
+void* vm_get_vtable_base_address()
{
assert (VM_Global_State::loader_env->VTableMemoryManager);
@@ -348,8 +349,8 @@
assert (VM_Global_State::loader_env->VTableMemoryManager->get_base());
// Subtract a small number (like 1) from the real base so that
// no valid vtable offsets will ever be 0.
- return (POINTER_SIZE_INT) (VM_Global_State::loader_env->VTableMemoryManager->get_base() - 8);
+ return (void*) (VM_Global_State::loader_env->VTableMemoryManager->get_base() - 8);
#else
- return 0;
+ return NULL;
#endif
} //vm_get_vtable_base
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp Thu Apr 17 06:10:05 2008
@@ -19,6 +19,7 @@
#include "cxxlog.h"
#include "open/vm_class_manipulation.h"
+#include "vtable.h"
#include "Class.h"
#include "open/jthread.h"
//#include "open/gc.h"
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Prepare.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Prepare.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Prepare.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Prepare.cpp Thu Apr 17 06:10:05 2008
@@ -887,7 +887,7 @@
}
}
if(m_depth > 0
- && (unsigned)m_depth < vm_max_fast_instanceof_depth()
+ && m_depth < vm_max_fast_instanceof_depth()
&& !is_array()
&& !is_interface())
{
@@ -1306,10 +1306,10 @@
m_vtable->methods[i] = NULL; // for now
}
- if(vm_vtable_pointers_are_compressed())
+ if(vm_is_vtable_compressed())
{
m_allocation_handle =
- (Allocation_Handle)((POINTER_SIZE_INT)m_vtable - vm_get_vtable_base());
+ (Allocation_Handle)((UDATA)m_vtable - (UDATA)vm_get_vtable_base_address());
}
else
{
@@ -1370,7 +1370,7 @@
// Set up the class_properties field.
if(is_array()) {
- m_array_element_size = (vm_references_are_compressed()
+ m_array_element_size = (vm_is_heap_compressed()
? sizeof(COMPRESSED_REFERENCE) : sizeof(RAW_REFERENCE));
m_array_element_shift = m_array_element_size == 8 ? 3 : 2;
m_vtable->class_properties |= CL_PROP_ARRAY_MASK;
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Resolve.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Resolve.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Resolve.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Resolve.cpp Thu Apr 17 06:10:05 2008
@@ -96,14 +96,13 @@
#include "Class.h"
#include "classloader.h"
#include "environment.h"
-#include "jit_intf.h"
#include "compile.h"
#include "exceptions.h"
#include "interpreter.h"
#include "open/bytecodes.h"
#include "open/vm_class_manipulation.h"
-//#include "open/vm_util.h"
+#include "open/vm_ee.h"
static void class_report_failure(Class* target, uint16 cp_index, jthrowable exn)
@@ -761,14 +760,6 @@
}
return method;
}
-
-
-Field_Handle resolve_field(Compile_Handle h,
- Class_Handle c,
- unsigned index)
-{
- return c->_resolve_field(compile_handle_to_environment(h), index);
-} // resolve_field
//
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp Thu Apr 17 06:10:05 2008
@@ -27,6 +27,7 @@
#include "open/vm_method_access.h"
#include "open/vm_class_manipulation.h"
+#include "jit_import_rt.h"
#include "open/vm_properties.h"
#include "classloader.h"
#include "object_layout.h"
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/method.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/method.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/method.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/method.cpp Thu Apr 17 06:10:05 2008
@@ -543,117 +543,10 @@
return _exceptions[n];
}
-
-
-//////////////////////////////////////////////////////
-// begin inlining support
-
-struct Inline_Record {
- JIT *jit;
- Method *caller;
- Inline_Record *next;
- bool equals(JIT *jit_, Method* caller_){
- if (jit == jit_ &&
- caller == caller_)
- return true;
- return false;
- }
-};
-
-
-void Method::set_inline_assumption(JIT *jit, Method *caller)
-{
- // don't insert a record repeatedly
- Inline_Record *itr = inline_records;
- while (itr != NULL){
- if (itr->equals(jit, caller) )
- return;
- itr = itr->next;
- }
- Inline_Record *ir = (Inline_Record *)STD_MALLOC(sizeof(Inline_Record));
- ir->jit = jit;
- ir->caller = caller;
- ir->next = inline_records;
- inline_records = ir;
-} //Method::set_inline_assumption
-
-
void Method::method_was_overridden()
{
_flags.is_overridden = 1;
-
- while(inline_records) {
- Inline_Record *curr = inline_records;
- curr->jit->method_was_overridden(curr->caller, this);
- inline_records = curr->next;
- STD_FREE(curr);
- }
} //Method::method_was_overridden
-
-// end inlining support
-//////////////////////////////////////////////////////
-
-
-
-////////////////////////////////////////////////////////////////////
-// begin support for JIT notification when methods are overridden
-
-// Notify the given JIT whenever this method is overridden by a newly loaded class.
-// The callback_data pointer will be passed back to the JIT during the callback.
-// The JIT's callback function is JIT_overridden_method_callback.
-void Method::register_jit_overridden_method_callback(JIT *jit_to_be_notified, void *callback_data)
-{
- // Don't insert the same entry repeatedly on the notify_override_records list.
- Method_Change_Notification_Record *nr = _notify_override_records;
- while (nr != NULL) {
- if (nr->equals(jit_to_be_notified, callback_data)) {
- return;
- }
- nr = nr->next;
- }
-
- // Insert a new notification record.
- Method_Change_Notification_Record *new_nr =
- (Method_Change_Notification_Record *)STD_MALLOC(sizeof(Method_Change_Notification_Record));
- new_nr->method_of_interest = this;
- new_nr->jit = jit_to_be_notified;
- new_nr->callback_data = callback_data;
- new_nr->next = _notify_override_records;
- _notify_override_records = new_nr;
-} //Method::register_jit_overridden_method_callback
-
-
-void Method::do_jit_overridden_method_callbacks(Method *overriding_method)
-{
- Method_Change_Notification_Record *nr;
- for (nr = _notify_override_records; nr != NULL; nr = nr->next) {
- JIT *jit_to_be_notified = nr->jit;
- Boolean code_was_modified =
- jit_to_be_notified->overridden_method_callback(/*overridden_method*/ this,
- /*new_method*/ overriding_method,
- nr->callback_data);
- if (code_was_modified) {
-#ifdef _IPF_
- // 20030128 Is this flush_hw_cache() necessary?
- CodeChunkInfo *jit_info;
- for (jit_info = get_first_JIT_specific_info(); jit_info; jit_info = jit_info->_next) {
- if (jit_info->get_jit() == jit_to_be_notified) {
- flush_hw_cache((Byte *)jit_info->get_code_block_addr(), jit_info->get_code_block_size());
- }
- }
- sync_i_cache();
- do_mf();
-#endif //_IPF_
- }
- }
-} //Method::do_jit_overridden_method_callbacks
-
-// end support for JIT notification when methods are overridden
-////////////////////////////////////////////////////////////////////
-
-
-
-
////////////////////////////////////////////////////////////////////
// begin support for JIT notification when methods are recompiled
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions.cpp Thu Apr 17 06:10:05 2008
@@ -22,6 +22,7 @@
#define LOG_DOMAIN "exn"
#include "clog.h"
+#include "vtable.h"
#include "heap.h"
#include "classloader.h"
#include "exceptions.h"
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions_impl.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions_impl.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions_impl.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions_impl.cpp Thu Apr 17 06:10:05 2008
@@ -24,6 +24,7 @@
#include "clog.h"
#include "open/vm_class_manipulation.h"
+#include "vtable.h"
#include "Class.h"
#include "classloader.h"
#include "exceptions.h"
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions_jit.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions_jit.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions_jit.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions_jit.cpp Thu Apr 17 06:10:05 2008
@@ -23,9 +23,10 @@
#define LOG_DOMAIN "exn"
#include "clog.h"
+#include "open/vm_class_info.h"
#include "Class.h"
#include "open/types.h"
-
+#include "vtable.h"
#include "classloader.h"
#include "exceptions.h"
#include "exceptions_impl.h"
@@ -1173,4 +1174,5 @@
lil_free_code_stub(cs);
return addr;
} //exn_get_rth_throw_incompatible_class_change_exception
+
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/gc/root_set_enum_common.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/gc/root_set_enum_common.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/gc/root_set_enum_common.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/gc/root_set_enum_common.cpp Thu Apr 17 06:10:05 2008
@@ -21,7 +21,9 @@
#define LOG_DOMAIN "enumeration"
#include "cxxlog.h"
+#include "vm_log.h"
+#include "jit_import_rt.h"
#include "root_set_enum_internal.h"
#include "GlobalClassLoaderIterator.h"
#include "jit_intf_cpp.h"
@@ -33,6 +35,7 @@
#include "open/vm_method_access.h"
#include "finalize.h"
#include "cci.h"
+#include "vtable.h"
void vm_enumerate_interned_strings()
{
@@ -301,10 +304,8 @@
vm_stats_inc(cci->num_unwind_java_frames_gc);
#endif
TRACE2("enumeration", "enumerating eip=" << (void *) si_get_ip(si)
- << " is_first=" << !si_get_jit_context(si)->is_ip_past << " "
- << cci->get_method()->get_class()->get_name()->bytes << "."
- << cci->get_method()->get_name()->bytes
- << cci->get_method()->get_descriptor()->bytes);
+ << " is_first=" << !si_get_jit_context(si)->is_ip_past
+ << " " << cci->get_method());
cci->get_jit()->get_root_set_from_stack_frame(cci->get_method(), 0, si_get_jit_context(si));
ClassLoader* cl = cci->get_method()->get_class()->get_class_loader();
assert (cl);
@@ -327,18 +328,14 @@
}
}
TRACE2("enumeration", "enumerated eip=" << (void *) si_get_ip(si)
- << " is_first=" << !si_get_jit_context(si)->is_ip_past << " "
- << cci->get_method()->get_class()->get_name()->bytes << "."
- << cci->get_method()->get_name()->bytes
- << cci->get_method()->get_descriptor()->bytes);
+ << " is_first=" << !si_get_jit_context(si)->is_ip_past
+ << " " << cci->get_method());
} else {
#ifdef VM_STATS
vm_stats_inc(VM_Statistics::get_vm_stats().num_unwind_native_frames_gc);
#endif
Method* m = m2n_get_method(si_get_m2n(si));
- TRACE2("enumeration", "enumeration local handles "
- << (m ? m->get_name()->bytes : "")
- << (m ? m->get_descriptor()->bytes : ""));
+ TRACE2("enumeration", "enumeration local handles " << m);
oh_enumerate_handles(m2n_get_local_handles(si_get_m2n(si)));
if (m) {
ClassLoader* cl = m->get_class()->get_class_loader();
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/gc/stop_the_world_root_set_enum.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/gc/stop_the_world_root_set_enum.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/gc/stop_the_world_root_set_enum.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/gc/stop_the_world_root_set_enum.cpp Thu Apr 17 06:10:05 2008
@@ -22,6 +22,7 @@
#define LOG_DOMAIN "enumeration"
#include "cxxlog.h"
+#include "vtable.h"
#include "root_set_enum_internal.h"
#include "GlobalClassLoaderIterator.h"
#include <apr_time.h>
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/finalize.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/finalize.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/finalize.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/finalize.cpp Thu Apr 17 06:10:05 2008
@@ -37,7 +37,8 @@
#include "nogc.h"
#include "jit_runtime_support.h"
#include "finalize.h"
-
+#include "vtable.h"
+#include "jit_import_rt.h"
#include "finalizer_thread.h" /* added for NATIVE FINALIZER THREAD */
#include "ref_enqueue_thread.h" /* added for NATIVE REFERENCE ENQUEUE THREAD */
@@ -47,7 +48,7 @@
#undef LOG_DOMAIN
#include "cxxlog.h"
-
+#include "vm_log.h"
#include "thread_generic.h"
#ifndef USE_GC_STATIC
@@ -506,7 +507,7 @@
VM_Global_State::loader_env->VoidVoidDescriptor_String);
assert(finalize);
- TRACE2("finalize", "finalize object " << handle->object->vt()->clss->get_name()->bytes);
+ TRACE2("finalize", "finalize object " << handle->object->vt()->clss);
vm_execute_java_method_array( (jmethodID) finalize, 0, args);
tmn_suspend_enable();
@@ -517,7 +518,7 @@
INFO2("finalize", "Uncaught exception "
<< exn_get_name()
<< " while running a finalize of the object"
- << object->vt()->clss->get_name()->bytes << ".");
+ << object->vt()->clss << ".");
tmn_suspend_enable();
}
#endif
@@ -574,7 +575,7 @@
INFO2("ref", "Uncaught exception "
<< exn_get_name()
<< " while running a enqueue method of the object"
- << object->vt()->clss->get_name()->bytes << ".");
+ << object->vt()->clss << ".");
tmn_suspend_enable();
}
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/vm.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/vm.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/vm.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/vm.cpp Thu Apr 17 06:10:05 2008
@@ -15,9 +15,7 @@
* limitations under the License.
*/
-#include "Class.h"
#include "environment.h"
-#include "compile.h"
#include "object_layout.h"
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/vm_init.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/vm_init.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/vm_init.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/init/vm_init.cpp Thu Apr 17 06:10:05 2008
@@ -30,6 +30,7 @@
#include "open/jthread.h" // this is for jthread_self()
#include "open/vm_class_manipulation.h"
+#include "vtable.h"
#include "init.h"
#include "classloader.h"
#include "jni_utils.h"
@@ -137,7 +138,7 @@
}
extern "C" VMEXPORT
-void* get_vm_interface(const char* func_name){
+void* vm_get_interface(const char* func_name){
static apr_dso_handle_t* descriptor = get_harmonyvm_handle();
void* p_func = NULL;
int ret = apr_dso_sym((apr_dso_handle_sym_t*) &p_func, descriptor, func_name);
@@ -148,8 +149,6 @@
if (p_func) {
return p_func;
- } else if (strcmp(func_name,"class_is_support_fast_instanceof") == 0) {
- return (void*)class_get_fast_instanceof_flag;
} else if (strcmp(func_name,"vector_get_first_element_offset") == 0) {
return (void*)vector_first_element_offset_class_handle;
} else if (strcmp(func_name,"vector_get_length_offset") == 0) {
@@ -164,26 +163,6 @@
return (void*)hythread_uses_fast_tls;
} else if (strcmp(func_name,"vm_get_tls_offset_in_segment") == 0) {
return (void*)hythread_get_hythread_offset_in_tls;
- } else if (strcmp(func_name,"vm_get_heap_base_address") == 0) {
- return (void*)vm_heap_base_address;
- } else if (strcmp(func_name,"vm_get_heap_ceiling_address") == 0) {
- return (void*)vm_heap_ceiling_address;
- } else if (strcmp(func_name,"vm_is_heap_compressed") == 0) {
- return (void*)vm_references_are_compressed;
- } else if (strcmp(func_name,"vm_is_vtable_compressed") == 0) {
- return (void*)vm_vtable_pointers_are_compressed;
- } else if (strcmp(func_name,"vm_compiled_method_load") == 0) {
- return (void*)compiled_method_load;
- } else if (strcmp(func_name,"vm_properties_destroy_keys") == 0) {
- return (void*)vm_properties_destroy_keys;
- } else if (strcmp(func_name,"vm_properties_destroy_value") == 0) {
- return (void*)vm_properties_destroy_value;
- } else if (strcmp(func_name,"vm_properties_get_keys") == 0) {
- return (void*)vm_properties_get_keys;
- } else if (strcmp(func_name,"vm_properties_get_keys_starting_with") == 0) {
- return (void*)vm_properties_get_keys_starting_with;
- } else if (strcmp(func_name,"vm_properties_get_value") == 0) {
- return (void*)vm_properties_get_value;
} else {
return NULL;
}
@@ -337,7 +316,7 @@
*/
static jint check_compression() {
// Check for a mismatch between whether the various VM components all compress references or not.
- Boolean vm_compression = vm_references_are_compressed();
+ Boolean vm_compression = vm_is_heap_compressed();
Boolean gc_compression = gc_supports_compressed_references();
if (vm_compression) {
if (!gc_compression) {
@@ -864,7 +843,7 @@
// compressed references, so it never answers "true" to supports_compressed_references().
// ppervov: this check is not correct since a call to
// gc_supports_compressed_references returns capability while a call to
- // vm_references_are_compressed returns current VM state, not potential
+ // vm_is_heap_compressed returns current VM state, not potential
// ability to support compressed mode
// So, this check is turned off for now and it is FIXME
// 20071109 process_compression_modes() now automatically selects compression
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/compile.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/compile.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/compile.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/compile.cpp Thu Apr 17 06:10:05 2008
@@ -23,6 +23,7 @@
#include "vm_log.h"
#include "open/gc.h"
+#include "open/vm_ee.h"
#include "open/vm_type_access.h"
#include "open/vm_method_access.h"
#include "open/vm_class_manipulation.h"
@@ -864,8 +865,8 @@
}
}
-VMEXPORT void compiled_method_load(Method_Handle method, uint32 codeSize,
- void* codeAddr, uint32 mapLength,
+VMEXPORT void vm_compiled_method_load(Method_Handle method, U_32 codeSize,
+ void* codeAddr, U_32 mapLength,
AddrLocation* addrLocationMap,
void* compileInfo, Method_Handle outer_method)
{
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/dll_jit.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/dll_jit.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/dll_jit.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/dll_jit.cpp Thu Apr 17 06:10:05 2008
@@ -39,8 +39,6 @@
_get_root_set_for_thread_dump(NULL),
_fix_handler_context(NULL),
_get_address_of_this(NULL),
-_extended_class_callback(NULL),
-_overridden_method_callback(NULL),
_recompiled_method_callback(NULL),
_execute_method(NULL),
_get_bc_location_for_native(NULL),
@@ -83,12 +81,6 @@
GET_OPTIONAL_FUNCTION(fn, handle, "JIT_next_command_line_argument");
_next_command_line_argument = (void (*)(JIT_Handle, const char *, const char *)) fn;
-
- GET_OPTIONAL_FUNCTION(fn, handle, "JIT_extended_class_callback");
- _extended_class_callback = (Boolean (*)(JIT_Handle, Class_Handle, Class_Handle, void *)) fn;
-
- GET_OPTIONAL_FUNCTION(fn, handle, "JIT_overridden_method_callback");
- _overridden_method_callback = (Boolean (*)(JIT_Handle, Method_Handle, Method_Handle, void *)) fn;
GET_OPTIONAL_FUNCTION(fn, handle, "JIT_recompiled_method_callback");
_recompiled_method_callback = (Boolean (*)(JIT_Handle, Method_Handle, void *)) fn;
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/jit_runtime_support.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/jit_runtime_support.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/jit_runtime_support.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/jit_runtime_support.cpp Thu Apr 17 06:10:05 2008
@@ -31,6 +31,7 @@
#include <stdlib.h>
#include "open/gc.h"
+#include "vtable.h"
#include "open/types.h"
#include "open/bytecodes.h"
#include "open/vm_class_manipulation.h"
@@ -51,6 +52,7 @@
#include "vm_arrays.h"
#include "vm_strings.h"
#include "vm_threads.h"
+#include "open/vm_ee.h"
#include "jvmti_interface.h"
#include "compile.h"
@@ -258,7 +260,7 @@
// We need to get the vtable in more than one place below
// Here are some macros to helper smooth over the compressed vtables
const POINTER_SIZE_INT vtable_off = object_get_vtable_offset();
- const POINTER_SIZE_INT vtable_add = vm_vtable_pointers_are_compressed() ? vm_get_vtable_base() : 0;
+ const POINTER_SIZE_INT vtable_add = vm_is_vtable_compressed() ? (POINTER_SIZE_INT)vm_get_vtable_base_address() : 0;
// Setup locals
cs = lil_parse_onto_end(cs, (type ? "locals 1;" : "locals 2;"));
@@ -286,7 +288,7 @@
if (type) {
if(type->get_fast_instanceof_flag()) {
cs = lil_parse_onto_end(cs,
- vm_vtable_pointers_are_compressed() ? "ld l0,[i0+%0i:g4],zx;" : "ld l0,[i0+%0i:pint];",
+ vm_is_vtable_compressed() ? "ld l0,[i0+%0i:g4],zx;" : "ld l0,[i0+%0i:pint];",
vtable_off);
assert(cs);
cs = lil_parse_onto_end(cs,
@@ -304,7 +306,7 @@
is_fast_off, depth_off);
assert(cs);
cs = lil_parse_onto_end(cs,
- vm_vtable_pointers_are_compressed() ? "ld l0,[i0+%0i:g4],zx;" : "ld l0,[i0+%0i:pint];",
+ vm_is_vtable_compressed() ? "ld l0,[i0+%0i:g4],zx;" : "ld l0,[i0+%0i:pint];",
vtable_off);
assert(cs);
cs = lil_parse_onto_end(cs,
@@ -328,7 +330,7 @@
"out platform:pint,pint:g4;");
assert(cs);
cs = lil_parse_onto_end(cs,
- vm_vtable_pointers_are_compressed() ? "ld l0,[i0+%0i:g4],zx;" : "ld l0,[i0+%0i:pint];",
+ vm_is_vtable_compressed() ? "ld l0,[i0+%0i:g4],zx;" : "ld l0,[i0+%0i:pint];",
vtable_off);
assert(cs);
cs = lil_parse_onto_end(cs,
@@ -372,7 +374,7 @@
VM_Statistics::get_vm_stats().num_type_checks_super_is_array ++;
else if (super->is_interface())
VM_Statistics::get_vm_stats().num_type_checks_super_is_interface ++;
- else if ((unsigned)super->get_depth() >= vm_max_fast_instanceof_depth())
+ else if (super->get_depth() >= vm_max_fast_instanceof_depth())
VM_Statistics::get_vm_stats().num_type_checks_super_is_too_deep ++;
UNSAFE_REGION_END
}
@@ -1939,7 +1941,7 @@
VM_Statistics::get_vm_stats().num_type_checks_super_is_array++;
else if (super->is_interface())
VM_Statistics::get_vm_stats().num_type_checks_super_is_interface++;
- else if ((unsigned)super->get_depth() >= vm_max_fast_instanceof_depth())
+ else if (super->get_depth() >= vm_max_fast_instanceof_depth())
VM_Statistics::get_vm_stats().num_type_checks_super_is_too_deep++;
UNSAFE_REGION_END
#endif // VM_STATS
@@ -2032,7 +2034,7 @@
* call class_is_subtype(o0, o1)
*/
LilCodeStub *cs2;
- if (vm_vtable_pointers_are_compressed())
+ if (vm_is_vtable_compressed())
{
cs2 = lil_parse_onto_end
(cs,
@@ -2053,7 +2055,7 @@
"ld o0, [l0+%0i:ref];"
"o1 = i1;"
"call %1i;",
- OFFSET(VTable, clss) + (vm_vtable_pointers_are_compressed() ? vm_get_vtable_base() : 0),
+ OFFSET(VTable, clss) + (vm_is_vtable_compressed() ? (UDATA)vm_get_vtable_base_address() : 0),
(void*) class_is_subtype);
if (is_checkcast) {
@@ -2093,7 +2095,7 @@
* check if i1 == l2
*/
LilCodeStub *cs2;
- if (vm_vtable_pointers_are_compressed())
+ if (vm_is_vtable_compressed())
{
cs2 = lil_parse_onto_end
(cs,
@@ -2115,7 +2117,7 @@
"jc i1 != l2, failed;",
Class::get_offset_of_depth(),
(POINTER_SIZE_INT)sizeof(Class*),
- OFFSET(VTable, superclasses) - sizeof(Class*) + (vm_vtable_pointers_are_compressed() ? vm_get_vtable_base() : 0)
+ OFFSET(VTable, superclasses) - sizeof(Class*) + (vm_is_vtable_compressed() ? (UDATA)vm_get_vtable_base_address() : 0)
);
if (is_checkcast) {
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/native_overrides.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/native_overrides.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/native_overrides.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/native_overrides.cpp Thu Apr 17 06:10:05 2008
@@ -19,7 +19,7 @@
* @version $Revision: 1.1.2.1.4.4 $
*/
-
+#include "vtable.h"
#include "Class.h"
#include "environment.h"
#include "lil.h"
@@ -29,6 +29,7 @@
#include "object_layout.h"
#include "open/types.h"
#include "open/vm_util.h"
+#include "open/vm_ee.h"
#include "open/vm.h"
// *** This is for readInternal override
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_heap.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_heap.h?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_heap.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_heap.h Thu Apr 17 06:10:05 2008
@@ -106,7 +106,7 @@
if (clss->is_array()) {
return vm_vector_size(clss, get_vector_length(obj));
} else {
- return class_get_boxed_data_size(clss);
+ return class_get_object_size(clss);
}
}
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_object.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_object.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_object.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_object.cpp Thu Apr 17 06:10:05 2008
@@ -28,7 +28,7 @@
#include "object_handles.h"
#include "object_generic.h"
#include "mon_enter_exit.h"
-
+#include "vtable.h"
#include "thread_manager.h"
#include "suspend_checker.h"
#include "open/vm.h"
@@ -78,7 +78,7 @@
if(object_clss->is_array())
*size_ptr = object_clss->calculate_array_size(get_vector_length((Vector_Handle)mo));
else
- *size_ptr = class_get_boxed_data_size(object_clss);
+ *size_ptr = class_get_object_size(object_clss);
assert(*size_ptr > 0);
tmn_suspend_enable();
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/native/java_lang_VMClassRegistry.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/native/java_lang_VMClassRegistry.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/native/java_lang_VMClassRegistry.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/native/java_lang_VMClassRegistry.cpp Thu Apr 17 06:10:05 2008
@@ -30,6 +30,7 @@
#include "cxxlog.h"
#include "open/vm_class_manipulation.h"
+#include "open/vm_class_loading.h"
#include "Package.h"
#include "classloader.h"
#include "jni_utils.h"
@@ -40,6 +41,68 @@
#include "java_lang_VMClassRegistry.h"
#include "java_lang_ClassLoader.h"
+
+// This function is for native library support
+// It takes a class name with .s not /s.
+// FIXME: caller could convert it itself
+Class_Handle class_find_loaded(ClassLoaderHandle loader, const char* name)
+{
+ char* name3 = strdup(name);
+ char* p = name3;
+ while (*p) {
+ if (*p=='.') *p='/';
+ p++;
+ }
+ Global_Env* env = VM_Global_State::loader_env;
+ String* name2 = env->string_pool.lookup(name3);
+ Class* ch;
+ if (loader) {
+ ch = loader->LookupClass(name2);
+ } else {
+ ch = env->bootstrap_class_loader->LookupClass(name2);
+ }
+ STD_FREE(name3);
+ if(ch && (!ch->verify(env) || !ch->prepare(env))) return NULL;
+ return ch;
+}
+
+Class_Handle class_find_class_from_loader(ClassLoaderHandle loader, const char* n, Boolean init)
+{
+ ASSERT_RAISE_AREA;
+ assert(hythread_is_suspend_enabled()); // -salikh
+ char *new_name = strdup(n);
+ char *p = new_name;
+ while (*p) {
+ if (*p == '.') *p = '/';
+ p++;
+ }
+ String* name = VM_Global_State::loader_env->string_pool.lookup(new_name);
+ STD_FREE(new_name);
+ Class* ch;
+ if (loader) {
+ ch = class_load_verify_prepare_by_loader_jni(
+ VM_Global_State::loader_env, name, loader);
+ } else {
+ assert(hythread_is_suspend_enabled());
+ ch = class_load_verify_prepare_from_jni(VM_Global_State::loader_env, name);
+ }
+ if (!ch) return NULL;
+ // All initialization from jni should not propagate exceptions and
+ // should return to calling native method.
+ if(init) {
+ class_initialize_from_jni(ch);
+
+ if (exn_raised()) {
+ return NULL;
+ }
+ }
+
+ if(exn_raised()) {
+ return 0;
+ }
+
+ return ch;
+}
/*
* Class: java_lang_VMClassRegistry
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/native/org_apache_harmony_drlvm_VMHelper.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/native/org_apache_harmony_drlvm_VMHelper.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/native/org_apache_harmony_drlvm_VMHelper.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/native/org_apache_harmony_drlvm_VMHelper.cpp Thu Apr 17 06:10:05 2008
@@ -19,8 +19,10 @@
#include "org_apache_harmony_drlvm_VMHelper.h"
#include "open/vm.h"
+#include "open/vm_ee.h"
#include "open/vm_util.h"
#include "environment.h"
+#include "vtable.h"
#include <assert.h>
JNIEXPORT jint JNICALL Java_org_apache_harmony_drlvm_VMHelper_getPointerTypeSize (JNIEnv *, jclass) {
@@ -44,7 +46,7 @@
/** @return vtable base offset if is in compressed-refs mode or -1*/
JNIEXPORT jlong JNICALL Java_org_apache_harmony_drlvm_VMHelper_getCompressedModeVTableBaseOffset(JNIEnv *, jclass) {
#ifdef USE_COMPRESSED_VTABLE_POINTERS
- return (jlong)vm_get_vtable_base();
+ return (jlong)vm_get_vtable_base_address();
#else
return -1;
#endif
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/ncai/ncai_step.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/ncai/ncai_step.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/ncai/ncai_step.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/ncai/ncai_step.cpp Thu Apr 17 06:10:05 2008
@@ -531,7 +531,7 @@
}
Class_Handle klass = method_get_class((Method_Handle)m);
- ClassLoader* loader = (ClassLoader*)class_get_class_loader(klass);
+ ClassLoader* loader = klass->get_class_loader();
GenericFunctionPointer func = loader->LookupNative((Method_Handle)m);
assert(func);
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/object/object_handles.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/object/object_handles.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/object/object_handles.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/object/object_handles.cpp Thu Apr 17 06:10:05 2008
@@ -24,6 +24,7 @@
#include <stdlib.h>
+#include "jit_import_rt.h"
#include "environment.h"
#include "exceptions.h"
#include "open/gc.h"
@@ -86,8 +87,8 @@
void GcFrame::add_object(ManagedObject** p)
{
assert(p);
- assert(NULL == *p || (*p >= vm_heap_base_address()
- && *p < vm_heap_ceiling_address()));
+ assert(NULL == *p || (*p >= vm_get_heap_base_address()
+ && *p < vm_get_heap_ceiling_address()));
assert(!hythread_is_suspend_enabled());
ensure_capacity();
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/object/vm_arrays.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/object/vm_arrays.cpp?rev=649083&r1=649082&r2=649083&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/object/vm_arrays.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/object/vm_arrays.cpp Thu Apr 17 06:10:05 2008
@@ -26,6 +26,7 @@
#include <assert.h>
+#include "vtable.h"
#include "environment.h"
#include "exceptions.h"
#include "object_handles.h"