Mercurial > hg > release > icedtea6-1.8
changeset 1176:1fa9f674cf4d
2008-11-04 Gary Benson <gbenson@redhat.com>
* ports/hotspot/src/share/vm/shark/sharkRuntime.hpp
(SharkRuntime::_f2i): New constant.
(SharkRuntime::_f2l): Likewise.
(SharkRuntime::_d2i): Likewise.
(SharkRuntime::_d2l): Likewise.
(SharkRuntime::f2i): New accessor.
(SharkRuntime::f2l): Likewise.
(SharkRuntime::d2i): Likewise.
(SharkRuntime::d2l): Likewise.
* ports/hotspot/src/share/vm/shark/sharkRuntime.cpp
(SharkRuntime::_f2i): New constant.
(SharkRuntime::_f2l): Likewise.
(SharkRuntime::_d2i): Likewise.
(SharkRuntime::_d2l): Likewise.
(SharkRuntime::initialize): Initialize the above.
* ports/hotspot/src/share/vm/shark/sharkBlock.hpp
(SharkBlock::call_vm_leaf): New method.
* ports/hotspot/src/share/vm/shark/sharkBlock.cpp
(SharkBlock::parse): Use runtime calls for f2i, f2l, d2i and d2l.
author | Gary Benson <gbenson@redhat.com> |
---|---|
date | Tue, 04 Nov 2008 11:24:16 -0500 |
parents | 2a9a995b582d |
children | 74930fcb28d8 |
files | ChangeLog ports/hotspot/src/share/vm/shark/sharkBlock.cpp ports/hotspot/src/share/vm/shark/sharkBlock.hpp ports/hotspot/src/share/vm/shark/sharkRuntime.cpp ports/hotspot/src/share/vm/shark/sharkRuntime.hpp |
diffstat | 5 files changed, 85 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Tue Nov 04 09:31:55 2008 -0500 +++ b/ChangeLog Tue Nov 04 11:24:16 2008 -0500 @@ -1,3 +1,25 @@ +2008-11-04 Gary Benson <gbenson@redhat.com> + + * ports/hotspot/src/share/vm/shark/sharkRuntime.hpp + (SharkRuntime::_f2i): New constant. + (SharkRuntime::_f2l): Likewise. + (SharkRuntime::_d2i): Likewise. + (SharkRuntime::_d2l): Likewise. + (SharkRuntime::f2i): New accessor. + (SharkRuntime::f2l): Likewise. + (SharkRuntime::d2i): Likewise. + (SharkRuntime::d2l): Likewise. + * ports/hotspot/src/share/vm/shark/sharkRuntime.cpp + (SharkRuntime::_f2i): New constant. + (SharkRuntime::_f2l): Likewise. + (SharkRuntime::_d2i): Likewise. + (SharkRuntime::_d2l): Likewise. + (SharkRuntime::initialize): Initialize the above. + * ports/hotspot/src/share/vm/shark/sharkBlock.hpp + (SharkBlock::call_vm_leaf): New method. + * ports/hotspot/src/share/vm/shark/sharkBlock.cpp + (SharkBlock::parse): Use runtime calls for f2i, f2l, d2i and d2l. + 2008-11-04 Gary Benson <gbenson@redhat.com> * ports/hotspot/src/share/vm/shark/sharkBlock.cpp
--- a/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Tue Nov 04 09:31:55 2008 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.cpp Tue Nov 04 11:24:16 2008 -0500 @@ -742,13 +742,11 @@ case Bytecodes::_f2i: push(SharkValue::create_jint( - builder()->CreateFPToSI( - pop()->jfloat_value(), SharkType::jint_type()))); + call_vm_leaf(SharkRuntime::f2i(), pop()->jfloat_value()))); break; case Bytecodes::_f2l: push(SharkValue::create_jlong( - builder()->CreateFPToSI( - pop()->jfloat_value(), SharkType::jlong_type()))); + call_vm_leaf(SharkRuntime::f2l(), pop()->jfloat_value()))); break; case Bytecodes::_f2d: push(SharkValue::create_jdouble( @@ -758,13 +756,11 @@ case Bytecodes::_d2i: push(SharkValue::create_jint( - builder()->CreateFPToSI( - pop()->jdouble_value(), SharkType::jint_type()))); + call_vm_leaf(SharkRuntime::d2i(), pop()->jdouble_value()))); break; case Bytecodes::_d2l: push(SharkValue::create_jlong( - builder()->CreateFPToSI( - pop()->jdouble_value(), SharkType::jlong_type()))); + call_vm_leaf(SharkRuntime::d2l(), pop()->jdouble_value()))); break; case Bytecodes::_d2f: push(SharkValue::create_jfloat(
--- a/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Tue Nov 04 09:31:55 2008 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkBlock.hpp Tue Nov 04 11:24:16 2008 -0500 @@ -371,6 +371,12 @@ return call_vm_nocheck(callee, args, args + 4); } + llvm::CallInst* call_vm_leaf(llvm::Constant* callee, + llvm::Value* arg1) + { + return builder()->CreateCall(callee, arg1); + } + // Whole-method synchronization public: void acquire_method_lock();
--- a/ports/hotspot/src/share/vm/shark/sharkRuntime.cpp Tue Nov 04 09:31:55 2008 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkRuntime.cpp Tue Nov 04 11:24:16 2008 -0500 @@ -43,6 +43,11 @@ Constant* SharkRuntime::_throw_NullPointerException; Constant* SharkRuntime::_trace_bytecode; +Constant* SharkRuntime::_f2i; +Constant* SharkRuntime::_f2l; +Constant* SharkRuntime::_d2i; +Constant* SharkRuntime::_d2l; + Constant* SharkRuntime::_dump; Constant* SharkRuntime::_is_subtype_of; Constant* SharkRuntime::_should_not_reach_here; @@ -158,6 +163,29 @@ FunctionType::get(Type::VoidTy, params, false), "SharkRuntime__trace_bytecode"); + // Leaf calls + params.clear(); + params.push_back(SharkType::jfloat_type()); + _f2i = builder->make_function( + (intptr_t) SharedRuntime::f2i, + FunctionType::get(SharkType::jint_type(), params, false), + "SharedRuntime__f2i"); + _f2l = builder->make_function( + (intptr_t) SharedRuntime::f2l, + FunctionType::get(SharkType::jlong_type(), params, false), + "SharedRuntime__f2l"); + + params.clear(); + params.push_back(SharkType::jdouble_type()); + _d2i = builder->make_function( + (intptr_t) SharedRuntime::d2i, + FunctionType::get(SharkType::jint_type(), params, false), + "SharedRuntime__d2i"); + _d2l = builder->make_function( + (intptr_t) SharedRuntime::d2l, + FunctionType::get(SharkType::jlong_type(), params, false), + "SharedRuntime__d2l"); + // Non-VM calls params.clear(); params.push_back(SharkType::intptr_type());
--- a/ports/hotspot/src/share/vm/shark/sharkRuntime.hpp Tue Nov 04 09:31:55 2008 -0500 +++ b/ports/hotspot/src/share/vm/shark/sharkRuntime.hpp Tue Nov 04 11:24:16 2008 -0500 @@ -162,6 +162,31 @@ return *(thread->zero_stack()->sp() + offset); } + // Leaf calls + private: + static llvm::Constant* _f2i; + static llvm::Constant* _f2l; + static llvm::Constant* _d2i; + static llvm::Constant* _d2l; + + public: + static llvm::Constant* f2i() + { + return _f2i; + } + static llvm::Constant* f2l() + { + return _f2l; + } + static llvm::Constant* d2i() + { + return _d2i; + } + static llvm::Constant* d2l() + { + return _d2l; + } + // Non-VM calls private: static llvm::Constant* _dump;