Hi, Sergey!
Thanks for the patch!
LGTM, except for a single nit below:

When `tonumber()` is recorded (as a part of a trace) for cdata argument
can't be converted to number the `nil` value is recorded as the yielded
result. But without special check on trace for cdata type this nil will
be returned for another type of cdata that can be converted.
The first sentence lacks commas and is completely unreadable.
I suggest the following fix:
| When `tonumber()` is recorded (as a part of a trace) for a cdata argument that can't be converted to number, the `nil` value is | recorded as the yielded result.

This patch adds the corresponding check for recoding of failed cdata
conversions.
Typo: s/recoding/recording
 
<snipped>
--
Best regards,
Maxim Kokryashkin