Mercurial > hg > graal-jvmci-8
diff src/share/vm/interpreter/interpreter.cpp @ 6948:e522a00b91aa
Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/ after NPG - C++ build works
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 12 Nov 2012 23:14:12 +0100 |
parents | 957c266d8bc5 a3e2f723f2a5 |
children | 7d815d842ee0 |
line wrap: on
line diff
--- a/src/share/vm/interpreter/interpreter.cpp Mon Nov 12 18:11:17 2012 +0100 +++ b/src/share/vm/interpreter/interpreter.cpp Mon Nov 12 23:14:12 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,8 +32,8 @@ #include "memory/allocation.inline.hpp" #include "memory/resourceArea.hpp" #include "oops/arrayOop.hpp" -#include "oops/methodDataOop.hpp" -#include "oops/methodOop.hpp" +#include "oops/methodData.hpp" +#include "oops/method.hpp" #include "oops/oop.inline.hpp" #include "prims/forte.hpp" #include "prims/jvmtiExport.hpp" @@ -60,6 +60,8 @@ void InterpreterCodelet::print_on(outputStream* st) const { + ttyLocker ttyl; + if (PrintInterpreter) { st->cr(); st->print_cr("----------------------------------------------------------------------"); @@ -72,7 +74,7 @@ if (PrintInterpreter) { st->cr(); - Disassembler::decode(code_begin(), code_end(), st); + Disassembler::decode(code_begin(), code_end(), st, DEBUG_ONLY(_comments) NOT_DEBUG(CodeComments())); } } @@ -312,7 +314,7 @@ // Deoptimization support // If deoptimization happens, this function returns the point of next bytecode to continue execution -address AbstractInterpreter::deopt_continue_after_entry(methodOop method, address bcp, int callee_parameters, bool is_top_frame) { +address AbstractInterpreter::deopt_continue_after_entry(Method* method, address bcp, int callee_parameters, bool is_top_frame) { assert(method->contains(bcp), "just checkin'"); Bytecodes::Code code = Bytecodes::java_code_at(method, bcp); assert(!Interpreter::bytecode_should_reexecute(code), "should not reexecute"); @@ -350,7 +352,7 @@ // (NOT needed for the old calling convension) if (!is_top_frame) { int index = Bytes::get_native_u4(bcp+1); - method->constants()->cache()->secondary_entry_at(index)->set_parameter_size(callee_parameters); + method->constants()->invokedynamic_cp_cache_entry_at(index)->set_parameter_size(callee_parameters); } break; } @@ -382,7 +384,7 @@ // the bytecode. // Note: Bytecodes::_athrow is a special case in that it does not return // Interpreter::deopt_entry(vtos, 0) like others -address AbstractInterpreter::deopt_reexecute_entry(methodOop method, address bcp) { +address AbstractInterpreter::deopt_reexecute_entry(Method* method, address bcp) { assert(method->contains(bcp), "just checkin'"); Bytecodes::Code code = Bytecodes::java_code_at(method, bcp); #ifdef COMPILER1 @@ -483,3 +485,11 @@ } } } + +void AbstractInterpreterGenerator::initialize_method_handle_entries() { + // method handle entry kinds are generated later in MethodHandlesAdapterGenerator::generate: + for (int i = Interpreter::method_handle_invoke_FIRST; i <= Interpreter::method_handle_invoke_LAST; i++) { + Interpreter::MethodKind kind = (Interpreter::MethodKind) i; + Interpreter::_entry_table[kind] = Interpreter::_entry_table[Interpreter::abstract]; + } +}