summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-04-21 11:50:32 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-04-21 22:29:28 +0900
commita1d32af91692c2b624e9c04fcd94aa958dbba626 (patch)
tree8872e97d48078ced42984dfe8ac772dbfaac9919 /src
parentad3b61f47bac6def7365dcf0b92e4ede7de8f085 (diff)
downloadmruby-a1d32af91692c2b624e9c04fcd94aa958dbba626.tar.gz
mruby-a1d32af91692c2b624e9c04fcd94aa958dbba626.zip
Simplify pointer calculation in `envadjust`.
Diffstat (limited to 'src')
-rw-r--r--src/vm.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/vm.c b/src/vm.c
index d60e90f72..c6eed6e56 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -118,16 +118,16 @@ static inline void
envadjust(mrb_state *mrb, mrb_value *oldbase, mrb_value *newbase)
{
mrb_callinfo *ci = mrb->c->cibase;
+ ptrdiff_t off;
if (newbase == oldbase) return;
+ off = newbase - oldbase;
while (ci <= mrb->c->ci) {
struct REnv *e = ci->env;
if (e && MRB_ENV_STACK_SHARED_P(e)) {
- ptrdiff_t off = e->stack - oldbase;
-
- e->stack = newbase + off;
+ e->stack += off;
}
- ci->stackent = newbase + (ci->stackent - oldbase);
+ ci->stackent += off;
ci++;
}
}