Mercurial > hg > truffle
comparison src/cpu/x86/vm/interp_masm_x86_32.hpp @ 1506:2338d41fbd81
6943304: remove tagged stack interpreter
Reviewed-by: coleenp, never, gbenson
author | twisti |
---|---|
date | Fri, 30 Apr 2010 08:37:24 -0700 |
parents | 87684f1a88b5 |
children | c18cbe5936b8 ab102d5d923e |
comparison
equal
deleted
inserted
replaced
1505:0c5b3cf3c1f5 | 1506:2338d41fbd81 |
---|---|
1 /* | 1 /* |
2 * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. | 2 * Copyright 1997-2010 Sun Microsystems, Inc. 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. |
83 // Expression stack | 83 // Expression stack |
84 void f2ieee(); // truncate ftos to 32bits | 84 void f2ieee(); // truncate ftos to 32bits |
85 void d2ieee(); // truncate dtos to 64bits | 85 void d2ieee(); // truncate dtos to 64bits |
86 | 86 |
87 void pop_ptr(Register r = rax); | 87 void pop_ptr(Register r = rax); |
88 void pop_ptr(Register r, Register tag); | |
89 void pop_i(Register r = rax); | 88 void pop_i(Register r = rax); |
90 void pop_l(Register lo = rax, Register hi = rdx); | 89 void pop_l(Register lo = rax, Register hi = rdx); |
91 void pop_f(); | 90 void pop_f(); |
92 void pop_d(); | 91 void pop_d(); |
93 void pop_ftos_to_rsp(); | |
94 void pop_dtos_to_rsp(); | |
95 | 92 |
96 void push_ptr(Register r = rax); | 93 void push_ptr(Register r = rax); |
97 void push_ptr(Register r, Register tag); | |
98 void push_i(Register r = rax); | 94 void push_i(Register r = rax); |
99 void push_l(Register lo = rax, Register hi = rdx); | 95 void push_l(Register lo = rax, Register hi = rdx); |
100 void push_d(Register r = rax); | 96 void push_d(Register r = rax); |
101 void push_f(); | 97 void push_f(); |
102 | 98 |
110 | 106 |
111 // These are dummies to prevent surprise implicit conversions to Register | 107 // These are dummies to prevent surprise implicit conversions to Register |
112 void pop(void* v ); // Add unimplemented ambiguous method | 108 void pop(void* v ); // Add unimplemented ambiguous method |
113 void push(void* v ); // Add unimplemented ambiguous method | 109 void push(void* v ); // Add unimplemented ambiguous method |
114 | 110 |
115 DEBUG_ONLY(void verify_stack_tag(frame::Tag t);) | 111 void empty_expression_stack() { |
116 | 112 movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize)); |
117 #endif // CC_INTERP | 113 // NULL last_sp until next java call |
118 | 114 movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD); |
119 #ifndef CC_INTERP | |
120 | |
121 void empty_expression_stack() { | |
122 movptr(rsp, Address(rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize)); | |
123 // NULL last_sp until next java call | |
124 movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), NULL_WORD); | |
125 } | 115 } |
126 | 116 |
127 // Tagged stack helpers for swap and dup | 117 // Helpers for swap and dup |
128 void load_ptr_and_tag(int n, Register val, Register tag); | 118 void load_ptr(int n, Register val); |
129 void store_ptr_and_tag(int n, Register val, Register tag); | 119 void store_ptr(int n, Register val); |
130 | |
131 // Tagged Local support | |
132 | |
133 void tag_local(frame::Tag tag, int n); | |
134 void tag_local(Register tag, int n); | |
135 void tag_local(frame::Tag tag, Register idx); | |
136 void tag_local(Register tag, Register idx); | |
137 | |
138 #ifdef ASSERT | |
139 void verify_local_tag(frame::Tag tag, int n); | |
140 void verify_local_tag(frame::Tag tag, Register idx); | |
141 #endif // ASSERT | |
142 | 120 |
143 // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls | 121 // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls |
144 void super_call_VM_leaf(address entry_point); | 122 void super_call_VM_leaf(address entry_point); |
145 void super_call_VM_leaf(address entry_point, Register arg_1); | 123 void super_call_VM_leaf(address entry_point, Register arg_1); |
146 void super_call_VM_leaf(address entry_point, Register arg_1, Register arg_2); | 124 void super_call_VM_leaf(address entry_point, Register arg_1, Register arg_2); |