Mercurial > hg > graal-compiler
diff src/share/vm/c1x/c1x_CodeInstaller.hpp @ 1429:abc670a709dc
* -XX:TraceC1X=0...5 controls the native c1x tracing
* -Dc1x.debug=true turns on the logging proxies and lots of log output on the java side
* provide more information about types to the compiler (type hierarchy, etc)
* provide exception handler tables to the compiler
* add exception handlers to the nmethod
* correct implementation of ExceptionObject
* exception handling/unwinding entry points
* modified versions of handle/unwind exception stubs using standard calling conventions
* exception throwing
* implicit null pointer exception, implicit div by 0 exception
* arraystore/classcast/arrayindex exceptions
* checkcast implementation
* newarray, anewarray, multinewarray implementation
* correct new instance initialization
* access to java class mirrors (for ldc)
* unresolved methods
* class resolving - class patching (asssembly prototype copying)
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Tue, 31 Aug 2010 22:13:30 -0700 |
parents | 695451afc619 |
children | b61a43cd1255 |
line wrap: on
line diff
--- a/src/share/vm/c1x/c1x_CodeInstaller.hpp Thu Aug 19 14:34:52 2010 -0700 +++ b/src/share/vm/c1x/c1x_CodeInstaller.hpp Tue Aug 31 22:13:30 2010 -0700 @@ -26,16 +26,20 @@ private: // this needs to correspond to HotSpotXirGenerator.java enum MarkId { - MARK_VERIFIED_ENTRY = 0x0001, - MARK_UNVERIFIED_ENTRY = 0x0002, - MARK_OSR_ENTRY = 0x0003, - MARK_STATIC_CALL_STUB = 0x1000, - MARK_INVOKE_INVALID = 0x2000, - MARK_INVOKEINTERFACE = 0x2001, - MARK_INVOKESTATIC = 0x2002, - MARK_INVOKESPECIAL = 0x2003, - MARK_INVOKEVIRTUAL = 0x2004, - MARK_IMPLICIT_NULL_EXCEPTION_TARGET = 0x3000 + MARK_VERIFIED_ENTRY = 0x0001, + MARK_UNVERIFIED_ENTRY = 0x0002, + MARK_OSR_ENTRY = 0x0003, + MARK_UNWIND_ENTRY = 0x0004, + MARK_EXCEPTION_HANDLER_ENTRY = 0x0005, + MARK_STATIC_CALL_STUB = 0x1000, + MARK_INVOKE_INVALID = 0x2000, + MARK_INVOKEINTERFACE = 0x2001, + MARK_INVOKESTATIC = 0x2002, + MARK_INVOKESPECIAL = 0x2003, + MARK_INVOKEVIRTUAL = 0x2004, + MARK_IMPLICIT_NULL = 0x3000, + MARK_KLASS_PATCHING = 0x4000, + MARK_DUMMY_OOP_RELOCATION = 0x4001 }; ciEnv* _env; @@ -44,6 +48,7 @@ oop _hotspot_method; oop _name; arrayOop _sites; + arrayOop _exception_handlers; CodeOffsets _offsets; arrayOop _code; @@ -59,9 +64,11 @@ CodeSection* _instructions; CodeSection* _constants; - OopRecorder* _oop_recorder; + OopRecorder* _oop_recorder; DebugInformationRecorder* _debug_recorder; - Dependencies* _dependencies; + Dependencies* _dependencies; + ExceptionHandlerTable _exception_handler_table; + ImplicitExceptionTable _implicit_exception_table; public: @@ -80,9 +87,10 @@ void site_Safepoint(CodeBuffer& buffer, jint pc_offset, oop site); void site_Call(CodeBuffer& buffer, jint pc_offset, oop site); void site_DataPatch(CodeBuffer& buffer, jint pc_offset, oop site); - void site_ExceptionHandler(CodeBuffer& buffer, jint pc_offset, oop site); void site_Mark(CodeBuffer& buffer, jint pc_offset, oop site); void record_frame(jint pc_offset, oop code_pos, oop frame); + void process_exception_handlers(); + };