private void view(int index, int len) { modifyCheck(); if (shareLevel != SHARE_LEVEL_NONE) { if (shareLevel == SHARE_LEVEL_BYTELIST) { // if len == 0 then shared empty value = value.makeShared(index, len); shareLevel = SHARE_LEVEL_BUFFER; } else { value.view(index, len); } } else { value.view(index, len); // FIXME this below is temporary, but its much safer for COW (it prevents not shared Strings with begin != 0) // this allows now e.g.: ByteList#set not to be begin aware shareLevel = SHARE_LEVEL_BUFFER; } value.invalidate(); }
private void view(int index, int len) { modifyCheck(); if (shareLevel != SHARE_LEVEL_NONE) { if (shareLevel == SHARE_LEVEL_BYTELIST) { // if len == 0 then shared empty value = value.makeShared(index, len); shareLevel = SHARE_LEVEL_BUFFER; } else { value.view(index, len); } } else { value.view(index, len); // FIXME this below is temporary, but its much safer for COW (it prevents not shared Strings with begin != 0) // this allows now e.g.: ByteList#set not to be begin aware shareLevel = SHARE_LEVEL_BUFFER; } value.invalidate(); }
private void view(int index, int len) { modifyCheck(); if (shareLevel != SHARE_LEVEL_NONE) { if (shareLevel == SHARE_LEVEL_BYTELIST) { // if len == 0 then shared empty value = value.makeShared(index, len); shareLevel = SHARE_LEVEL_BUFFER; } else { value.view(index, len); } } else { value.view(index, len); // FIXME this below is temporary, but its much safer for COW (it prevents not shared Strings with begin != 0) // this allows now e.g.: ByteList#set not to be begin aware shareLevel = SHARE_LEVEL_BUFFER; } value.invalidate(); }
private final void view(int index, int len) { modifyCheck(); if (shareLevel != SHARE_LEVEL_NONE) { if (shareLevel == SHARE_LEVEL_BYTELIST) { // if len == 0 then shared empty value = value.makeShared(index, len); shareLevel = SHARE_LEVEL_BUFFER; } else { value.view(index, len); } } else { value.view(index, len); // FIXME this below is temporary, but its much safer for COW (it prevents not shared Strings with begin != 0) // this allows now e.g.: ByteList#set not to be begin aware shareLevel = SHARE_LEVEL_BUFFER; } value.invalidate(); }
private void view(int index, int len) { modifyCheck(); if (shareLevel != SHARE_LEVEL_NONE) { if (shareLevel == SHARE_LEVEL_BYTELIST) { // if len == 0 then shared empty value = value.makeShared(index, len); shareLevel = SHARE_LEVEL_BUFFER; } else { value.view(index, len); } } else { value.view(index, len); // FIXME this below is temporary, but its much safer for COW (it prevents not shared Strings with begin != 0) // this allows now e.g.: ByteList#set not to be begin aware shareLevel = SHARE_LEVEL_BUFFER; } value.invalidate(); }
@JRubyMethod(name = "delete_prefix!") public IRubyObject delete_prefix_bang(ThreadContext context, IRubyObject prefix) { modifyAndKeepCodeRange(); int prefixlen = deletedPrefixLength(prefix); if (prefixlen <= 0) return context.nil; // MRI: rb_str_drop_bytes, in a nutshell modify(); value.view(prefixlen, value.realSize() - prefixlen); clearCodeRange(); return this; }
@JRubyMethod(name = "delete_prefix!") public IRubyObject delete_prefix_bang(ThreadContext context, IRubyObject prefix) { modifyAndKeepCodeRange(); int prefixlen = deletedPrefixLength(prefix); if (prefixlen <= 0) return context.nil; // MRI: rb_str_drop_bytes, in a nutshell modify(); value.view(prefixlen, value.realSize() - prefixlen); clearCodeRange(); return this; }