{"push_id":934312464,"size":37,"distinct_size":0,"ref":"refs/heads/master","head":"f1447b51b578e6b5e42819ef8af057da2d0bc70e","before":"f4bb08fa2a409369fcf50a381a52531d8ed20114","commits":[{"sha":"04a8110358706fe73a9dbedb81584d9f7fd27377","author":{"email":"acdcb0ca81d0b180c106372f50738316a25c1b7d@erlang.org","name":"Sverker Eriksson"},"message":"erts: Add new test cases to float_SUITE","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/04a8110358706fe73a9dbedb81584d9f7fd27377"},{"sha":"343f461a2810ce3440b1d7c55cda996038071d87","author":{"email":"acdcb0ca81d0b180c106372f50738316a25c1b7d@erlang.org","name":"Sverker Eriksson"},"message":"erts: Optimize hashing in process dictionary\n\nby limiting table sizes to powers of 2.\n\nThis will change the default size from 10 to 8.","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/343f461a2810ce3440b1d7c55cda996038071d87"},{"sha":"eb2e118ee2be5c008fc4417a443c351807adf123","author":{"email":"acdcb0ca81d0b180c106372f50738316a25c1b7d@erlang.org","name":"Sverker Eriksson"},"message":"erts: Optimize away function \"array_put\" in proc dict\n\nReplace heave array_put() with a dumb array index assignment ARRAY_PUT\nand instead introduce ensure_array_size() to be called when\nwe know the array might need to grow.\n\nThis change also ensures the entire HASH_RANGE is always\nallocated. No need for ARRAY_GET to check index any more.","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/eb2e118ee2be5c008fc4417a443c351807adf123"},{"sha":"bb5f71a7573158056dd9c80228c95833f970ec0b","author":{"email":"acdcb0ca81d0b180c106372f50738316a25c1b7d@erlang.org","name":"Sverker Eriksson"},"message":"erts: Add proc dict macros ERTS_PD_START/SIZE","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/bb5f71a7573158056dd9c80228c95833f970ec0b"},{"sha":"4179ca9f10cdc78e882ce4496cf0a1261a0129af","author":{"email":"acdcb0ca81d0b180c106372f50738316a25c1b7d@erlang.org","name":"Sverker Eriksson"},"message":"erts: Remove ProcDict.used\n\n(homeSize + splitPosition) will do just fine","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/4179ca9f10cdc78e882ce4496cf0a1261a0129af"},{"sha":"4804ea2aa50af490ab3998466269efa540abd90d","author":{"email":"acdcb0ca81d0b180c106372f50738316a25c1b7d@erlang.org","name":"Sverker Eriksson"},"message":"erts: Add sizeMask for faster proc dict indexing","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/4804ea2aa50af490ab3998466269efa540abd90d"},{"sha":"5801defc866e34c6effd49b9dec995b5dac164f3","author":{"email":"acdcb0ca81d0b180c106372f50738316a25c1b7d@erlang.org","name":"Sverker Eriksson"},"message":"erts: Refactor proc dict with 'usedSlots'\n\nwhich is same as old homeSize + splitPosition.","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/5801defc866e34c6effd49b9dec995b5dac164f3"},{"sha":"0f32d250876e7bb226fb96e07fb31734ba7d16f2","author":{"email":"acdcb0ca81d0b180c106372f50738316a25c1b7d@erlang.org","name":"Sverker Eriksson"},"message":"erts: Rename proc dict size to arraySize\n\nfor naming style consistency.","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/0f32d250876e7bb226fb96e07fb31734ba7d16f2"},{"sha":"46a1a3b8c8819a117d7f48a864d8e0f5e08ac548","author":{"email":"acdcb0ca81d0b180c106372f50738316a25c1b7d@erlang.org","name":"Sverker Eriksson"},"message":"erts: Add 'fill_heap' to erts_debug:state_internal_state\n\nto make it easy to provoke GC inside/after a BIF or instruction.","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/46a1a3b8c8819a117d7f48a864d8e0f5e08ac548"},{"sha":"5db3a62f821413f267427b2bc38045324c57aaf6","author":{"email":"acdcb0ca81d0b180c106372f50738316a25c1b7d@erlang.org","name":"Sverker Eriksson"},"message":"erts: Add new test case pdict_SUITE:mixed","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/5db3a62f821413f267427b2bc38045324c57aaf6"},{"sha":"1a101efd5654d3d4a3e96523fbbf4eb871e61d1b","author":{"email":"acdcb0ca81d0b180c106372f50738316a25c1b7d@erlang.org","name":"Sverker Eriksson"},"message":"erts: Fix bug in check_process_code for literals","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/1a101efd5654d3d4a3e96523fbbf4eb871e61d1b"},{"sha":"77f0f265f860130102acc1db31d99f8dd9e690c5","author":{"email":"a8462360f5c7dcf1e9c7a5c3c3b4100a207fc25d@erlang.org","name":"Rickard Green"},"message":"Use monotonic time for call_time trace","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/77f0f265f860130102acc1db31d99f8dd9e690c5"},{"sha":"172d3bf7b28b28f3ac6ecd2348f1d8cd8db7ff7a","author":{"email":"a8462360f5c7dcf1e9c7a5c3c3b4100a207fc25d@erlang.org","name":"Rickard Green"},"message":"Fix asynchronous BIF timer cancellation message reply","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/172d3bf7b28b28f3ac6ecd2348f1d8cd8db7ff7a"},{"sha":"5a22322e8448e63aa45432da90d3f01ab4cc432a","author":{"email":"a8462360f5c7dcf1e9c7a5c3c3b4100a207fc25d@erlang.org","name":"Rickard Green"},"message":"Merge branch 'rickard/ohmq-fixup/OTP-13047'\n\n* rickard/ohmq-fixup/OTP-13047:\n  Fix asynchronous BIF timer cancellation message reply","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/5a22322e8448e63aa45432da90d3f01ab4cc432a"},{"sha":"d32ef0d4fab9b18d34b97fd7c785bcadfe292f81","author":{"email":"a8462360f5c7dcf1e9c7a5c3c3b4100a207fc25d@erlang.org","name":"Rickard Green"},"message":"Merge branch 'rickard/trace_call_time/OTP-13216' into maint\n\n* rickard/trace_call_time/OTP-13216:\n  Use monotonic time for call_time trace","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/d32ef0d4fab9b18d34b97fd7c785bcadfe292f81"},{"sha":"10bcaeeea71a77a0223f2989e9a99d208eae7057","author":{"email":"a8462360f5c7dcf1e9c7a5c3c3b4100a207fc25d@erlang.org","name":"Rickard Green"},"message":"Merge branch 'maint'\n\n* maint:\n  Use monotonic time for call_time trace","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/10bcaeeea71a77a0223f2989e9a99d208eae7057"},{"sha":"37f58ad6bff2bf2bac4f3f20c2684e8cee66af03","author":{"email":"a8462360f5c7dcf1e9c7a5c3c3b4100a207fc25d@erlang.org","name":"Rickard Green"},"message":"Light weight statistics of run queue lengths\n\n- statistics(total_run_queue_lengths)\n- statistics(run_queue_lengths)\n- statistics(total_active_tasks)\n- statistics(active_tasks)\n\nConflicts:\n\terts/emulator/beam/erl_process.c","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/37f58ad6bff2bf2bac4f3f20c2684e8cee66af03"},{"sha":"df18cd270ad682cedc8c21990641b0bdb8788092","author":{"email":"a8462360f5c7dcf1e9c7a5c3c3b4100a207fc25d@erlang.org","name":"Rickard Green"},"message":"Merge branch 'rickard/rq-len/OTP-13201' into maint\n\n* rickard/rq-len/OTP-13201:\n  Light weight statistics of run queue lengths","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/df18cd270ad682cedc8c21990641b0bdb8788092"},{"sha":"3ea54c2dc82a2e067fbd19b201e4eb03a7dbc29d","author":{"email":"a8462360f5c7dcf1e9c7a5c3c3b4100a207fc25d@erlang.org","name":"Rickard Green"},"message":"Merge branch 'maint'\n\n* maint:\n  Light weight statistics of run queue lengths\n\nConflicts:\n\terts/preloaded/ebin/erlang.beam","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/3ea54c2dc82a2e067fbd19b201e4eb03a7dbc29d"},{"sha":"7c72e25926e153811ff099057bea649afa0be376","author":{"email":"8a2957e0063f2abf61bd145b6236a74a3708ac54@erlang.org","name":"Björn Gustavsson"},"message":"beam_bool: Fix unsafe optimization\n\nbeam_bool would make the following code unsafe (which would be\nreported by beam_validator):\n\nscotland(Echo) ->\n  found(case Echo of\n\t    Echo when true; Echo, Echo, Echo ->\n\t\tEcho;\n\t    echo ->\n\t\t[]\n\tend,\n\tEcho = placed).\n\nfound(_, _) -> million.\n\nBasically, beam_bool would see that the 'case' would always return\nthe value of Echo. Thus:\n\nscotland(Echo) ->\n  found(Echo, Echo = placed).\n\nThe only problem is that beam_bool would also remove a 'move'\ninstruction that would save Echo to the stack. Here is the\nassembly code for part of the function:\n\n    {allocate_zero,1,1}.\n\n    {move,{x,0},{y,0}}.           %% Save Echo on stack.\n\n    {bif,'=:=',{f,7},[{x,0},{atom,true}],{x,1}}.\n    {bif,'=:=',{f,7},[{x,0},{atom,true}],{x,2}}.\n    {bif,'=:=',{f,7},[{x,0},{atom,true}],{x,3}}.\n    {bif,'and',{f,7},[{x,2},{x,3}],{x,2}}.\n    {bif,'and',{f,7},[{x,1},{x,2}],{x,1}}.\n    {jump,{f,8}}.\n\n  {label,7}.\n    {move,{atom,false},{x,1}}.\n\n  {label,8}.\n    {bif,'or',{f,6},[{atom,true},{x,1}],{x,1}}.\n    {test,is_eq_exact,{f,6},[{x,1},{atom,true}]}. %% Jump never taken.\n\n    {jump,{f,5}}.\n\n  {label,6}.\n    {test,is_eq_exact,{f,9},[{x,0},{atom,echo}]}.\n    {move,nil,{x,0}}.\n    {jump,{f,5}}.\n  {label,9}.\n    {test_heap,3,0}.\n    {put_tuple,2,{x,0}}.\n    {put,{atom,case_clause}}.\n    {put,{y,0}}.\n    {line,[{location,\"t.erl\",5}]}.\n    {call_ext,1,{extfunc,erlang,error,1}}.\n    {jump,{f,5}}.\n\n  {label,5}.\n    {test,is_eq_exact,{f,12},[{atom,placed},{y,0}]}.\n\nbeam_bool would see that the is_eq_exact test at label 8 would\nalways succeed. It could therefore remove most of the code before\nthe jump to label 5. Unfortunately it also removed the essential\nmove of Echo to the stack:\n\n    {allocate_zero,1,1}.\n\n    %% Instruction incorrectly removed: {move,{x,0},{y,0}}.\n\n    {jump,{f,5}}.\n\n  {label,5}.\n    {test,is_eq_exact,{f,12},[{atom,placed},{y,0}]}.\n\nThe root cause of the problem is that the 'move' instruction is\nincluded in the block of 'bif' instructions before label 8.\nNormally the 'move' instruction would not have been discarded,\nbut because the left operand to the 'or' BIF is 'true', the\nentire block with 'bif' instructions are dropped.\n\nAs far as I can see, there is no gain by including 'move'\ninstructions in the first place. There is no way that better\ncode will be produced. In fact, the entire optimization can\nbe given up if 'move' instructions are found in the block.\n\nThus we can fix this bug by never including any 'move' instructions\nin the block of 'bif' instructions. We can also remove all the\ncode that deals with 'move' instructions within blocks.\n\nReported-by: Thomas Arts","distinct":false,"url":"https://api.github.com/repos/norton/otp/commits/7c72e25926e153811ff099057bea649afa0be376"}]}