aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2013-05-31Eliminate general use of #typereference{}Björn Gustavsson
The record #typereference{} is only used internally within the asn1ct_parser2 module (the parser translates it to an #'Externaltypereference{} record).
2013-05-31PER/UPER: Share all code except encoding of primitivesBjörn Gustavsson
The only code that is really different between the PER and UPER backends is encoding of primitive types.
2013-05-31Eliminate duplicated code in gen_inlined_{dec,enc}_funs()Björn Gustavsson
2013-05-31Remove unused function pgen/4 in all backendsBjörn Gustavsson
2013-05-31UPER: Fix bug in encoding/decoding of default typesBjörn Gustavsson
The wrong backend was used.
2013-05-31testInfObj: Introduce roundtrip/3 to simplify the test suiteBjörn Gustavsson
2013-05-31Remove unnecessary code duplication in gen_objset_{dec,enc}()Björn Gustavsson
2013-05-31asn1ct_constructed_per: Optimize decoding of OPTIONALBjörn Gustavsson
2013-05-31asn1ct_constructed_per: Break out part of gen_dec_comp_call()Björn Gustavsson
Improve readability and maintainability.
2013-05-31asn1_constructed_per: Optimize decoding of CHOICEBjörn Gustavsson
Optimize the decoding of CHOICE. Most important is to inline decoding of the extension bit (if present) and decoding of the choice index to give the BEAM compiler more opportunities for optimization. We will also change the structure of the generated code. The current code uses a flattened case for both the root and extension alternatives: case Choice + NumRootChoices * Ext of %% Root alternatives. 0 - ...; : LastRootAlternative -> ...; %% Extension alternatives. LastRootAlternative+1 -> ...; : %% Unknown extension. _ -> ...; end We will instead generate nested cases: case Ext of 0 -> case Choice of %% Root alternatives. 0 - ...; : LastRootAlternative -> ... end; 1 -> %% Extension alternatives. <Decode the open type here> case Choice of 0 -> ...; : LastExtensionAlternative -> ...; %% Unknown extension. _ -> ...; end end Nested cases should be slightly faster. For decoding of the extensions, it also makes it possible to hoist the decoding of the open type up from each case to before the case switching on the extension index, thus reducing the size of the generated code. We will also do another change to the structure. Currently, the big flat clase is wrapped in code that repackages the return values: {Alt,{Value,RemainingEncodedData}} = case Choice + NumRootChoices * Ext of : end, {{Value,Alt},RemainingEncodedData}. We still need to do the repackaging, but we can push it down to the case arm for decoding each alternative. In many cases, that will give the BEAM compiler the opportunity to avoid building the temporary tuples.
2013-05-31Refactor decoding of items in SEQUENCEs and CHOICEsBjörn Gustavsson
We will need more explicit control of decoding of open types for CHOICEs, so refactor the gen_dec_line() and gen_dec_line_imm() to break out the decoding of the open types. Note that gen_dec_line_special() will not generate correct code if Ext =/= noext; thus, we can eliminate the Ext parameter.
2013-05-31asn1ct_constructed_per: Refactor gen_dec_choice2()Björn Gustavsson
gen_dec_choice2() is unnecessarily complicated. Code is duplicated merely to avoid outputting a ";" separator after the last item, and there is code to skip extensionmarks that are never actually present. While at it, eliminate the the wrap_gen_dec_line() function which is not needed. It puts a {component_type,C} key in the process dictionary, but that is actually never used. Besides that, it only shuffles the argument.
2013-05-31asn1_constructed_per: Refactor gen_enc_choice2()Björn Gustavsson
gen_enc_choice2() duplicates code merely to avoid outputting a ";" separator after the last item.
2013-05-31Don't call asn1ct_name:clear/0 directly after asn1ct_name:start/0Björn Gustavsson
Ensure that asn1ct_name:start/0 will call asn1ct_name:clear/0 if the name server process is already running so that we can be sure that the variables are cleared.
2013-05-31asn1ct_name: Remove broken active/1Björn Gustavsson
active/1 always returned 'true' (curr(Var) can never return 'nil', except if Var =:= 'nil'). Therefore, we can eliminate its use and remove it.
2013-05-31asnct1_name: Optimize clean/1Björn Gustavsson
clean/1 is used quite lot; while not a bottleneck it does seem unnecessary to stop and start the name server just to clear the variables. Since the change to clean/1 makes stop/1 unused, we can remove it.
2013-05-31asn1ct_name: Make new/1 asynchronousBjörn Gustavsson
Since new/1 does not return any useful value and cannot fail, there is no reason to wait for a response from the name server process.
2013-05-31asn1ct_name: Use a monitor instead of an arbitrary timeoutBjörn Gustavsson
2013-05-31asn1ct_name: Simplify the data structures of the name server processBjörn Gustavsson
Since we no longer need to support push/1 and pop/1, we can simplify the data structures used for keeping track of the variables. Each entry in the list can be simply {Var,integer()} instead of {Var,[integer()]}. While at it, eliminate calls to the obsolete lists:keysearch/3 function, don't use integer_to_list/0 within a call to lists:concat/1, and the catch all clause in get_prev/2 and get_next/2.
2013-05-31asn1ct_name: Remove unused functionsBjörn Gustavsson
asn1ct_name:delete/1 is used from asn1ct_gen_ber_bin_v2:add_removed_bytes/1, but that function is not used.
2013-05-31Do not fail if there is no variables fileLukas Larsson
2013-05-30Merge branch 'sla/odbc_in_non_standard_location/OTP-11126' into maintFredrik Gustafsson
* sla/odbc_in_non_standard_location/OTP-11126: Fix checking for odbc in standard locations when "with-odbc" flag present.
2013-05-30[snmp/agent] Fixed expect macroMicael Karlberg
2013-05-30[snmp/agent] Changed the test suite expect functionMicael Karlberg
There was an id as the first agument to each expect call. Ufortunatly, this id was often 1 and since the same test function(s) was called in many test cases, there was many "Expect 1", and therefor no way of knowing which expect actually was performed. The expect functions has been changed to instead take module and line number.
2013-05-30Don't send default Inband-Security-Id in CER/CEAAnders Svensson
RFC 6733 recommends against the use of Inband-Security-Id, so only send a value that differs from the default.
2013-05-29Merge branch 'anders/diameter/watchdog_function_clause/OTP-11115' into maintAnders Svensson
* anders/diameter/watchdog_function_clause/OTP-11115: Fix watchdog function_clause
2013-05-29Merge branch 'anders/diameter/missed_5001/OTP-11087' into maintAnders Svensson
* anders/diameter/missed_5001/OTP-11087: Remove redundant integer type specifiers from binaries Fix recognition of 5001 on mandatory AVP's
2013-05-29Merge branch 'anders/diameter/avp_decode/OTP-11007' into maintAnders Svensson
* anders/diameter/avp_decode/OTP-11007: Detect all 5005 (MISSING_AVP) errors and don't reverse errors Adapt Failed-AVP setting to RFC 6733 Add spec to diameter_codec Add spec to diameter_gen Fix recognition of 5014 (INVALID_AVP_LENGTH) errors Ensure setting Failed-AVP is appropriate Correct AVP Length error testcases
2013-05-29Merge branch 'anders/diameter/avp_length_failure/OTP-11026' into maintAnders Svensson
* anders/diameter/avp_length_failure/OTP-11026: Fix decode failure when AVP Length < 8
2013-05-29Merge branch 'md/httpc-stream-once-fix/OTP-11122' into maintFredrik Gustafsson
* md/httpc-stream-once-fix/OTP-11122: Remove http_chunk:decode/4 as it is no longer used Fix {stream, {self, once}} in httpc
2013-05-29Remove redundant integer type specifiers from binariesAnders Svensson
2013-05-29Fix recognition of 5001 on mandatory AVP'sAnders Svensson
An AVP setting the M-bit was not regarded as erroneous if it was defined in the dictionary in question and its container (message or Grouped AVP) had an 'AVP' field. It's now regarded as a 5001 error (AVP_UNSUPPORTED), as in the case that the AVP is not defined.
2013-05-29Merge branch 'bjorn/stdlib/improve-ls/OTP-11108' into maintBjörn Gustavsson
* bjorn/stdlib/improve-ls/OTP-11108: Teach c:ls/1 to show non-directory files
2013-05-29compiler: Correct liveness optimization for wait/1Björn Gustavsson
The live optimization in beam_utils:live_opt/4 did not take into account that the wait/1 instruction *never* falls through to the next instruction (it has the same effect on the control flow as the jump/1 instruction).
2013-05-29[snmp/agent] Mib data tttn commentsMicael Karlberg
2013-05-29Remove incorrect warning about missing end_per_testcasePeter Andersson
OTP-11052
2013-05-29[snmp/agent] Moved agent config type definition to main agent interface moduleMicael Karlberg
2013-05-29Add test suitePeter Andersson
OTP-10126
2013-05-29Merge branch 'anders/diameter/timetraps/OTP-10914' into maintAnders Svensson
* anders/diameter/timetraps/OTP-10914: Add examples testcase to help identify timetrap failures Minor traffic suite fix Add gen_tcp suite Lighten up on suite timetraps Add more information to traffic suite timeout failures
2013-05-29Fix faulty connection handlingPeter Andersson
OTP-10126
2013-05-28[snmp/agent] Corrected the mib_storage typeMicael Karlberg
2013-05-28Merge branch 'bmk/snmp/agent/mib_storage_behaviour/OTP-11107' into ↵Micael Karlberg
bmk/snmp/snmp424_integration/r16 Conflicts: lib/snmp/doc/src/notes.xml
2013-05-28Merge branch 'bmk/snmp/agent/mib_server_data_callback/OTP-11101' into ↵Micael Karlberg
bmk/snmp/snmp424_integration/r16 Conflicts: lib/snmp/doc/src/notes.xml
2013-05-28[snmp] Updated version and release notesMicael Karlberg
OTP-11009
2013-05-28[snmp] Updated (all) test code to support new crypto interfaceMicael Karlberg
Test suite utility function for verifying crypto support updated to use new crypto interface. OTP-11009
2013-05-28[snmp] Some cosmetic cleanup (tmp verbosity printouts commented)Micael Karlberg
OTP-11009
2013-05-28[snmp] Use of new crypto interface correctd in managerMicael Karlberg
Added a common utility function (in the snmp_misc module) for testing for crypto support (sed both by the manager and agent code). OTP-11009
2013-05-28Support callback attributes in erl_ppAnthony Ramine
2013-05-28stdlib: re-factored erl_lint.erlFredrik Gustafsson
2013-05-28Improve erl_lint performanceJosé Valim
The default_types() in erl_lint returned a dictionary with all default types. However, calculating this dict was expensive and we actually didn't use the default values in this dictionary. This patch replaces the dictionary use for one function that checks if the type is a default type or not, and remove the bits that checked explicitly for those default types when iterating the dictionary.