Skip to content

Commit

Permalink
revert r52336 (commit miss)
Browse files Browse the repository at this point in the history
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52337 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
ko1 committed Oct 29, 2015
1 parent 106f033 commit 56eee28
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 33 deletions.
4 changes: 0 additions & 4 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
Thu Oct 29 14:07:54 2015 Koichi Sasada <ko1@atdot.net>

* gc.c (gc_mark_ptr): remove debug code for #11244.

Thu Oct 29 10:08:33 2015 Eric Wong <e@80x24.org>

* variable.c (struct autoload_state): usable as wait-queue head
Expand Down
8 changes: 4 additions & 4 deletions dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -674,7 +674,7 @@ dir_path(VALUE dir)
static int
fundamental_encoding_p(rb_encoding *enc)
{
switch (enc_to_index(enc)) {
switch (rb_enc_to_index(enc)) {
case ENCINDEX_ASCII:
case ENCINDEX_US_ASCII:
case ENCINDEX_UTF_8:
Expand Down Expand Up @@ -1010,7 +1010,7 @@ rb_dir_getwd(void)
{
char *path;
VALUE cwd;
int fsenc = enc_to_index(rb_filesystem_encoding());
int fsenc = rb_enc_to_index(rb_filesystem_encoding());

if (fsenc == ENCINDEX_US_ASCII) fsenc = ENCINDEX_ASCII;
path = my_getcwd();
Expand Down Expand Up @@ -2139,9 +2139,9 @@ push_glob(VALUE ary, VALUE str, int flags)
#ifdef __APPLE__
str = rb_str_encode_ospath(str);
#endif
if (enc_to_index(enc) == ENCINDEX_US_ASCII)
if (rb_enc_to_index(enc) == ENCINDEX_US_ASCII)
enc = rb_filesystem_encoding();
if (enc_to_index(enc) == ENCINDEX_US_ASCII)
if (rb_enc_to_index(enc) == ENCINDEX_US_ASCII)
enc = rb_ascii8bit_encoding();
flags |= GLOB_VERBOSE;
args.glob.func = push_pattern;
Expand Down
22 changes: 0 additions & 22 deletions encindex.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,28 +57,6 @@ enum ruby_preserved_encindex {
#define rb_utf8_encindex() RUBY_ENCINDEX_UTF_8
#define rb_usascii_encindex() RUBY_ENCINDEX_US_ASCII

#ifdef RUBY_ENCODING_H
#define ENC_INDEX_MASK (~(~0U<<24))
#define ENC_TO_ENCINDEX(enc) (int)((enc)->ruby_encoding_index & ENC_INDEX_MASK)

static inline int
enc_to_index(rb_encoding *enc)
{
return enc ? ENC_TO_ENCINDEX(enc) : 0;
}

static inline int
str_enc_get_index(VALUE str)
{
int i = ENCODING_GET_INLINED(str);
if (i == ENCODING_INLINE_MAX) {
VALUE iv = rb_ivar_get(str, rb_id_encoding());
i = NUM2INT(iv);
}
return i;
}
#endif

#if defined(__cplusplus)
#if 0
{ /* satisfy cc-mode */
Expand Down
12 changes: 10 additions & 2 deletions encoding.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ static struct {
} enc_table;

#define ENC_DUMMY_FLAG (1<<24)
#define ENC_INDEX_MASK (~(~0U<<24))

#define ENC_TO_ENCINDEX(enc) (int)((enc)->ruby_encoding_index & ENC_INDEX_MASK)
#define ENC_DUMMY_P(enc) ((enc)->ruby_encoding_index & ENC_DUMMY_FLAG)
#define ENC_SET_DUMMY(enc) ((enc)->ruby_encoding_index |= ENC_DUMMY_FLAG)

Expand Down Expand Up @@ -110,7 +112,7 @@ rb_enc_from_encoding(rb_encoding *encoding)
int
rb_enc_to_index(rb_encoding *enc)
{
return enc_to_index(enc);
return enc ? ENC_TO_ENCINDEX(enc) : 0;
}

int
Expand Down Expand Up @@ -756,7 +758,13 @@ rb_enc_get_index(VALUE obj)
default:
case T_STRING:
case T_REGEXP:
i = str_enc_get_index(obj);
i = ENCODING_GET_INLINED(obj);
if (i == ENCODING_INLINE_MAX) {
VALUE iv;

iv = rb_ivar_get(obj, rb_id_encoding());
i = NUM2INT(iv);
}
break;
case T_FILE:
tmp = rb_funcallv(obj, rb_intern("internal_encoding"), 0, 0);
Expand Down
11 changes: 11 additions & 0 deletions gc.c
Original file line number Diff line number Diff line change
Expand Up @@ -4235,6 +4235,17 @@ static void
gc_mark_ptr(rb_objspace_t *objspace, VALUE obj)
{
if (LIKELY(objspace->mark_func_data == NULL)) {
/* check code for Bug #11244 */
if (BUILTIN_TYPE(obj) == T_NONE) {
if (objspace->rgengc.parent_object) {
rb_bug("gc_mark_ptr: obj is %s (parent: %s)", obj_info(obj),
obj_info(objspace->rgengc.parent_object));
}
else {
rb_bug("gc_mark_ptr: obj is %s (parent is not old)", obj_info(obj));
}
}

rgengc_check_relation(objspace, obj);
if (!gc_mark_set(objspace, obj)) return; /* already marked */
gc_aging(objspace, obj);
Expand Down
2 changes: 1 addition & 1 deletion string.c
Original file line number Diff line number Diff line change
Expand Up @@ -1617,7 +1617,7 @@ rb_str_plus(VALUE str1, VALUE str2)
TERM_FILL(&ptr3[len1+len2], rb_enc_mbminlen(enc));

FL_SET_RAW(str3, OBJ_TAINTED_RAW(str1) | OBJ_TAINTED_RAW(str2));
ENCODING_CODERANGE_SET(str3, enc_to_index(enc),
ENCODING_CODERANGE_SET(str3, rb_enc_to_index(enc),
ENC_CODERANGE_AND(ENC_CODERANGE(str1), ENC_CODERANGE(str2)));
RB_GC_GUARD(str1);
RB_GC_GUARD(str2);
Expand Down

0 comments on commit 56eee28

Please sign in to comment.