[
https://issues.apache.org/jira/browse/THRIFT-1047?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12988258#action_12988258
]
Jake Donham commented on THRIFT-1047:
-------------------------------------
Do you have benchmarking code around this you could share?
I have a theory I'd like to test that an inline typecheck in
rb_thrift_memory_buffer_write would not adversely affect performance. Something
like
if (IMMEDIATE_P(str) || BUILTIN_TYPE(str) != T_STRING)
Check_Type(str, T_STRING)
because the branch should be predicted correctly and the type field should be
in the same cache line as the string ptr / length fields.
> rb_thrift_memory_buffer_write treats arg as string without check, segfaults
> if you pass non-string
> --------------------------------------------------------------------------------------------------
>
> Key: THRIFT-1047
> URL: https://issues.apache.org/jira/browse/THRIFT-1047
> Project: Thrift
> Issue Type: Bug
> Components: Ruby - Library
> Affects Versions: 0.5
> Reporter: Jake Donham
>
> I think there should be a call to Check_Type(str, T_STRING) in there
> VALUE rb_thrift_memory_buffer_write(VALUE self, VALUE str) {
> VALUE buf = GET_BUF(self);
> rb_str_buf_cat(buf, RSTRING_PTR(str), RSTRING_LEN(str));
> return Qnil;
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.