1 /* |
1 /* |
2 * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
282 case T_DOUBLE: set_long_in_slot(slot_addr, jlong_cast(value->d)); break; |
282 case T_DOUBLE: set_long_in_slot(slot_addr, jlong_cast(value->d)); break; |
283 case T_OBJECT: *oop_addr_in_slot(slot_addr) = (oop) value->l; break; |
283 case T_OBJECT: *oop_addr_in_slot(slot_addr) = (oop) value->l; break; |
284 default: ShouldNotReachHere(); |
284 default: ShouldNotReachHere(); |
285 } |
285 } |
286 } |
286 } |
|
287 |
|
288 static void initialize_method_handle_entries(); |
|
289 |
|
290 // PPC-only: Support abs and sqrt like in compiler. |
|
291 // For others we can use a normal (native) entry. |
|
292 static bool math_entry_available(MethodKind kind); |
287 }; |
293 }; |
288 |
294 |
289 //------------------------------------------------------------------------------------------------------------------------ |
295 //------------------------------------------------------------------------------------------------------------------------ |
290 // The interpreter generator. |
296 // The interpreter generator. |
291 |
297 |
292 class Template; |
298 class Template; |
293 class AbstractInterpreterGenerator: public StackObj { |
299 class AbstractInterpreterGenerator: public StackObj { |
294 protected: |
300 protected: |
295 InterpreterMacroAssembler* _masm; |
301 InterpreterMacroAssembler* _masm; |
296 |
302 |
297 // shared code sequences |
|
298 // Converter for native abi result to tosca result |
|
299 address generate_result_handler_for(BasicType type); |
|
300 address generate_slow_signature_handler(); |
|
301 |
|
302 void bang_stack_shadow_pages(bool native_call); |
|
303 |
|
304 void generate_all(); |
|
305 void initialize_method_handle_entries(); |
|
306 |
|
307 public: |
303 public: |
308 AbstractInterpreterGenerator(StubQueue* _code); |
304 AbstractInterpreterGenerator(StubQueue* _code); |
309 }; |
305 }; |
310 |
306 |
311 #endif // SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP |
307 #endif // SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP |