aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2011-08-05Merge branch 'dev' into majorBjörn Gustavsson
* dev: Fix binary construction with huge literal sizes beam_load.c: Add overflow check of tag values beam_makeops: Add some sanity checks Fix construction of <<0:((1 bsl 32)-1)>>
2011-08-05Merge branch 'bjorn/erts/loader-related-bs-bugs/OTP-9284' into devBjörn Gustavsson
* bjorn/erts/loader-related-bs-bugs/OTP-9284: Fix binary construction with huge literal sizes beam_load.c: Add overflow check of tag values beam_makeops: Add some sanity checks Fix construction of <<0:((1 bsl 32)-1)>>
2011-08-03Merge branch 'lukas/asn1/remove_unused_record_warnings/OTP-9448' into majorLukas Larsson
* lukas/asn1/remove_unused_record_warnings/OTP-9448: Remove some superflous includes which caused inlined modules to have lots of compile warnings
2011-08-03Fix binary construction with huge literal sizesBjörn Gustavsson
Constructing binaries using the bit syntax with literals sizes that would not fit in an Uint will either cause an emulator crash or the loading to be aborted. Use the new TAG_o tag introduced in the previous commit to make sure that the attempt to create huge binary literals will generate a system_limit exception at run-time.
2011-08-03beam_load.c: Add overflow check of tag valuesBjörn Gustavsson
The handling of large values for other tags than TAG_i (integer) is buggy. Any tag value equal to or greater than 2^40 (5 bytes) will abort loading. Tag values fitting in 5 bytes will be truncated to 4 bytes values. Those bugs cause real problems because the bs_init2/6 and bs_init_bits/6 instructions unfortunately use TAG_u to encode literal sizes (using TAG_i would have been a better choice, but it is too late to change that now). Any binary size that cannot fit in an Uint should cause a system_limit exception at run-time, but instead the buggy handling will either cause an emulator crash (for values in the range 2^32 to 2^40-1) or abort loading. In this commit, implement overflow checking of tag values as a preparation for fixing the binary construction instructions. If any tag value cannot fit in an Uint (except for TAG_i), change the tag to the special TAG_o overflow tag.
2011-08-03beam_makeops: Add some sanity checksBjörn Gustavsson
We want to make sure that a tag/type name is not defined more than once and that we don't define too many primitive tags. Primitive tags must be named with lowercase letters (or they will be confused with variable names in transformations in the ops.tab file).
2011-08-03Fix construction of <<0:((1 bsl 32)-1)>>Björn Gustavsson
Attempting to construct <<0:((1 bsl 32)-1)>>, the largest bitstring allowed in a 32 bit emulator, would cause an emulator crash because of integer overflow. Fix the problem by using an Uint64 to avoid integer overflow. Do not attempt to handle construction of <<0:((1 bsl 64)-1>> in a 64-bit emulator, because that will certainly cause the emulator to terminate anyway because of insufficient memory.
2011-08-02Remove some superflous includes which caused inlined modules to have lots of ↵Lukas Larsson
compile warnings
2011-08-02Merge branch 'lukas/asn1/ber_encode_nif/OTP-9441' into majorLukas Larsson
* lukas/asn1/ber_encode_nif/OTP-9441: Update to use enif_alloc instead of malloc Make performance code more generic and migrate per/ber NBAP perormance suites to use the generic code Update code genaration to call nif/erlang depending on what is configured Remove export_all and only export is_nif_loadable Add documentation for ber encode nif optmization Fix bug in counting length of empty composite types Fix bug where composite types with more then one element would be encoded in reverse Add pubkey performance tests Update ber encode nif to use a linked list memry buffer Create a nif for ber encode Extract generic is_nif_loadable function from decode
2011-08-01Update to use enif_alloc instead of mallocLukas Larsson
2011-08-01Make performance code more generic and migrate per/ber NBAP perormance ↵Lukas Larsson
suites to use the generic code
2011-08-01Update code genaration to call nif/erlang depending on what is configuredLukas Larsson
2011-08-01Remove export_all and only export is_nif_loadableLukas Larsson
2011-08-01Add documentation for ber encode nif optmizationLukas Larsson
2011-08-01Fix bug in counting length of empty composite typesLukas Larsson
2011-08-01Fix bug where composite types with more then one element would be encoded in ↵Lukas Larsson
reverse
2011-08-01Add pubkey performance testsLukas Larsson
Add performance tests for cert_pem and dsa_pem. These tests are not automatically when testing asn1.
2011-08-01Update ber encode nif to use a linked list memry bufferLukas Larsson
The encoded ber binary is now a linked list of memory buffers which is written to from the back while allocating more segments as needed
2011-08-01Create a nif for ber encodeLukas Larsson
2011-08-01Extract generic is_nif_loadable function from decodeLukas Larsson
2011-08-01Merge branch 'lukas/public_key/use_asn1_nif/OTP-9414' into majorLukas Larsson
* lukas/public_key/use_asn1_nif/OTP-9414: Both encode and decode nifs are now available in the asn1rt Start using asn1 nifs for OTP-PUB-KEY.asn1 asn1 will use an erlang fallback if the nifs are not found
2011-08-01Merge branch 'lukas/asn1/driver_to_nifs/OTP-9419' into majorLukas Larsson
* lukas/asn1/driver_to_nifs/OTP-9419: (26 commits) Update decode_open_type to use nifs if configured to do so Add -deprecated attributes Update tag to be ints instead of longs Update asn1 nif to handle calls with an empty binary Add obsolete warning for driver option Correct mistake in driver -> nif translation Cannot be a binary as decode creates tuples Remove DRIVER target from opt target Update documentation with replacement of driver with nif return 0 as error code when an unknown error happens Remove all modules relating to drivers and make all functions obsolete. Remove driver support for per encoding Handle the new error messages from the asn1 nifs Remove dead code for erlang optimized per decode Remove driver support for ber decoding Handle the new error messages from the asn1 nifs Make ber nif decoding use the erlang fallback if the nif could not be loaded. This is useful for application which use inline (such as public_key) and want to work without the nifs, but should use them if they exist Add load, upgrade and purge functions for asn1 nifs Add better error messages to nifs Exclude nif module from cover Expand per and ber performance suites with parallel asn1 runs Add documentation for nif interface Fix bootstrap problem Add nif vs driver vs erlang performance tests for per encode and ber decode. Results now suggest that nifs are 15% faster than driver for per and 5% faster for ber. Erlang is inbetween nif and driver for ber, but about 50% slower than driver for per. ...
2011-08-01Update decode_open_type to use nifs if configured to do soLukas Larsson
2011-08-01Add -deprecated attributesLukas Larsson
2011-08-01Update tag to be ints instead of longsLukas Larsson
This is in order to circumvent a bug in enif_make_ulong in R14B03 for halfword
2011-08-01Update asn1 nif to handle calls with an empty binaryLukas Larsson
2011-08-01Add obsolete warning for driver optionLukas Larsson
2011-08-01Correct mistake in driver -> nif translationLukas Larsson
2011-08-01Cannot be a binary as decode creates tuplesLukas Larsson
2011-08-01Remove DRIVER target from opt targetLukas Larsson
2011-08-01Update documentation with replacement of driver with nifLukas Larsson
2011-08-01return 0 as error code when an unknown error happensLukas Larsson
2011-08-01Remove all modules relating to drivers and make all functions obsolete.Lukas Larsson
2011-08-01Remove driver support for per encodingLukas Larsson
Handle the new error messages from the asn1 nifs Remove dead code for erlang optimized per decode
2011-08-01Remove driver support for ber decodingLukas Larsson
Handle the new error messages from the asn1 nifs Make ber nif decoding use the erlang fallback if the nif could not be loaded. This is useful for application which use inline (such as public_key) and want to work without the nifs, but should use them if they exist
2011-08-01Add load, upgrade and purge functions for asn1 nifsLukas Larsson
2011-08-01Add better error messages to nifsLukas Larsson
2011-08-01Exclude nif module from coverLukas Larsson
2011-08-01Expand per and ber performance suites with parallel asn1 runsLukas Larsson
2011-08-01Add documentation for nif interfaceLukas Larsson
2011-08-01Fix bootstrap problemLukas Larsson
2011-08-01Add nif vs driver vs erlang performance tests for per encode and ber decode.Lukas Larsson
Results now suggest that nifs are 15% faster than driver for per and 5% faster for ber. Erlang is inbetween nif and driver for ber, but about 50% slower than driver for per.
2011-08-01Extend particular smp testcase with a ber nif infoLukas Larsson
2011-08-01Define vsn if not defined to make flymake happyLukas Larsson
2011-08-01Add support for nif option to optimized ber_bin_v2 asn1 compilationLukas Larsson
2011-08-01Add support for nif option to optimized PER asn1 compilationLukas Larsson
2011-08-01Pass compiler options directly through to the asn1 compiler in order to test ↵Lukas Larsson
nif enabled asn1
2011-08-01Add asn1 nif for ber decode and per encodeLukas Larsson
2011-08-01Merge branch 'lukas/asn1/sof_length_and_default_optimizations/OTP-9440' into ↵Lukas Larsson
major * lukas/asn1/sof_length_and_default_optimizations/OTP-9440: Use lists:mapfoldl instead for a tiny performance gain Move fixopt to do more work in ct than rt for opimized per_bin Optmized encode_length by doing some calculations at compile time rather than runtime Optmized decode_length by doing some calculations as compile time rather than runtime
2011-07-29Merge branch 'dev' into majorSverker Eriksson