summaryrefslogtreecommitdiff
path: root/insnhelper.h
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-06-01 04:05:46 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-06-01 04:05:46 +0000
commit62872956b6fc70d43c39b0476962b509dbb96de8 (patch)
tree89a9e688e2dd1d0d63e527d2be71ff091f4f07a6 /insnhelper.h
parentb8cb3679bbf1884b43271bc221df61aabe53a6ac (diff)
* insnhelper.h (INC_SP): shouldn't cast ``x'' to unsigned type because
it might be a negative value. * insnhelper.h, insns.def: shoudn't use unary minus operator in index operator. some compilers (such as VC++8 x64) cannot deal it with expected way. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12422 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insnhelper.h')
-rw-r--r--insnhelper.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/insnhelper.h b/insnhelper.h
index b4ced7a50a..1c13dd4df2 100644
--- a/insnhelper.h
+++ b/insnhelper.h
@@ -27,7 +27,7 @@
#define TOPN(n) (*(GET_SP()-(n)-1))
#define POPN(n) (INC_SP(-(n)))
#define POP() (INC_SP(-1))
-#define STACK_ADDR_FROM_TOP(n) (&GET_SP()[-(n)])
+#define STACK_ADDR_FROM_TOP(n) (GET_SP()-(n))
#define GET_TOS() (tos) /* dummy */
@@ -83,7 +83,7 @@
/* SP */
#define GET_SP() (USAGE_ANALYSIS_REGISTER_HELPER(1, 0, REG_SP))
#define SET_SP(x) (REG_SP = (USAGE_ANALYSIS_REGISTER_HELPER(1, 1, (x))))
-#define INC_SP(x) (REG_SP += ((VALUE)(USAGE_ANALYSIS_REGISTER_HELPER(1, 1, (VALUE)(x)))))
+#define INC_SP(x) (REG_SP += (USAGE_ANALYSIS_REGISTER_HELPER(1, 1, (x))))
#define SET_SV(x) (*GET_SP() = (x))
/* set current stack value as x */
@@ -98,7 +98,7 @@
/* deal with variables */
/**********************************************************/
-#define GET_CURRENT_DYNAMIC(idx) (GET_DFP()[-idx])
+#define GET_CURRENT_DYNAMIC(idx) (*(GET_DFP() -(idx)))
#define GET_PREV_DFP(dfp) ((VALUE *)((dfp)[0] & ~0x03))
#define GET_GLOBAL(entry) rb_gvar_get((struct global_entry*)entry)