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. |
204 |
204 |
205 // This is the base routine called by the different versions of call_VM. The interpreter |
205 // This is the base routine called by the different versions of call_VM. The interpreter |
206 // may customize this version by overriding it for its purposes (e.g., to save/restore |
206 // may customize this version by overriding it for its purposes (e.g., to save/restore |
207 // additional registers when doing a VM call). |
207 // additional registers when doing a VM call). |
208 virtual void call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions); |
208 virtual void call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions); |
|
209 public: |
|
210 |
|
211 MacroAssembler(CodeBuffer* code) : Assembler(code) {} |
209 |
212 |
210 // These routines should emit JVMTI PopFrame and ForceEarlyReturn handling code. |
213 // These routines should emit JVMTI PopFrame and ForceEarlyReturn handling code. |
211 // The implementation is only non-empty for the InterpreterMacroAssembler, |
214 // The implementation is only non-empty for the InterpreterMacroAssembler, |
212 // as only the interpreter handles PopFrame and ForceEarlyReturn requests. |
215 // as only the interpreter handles PopFrame and ForceEarlyReturn requests. |
213 virtual void check_and_handle_popframe() {} |
216 virtual void check_and_handle_popframe() {} |
214 virtual void check_and_handle_earlyret() {} |
217 virtual void check_and_handle_earlyret() {} |
215 |
|
216 public: |
|
217 |
|
218 MacroAssembler(CodeBuffer* code) : Assembler(code) {} |
|
219 |
218 |
220 // By default, we do not need relocation information for non |
219 // By default, we do not need relocation information for non |
221 // patchable absolute addresses. However, when needed by some |
220 // patchable absolute addresses. However, when needed by some |
222 // extensions, ignore_non_patchable_relocations can be modified, |
221 // extensions, ignore_non_patchable_relocations can be modified, |
223 // returning false to preserve all relocation information. |
222 // returning false to preserve all relocation information. |