Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mruby
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
mruby
Commits
3123549b
Commit
3123549b
authored
7 years ago
by
Yukihiro "Matz" Matsumoto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed a bug in NODE_XSTR code generation; fix #3605
parent
4e84bdb5
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
9 additions
and
14 deletions
+9
-14
mrbgems/mruby-compiler/core/codegen.c
mrbgems/mruby-compiler/core/codegen.c
+9
-14
No files found.
mrbgems/mruby-compiler/core/codegen.c
View file @
3123549b
...
@@ -2377,9 +2377,7 @@ codegen(codegen_scope *s, node *tree, int val)
...
@@ -2377,9 +2377,7 @@ codegen(codegen_scope *s, node *tree, int val)
int
ai
=
mrb_gc_arena_save
(
s
->
mrb
);
int
ai
=
mrb_gc_arena_save
(
s
->
mrb
);
int
sym
=
new_sym
(
s
,
mrb_intern_lit
(
s
->
mrb
,
"Kernel"
));
int
sym
=
new_sym
(
s
,
mrb_intern_lit
(
s
->
mrb
,
"Kernel"
));
if
(
val
==
NOVAL
)
{
push
();
}
genop
(
s
,
MKOP_A
(
OP_LOADSELF
,
cursp
()));
genop
(
s
,
MKOP_A
(
OP_OCLASS
,
cursp
()));
genop
(
s
,
MKOP_ABx
(
OP_GETMCNST
,
cursp
(),
sym
));
push
();
push
();
codegen
(
s
,
tree
->
car
,
VAL
);
codegen
(
s
,
tree
->
car
,
VAL
);
n
=
tree
->
cdr
;
n
=
tree
->
cdr
;
...
@@ -2394,12 +2392,11 @@ codegen(codegen_scope *s, node *tree, int val)
...
@@ -2394,12 +2392,11 @@ codegen(codegen_scope *s, node *tree, int val)
push
();
push
();
n
=
n
->
cdr
;
n
=
n
->
cdr
;
}
}
p
op
();
p
ush
();
/* for block */
pop
(
);
pop
_n
(
3
);
sym
=
new_sym
(
s
,
mrb_intern_lit
(
s
->
mrb
,
"`"
));
sym
=
new_sym
(
s
,
mrb_intern_lit
(
s
->
mrb
,
"`"
));
genop
(
s
,
MKOP_ABC
(
OP_SEND
,
cursp
(),
sym
,
1
));
genop
(
s
,
MKOP_ABC
(
OP_SEND
,
cursp
(),
sym
,
1
));
if
(
val
==
NOVAL
)
{
pop
();
}
if
(
val
)
push
();
else
{
push
();
}
mrb_gc_arena_restore
(
s
->
mrb
,
ai
);
mrb_gc_arena_restore
(
s
->
mrb
,
ai
);
}
}
break
;
break
;
...
@@ -2409,19 +2406,17 @@ codegen(codegen_scope *s, node *tree, int val)
...
@@ -2409,19 +2406,17 @@ codegen(codegen_scope *s, node *tree, int val)
char
*
p
=
(
char
*
)
tree
->
car
;
char
*
p
=
(
char
*
)
tree
->
car
;
size_t
len
=
(
intptr_t
)
tree
->
cdr
;
size_t
len
=
(
intptr_t
)
tree
->
cdr
;
int
ai
=
mrb_gc_arena_save
(
s
->
mrb
);
int
ai
=
mrb_gc_arena_save
(
s
->
mrb
);
int
sym
=
new_sym
(
s
,
mrb_intern_lit
(
s
->
mrb
,
"Kernel"
));
int
off
=
new_lit
(
s
,
mrb_str_new
(
s
->
mrb
,
p
,
len
));
int
off
=
new_lit
(
s
,
mrb_str_new
(
s
->
mrb
,
p
,
len
));
int
sym
;
if
(
val
==
NOVAL
)
{
push
();
}
genop
(
s
,
MKOP_A
(
OP_LOADSELF
,
cursp
()));
genop
(
s
,
MKOP_A
(
OP_OCLASS
,
cursp
()));
genop
(
s
,
MKOP_ABx
(
OP_GETMCNST
,
cursp
(),
sym
));
push
();
push
();
genop
(
s
,
MKOP_ABx
(
OP_STRING
,
cursp
(),
off
));
genop
(
s
,
MKOP_ABx
(
OP_STRING
,
cursp
(),
off
));
pop
();
push
();
push
();
pop_n
(
3
);
sym
=
new_sym
(
s
,
mrb_intern_lit
(
s
->
mrb
,
"`"
));
sym
=
new_sym
(
s
,
mrb_intern_lit
(
s
->
mrb
,
"`"
));
genop
(
s
,
MKOP_ABC
(
OP_SEND
,
cursp
(),
sym
,
1
));
genop
(
s
,
MKOP_ABC
(
OP_SEND
,
cursp
(),
sym
,
1
));
if
(
val
==
NOVAL
)
{
pop
();
}
if
(
val
)
push
();
else
{
push
();
}
mrb_gc_arena_restore
(
s
->
mrb
,
ai
);
mrb_gc_arena_restore
(
s
->
mrb
,
ai
);
}
}
break
;
break
;
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment