1 /* |
1 /* |
2 * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2008, 2017, 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. |
51 protected: |
51 protected: |
52 |
52 |
53 // Template interpreter specific version of call_VM_helper |
53 // Template interpreter specific version of call_VM_helper |
54 virtual void call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions); |
54 virtual void call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions); |
55 |
55 |
56 virtual void check_and_handle_popframe(); |
|
57 virtual void check_and_handle_earlyret(); |
|
58 |
|
59 // base routine for all dispatches |
56 // base routine for all dispatches |
60 typedef enum { DispatchDefault, DispatchNormal } DispatchTableMode; |
57 typedef enum { DispatchDefault, DispatchNormal } DispatchTableMode; |
61 void dispatch_base(TosState state, DispatchTableMode table_mode, bool verifyoop = true); |
58 void dispatch_base(TosState state, DispatchTableMode table_mode, bool verifyoop = true); |
62 |
59 |
63 public: |
60 public: |
64 InterpreterMacroAssembler(CodeBuffer* code); |
61 InterpreterMacroAssembler(CodeBuffer* code); |
|
62 |
|
63 virtual void check_and_handle_popframe(); |
|
64 virtual void check_and_handle_earlyret(); |
65 |
65 |
66 // Interpreter-specific registers |
66 // Interpreter-specific registers |
67 #if defined(AARCH64) && defined(ASSERT) |
67 #if defined(AARCH64) && defined(ASSERT) |
68 |
68 |
69 #define check_stack_top() _check_stack_top("invalid Rstack_top at " __FILE__ ":" XSTR(__LINE__)) |
69 #define check_stack_top() _check_stack_top("invalid Rstack_top at " __FILE__ ":" XSTR(__LINE__)) |