aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/x86/vm/interp_masm_x86_64.cpp
diff options
context:
space:
mode:
authoriveresov <none@none>2010-09-03 17:51:07 -0700
committeriveresov <none@none>2010-09-03 17:51:07 -0700
commit87513824325dab09a5efe50e3e5e3d18d8de9979 (patch)
tree3fb74b1d4da7ce8abe7aa59d5b6f4e4b5acbc1e7 /src/cpu/x86/vm/interp_masm_x86_64.cpp
parent6e3bccca5d29879ac22500910b6ecaa150329775 (diff)
downloadjdk8u_hotspot-87513824325dab09a5efe50e3e5e3d18d8de9979.tar.gz
6953144: Tiered compilation
Summary: Infrastructure for tiered compilation support (interpreter + c1 + c2) for 32 and 64 bit. Simple tiered policy implementation. Reviewed-by: kvn, never, phh, twisti
Diffstat (limited to 'src/cpu/x86/vm/interp_masm_x86_64.cpp')
-rw-r--r--src/cpu/x86/vm/interp_masm_x86_64.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cpu/x86/vm/interp_masm_x86_64.cpp b/src/cpu/x86/vm/interp_masm_x86_64.cpp
index 50b0b4cd8..6392742aa 100644
--- a/src/cpu/x86/vm/interp_masm_x86_64.cpp
+++ b/src/cpu/x86/vm/interp_masm_x86_64.cpp
@@ -1480,3 +1480,17 @@ void InterpreterMacroAssembler::notify_method_exit(
NOT_CC_INTERP(pop(state));
}
}
+
+// Jump if ((*counter_addr += increment) & mask) satisfies the condition.
+void InterpreterMacroAssembler::increment_mask_and_jump(Address counter_addr,
+ int increment, int mask,
+ Register scratch, bool preloaded,
+ Condition cond, Label* where) {
+ if (!preloaded) {
+ movl(scratch, counter_addr);
+ }
+ incrementl(scratch, increment);
+ movl(counter_addr, scratch);
+ andl(scratch, mask);
+ jcc(cond, *where);
+}