debase-ruby_core_source 0.8.3 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/debase/ruby_core_source.rb +0 -8
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/addr2line.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/ccan/build_assert/build_assert.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/ccan/check_type/check_type.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/ccan/container_of/container_of.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/ccan/list/list.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/ccan/str/str.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/constant.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/dln.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/encindex.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/eval_intern.h +8 -29
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/gc.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/id.h +1 -2
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/id_table.h +0 -0
- data/lib/debase/ruby_core_source/ruby-2.3.0-p0/insns.inc +110 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/insns_info.inc +7 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/internal.h +33 -2
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/iseq.h +69 -1
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/known_errors.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/method.h +7 -4
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/node.h +4 -5
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/node_name.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/opt_sc.inc +8 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/optinsn.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/optunifs.inc +1 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/parse.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/probes_helper.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/regenc.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/regint.h +25 -10
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/regparse.h +5 -1
- data/lib/debase/ruby_core_source/ruby-2.3.0-p0/revision.h +1 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/ruby_atomic.h +2 -2
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/siphash.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/symbol.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/thread_pthread.h +2 -2
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/thread_win32.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/timev.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/transcode_data.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/version.h +5 -5
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/vm.inc +174 -136
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/vm_call_iseq_optimized.inc +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/vm_core.h +40 -20
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/vm_debug.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/vm_exec.h +0 -0
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/vm_insnhelper.h +0 -19
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/vm_opts.h +2 -2
- data/lib/debase/ruby_core_source/{ruby-2.3.0-preview1 → ruby-2.3.0-p0}/vmtc.inc +1 -0
- data/lib/debase/ruby_core_source/version.rb +1 -1
- metadata +48 -48
- data/lib/debase/ruby_core_source/ruby-2.3.0-preview1/insns.inc +0 -109
- data/lib/debase/ruby_core_source/ruby-2.3.0-preview1/revision.h +0 -1
File without changes
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
method.h -
|
4
4
|
|
5
|
-
$Author:
|
5
|
+
$Author: ko1 $
|
6
6
|
created at: Wed Jul 15 20:02:33 2009
|
7
7
|
|
8
8
|
Copyright (C) 2009 Koichi Sasada
|
@@ -42,7 +42,7 @@ typedef struct rb_cref_struct {
|
|
42
42
|
const VALUE refinements;
|
43
43
|
const VALUE klass;
|
44
44
|
struct rb_cref_struct * const next;
|
45
|
-
rb_scope_visibility_t scope_visi;
|
45
|
+
const rb_scope_visibility_t scope_visi;
|
46
46
|
} rb_cref_t;
|
47
47
|
|
48
48
|
/* method data type */
|
@@ -65,6 +65,8 @@ typedef struct rb_callable_method_entry_struct { /* same fields with rb_method_e
|
|
65
65
|
|
66
66
|
#define METHOD_ENTRY_VISI(me) (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0))
|
67
67
|
#define METHOD_ENTRY_BASIC(me) (int) (((me)->flags & (IMEMO_FL_USER2 )) >> (IMEMO_FL_USHIFT+2))
|
68
|
+
#define METHOD_ENTRY_COMPLEMENTED(me) ((me)->flags & IMEMO_FL_USER3)
|
69
|
+
#define METHOD_ENTRY_COMPLEMENTED_SET(me) ((me)->flags = (me)->flags | IMEMO_FL_USER3)
|
68
70
|
|
69
71
|
static inline void
|
70
72
|
METHOD_ENTRY_VISI_SET(rb_method_entry_t *me, rb_method_visibility_t visi)
|
@@ -143,8 +145,9 @@ typedef struct rb_method_refined_struct {
|
|
143
145
|
} rb_method_refined_t;
|
144
146
|
|
145
147
|
typedef struct rb_method_definition_struct {
|
146
|
-
rb_method_type_t type; /* method type */
|
147
|
-
int alias_count;
|
148
|
+
rb_method_type_t type : 8; /* method type */
|
149
|
+
int alias_count : 28;
|
150
|
+
int complemented_count: 28;
|
148
151
|
|
149
152
|
union {
|
150
153
|
rb_method_iseq_t iseq;
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
node.h -
|
4
4
|
|
5
|
-
$Author:
|
5
|
+
$Author: hsbt $
|
6
6
|
created at: Fri May 28 15:14:02 JST 1993
|
7
7
|
|
8
8
|
Copyright (C) 1993-2007 Yukihiro Matsumoto
|
@@ -261,12 +261,10 @@ typedef struct RNode {
|
|
261
261
|
|
262
262
|
#define RNODE(obj) (R_CAST(RNode)(obj))
|
263
263
|
|
264
|
-
/* FL : 0..4: T_TYPES, 5: KEEP_WB, 6: PROMOTED, 7: FINALIZE, 8: TAINT, 9:
|
264
|
+
/* FL : 0..4: T_TYPES, 5: KEEP_WB, 6: PROMOTED, 7: FINALIZE, 8: TAINT, 9: UNTRUSTED, 10: EXIVAR, 11: FREEZE */
|
265
265
|
/* NODE_FL: 0..4: T_TYPES, 5: KEEP_WB, 6: PROMOTED, 7: NODE_FL_NEWLINE|NODE_FL_CREF_PUSHED_BY_EVAL,
|
266
266
|
* 8..14: nd_type,
|
267
|
-
* 15..: nd_line
|
268
|
-
* 15: NODE_FL_CREF_PUSHED_BY_EVAL
|
269
|
-
* 16: NODE_FL_CREF_OMOD_SHARED
|
267
|
+
* 15..: nd_line
|
270
268
|
*/
|
271
269
|
#define NODE_FL_NEWLINE (((VALUE)1)<<7)
|
272
270
|
|
@@ -508,6 +506,7 @@ void *rb_parser_malloc(struct parser_params *, size_t);
|
|
508
506
|
void *rb_parser_realloc(struct parser_params *, void *, size_t);
|
509
507
|
void *rb_parser_calloc(struct parser_params *, size_t, size_t);
|
510
508
|
void rb_parser_free(struct parser_params *, void *);
|
509
|
+
void rb_parser_printf(struct parser_params *parser, const char *fmt, ...);
|
511
510
|
|
512
511
|
RUBY_SYMBOL_EXPORT_END
|
513
512
|
|
File without changes
|
@@ -652,6 +652,13 @@ SC_ERROR,
|
|
652
652
|
SC_ERROR,
|
653
653
|
SC_ERROR,
|
654
654
|
SC_ERROR,
|
655
|
+
SC_ERROR},
|
656
|
+
{
|
657
|
+
SC_ERROR,
|
658
|
+
SC_ERROR,
|
659
|
+
SC_ERROR,
|
660
|
+
SC_ERROR,
|
661
|
+
SC_ERROR,
|
655
662
|
SC_ERROR}
|
656
663
|
};
|
657
664
|
|
@@ -745,6 +752,7 @@ static const VALUE sc_insn_next[] = {
|
|
745
752
|
SCS_XX,
|
746
753
|
SCS_XX,
|
747
754
|
SCS_XX,
|
755
|
+
SCS_XX,
|
748
756
|
SCS_XX
|
749
757
|
};
|
750
758
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -4,7 +4,7 @@
|
|
4
4
|
regint.h - Onigmo (Oniguruma-mod) (regular expression library)
|
5
5
|
**********************************************************************/
|
6
6
|
/*-
|
7
|
-
* Copyright (c) 2002-
|
7
|
+
* Copyright (c) 2002-2013 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
|
8
8
|
* Copyright (c) 2011-2014 K.Takata <kentkt AT csc DOT jp>
|
9
9
|
* All rights reserved.
|
10
10
|
*
|
@@ -392,17 +392,17 @@ typedef unsigned int BitStatusType;
|
|
392
392
|
#define BIT_STATUS_CLEAR(stats) (stats) = 0
|
393
393
|
#define BIT_STATUS_ON_ALL(stats) (stats) = ~((BitStatusType )0)
|
394
394
|
#define BIT_STATUS_AT(stats,n) \
|
395
|
-
((n) < (int )BIT_STATUS_BITS_NUM ? ((stats) & ((BitStatusType)1 << n)) : ((stats) & 1))
|
395
|
+
((n) < (int )BIT_STATUS_BITS_NUM ? ((stats) & ((BitStatusType )1 << n)) : ((stats) & 1))
|
396
396
|
|
397
397
|
#define BIT_STATUS_ON_AT(stats,n) do {\
|
398
|
-
|
398
|
+
if ((n) < (int )BIT_STATUS_BITS_NUM)\
|
399
399
|
(stats) |= (1 << (n));\
|
400
400
|
else\
|
401
401
|
(stats) |= 1;\
|
402
402
|
} while (0)
|
403
403
|
|
404
404
|
#define BIT_STATUS_ON_AT_SIMPLE(stats,n) do {\
|
405
|
-
|
405
|
+
if ((n) < (int )BIT_STATUS_BITS_NUM)\
|
406
406
|
(stats) |= (1 << (n));\
|
407
407
|
} while (0)
|
408
408
|
|
@@ -485,23 +485,29 @@ typedef struct _BBuf {
|
|
485
485
|
#define BBUF_INIT(buf,size) onig_bbuf_init((BBuf* )(buf), (size))
|
486
486
|
|
487
487
|
#define BBUF_SIZE_INC(buf,inc) do{\
|
488
|
+
UChar *tmp;\
|
488
489
|
(buf)->alloc += (inc);\
|
489
|
-
|
490
|
-
if (IS_NULL(
|
490
|
+
tmp = (UChar* )xrealloc((buf)->p, (buf)->alloc);\
|
491
|
+
if (IS_NULL(tmp)) return(ONIGERR_MEMORY);\
|
492
|
+
(buf)->p = tmp;\
|
491
493
|
} while (0)
|
492
494
|
|
493
495
|
#define BBUF_EXPAND(buf,low) do{\
|
496
|
+
UChar *tmp;\
|
494
497
|
do { (buf)->alloc *= 2; } while ((buf)->alloc < (unsigned int )low);\
|
495
|
-
|
496
|
-
if (IS_NULL(
|
498
|
+
tmp = (UChar* )xrealloc((buf)->p, (buf)->alloc);\
|
499
|
+
if (IS_NULL(tmp)) return(ONIGERR_MEMORY);\
|
500
|
+
(buf)->p = tmp;\
|
497
501
|
} while (0)
|
498
502
|
|
499
503
|
#define BBUF_ENSURE_SIZE(buf,size) do{\
|
500
504
|
unsigned int new_alloc = (buf)->alloc;\
|
501
505
|
while (new_alloc < (unsigned int )(size)) { new_alloc *= 2; }\
|
502
506
|
if ((buf)->alloc != new_alloc) {\
|
503
|
-
|
504
|
-
|
507
|
+
UChar *tmp;\
|
508
|
+
tmp = (UChar* )xrealloc((buf)->p, new_alloc);\
|
509
|
+
if (IS_NULL(tmp)) return(ONIGERR_MEMORY);\
|
510
|
+
(buf)->p = tmp;\
|
505
511
|
(buf)->alloc = new_alloc;\
|
506
512
|
}\
|
507
513
|
} while (0)
|
@@ -903,6 +909,14 @@ typedef struct {
|
|
903
909
|
#define IS_CODE_SB_WORD(enc,code) \
|
904
910
|
(ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code))
|
905
911
|
|
912
|
+
typedef struct OnigEndCallListItem {
|
913
|
+
struct OnigEndCallListItem* next;
|
914
|
+
void (*func)(void);
|
915
|
+
} OnigEndCallListItemType;
|
916
|
+
|
917
|
+
extern void onig_add_end_call(void (*func)(void));
|
918
|
+
|
919
|
+
|
906
920
|
#ifdef ONIG_DEBUG
|
907
921
|
|
908
922
|
typedef struct {
|
@@ -913,6 +927,7 @@ typedef struct {
|
|
913
927
|
|
914
928
|
extern OnigOpInfoType OnigOpInfo[];
|
915
929
|
|
930
|
+
|
916
931
|
extern void onig_print_compiled_byte_code P_((FILE* f, UChar* bp, UChar* bpend, UChar** nextp, OnigEncoding enc));
|
917
932
|
|
918
933
|
#ifdef ONIG_DEBUG_STATISTICS
|
@@ -67,7 +67,11 @@ RUBY_SYMBOL_EXPORT_BEGIN
|
|
67
67
|
BIT_NT_CANY | BIT_NT_BREF)) != 0)
|
68
68
|
|
69
69
|
#define NTYPE(node) ((node)->u.base.type)
|
70
|
-
#define SET_NTYPE(node, ntype)
|
70
|
+
#define SET_NTYPE(node, ntype) \
|
71
|
+
do { \
|
72
|
+
int value = ntype; \
|
73
|
+
memcpy(&((node)->u.base.type), &value, sizeof(int)); \
|
74
|
+
} while (0)
|
71
75
|
|
72
76
|
#define NSTR(node) (&((node)->u.str))
|
73
77
|
#define NCCLASS(node) (&((node)->u.cclass))
|
@@ -0,0 +1 @@
|
|
1
|
+
#define RUBY_REVISION 53290
|
@@ -10,7 +10,7 @@ typedef unsigned int rb_atomic_t;
|
|
10
10
|
# define ATOMIC_OR(var, val) __atomic_fetch_or(&(var), (val), __ATOMIC_SEQ_CST)
|
11
11
|
# define ATOMIC_EXCHANGE(var, val) __atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
|
12
12
|
# define ATOMIC_CAS(var, oldval, newval) \
|
13
|
-
({ __typeof__(
|
13
|
+
({ __typeof__(var) oldvaldup = (oldval); /* oldval should not be modified */ \
|
14
14
|
__atomic_compare_exchange_n(&(var), &oldvaldup, (newval), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); \
|
15
15
|
oldvaldup; })
|
16
16
|
|
@@ -81,7 +81,7 @@ rb_w32_atomic_cas(volatile rb_atomic_t *var, rb_atomic_t oldval, rb_atomic_t new
|
|
81
81
|
# define ATOMIC_SIZE_INC(var) InterlockedIncrement64(&(var))
|
82
82
|
# define ATOMIC_SIZE_DEC(var) InterlockedDecrement64(&(var))
|
83
83
|
# define ATOMIC_SIZE_EXCHANGE(var, val) InterlockedExchange64(&(var), (val))
|
84
|
-
# define ATOMIC_SIZE_CAS(var, oldval,
|
84
|
+
# define ATOMIC_SIZE_CAS(var, oldval, newval) InterlockedCompareExchange64(&(var), (newval), (oldval))
|
85
85
|
# else
|
86
86
|
# define ATOMIC_SIZE_ADD(var, val) InterlockedExchangeAdd((LONG *)&(var), (val))
|
87
87
|
# define ATOMIC_SIZE_SUB(var, val) InterlockedExchangeAdd((LONG *)&(var), -(LONG)(val))
|
File without changes
|
File without changes
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
thread_pthread.h -
|
4
4
|
|
5
|
-
$Author:
|
5
|
+
$Author: kosaki $
|
6
6
|
|
7
7
|
Copyright (C) 2004-2007 Koichi Sasada
|
8
8
|
|
@@ -26,7 +26,7 @@ typedef struct rb_thread_cond_struct {
|
|
26
26
|
} rb_nativethread_cond_t;
|
27
27
|
|
28
28
|
typedef struct native_thread_data_struct {
|
29
|
-
|
29
|
+
struct list_node ubf_list;
|
30
30
|
rb_nativethread_cond_t sleep_cond;
|
31
31
|
} native_thread_data_t;
|
32
32
|
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,10 +1,10 @@
|
|
1
1
|
#define RUBY_VERSION "2.3.0"
|
2
|
-
#define RUBY_RELEASE_DATE "2015-
|
3
|
-
#define RUBY_PATCHLEVEL
|
2
|
+
#define RUBY_RELEASE_DATE "2015-12-25"
|
3
|
+
#define RUBY_PATCHLEVEL 0
|
4
4
|
|
5
5
|
#define RUBY_RELEASE_YEAR 2015
|
6
|
-
#define RUBY_RELEASE_MONTH
|
7
|
-
#define RUBY_RELEASE_DAY
|
6
|
+
#define RUBY_RELEASE_MONTH 12
|
7
|
+
#define RUBY_RELEASE_DAY 25
|
8
8
|
|
9
9
|
#include "ruby/version.h"
|
10
10
|
|
@@ -17,7 +17,7 @@
|
|
17
17
|
#endif
|
18
18
|
|
19
19
|
#if RUBY_PATCHLEVEL == -1
|
20
|
-
#define RUBY_PATCHLEVEL_STR "
|
20
|
+
#define RUBY_PATCHLEVEL_STR "dev"
|
21
21
|
#else
|
22
22
|
#define RUBY_PATCHLEVEL_STR "p"STRINGIZE(RUBY_PATCHLEVEL)
|
23
23
|
#endif
|
@@ -586,6 +586,35 @@ INSN_ENTRY(tostring){
|
|
586
586
|
#undef INSN_LABEL
|
587
587
|
#undef LABEL_IS_SC
|
588
588
|
END_INSN(tostring);}}}
|
589
|
+
INSN_ENTRY(freezestring){
|
590
|
+
{
|
591
|
+
VALUE debug_info = (VALUE)GET_OPERAND(1);
|
592
|
+
VALUE str = TOPN(0);
|
593
|
+
DEBUG_ENTER_INSN("freezestring");
|
594
|
+
ADD_PC(1+1);
|
595
|
+
PREFETCH(GET_PC());
|
596
|
+
POPN(1);
|
597
|
+
#define CURRENT_INSN_freezestring 1
|
598
|
+
#define INSN_IS_SC() 0
|
599
|
+
#define INSN_LABEL(lab) LABEL_freezestring_##lab
|
600
|
+
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
|
601
|
+
COLLECT_USAGE_INSN(BIN(freezestring));
|
602
|
+
COLLECT_USAGE_OPERAND(BIN(freezestring), 0, debug_info);
|
603
|
+
{
|
604
|
+
#line 403 "insns.def"
|
605
|
+
if (!NIL_P(debug_info)) {
|
606
|
+
rb_ivar_set(str, id_debug_created_info, debug_info);
|
607
|
+
}
|
608
|
+
rb_str_freeze(str);
|
609
|
+
|
610
|
+
#line 611 "vm.inc"
|
611
|
+
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
612
|
+
PUSH(str);
|
613
|
+
#undef CURRENT_INSN_freezestring
|
614
|
+
#undef INSN_IS_SC
|
615
|
+
#undef INSN_LABEL
|
616
|
+
#undef LABEL_IS_SC
|
617
|
+
END_INSN(freezestring);}}}
|
589
618
|
INSN_ENTRY(toregexp){
|
590
619
|
{
|
591
620
|
VALUE val;
|
@@ -603,7 +632,7 @@ INSN_ENTRY(toregexp){
|
|
603
632
|
COLLECT_USAGE_OPERAND(BIN(toregexp), 0, opt);
|
604
633
|
COLLECT_USAGE_OPERAND(BIN(toregexp), 1, cnt);
|
605
634
|
{
|
606
|
-
#line
|
635
|
+
#line 421 "insns.def"
|
607
636
|
VALUE rb_reg_new_ary(VALUE ary, int options);
|
608
637
|
rb_num_t i;
|
609
638
|
const VALUE ary = rb_ary_tmp_new(cnt);
|
@@ -614,7 +643,7 @@ INSN_ENTRY(toregexp){
|
|
614
643
|
val = rb_reg_new_ary(ary, (int)opt);
|
615
644
|
rb_ary_clear(ary);
|
616
645
|
|
617
|
-
#line
|
646
|
+
#line 647 "vm.inc"
|
618
647
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
619
648
|
PUSH(val);
|
620
649
|
#undef CURRENT_INSN_toregexp
|
@@ -637,11 +666,11 @@ INSN_ENTRY(newarray){
|
|
637
666
|
COLLECT_USAGE_INSN(BIN(newarray));
|
638
667
|
COLLECT_USAGE_OPERAND(BIN(newarray), 0, num);
|
639
668
|
{
|
640
|
-
#line
|
669
|
+
#line 443 "insns.def"
|
641
670
|
val = rb_ary_new4((long)num, STACK_ADDR_FROM_TOP(num));
|
642
671
|
POPN(num);
|
643
672
|
|
644
|
-
#line
|
673
|
+
#line 674 "vm.inc"
|
645
674
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
646
675
|
PUSH(val);
|
647
676
|
#undef CURRENT_INSN_newarray
|
@@ -664,10 +693,10 @@ INSN_ENTRY(duparray){
|
|
664
693
|
COLLECT_USAGE_INSN(BIN(duparray));
|
665
694
|
COLLECT_USAGE_OPERAND(BIN(duparray), 0, ary);
|
666
695
|
{
|
667
|
-
#line
|
696
|
+
#line 458 "insns.def"
|
668
697
|
val = rb_ary_resurrect(ary);
|
669
698
|
|
670
|
-
#line
|
699
|
+
#line 700 "vm.inc"
|
671
700
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
672
701
|
PUSH(val);
|
673
702
|
#undef CURRENT_INSN_duparray
|
@@ -692,10 +721,10 @@ INSN_ENTRY(expandarray){
|
|
692
721
|
COLLECT_USAGE_OPERAND(BIN(expandarray), 0, num);
|
693
722
|
COLLECT_USAGE_OPERAND(BIN(expandarray), 1, flag);
|
694
723
|
{
|
695
|
-
#line
|
724
|
+
#line 479 "insns.def"
|
696
725
|
vm_expandarray(GET_CFP(), ary, num, (int)flag);
|
697
726
|
|
698
|
-
#line
|
727
|
+
#line 728 "vm.inc"
|
699
728
|
#undef CURRENT_INSN_expandarray
|
700
729
|
#undef INSN_IS_SC
|
701
730
|
#undef INSN_LABEL
|
@@ -717,7 +746,7 @@ INSN_ENTRY(concatarray){
|
|
717
746
|
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
|
718
747
|
COLLECT_USAGE_INSN(BIN(concatarray));
|
719
748
|
{
|
720
|
-
#line
|
749
|
+
#line 493 "insns.def"
|
721
750
|
const VALUE ary2 = ary2st;
|
722
751
|
VALUE tmp1 = rb_check_convert_type(ary1, T_ARRAY, "Array", "to_a");
|
723
752
|
VALUE tmp2 = rb_check_convert_type(ary2, T_ARRAY, "Array", "to_a");
|
@@ -735,7 +764,7 @@ INSN_ENTRY(concatarray){
|
|
735
764
|
}
|
736
765
|
ary = rb_ary_concat(tmp1, tmp2);
|
737
766
|
|
738
|
-
#line
|
767
|
+
#line 768 "vm.inc"
|
739
768
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
740
769
|
PUSH(ary);
|
741
770
|
#undef CURRENT_INSN_concatarray
|
@@ -759,7 +788,7 @@ INSN_ENTRY(splatarray){
|
|
759
788
|
COLLECT_USAGE_INSN(BIN(splatarray));
|
760
789
|
COLLECT_USAGE_OPERAND(BIN(splatarray), 0, flag);
|
761
790
|
{
|
762
|
-
#line
|
791
|
+
#line 522 "insns.def"
|
763
792
|
VALUE tmp = rb_check_convert_type(ary, T_ARRAY, "Array", "to_a");
|
764
793
|
if (NIL_P(tmp)) {
|
765
794
|
tmp = rb_ary_new3(1, ary);
|
@@ -769,7 +798,7 @@ INSN_ENTRY(splatarray){
|
|
769
798
|
}
|
770
799
|
obj = tmp;
|
771
800
|
|
772
|
-
#line
|
801
|
+
#line 802 "vm.inc"
|
773
802
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
774
803
|
PUSH(obj);
|
775
804
|
#undef CURRENT_INSN_splatarray
|
@@ -792,7 +821,7 @@ INSN_ENTRY(newhash){
|
|
792
821
|
COLLECT_USAGE_INSN(BIN(newhash));
|
793
822
|
COLLECT_USAGE_OPERAND(BIN(newhash), 0, num);
|
794
823
|
{
|
795
|
-
#line
|
824
|
+
#line 544 "insns.def"
|
796
825
|
rb_num_t i;
|
797
826
|
|
798
827
|
RUBY_DTRACE_CREATE_HOOK(HASH, num);
|
@@ -806,7 +835,7 @@ INSN_ENTRY(newhash){
|
|
806
835
|
}
|
807
836
|
POPN(num);
|
808
837
|
|
809
|
-
#line
|
838
|
+
#line 839 "vm.inc"
|
810
839
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
811
840
|
PUSH(val);
|
812
841
|
#undef CURRENT_INSN_newhash
|
@@ -831,10 +860,10 @@ INSN_ENTRY(newrange){
|
|
831
860
|
COLLECT_USAGE_INSN(BIN(newrange));
|
832
861
|
COLLECT_USAGE_OPERAND(BIN(newrange), 0, flag);
|
833
862
|
{
|
834
|
-
#line
|
863
|
+
#line 569 "insns.def"
|
835
864
|
val = rb_range_new(low, high, (int)flag);
|
836
865
|
|
837
|
-
#line
|
866
|
+
#line 867 "vm.inc"
|
838
867
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
839
868
|
PUSH(val);
|
840
869
|
#undef CURRENT_INSN_newrange
|
@@ -856,11 +885,11 @@ INSN_ENTRY(pop){
|
|
856
885
|
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
|
857
886
|
COLLECT_USAGE_INSN(BIN(pop));
|
858
887
|
{
|
859
|
-
#line
|
888
|
+
#line 587 "insns.def"
|
860
889
|
(void)val;
|
861
890
|
/* none */
|
862
891
|
|
863
|
-
#line
|
892
|
+
#line 893 "vm.inc"
|
864
893
|
#undef CURRENT_INSN_pop
|
865
894
|
#undef INSN_IS_SC
|
866
895
|
#undef INSN_LABEL
|
@@ -882,10 +911,10 @@ INSN_ENTRY(dup){
|
|
882
911
|
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
|
883
912
|
COLLECT_USAGE_INSN(BIN(dup));
|
884
913
|
{
|
885
|
-
#line
|
914
|
+
#line 602 "insns.def"
|
886
915
|
val1 = val2 = val;
|
887
916
|
|
888
|
-
#line
|
917
|
+
#line 918 "vm.inc"
|
889
918
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 2);
|
890
919
|
PUSH(val1);
|
891
920
|
PUSH(val2);
|
@@ -908,7 +937,7 @@ INSN_ENTRY(dupn){
|
|
908
937
|
COLLECT_USAGE_INSN(BIN(dupn));
|
909
938
|
COLLECT_USAGE_OPERAND(BIN(dupn), 0, n);
|
910
939
|
{
|
911
|
-
#line
|
940
|
+
#line 616 "insns.def"
|
912
941
|
rb_num_t i;
|
913
942
|
VALUE *sp = STACK_ADDR_FROM_TOP(n);
|
914
943
|
for (i = 0; i < n; i++) {
|
@@ -916,7 +945,7 @@ INSN_ENTRY(dupn){
|
|
916
945
|
}
|
917
946
|
INC_SP(n);
|
918
947
|
|
919
|
-
#line
|
948
|
+
#line 949 "vm.inc"
|
920
949
|
#undef CURRENT_INSN_dupn
|
921
950
|
#undef INSN_IS_SC
|
922
951
|
#undef INSN_LABEL
|
@@ -937,10 +966,10 @@ INSN_ENTRY(swap){
|
|
937
966
|
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
|
938
967
|
COLLECT_USAGE_INSN(BIN(swap));
|
939
968
|
{
|
940
|
-
#line
|
969
|
+
#line 636 "insns.def"
|
941
970
|
/* none */
|
942
971
|
|
943
|
-
#line
|
972
|
+
#line 973 "vm.inc"
|
944
973
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 2);
|
945
974
|
PUSH(obj);
|
946
975
|
PUSH(val);
|
@@ -963,7 +992,7 @@ INSN_ENTRY(reverse){
|
|
963
992
|
COLLECT_USAGE_INSN(BIN(reverse));
|
964
993
|
COLLECT_USAGE_OPERAND(BIN(reverse), 0, n);
|
965
994
|
{
|
966
|
-
#line
|
995
|
+
#line 650 "insns.def"
|
967
996
|
rb_num_t i;
|
968
997
|
VALUE *sp = STACK_ADDR_FROM_TOP(n);
|
969
998
|
|
@@ -974,7 +1003,7 @@ INSN_ENTRY(reverse){
|
|
974
1003
|
TOPN(i) = v0;
|
975
1004
|
}
|
976
1005
|
|
977
|
-
#line
|
1006
|
+
#line 1007 "vm.inc"
|
978
1007
|
#undef CURRENT_INSN_reverse
|
979
1008
|
#undef INSN_IS_SC
|
980
1009
|
#undef INSN_LABEL
|
@@ -994,10 +1023,10 @@ INSN_ENTRY(reput){
|
|
994
1023
|
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
|
995
1024
|
COLLECT_USAGE_INSN(BIN(reput));
|
996
1025
|
{
|
997
|
-
#line
|
1026
|
+
#line 672 "insns.def"
|
998
1027
|
/* none */
|
999
1028
|
|
1000
|
-
#line
|
1029
|
+
#line 1030 "vm.inc"
|
1001
1030
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1002
1031
|
PUSH(val);
|
1003
1032
|
#undef CURRENT_INSN_reput
|
@@ -1020,10 +1049,10 @@ INSN_ENTRY(topn){
|
|
1020
1049
|
COLLECT_USAGE_INSN(BIN(topn));
|
1021
1050
|
COLLECT_USAGE_OPERAND(BIN(topn), 0, n);
|
1022
1051
|
{
|
1023
|
-
#line
|
1052
|
+
#line 686 "insns.def"
|
1024
1053
|
val = TOPN(n);
|
1025
1054
|
|
1026
|
-
#line
|
1055
|
+
#line 1056 "vm.inc"
|
1027
1056
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1028
1057
|
PUSH(val);
|
1029
1058
|
#undef CURRENT_INSN_topn
|
@@ -1046,10 +1075,10 @@ INSN_ENTRY(setn){
|
|
1046
1075
|
COLLECT_USAGE_INSN(BIN(setn));
|
1047
1076
|
COLLECT_USAGE_OPERAND(BIN(setn), 0, n);
|
1048
1077
|
{
|
1049
|
-
#line
|
1078
|
+
#line 700 "insns.def"
|
1050
1079
|
TOPN(n-1) = val;
|
1051
1080
|
|
1052
|
-
#line
|
1081
|
+
#line 1082 "vm.inc"
|
1053
1082
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1054
1083
|
PUSH(val);
|
1055
1084
|
#undef CURRENT_INSN_setn
|
@@ -1071,10 +1100,10 @@ INSN_ENTRY(adjuststack){
|
|
1071
1100
|
COLLECT_USAGE_INSN(BIN(adjuststack));
|
1072
1101
|
COLLECT_USAGE_OPERAND(BIN(adjuststack), 0, n);
|
1073
1102
|
{
|
1074
|
-
#line
|
1103
|
+
#line 714 "insns.def"
|
1075
1104
|
DEC_SP(n);
|
1076
1105
|
|
1077
|
-
#line
|
1106
|
+
#line 1107 "vm.inc"
|
1078
1107
|
#undef CURRENT_INSN_adjuststack
|
1079
1108
|
#undef INSN_IS_SC
|
1080
1109
|
#undef INSN_LABEL
|
@@ -1100,10 +1129,10 @@ INSN_ENTRY(defined){
|
|
1100
1129
|
COLLECT_USAGE_OPERAND(BIN(defined), 1, obj);
|
1101
1130
|
COLLECT_USAGE_OPERAND(BIN(defined), 2, needstr);
|
1102
1131
|
{
|
1103
|
-
#line
|
1132
|
+
#line 733 "insns.def"
|
1104
1133
|
val = vm_defined(th, GET_CFP(), op_type, obj, needstr, v);
|
1105
1134
|
|
1106
|
-
#line
|
1135
|
+
#line 1136 "vm.inc"
|
1107
1136
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1108
1137
|
PUSH(val);
|
1109
1138
|
#undef CURRENT_INSN_defined
|
@@ -1128,7 +1157,7 @@ INSN_ENTRY(checkmatch){
|
|
1128
1157
|
COLLECT_USAGE_INSN(BIN(checkmatch));
|
1129
1158
|
COLLECT_USAGE_OPERAND(BIN(checkmatch), 0, flag);
|
1130
1159
|
{
|
1131
|
-
#line
|
1160
|
+
#line 752 "insns.def"
|
1132
1161
|
enum vm_check_match_type checkmatch_type =
|
1133
1162
|
(enum vm_check_match_type)(flag & VM_CHECKMATCH_TYPE_MASK);
|
1134
1163
|
result = Qfalse;
|
@@ -1148,7 +1177,7 @@ INSN_ENTRY(checkmatch){
|
|
1148
1177
|
}
|
1149
1178
|
}
|
1150
1179
|
|
1151
|
-
#line
|
1180
|
+
#line 1181 "vm.inc"
|
1152
1181
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1153
1182
|
PUSH(result);
|
1154
1183
|
#undef CURRENT_INSN_checkmatch
|
@@ -1173,7 +1202,7 @@ INSN_ENTRY(checkkeyword){
|
|
1173
1202
|
COLLECT_USAGE_OPERAND(BIN(checkkeyword), 0, kw_bits_index);
|
1174
1203
|
COLLECT_USAGE_OPERAND(BIN(checkkeyword), 1, keyword_index);
|
1175
1204
|
{
|
1176
|
-
#line
|
1205
|
+
#line 783 "insns.def"
|
1177
1206
|
const VALUE *ep = GET_EP();
|
1178
1207
|
const VALUE kw_bits = *(ep - kw_bits_index);
|
1179
1208
|
|
@@ -1186,7 +1215,7 @@ INSN_ENTRY(checkkeyword){
|
|
1186
1215
|
ret = rb_hash_has_key(kw_bits, INT2FIX(keyword_index)) ? Qfalse : Qtrue;
|
1187
1216
|
}
|
1188
1217
|
|
1189
|
-
#line
|
1218
|
+
#line 1219 "vm.inc"
|
1190
1219
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1191
1220
|
PUSH(ret);
|
1192
1221
|
#undef CURRENT_INSN_checkkeyword
|
@@ -1208,7 +1237,7 @@ INSN_ENTRY(trace){
|
|
1208
1237
|
COLLECT_USAGE_INSN(BIN(trace));
|
1209
1238
|
COLLECT_USAGE_OPERAND(BIN(trace), 0, nf);
|
1210
1239
|
{
|
1211
|
-
#line
|
1240
|
+
#line 807 "insns.def"
|
1212
1241
|
rb_event_flag_t flag = (rb_event_flag_t)nf;
|
1213
1242
|
|
1214
1243
|
if (RUBY_DTRACE_METHOD_ENTRY_ENABLED() ||
|
@@ -1235,7 +1264,7 @@ INSN_ENTRY(trace){
|
|
1235
1264
|
EXEC_EVENT_HOOK(th, flag, GET_SELF(), 0, 0 /* id and klass are resolved at callee */,
|
1236
1265
|
(flag & (RUBY_EVENT_RETURN | RUBY_EVENT_B_RETURN)) ? TOPN(0) : Qundef);
|
1237
1266
|
|
1238
|
-
#line
|
1267
|
+
#line 1268 "vm.inc"
|
1239
1268
|
#undef CURRENT_INSN_trace
|
1240
1269
|
#undef INSN_IS_SC
|
1241
1270
|
#undef INSN_LABEL
|
@@ -1262,7 +1291,7 @@ INSN_ENTRY(defineclass){
|
|
1262
1291
|
COLLECT_USAGE_OPERAND(BIN(defineclass), 1, class_iseq);
|
1263
1292
|
COLLECT_USAGE_OPERAND(BIN(defineclass), 2, flags);
|
1264
1293
|
{
|
1265
|
-
#line
|
1294
|
+
#line 853 "insns.def"
|
1266
1295
|
VALUE klass;
|
1267
1296
|
rb_vm_defineclass_type_t type = VM_DEFINECLASS_TYPE(flags);
|
1268
1297
|
|
@@ -1341,17 +1370,19 @@ INSN_ENTRY(defineclass){
|
|
1341
1370
|
rb_bug("unknown defineclass type: %d", (int)type);
|
1342
1371
|
}
|
1343
1372
|
|
1373
|
+
rb_iseq_check(class_iseq);
|
1374
|
+
|
1344
1375
|
/* enter scope */
|
1345
1376
|
vm_push_frame(th, class_iseq, VM_FRAME_MAGIC_CLASS, klass,
|
1346
1377
|
VM_ENVVAL_BLOCK_PTR(GET_BLOCK_PTR()),
|
1347
|
-
(VALUE)vm_cref_push(th, klass, NULL),
|
1378
|
+
(VALUE)vm_cref_push(th, klass, NULL, FALSE),
|
1348
1379
|
class_iseq->body->iseq_encoded, GET_SP(),
|
1349
|
-
class_iseq->body->local_size,
|
1350
|
-
|
1380
|
+
class_iseq->body->local_size,
|
1381
|
+
class_iseq->body->stack_max);
|
1351
1382
|
RESTORE_REGS();
|
1352
1383
|
NEXT_INSN();
|
1353
1384
|
|
1354
|
-
#line
|
1385
|
+
#line 1386 "vm.inc"
|
1355
1386
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1356
1387
|
PUSH(val);
|
1357
1388
|
#undef CURRENT_INSN_defineclass
|
@@ -1378,14 +1409,14 @@ INSN_ENTRY(send){
|
|
1378
1409
|
COLLECT_USAGE_OPERAND(BIN(send), 1, cc);
|
1379
1410
|
COLLECT_USAGE_OPERAND(BIN(send), 2, blockiseq);
|
1380
1411
|
{
|
1381
|
-
#line
|
1412
|
+
#line 960 "insns.def"
|
1382
1413
|
struct rb_calling_info calling;
|
1383
1414
|
|
1384
1415
|
vm_caller_setup_arg_block(th, reg_cfp, &calling, ci, blockiseq, FALSE);
|
1385
1416
|
vm_search_method(ci, cc, calling.recv = TOPN(calling.argc = ci->orig_argc));
|
1386
1417
|
CALL_METHOD(&calling, ci, cc);
|
1387
1418
|
|
1388
|
-
#line
|
1419
|
+
#line 1420 "vm.inc"
|
1389
1420
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1390
1421
|
PUSH(val);
|
1391
1422
|
#undef CURRENT_INSN_send
|
@@ -1408,7 +1439,7 @@ INSN_ENTRY(opt_str_freeze){
|
|
1408
1439
|
COLLECT_USAGE_INSN(BIN(opt_str_freeze));
|
1409
1440
|
COLLECT_USAGE_OPERAND(BIN(opt_str_freeze), 0, str);
|
1410
1441
|
{
|
1411
|
-
#line
|
1442
|
+
#line 973 "insns.def"
|
1412
1443
|
if (BASIC_OP_UNREDEFINED_P(BOP_FREEZE, STRING_REDEFINED_OP_FLAG)) {
|
1413
1444
|
val = str;
|
1414
1445
|
}
|
@@ -1416,7 +1447,7 @@ INSN_ENTRY(opt_str_freeze){
|
|
1416
1447
|
val = rb_funcall(rb_str_resurrect(str), idFreeze, 0);
|
1417
1448
|
}
|
1418
1449
|
|
1419
|
-
#line
|
1450
|
+
#line 1451 "vm.inc"
|
1420
1451
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1421
1452
|
PUSH(val);
|
1422
1453
|
#undef CURRENT_INSN_opt_str_freeze
|
@@ -1441,13 +1472,13 @@ INSN_ENTRY(opt_send_without_block){
|
|
1441
1472
|
COLLECT_USAGE_OPERAND(BIN(opt_send_without_block), 0, ci);
|
1442
1473
|
COLLECT_USAGE_OPERAND(BIN(opt_send_without_block), 1, cc);
|
1443
1474
|
{
|
1444
|
-
#line
|
1475
|
+
#line 992 "insns.def"
|
1445
1476
|
struct rb_calling_info calling;
|
1446
1477
|
calling.blockptr = NULL;
|
1447
1478
|
vm_search_method(ci, cc, calling.recv = TOPN(calling.argc = ci->orig_argc));
|
1448
1479
|
CALL_METHOD(&calling, ci, cc);
|
1449
1480
|
|
1450
|
-
#line
|
1481
|
+
#line 1482 "vm.inc"
|
1451
1482
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1452
1483
|
PUSH(val);
|
1453
1484
|
#undef CURRENT_INSN_opt_send_without_block
|
@@ -1474,7 +1505,7 @@ INSN_ENTRY(invokesuper){
|
|
1474
1505
|
COLLECT_USAGE_OPERAND(BIN(invokesuper), 1, cc);
|
1475
1506
|
COLLECT_USAGE_OPERAND(BIN(invokesuper), 2, blockiseq);
|
1476
1507
|
{
|
1477
|
-
#line
|
1508
|
+
#line 1009 "insns.def"
|
1478
1509
|
struct rb_calling_info calling;
|
1479
1510
|
calling.argc = ci->orig_argc;
|
1480
1511
|
|
@@ -1483,7 +1514,7 @@ INSN_ENTRY(invokesuper){
|
|
1483
1514
|
vm_search_super_method(th, GET_CFP(), &calling, ci, cc);
|
1484
1515
|
CALL_METHOD(&calling, ci, cc);
|
1485
1516
|
|
1486
|
-
#line
|
1517
|
+
#line 1518 "vm.inc"
|
1487
1518
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1488
1519
|
PUSH(val);
|
1489
1520
|
#undef CURRENT_INSN_invokesuper
|
@@ -1506,7 +1537,7 @@ INSN_ENTRY(invokeblock){
|
|
1506
1537
|
COLLECT_USAGE_INSN(BIN(invokeblock));
|
1507
1538
|
COLLECT_USAGE_OPERAND(BIN(invokeblock), 0, ci);
|
1508
1539
|
{
|
1509
|
-
#line
|
1540
|
+
#line 1029 "insns.def"
|
1510
1541
|
struct rb_calling_info calling;
|
1511
1542
|
calling.argc = ci->orig_argc;
|
1512
1543
|
calling.blockptr = NULL;
|
@@ -1518,7 +1549,7 @@ INSN_ENTRY(invokeblock){
|
|
1518
1549
|
NEXT_INSN();
|
1519
1550
|
}
|
1520
1551
|
|
1521
|
-
#line
|
1552
|
+
#line 1553 "vm.inc"
|
1522
1553
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1523
1554
|
PUSH(val);
|
1524
1555
|
#undef CURRENT_INSN_invokeblock
|
@@ -1540,7 +1571,7 @@ INSN_ENTRY(leave){
|
|
1540
1571
|
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
|
1541
1572
|
COLLECT_USAGE_INSN(BIN(leave));
|
1542
1573
|
{
|
1543
|
-
#line
|
1574
|
+
#line 1052 "insns.def"
|
1544
1575
|
if (OPT_CHECKED_RUN) {
|
1545
1576
|
const VALUE *const bp = vm_base_ptr(reg_cfp);
|
1546
1577
|
if (reg_cfp->sp != bp) {
|
@@ -1566,7 +1597,7 @@ INSN_ENTRY(leave){
|
|
1566
1597
|
RESTORE_REGS();
|
1567
1598
|
}
|
1568
1599
|
|
1569
|
-
#line
|
1600
|
+
#line 1601 "vm.inc"
|
1570
1601
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1571
1602
|
PUSH(val);
|
1572
1603
|
#undef CURRENT_INSN_leave
|
@@ -1590,13 +1621,13 @@ INSN_ENTRY(throw){
|
|
1590
1621
|
COLLECT_USAGE_INSN(BIN(throw));
|
1591
1622
|
COLLECT_USAGE_OPERAND(BIN(throw), 0, throw_state);
|
1592
1623
|
{
|
1593
|
-
#line
|
1624
|
+
#line 1093 "insns.def"
|
1594
1625
|
RUBY_VM_CHECK_INTS(th);
|
1595
1626
|
val = vm_throw(th, GET_CFP(), throw_state, throwobj);
|
1596
1627
|
THROW_EXCEPTION(val);
|
1597
1628
|
/* unreachable */
|
1598
1629
|
|
1599
|
-
#line
|
1630
|
+
#line 1631 "vm.inc"
|
1600
1631
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1601
1632
|
PUSH(val);
|
1602
1633
|
#undef CURRENT_INSN_throw
|
@@ -1618,11 +1649,11 @@ INSN_ENTRY(jump){
|
|
1618
1649
|
COLLECT_USAGE_INSN(BIN(jump));
|
1619
1650
|
COLLECT_USAGE_OPERAND(BIN(jump), 0, dst);
|
1620
1651
|
{
|
1621
|
-
#line
|
1652
|
+
#line 1114 "insns.def"
|
1622
1653
|
RUBY_VM_CHECK_INTS(th);
|
1623
1654
|
JUMP(dst);
|
1624
1655
|
|
1625
|
-
#line
|
1656
|
+
#line 1657 "vm.inc"
|
1626
1657
|
#undef CURRENT_INSN_jump
|
1627
1658
|
#undef INSN_IS_SC
|
1628
1659
|
#undef INSN_LABEL
|
@@ -1643,13 +1674,13 @@ INSN_ENTRY(branchif){
|
|
1643
1674
|
COLLECT_USAGE_INSN(BIN(branchif));
|
1644
1675
|
COLLECT_USAGE_OPERAND(BIN(branchif), 0, dst);
|
1645
1676
|
{
|
1646
|
-
#line
|
1677
|
+
#line 1129 "insns.def"
|
1647
1678
|
if (RTEST(val)) {
|
1648
1679
|
RUBY_VM_CHECK_INTS(th);
|
1649
1680
|
JUMP(dst);
|
1650
1681
|
}
|
1651
1682
|
|
1652
|
-
#line
|
1683
|
+
#line 1684 "vm.inc"
|
1653
1684
|
#undef CURRENT_INSN_branchif
|
1654
1685
|
#undef INSN_IS_SC
|
1655
1686
|
#undef INSN_LABEL
|
@@ -1670,13 +1701,13 @@ INSN_ENTRY(branchunless){
|
|
1670
1701
|
COLLECT_USAGE_INSN(BIN(branchunless));
|
1671
1702
|
COLLECT_USAGE_OPERAND(BIN(branchunless), 0, dst);
|
1672
1703
|
{
|
1673
|
-
#line
|
1704
|
+
#line 1146 "insns.def"
|
1674
1705
|
if (!RTEST(val)) {
|
1675
1706
|
RUBY_VM_CHECK_INTS(th);
|
1676
1707
|
JUMP(dst);
|
1677
1708
|
}
|
1678
1709
|
|
1679
|
-
#line
|
1710
|
+
#line 1711 "vm.inc"
|
1680
1711
|
#undef CURRENT_INSN_branchunless
|
1681
1712
|
#undef INSN_IS_SC
|
1682
1713
|
#undef INSN_LABEL
|
@@ -1697,13 +1728,13 @@ INSN_ENTRY(branchnil){
|
|
1697
1728
|
COLLECT_USAGE_INSN(BIN(branchnil));
|
1698
1729
|
COLLECT_USAGE_OPERAND(BIN(branchnil), 0, dst);
|
1699
1730
|
{
|
1700
|
-
#line
|
1731
|
+
#line 1163 "insns.def"
|
1701
1732
|
if (NIL_P(val)) {
|
1702
1733
|
RUBY_VM_CHECK_INTS(th);
|
1703
1734
|
JUMP(dst);
|
1704
1735
|
}
|
1705
1736
|
|
1706
|
-
#line
|
1737
|
+
#line 1738 "vm.inc"
|
1707
1738
|
#undef CURRENT_INSN_branchnil
|
1708
1739
|
#undef INSN_IS_SC
|
1709
1740
|
#undef INSN_LABEL
|
@@ -1726,7 +1757,7 @@ INSN_ENTRY(getinlinecache){
|
|
1726
1757
|
COLLECT_USAGE_OPERAND(BIN(getinlinecache), 0, dst);
|
1727
1758
|
COLLECT_USAGE_OPERAND(BIN(getinlinecache), 1, ic);
|
1728
1759
|
{
|
1729
|
-
#line
|
1760
|
+
#line 1185 "insns.def"
|
1730
1761
|
if (ic->ic_serial == GET_GLOBAL_CONSTANT_STATE() &&
|
1731
1762
|
(ic->ic_cref == NULL || ic->ic_cref == rb_vm_get_cref(GET_EP()))) {
|
1732
1763
|
val = ic->ic_value.value;
|
@@ -1737,7 +1768,7 @@ INSN_ENTRY(getinlinecache){
|
|
1737
1768
|
val = Qnil;
|
1738
1769
|
}
|
1739
1770
|
|
1740
|
-
#line
|
1771
|
+
#line 1772 "vm.inc"
|
1741
1772
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1742
1773
|
PUSH(val);
|
1743
1774
|
#undef CURRENT_INSN_getinlinecache
|
@@ -1760,14 +1791,14 @@ INSN_ENTRY(setinlinecache){
|
|
1760
1791
|
COLLECT_USAGE_INSN(BIN(setinlinecache));
|
1761
1792
|
COLLECT_USAGE_OPERAND(BIN(setinlinecache), 0, ic);
|
1762
1793
|
{
|
1763
|
-
#line
|
1794
|
+
#line 1207 "insns.def"
|
1764
1795
|
VM_ASSERT(ic->ic_value.value != Qundef);
|
1765
1796
|
ic->ic_value.value = val;
|
1766
1797
|
ic->ic_serial = GET_GLOBAL_CONSTANT_STATE() - ruby_vm_const_missing_count;
|
1767
1798
|
ic->ic_cref = vm_get_const_key_cref(GET_EP());
|
1768
1799
|
ruby_vm_const_missing_count = 0;
|
1769
1800
|
|
1770
|
-
#line
|
1801
|
+
#line 1802 "vm.inc"
|
1771
1802
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1772
1803
|
PUSH(val);
|
1773
1804
|
#undef CURRENT_INSN_setinlinecache
|
@@ -1792,7 +1823,7 @@ INSN_ENTRY(once){
|
|
1792
1823
|
COLLECT_USAGE_OPERAND(BIN(once), 0, iseq);
|
1793
1824
|
COLLECT_USAGE_OPERAND(BIN(once), 1, ic);
|
1794
1825
|
{
|
1795
|
-
#line
|
1826
|
+
#line 1225 "insns.def"
|
1796
1827
|
union iseq_inline_storage_entry *is = (union iseq_inline_storage_entry *)ic;
|
1797
1828
|
|
1798
1829
|
#define RUNNING_THREAD_ONCE_DONE ((rb_thread_t *)(0x1))
|
@@ -1818,7 +1849,7 @@ INSN_ENTRY(once){
|
|
1818
1849
|
goto retry;
|
1819
1850
|
}
|
1820
1851
|
|
1821
|
-
#line
|
1852
|
+
#line 1853 "vm.inc"
|
1822
1853
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1823
1854
|
PUSH(val);
|
1824
1855
|
#undef CURRENT_INSN_once
|
@@ -1843,14 +1874,17 @@ INSN_ENTRY(opt_case_dispatch){
|
|
1843
1874
|
COLLECT_USAGE_OPERAND(BIN(opt_case_dispatch), 0, hash);
|
1844
1875
|
COLLECT_USAGE_OPERAND(BIN(opt_case_dispatch), 1, else_offset);
|
1845
1876
|
{
|
1846
|
-
#line
|
1877
|
+
#line 1262 "insns.def"
|
1847
1878
|
switch(TYPE(key)) {
|
1848
1879
|
case T_FLOAT: {
|
1849
1880
|
double ival;
|
1850
|
-
if (modf(RFLOAT_VALUE(key), &ival) == 0.0) {
|
1881
|
+
if (modf(RFLOAT_VALUE(key), &ival) == 0.0 && !isinf(ival)) {
|
1851
1882
|
key = FIXABLE(ival) ? LONG2FIX((long)ival) : rb_dbl2big(ival);
|
1852
1883
|
}
|
1853
1884
|
}
|
1885
|
+
case T_TRUE:
|
1886
|
+
case T_FALSE:
|
1887
|
+
case T_NIL:
|
1854
1888
|
case T_SYMBOL: /* fall through */
|
1855
1889
|
case T_FIXNUM:
|
1856
1890
|
case T_BIGNUM:
|
@@ -1858,7 +1892,11 @@ INSN_ENTRY(opt_case_dispatch){
|
|
1858
1892
|
if (BASIC_OP_UNREDEFINED_P(BOP_EQQ,
|
1859
1893
|
SYMBOL_REDEFINED_OP_FLAG |
|
1860
1894
|
FIXNUM_REDEFINED_OP_FLAG |
|
1895
|
+
FLOAT_REDEFINED_OP_FLAG |
|
1861
1896
|
BIGNUM_REDEFINED_OP_FLAG |
|
1897
|
+
NIL_REDEFINED_OP_FLAG |
|
1898
|
+
TRUE_REDEFINED_OP_FLAG |
|
1899
|
+
FALSE_REDEFINED_OP_FLAG |
|
1862
1900
|
STRING_REDEFINED_OP_FLAG)) {
|
1863
1901
|
st_data_t val;
|
1864
1902
|
if (st_lookup(RHASH_TBL_RAW(hash), key, &val)) {
|
@@ -1873,7 +1911,7 @@ INSN_ENTRY(opt_case_dispatch){
|
|
1873
1911
|
break;
|
1874
1912
|
}
|
1875
1913
|
|
1876
|
-
#line
|
1914
|
+
#line 1915 "vm.inc"
|
1877
1915
|
#undef CURRENT_INSN_opt_case_dispatch
|
1878
1916
|
#undef INSN_IS_SC
|
1879
1917
|
#undef INSN_LABEL
|
@@ -1898,7 +1936,7 @@ INSN_ENTRY(opt_plus){
|
|
1898
1936
|
COLLECT_USAGE_OPERAND(BIN(opt_plus), 0, ci);
|
1899
1937
|
COLLECT_USAGE_OPERAND(BIN(opt_plus), 1, cc);
|
1900
1938
|
{
|
1901
|
-
#line
|
1939
|
+
#line 1312 "insns.def"
|
1902
1940
|
if (FIXNUM_2_P(recv, obj) &&
|
1903
1941
|
BASIC_OP_UNREDEFINED_P(BOP_PLUS,FIXNUM_REDEFINED_OP_FLAG)) {
|
1904
1942
|
/* fixnum + fixnum */
|
@@ -1950,7 +1988,7 @@ INSN_ENTRY(opt_plus){
|
|
1950
1988
|
CALL_SIMPLE_METHOD(recv);
|
1951
1989
|
}
|
1952
1990
|
|
1953
|
-
#line
|
1991
|
+
#line 1992 "vm.inc"
|
1954
1992
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
1955
1993
|
PUSH(val);
|
1956
1994
|
#undef CURRENT_INSN_opt_plus
|
@@ -1977,7 +2015,7 @@ INSN_ENTRY(opt_minus){
|
|
1977
2015
|
COLLECT_USAGE_OPERAND(BIN(opt_minus), 0, ci);
|
1978
2016
|
COLLECT_USAGE_OPERAND(BIN(opt_minus), 1, cc);
|
1979
2017
|
{
|
1980
|
-
#line
|
2018
|
+
#line 1375 "insns.def"
|
1981
2019
|
if (FIXNUM_2_P(recv, obj) &&
|
1982
2020
|
BASIC_OP_UNREDEFINED_P(BOP_MINUS, FIXNUM_REDEFINED_OP_FLAG)) {
|
1983
2021
|
long a, b, c;
|
@@ -2014,7 +2052,7 @@ INSN_ENTRY(opt_minus){
|
|
2014
2052
|
CALL_SIMPLE_METHOD(recv);
|
2015
2053
|
}
|
2016
2054
|
|
2017
|
-
#line
|
2055
|
+
#line 2056 "vm.inc"
|
2018
2056
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2019
2057
|
PUSH(val);
|
2020
2058
|
#undef CURRENT_INSN_opt_minus
|
@@ -2041,7 +2079,7 @@ INSN_ENTRY(opt_mult){
|
|
2041
2079
|
COLLECT_USAGE_OPERAND(BIN(opt_mult), 0, ci);
|
2042
2080
|
COLLECT_USAGE_OPERAND(BIN(opt_mult), 1, cc);
|
2043
2081
|
{
|
2044
|
-
#line
|
2082
|
+
#line 1423 "insns.def"
|
2045
2083
|
if (FIXNUM_2_P(recv, obj) &&
|
2046
2084
|
BASIC_OP_UNREDEFINED_P(BOP_MULT, FIXNUM_REDEFINED_OP_FLAG)) {
|
2047
2085
|
long a, b;
|
@@ -2080,7 +2118,7 @@ INSN_ENTRY(opt_mult){
|
|
2080
2118
|
CALL_SIMPLE_METHOD(recv);
|
2081
2119
|
}
|
2082
2120
|
|
2083
|
-
#line
|
2121
|
+
#line 2122 "vm.inc"
|
2084
2122
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2085
2123
|
PUSH(val);
|
2086
2124
|
#undef CURRENT_INSN_opt_mult
|
@@ -2107,7 +2145,7 @@ INSN_ENTRY(opt_div){
|
|
2107
2145
|
COLLECT_USAGE_OPERAND(BIN(opt_div), 0, ci);
|
2108
2146
|
COLLECT_USAGE_OPERAND(BIN(opt_div), 1, cc);
|
2109
2147
|
{
|
2110
|
-
#line
|
2148
|
+
#line 1473 "insns.def"
|
2111
2149
|
if (FIXNUM_2_P(recv, obj) &&
|
2112
2150
|
BASIC_OP_UNREDEFINED_P(BOP_DIV, FIXNUM_REDEFINED_OP_FLAG)) {
|
2113
2151
|
long x, y, div;
|
@@ -2159,7 +2197,7 @@ INSN_ENTRY(opt_div){
|
|
2159
2197
|
CALL_SIMPLE_METHOD(recv);
|
2160
2198
|
}
|
2161
2199
|
|
2162
|
-
#line
|
2200
|
+
#line 2201 "vm.inc"
|
2163
2201
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2164
2202
|
PUSH(val);
|
2165
2203
|
#undef CURRENT_INSN_opt_div
|
@@ -2186,7 +2224,7 @@ INSN_ENTRY(opt_mod){
|
|
2186
2224
|
COLLECT_USAGE_OPERAND(BIN(opt_mod), 0, ci);
|
2187
2225
|
COLLECT_USAGE_OPERAND(BIN(opt_mod), 1, cc);
|
2188
2226
|
{
|
2189
|
-
#line
|
2227
|
+
#line 1536 "insns.def"
|
2190
2228
|
if (FIXNUM_2_P(recv, obj) &&
|
2191
2229
|
BASIC_OP_UNREDEFINED_P(BOP_MOD, FIXNUM_REDEFINED_OP_FLAG )) {
|
2192
2230
|
long x, y;
|
@@ -2242,7 +2280,7 @@ INSN_ENTRY(opt_mod){
|
|
2242
2280
|
CALL_SIMPLE_METHOD(recv);
|
2243
2281
|
}
|
2244
2282
|
|
2245
|
-
#line
|
2283
|
+
#line 2284 "vm.inc"
|
2246
2284
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2247
2285
|
PUSH(val);
|
2248
2286
|
#undef CURRENT_INSN_opt_mod
|
@@ -2269,7 +2307,7 @@ INSN_ENTRY(opt_eq){
|
|
2269
2307
|
COLLECT_USAGE_OPERAND(BIN(opt_eq), 0, ci);
|
2270
2308
|
COLLECT_USAGE_OPERAND(BIN(opt_eq), 1, cc);
|
2271
2309
|
{
|
2272
|
-
#line
|
2310
|
+
#line 1603 "insns.def"
|
2273
2311
|
val = opt_eq_func(recv, obj, ci, cc);
|
2274
2312
|
|
2275
2313
|
if (val == Qundef) {
|
@@ -2279,7 +2317,7 @@ INSN_ENTRY(opt_eq){
|
|
2279
2317
|
CALL_SIMPLE_METHOD(recv);
|
2280
2318
|
}
|
2281
2319
|
|
2282
|
-
#line
|
2320
|
+
#line 2321 "vm.inc"
|
2283
2321
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2284
2322
|
PUSH(val);
|
2285
2323
|
#undef CURRENT_INSN_opt_eq
|
@@ -2310,7 +2348,7 @@ INSN_ENTRY(opt_neq){
|
|
2310
2348
|
COLLECT_USAGE_OPERAND(BIN(opt_neq), 2, ci_eq);
|
2311
2349
|
COLLECT_USAGE_OPERAND(BIN(opt_neq), 3, cc_eq);
|
2312
2350
|
{
|
2313
|
-
#line
|
2351
|
+
#line 1624 "insns.def"
|
2314
2352
|
extern VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2);
|
2315
2353
|
vm_search_method(ci, cc, recv);
|
2316
2354
|
|
@@ -2331,7 +2369,7 @@ INSN_ENTRY(opt_neq){
|
|
2331
2369
|
CALL_SIMPLE_METHOD(recv);
|
2332
2370
|
}
|
2333
2371
|
|
2334
|
-
#line
|
2372
|
+
#line 2373 "vm.inc"
|
2335
2373
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2336
2374
|
PUSH(val);
|
2337
2375
|
#undef CURRENT_INSN_opt_neq
|
@@ -2358,7 +2396,7 @@ INSN_ENTRY(opt_lt){
|
|
2358
2396
|
COLLECT_USAGE_OPERAND(BIN(opt_lt), 0, ci);
|
2359
2397
|
COLLECT_USAGE_OPERAND(BIN(opt_lt), 1, cc);
|
2360
2398
|
{
|
2361
|
-
#line
|
2399
|
+
#line 1656 "insns.def"
|
2362
2400
|
if (FIXNUM_2_P(recv, obj) &&
|
2363
2401
|
BASIC_OP_UNREDEFINED_P(BOP_LT, FIXNUM_REDEFINED_OP_FLAG)) {
|
2364
2402
|
SIGNED_VALUE a = recv, b = obj;
|
@@ -2391,7 +2429,7 @@ INSN_ENTRY(opt_lt){
|
|
2391
2429
|
CALL_SIMPLE_METHOD(recv);
|
2392
2430
|
}
|
2393
2431
|
|
2394
|
-
#line
|
2432
|
+
#line 2433 "vm.inc"
|
2395
2433
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2396
2434
|
PUSH(val);
|
2397
2435
|
#undef CURRENT_INSN_opt_lt
|
@@ -2418,7 +2456,7 @@ INSN_ENTRY(opt_le){
|
|
2418
2456
|
COLLECT_USAGE_OPERAND(BIN(opt_le), 0, ci);
|
2419
2457
|
COLLECT_USAGE_OPERAND(BIN(opt_le), 1, cc);
|
2420
2458
|
{
|
2421
|
-
#line
|
2459
|
+
#line 1700 "insns.def"
|
2422
2460
|
if (FIXNUM_2_P(recv, obj) &&
|
2423
2461
|
BASIC_OP_UNREDEFINED_P(BOP_LE, FIXNUM_REDEFINED_OP_FLAG)) {
|
2424
2462
|
SIGNED_VALUE a = recv, b = obj;
|
@@ -2442,7 +2480,7 @@ INSN_ENTRY(opt_le){
|
|
2442
2480
|
CALL_SIMPLE_METHOD(recv);
|
2443
2481
|
}
|
2444
2482
|
|
2445
|
-
#line
|
2483
|
+
#line 2484 "vm.inc"
|
2446
2484
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2447
2485
|
PUSH(val);
|
2448
2486
|
#undef CURRENT_INSN_opt_le
|
@@ -2469,7 +2507,7 @@ INSN_ENTRY(opt_gt){
|
|
2469
2507
|
COLLECT_USAGE_OPERAND(BIN(opt_gt), 0, ci);
|
2470
2508
|
COLLECT_USAGE_OPERAND(BIN(opt_gt), 1, cc);
|
2471
2509
|
{
|
2472
|
-
#line
|
2510
|
+
#line 1735 "insns.def"
|
2473
2511
|
if (FIXNUM_2_P(recv, obj) &&
|
2474
2512
|
BASIC_OP_UNREDEFINED_P(BOP_GT, FIXNUM_REDEFINED_OP_FLAG)) {
|
2475
2513
|
SIGNED_VALUE a = recv, b = obj;
|
@@ -2502,7 +2540,7 @@ INSN_ENTRY(opt_gt){
|
|
2502
2540
|
CALL_SIMPLE_METHOD(recv);
|
2503
2541
|
}
|
2504
2542
|
|
2505
|
-
#line
|
2543
|
+
#line 2544 "vm.inc"
|
2506
2544
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2507
2545
|
PUSH(val);
|
2508
2546
|
#undef CURRENT_INSN_opt_gt
|
@@ -2529,7 +2567,7 @@ INSN_ENTRY(opt_ge){
|
|
2529
2567
|
COLLECT_USAGE_OPERAND(BIN(opt_ge), 0, ci);
|
2530
2568
|
COLLECT_USAGE_OPERAND(BIN(opt_ge), 1, cc);
|
2531
2569
|
{
|
2532
|
-
#line
|
2570
|
+
#line 1779 "insns.def"
|
2533
2571
|
if (FIXNUM_2_P(recv, obj) &&
|
2534
2572
|
BASIC_OP_UNREDEFINED_P(BOP_GE, FIXNUM_REDEFINED_OP_FLAG)) {
|
2535
2573
|
SIGNED_VALUE a = recv, b = obj;
|
@@ -2552,7 +2590,7 @@ INSN_ENTRY(opt_ge){
|
|
2552
2590
|
CALL_SIMPLE_METHOD(recv);
|
2553
2591
|
}
|
2554
2592
|
|
2555
|
-
#line
|
2593
|
+
#line 2594 "vm.inc"
|
2556
2594
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2557
2595
|
PUSH(val);
|
2558
2596
|
#undef CURRENT_INSN_opt_ge
|
@@ -2579,7 +2617,7 @@ INSN_ENTRY(opt_ltlt){
|
|
2579
2617
|
COLLECT_USAGE_OPERAND(BIN(opt_ltlt), 0, ci);
|
2580
2618
|
COLLECT_USAGE_OPERAND(BIN(opt_ltlt), 1, cc);
|
2581
2619
|
{
|
2582
|
-
#line
|
2620
|
+
#line 1813 "insns.def"
|
2583
2621
|
if (!SPECIAL_CONST_P(recv)) {
|
2584
2622
|
if (RBASIC_CLASS(recv) == rb_cString &&
|
2585
2623
|
BASIC_OP_UNREDEFINED_P(BOP_LTLT, STRING_REDEFINED_OP_FLAG)) {
|
@@ -2600,7 +2638,7 @@ INSN_ENTRY(opt_ltlt){
|
|
2600
2638
|
CALL_SIMPLE_METHOD(recv);
|
2601
2639
|
}
|
2602
2640
|
|
2603
|
-
#line
|
2641
|
+
#line 2642 "vm.inc"
|
2604
2642
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2605
2643
|
PUSH(val);
|
2606
2644
|
#undef CURRENT_INSN_opt_ltlt
|
@@ -2627,7 +2665,7 @@ INSN_ENTRY(opt_aref){
|
|
2627
2665
|
COLLECT_USAGE_OPERAND(BIN(opt_aref), 0, ci);
|
2628
2666
|
COLLECT_USAGE_OPERAND(BIN(opt_aref), 1, cc);
|
2629
2667
|
{
|
2630
|
-
#line
|
2668
|
+
#line 1845 "insns.def"
|
2631
2669
|
if (!SPECIAL_CONST_P(recv)) {
|
2632
2670
|
if (RBASIC_CLASS(recv) == rb_cArray && BASIC_OP_UNREDEFINED_P(BOP_AREF, ARRAY_REDEFINED_OP_FLAG) && FIXNUM_P(obj)) {
|
2633
2671
|
val = rb_ary_entry(recv, FIX2LONG(obj));
|
@@ -2646,7 +2684,7 @@ INSN_ENTRY(opt_aref){
|
|
2646
2684
|
CALL_SIMPLE_METHOD(recv);
|
2647
2685
|
}
|
2648
2686
|
|
2649
|
-
#line
|
2687
|
+
#line 2688 "vm.inc"
|
2650
2688
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2651
2689
|
PUSH(val);
|
2652
2690
|
#undef CURRENT_INSN_opt_aref
|
@@ -2674,7 +2712,7 @@ INSN_ENTRY(opt_aset){
|
|
2674
2712
|
COLLECT_USAGE_OPERAND(BIN(opt_aset), 0, ci);
|
2675
2713
|
COLLECT_USAGE_OPERAND(BIN(opt_aset), 1, cc);
|
2676
2714
|
{
|
2677
|
-
#line
|
2715
|
+
#line 1875 "insns.def"
|
2678
2716
|
if (!SPECIAL_CONST_P(recv)) {
|
2679
2717
|
if (RBASIC_CLASS(recv) == rb_cArray && BASIC_OP_UNREDEFINED_P(BOP_ASET, ARRAY_REDEFINED_OP_FLAG) && FIXNUM_P(obj)) {
|
2680
2718
|
rb_ary_store(recv, FIX2LONG(obj), set);
|
@@ -2696,7 +2734,7 @@ INSN_ENTRY(opt_aset){
|
|
2696
2734
|
CALL_SIMPLE_METHOD(recv);
|
2697
2735
|
}
|
2698
2736
|
|
2699
|
-
#line
|
2737
|
+
#line 2738 "vm.inc"
|
2700
2738
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2701
2739
|
PUSH(val);
|
2702
2740
|
#undef CURRENT_INSN_opt_aset
|
@@ -2724,7 +2762,7 @@ INSN_ENTRY(opt_aset_with){
|
|
2724
2762
|
COLLECT_USAGE_OPERAND(BIN(opt_aset_with), 1, cc);
|
2725
2763
|
COLLECT_USAGE_OPERAND(BIN(opt_aset_with), 2, key);
|
2726
2764
|
{
|
2727
|
-
#line
|
2765
|
+
#line 1908 "insns.def"
|
2728
2766
|
if (!SPECIAL_CONST_P(recv) && RBASIC_CLASS(recv) == rb_cHash && BASIC_OP_UNREDEFINED_P(BOP_ASET, HASH_REDEFINED_OP_FLAG)) {
|
2729
2767
|
rb_hash_aset(recv, key, val);
|
2730
2768
|
}
|
@@ -2735,7 +2773,7 @@ INSN_ENTRY(opt_aset_with){
|
|
2735
2773
|
CALL_SIMPLE_METHOD(recv);
|
2736
2774
|
}
|
2737
2775
|
|
2738
|
-
#line
|
2776
|
+
#line 2777 "vm.inc"
|
2739
2777
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2740
2778
|
PUSH(val);
|
2741
2779
|
#undef CURRENT_INSN_opt_aset_with
|
@@ -2763,7 +2801,7 @@ INSN_ENTRY(opt_aref_with){
|
|
2763
2801
|
COLLECT_USAGE_OPERAND(BIN(opt_aref_with), 1, cc);
|
2764
2802
|
COLLECT_USAGE_OPERAND(BIN(opt_aref_with), 2, key);
|
2765
2803
|
{
|
2766
|
-
#line
|
2804
|
+
#line 1930 "insns.def"
|
2767
2805
|
if (!SPECIAL_CONST_P(recv) && RBASIC_CLASS(recv) == rb_cHash && BASIC_OP_UNREDEFINED_P(BOP_AREF, HASH_REDEFINED_OP_FLAG)) {
|
2768
2806
|
val = rb_hash_aref(recv, key);
|
2769
2807
|
}
|
@@ -2773,7 +2811,7 @@ INSN_ENTRY(opt_aref_with){
|
|
2773
2811
|
CALL_SIMPLE_METHOD(recv);
|
2774
2812
|
}
|
2775
2813
|
|
2776
|
-
#line
|
2814
|
+
#line 2815 "vm.inc"
|
2777
2815
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2778
2816
|
PUSH(val);
|
2779
2817
|
#undef CURRENT_INSN_opt_aref_with
|
@@ -2799,7 +2837,7 @@ INSN_ENTRY(opt_length){
|
|
2799
2837
|
COLLECT_USAGE_OPERAND(BIN(opt_length), 0, ci);
|
2800
2838
|
COLLECT_USAGE_OPERAND(BIN(opt_length), 1, cc);
|
2801
2839
|
{
|
2802
|
-
#line
|
2840
|
+
#line 1951 "insns.def"
|
2803
2841
|
if (!SPECIAL_CONST_P(recv)) {
|
2804
2842
|
if (RBASIC_CLASS(recv) == rb_cString &&
|
2805
2843
|
BASIC_OP_UNREDEFINED_P(BOP_LENGTH, STRING_REDEFINED_OP_FLAG)) {
|
@@ -2823,7 +2861,7 @@ INSN_ENTRY(opt_length){
|
|
2823
2861
|
CALL_SIMPLE_METHOD(recv);
|
2824
2862
|
}
|
2825
2863
|
|
2826
|
-
#line
|
2864
|
+
#line 2865 "vm.inc"
|
2827
2865
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2828
2866
|
PUSH(val);
|
2829
2867
|
#undef CURRENT_INSN_opt_length
|
@@ -2849,7 +2887,7 @@ INSN_ENTRY(opt_size){
|
|
2849
2887
|
COLLECT_USAGE_OPERAND(BIN(opt_size), 0, ci);
|
2850
2888
|
COLLECT_USAGE_OPERAND(BIN(opt_size), 1, cc);
|
2851
2889
|
{
|
2852
|
-
#line
|
2890
|
+
#line 1986 "insns.def"
|
2853
2891
|
if (!SPECIAL_CONST_P(recv)) {
|
2854
2892
|
if (RBASIC_CLASS(recv) == rb_cString &&
|
2855
2893
|
BASIC_OP_UNREDEFINED_P(BOP_SIZE, STRING_REDEFINED_OP_FLAG)) {
|
@@ -2873,7 +2911,7 @@ INSN_ENTRY(opt_size){
|
|
2873
2911
|
CALL_SIMPLE_METHOD(recv);
|
2874
2912
|
}
|
2875
2913
|
|
2876
|
-
#line
|
2914
|
+
#line 2915 "vm.inc"
|
2877
2915
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2878
2916
|
PUSH(val);
|
2879
2917
|
#undef CURRENT_INSN_opt_size
|
@@ -2899,7 +2937,7 @@ INSN_ENTRY(opt_empty_p){
|
|
2899
2937
|
COLLECT_USAGE_OPERAND(BIN(opt_empty_p), 0, ci);
|
2900
2938
|
COLLECT_USAGE_OPERAND(BIN(opt_empty_p), 1, cc);
|
2901
2939
|
{
|
2902
|
-
#line
|
2940
|
+
#line 2021 "insns.def"
|
2903
2941
|
if (!SPECIAL_CONST_P(recv)) {
|
2904
2942
|
if (RBASIC_CLASS(recv) == rb_cString &&
|
2905
2943
|
BASIC_OP_UNREDEFINED_P(BOP_EMPTY_P, STRING_REDEFINED_OP_FLAG)) {
|
@@ -2926,7 +2964,7 @@ INSN_ENTRY(opt_empty_p){
|
|
2926
2964
|
CALL_SIMPLE_METHOD(recv);
|
2927
2965
|
}
|
2928
2966
|
|
2929
|
-
#line
|
2967
|
+
#line 2968 "vm.inc"
|
2930
2968
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2931
2969
|
PUSH(val);
|
2932
2970
|
#undef CURRENT_INSN_opt_empty_p
|
@@ -2952,7 +2990,7 @@ INSN_ENTRY(opt_succ){
|
|
2952
2990
|
COLLECT_USAGE_OPERAND(BIN(opt_succ), 0, ci);
|
2953
2991
|
COLLECT_USAGE_OPERAND(BIN(opt_succ), 1, cc);
|
2954
2992
|
{
|
2955
|
-
#line
|
2993
|
+
#line 2059 "insns.def"
|
2956
2994
|
if (SPECIAL_CONST_P(recv)) {
|
2957
2995
|
if (FIXNUM_P(recv) &&
|
2958
2996
|
BASIC_OP_UNREDEFINED_P(BOP_SUCC, FIXNUM_REDEFINED_OP_FLAG)) {
|
@@ -2984,7 +3022,7 @@ INSN_ENTRY(opt_succ){
|
|
2984
3022
|
CALL_SIMPLE_METHOD(recv);
|
2985
3023
|
}
|
2986
3024
|
|
2987
|
-
#line
|
3025
|
+
#line 3026 "vm.inc"
|
2988
3026
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
2989
3027
|
PUSH(val);
|
2990
3028
|
#undef CURRENT_INSN_opt_succ
|
@@ -3010,7 +3048,7 @@ INSN_ENTRY(opt_not){
|
|
3010
3048
|
COLLECT_USAGE_OPERAND(BIN(opt_not), 0, ci);
|
3011
3049
|
COLLECT_USAGE_OPERAND(BIN(opt_not), 1, cc);
|
3012
3050
|
{
|
3013
|
-
#line
|
3051
|
+
#line 2102 "insns.def"
|
3014
3052
|
extern VALUE rb_obj_not(VALUE obj);
|
3015
3053
|
|
3016
3054
|
vm_search_method(ci, cc, recv);
|
@@ -3023,7 +3061,7 @@ INSN_ENTRY(opt_not){
|
|
3023
3061
|
CALL_SIMPLE_METHOD(recv);
|
3024
3062
|
}
|
3025
3063
|
|
3026
|
-
#line
|
3064
|
+
#line 3065 "vm.inc"
|
3027
3065
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
3028
3066
|
PUSH(val);
|
3029
3067
|
#undef CURRENT_INSN_opt_not
|
@@ -3047,7 +3085,7 @@ INSN_ENTRY(opt_regexpmatch1){
|
|
3047
3085
|
COLLECT_USAGE_INSN(BIN(opt_regexpmatch1));
|
3048
3086
|
COLLECT_USAGE_OPERAND(BIN(opt_regexpmatch1), 0, r);
|
3049
3087
|
{
|
3050
|
-
#line
|
3088
|
+
#line 2127 "insns.def"
|
3051
3089
|
if (BASIC_OP_UNREDEFINED_P(BOP_MATCH, REGEXP_REDEFINED_OP_FLAG)) {
|
3052
3090
|
val = rb_reg_match(r, obj);
|
3053
3091
|
}
|
@@ -3055,7 +3093,7 @@ INSN_ENTRY(opt_regexpmatch1){
|
|
3055
3093
|
val = rb_funcall(r, idEqTilde, 1, obj);
|
3056
3094
|
}
|
3057
3095
|
|
3058
|
-
#line
|
3096
|
+
#line 3097 "vm.inc"
|
3059
3097
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
3060
3098
|
PUSH(val);
|
3061
3099
|
#undef CURRENT_INSN_opt_regexpmatch1
|
@@ -3082,7 +3120,7 @@ INSN_ENTRY(opt_regexpmatch2){
|
|
3082
3120
|
COLLECT_USAGE_OPERAND(BIN(opt_regexpmatch2), 0, ci);
|
3083
3121
|
COLLECT_USAGE_OPERAND(BIN(opt_regexpmatch2), 1, cc);
|
3084
3122
|
{
|
3085
|
-
#line
|
3123
|
+
#line 2146 "insns.def"
|
3086
3124
|
if (CLASS_OF(obj2) == rb_cString &&
|
3087
3125
|
BASIC_OP_UNREDEFINED_P(BOP_MATCH, STRING_REDEFINED_OP_FLAG)) {
|
3088
3126
|
val = rb_reg_match(obj1, obj2);
|
@@ -3093,7 +3131,7 @@ INSN_ENTRY(opt_regexpmatch2){
|
|
3093
3131
|
CALL_SIMPLE_METHOD(obj2);
|
3094
3132
|
}
|
3095
3133
|
|
3096
|
-
#line
|
3134
|
+
#line 3135 "vm.inc"
|
3097
3135
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
3098
3136
|
PUSH(val);
|
3099
3137
|
#undef CURRENT_INSN_opt_regexpmatch2
|
@@ -3115,7 +3153,7 @@ INSN_ENTRY(opt_call_c_function){
|
|
3115
3153
|
COLLECT_USAGE_INSN(BIN(opt_call_c_function));
|
3116
3154
|
COLLECT_USAGE_OPERAND(BIN(opt_call_c_function), 0, funcptr);
|
3117
3155
|
{
|
3118
|
-
#line
|
3156
|
+
#line 2168 "insns.def"
|
3119
3157
|
reg_cfp = (funcptr)(th, reg_cfp);
|
3120
3158
|
|
3121
3159
|
if (reg_cfp == 0) {
|
@@ -3127,7 +3165,7 @@ INSN_ENTRY(opt_call_c_function){
|
|
3127
3165
|
RESTORE_REGS();
|
3128
3166
|
NEXT_INSN();
|
3129
3167
|
|
3130
|
-
#line
|
3168
|
+
#line 3169 "vm.inc"
|
3131
3169
|
#undef CURRENT_INSN_opt_call_c_function
|
3132
3170
|
#undef INSN_IS_SC
|
3133
3171
|
#undef INSN_LABEL
|
@@ -3147,10 +3185,10 @@ INSN_ENTRY(bitblt){
|
|
3147
3185
|
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
|
3148
3186
|
COLLECT_USAGE_INSN(BIN(bitblt));
|
3149
3187
|
{
|
3150
|
-
#line
|
3188
|
+
#line 2191 "insns.def"
|
3151
3189
|
ret = rb_str_new2("a bit of bacon, lettuce and tomato");
|
3152
3190
|
|
3153
|
-
#line
|
3191
|
+
#line 3192 "vm.inc"
|
3154
3192
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
3155
3193
|
PUSH(ret);
|
3156
3194
|
#undef CURRENT_INSN_bitblt
|
@@ -3172,10 +3210,10 @@ INSN_ENTRY(answer){
|
|
3172
3210
|
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
|
3173
3211
|
COLLECT_USAGE_INSN(BIN(answer));
|
3174
3212
|
{
|
3175
|
-
#line
|
3213
|
+
#line 2205 "insns.def"
|
3176
3214
|
ret = INT2FIX(42);
|
3177
3215
|
|
3178
|
-
#line
|
3216
|
+
#line 3217 "vm.inc"
|
3179
3217
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
3180
3218
|
PUSH(ret);
|
3181
3219
|
#undef CURRENT_INSN_answer
|
@@ -3209,7 +3247,7 @@ INSN_ENTRY(getlocal_OP__WC__0){
|
|
3209
3247
|
}
|
3210
3248
|
val = *(ep - idx);
|
3211
3249
|
|
3212
|
-
#line
|
3250
|
+
#line 3251 "vm.inc"
|
3213
3251
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
3214
3252
|
PUSH(val);
|
3215
3253
|
#undef level
|
@@ -3244,7 +3282,7 @@ INSN_ENTRY(getlocal_OP__WC__1){
|
|
3244
3282
|
}
|
3245
3283
|
val = *(ep - idx);
|
3246
3284
|
|
3247
|
-
#line
|
3285
|
+
#line 3286 "vm.inc"
|
3248
3286
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
3249
3287
|
PUSH(val);
|
3250
3288
|
#undef level
|
@@ -3279,7 +3317,7 @@ INSN_ENTRY(setlocal_OP__WC__0){
|
|
3279
3317
|
}
|
3280
3318
|
*(ep - idx) = val;
|
3281
3319
|
|
3282
|
-
#line
|
3320
|
+
#line 3321 "vm.inc"
|
3283
3321
|
#undef level
|
3284
3322
|
#undef CURRENT_INSN_setlocal_OP__WC__0
|
3285
3323
|
#undef INSN_IS_SC
|
@@ -3312,7 +3350,7 @@ INSN_ENTRY(setlocal_OP__WC__1){
|
|
3312
3350
|
}
|
3313
3351
|
*(ep - idx) = val;
|
3314
3352
|
|
3315
|
-
#line
|
3353
|
+
#line 3354 "vm.inc"
|
3316
3354
|
#undef level
|
3317
3355
|
#undef CURRENT_INSN_setlocal_OP__WC__1
|
3318
3356
|
#undef INSN_IS_SC
|
@@ -3336,7 +3374,7 @@ INSN_ENTRY(putobject_OP_INT2FIX_O_0_C_){
|
|
3336
3374
|
#line 297 "insns.def"
|
3337
3375
|
/* */
|
3338
3376
|
|
3339
|
-
#line
|
3377
|
+
#line 3378 "vm.inc"
|
3340
3378
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
3341
3379
|
PUSH(val);
|
3342
3380
|
#undef val
|
@@ -3362,7 +3400,7 @@ INSN_ENTRY(putobject_OP_INT2FIX_O_1_C_){
|
|
3362
3400
|
#line 297 "insns.def"
|
3363
3401
|
/* */
|
3364
3402
|
|
3365
|
-
#line
|
3403
|
+
#line 3404 "vm.inc"
|
3366
3404
|
CHECK_VM_STACK_OVERFLOW_FOR_INSN(REG_CFP, 1);
|
3367
3405
|
PUSH(val);
|
3368
3406
|
#undef val
|