4202 compilation()->set_has_unsafe_access(true);
4203 }
4204
4205
4206 void GraphBuilder::print_inlining(ciMethod* callee, const char* msg, bool success) {
4207 CompileLog* log = compilation()->log();
4208 if (log != NULL) {
4209 if (success) {
4210 if (msg != NULL)
4211 log->inline_success(msg);
4212 else
4213 log->inline_success("receiver is statically known");
4214 } else {
4215 if (msg != NULL)
4216 log->inline_fail(msg);
4217 else
4218 log->inline_fail("reason unknown");
4219 }
4220 }
4221
4222 if (!PrintInlining) return;
4223 CompileTask::print_inlining(callee, scope()->level(), bci(), msg);
4224 if (success && CIPrintMethodCodes) {
4225 callee->print_codes();
4226 }
4227 }
4228
4229 bool GraphBuilder::append_unsafe_get_and_set_obj(ciMethod* callee, bool is_add) {
4230 if (InlineUnsafeOps) {
4231 Values* args = state()->pop_arguments(callee->arg_size());
4232 BasicType t = callee->return_type()->basic_type();
4233 null_check(args->at(0));
4234 Instruction* offset = args->at(2);
4235 #ifndef _LP64
4236 offset = append(new Convert(Bytecodes::_l2i, offset, as_ValueType(T_INT)));
4237 #endif
4238 Instruction* op = append(new UnsafeGetAndSetObject(t, args->at(1), offset, args->at(3), is_add));
4239 compilation()->set_has_unsafe_access(true);
4240 kill_all();
4241 push(op->type(), op);
4242 }
|
4202 compilation()->set_has_unsafe_access(true);
4203 }
4204
4205
4206 void GraphBuilder::print_inlining(ciMethod* callee, const char* msg, bool success) {
4207 CompileLog* log = compilation()->log();
4208 if (log != NULL) {
4209 if (success) {
4210 if (msg != NULL)
4211 log->inline_success(msg);
4212 else
4213 log->inline_success("receiver is statically known");
4214 } else {
4215 if (msg != NULL)
4216 log->inline_fail(msg);
4217 else
4218 log->inline_fail("reason unknown");
4219 }
4220 }
4221
4222 if (!PrintInlining && !compilation()->method()->has_option("PrintInlining")) return;
4223 CompileTask::print_inlining(callee, scope()->level(), bci(), msg);
4224 if (success && CIPrintMethodCodes) {
4225 callee->print_codes();
4226 }
4227 }
4228
4229 bool GraphBuilder::append_unsafe_get_and_set_obj(ciMethod* callee, bool is_add) {
4230 if (InlineUnsafeOps) {
4231 Values* args = state()->pop_arguments(callee->arg_size());
4232 BasicType t = callee->return_type()->basic_type();
4233 null_check(args->at(0));
4234 Instruction* offset = args->at(2);
4235 #ifndef _LP64
4236 offset = append(new Convert(Bytecodes::_l2i, offset, as_ValueType(T_INT)));
4237 #endif
4238 Instruction* op = append(new UnsafeGetAndSetObject(t, args->at(1), offset, args->at(3), is_add));
4239 compilation()->set_has_unsafe_access(true);
4240 kill_all();
4241 push(op->type(), op);
4242 }
|