{"push_id":1396914818,"size":6,"distinct_size":5,"ref":"refs/heads/redefer","head":"b5b2104fbc6d21b0e546a62d01988a3b5c98a03c","before":"746730dee8612a636cc5a1a58841278a96eb4bcc","commits":[{"sha":"5683cb500ca03f6278dbd0ec02a7f777e992bc40","author":{"name":"Tom Care","email":"3548c804262d72beed2e2fed9200fbd79bdda095@microsoft.com"},"message":"String.prototype.lastIndexOf behaves incorrectly when string contains high order ASCII characters\n\nFixes OS 9271625.\n\nOur implementation of String.prototype.lastIndexOf has been incorrect when the string contains ASCII values >0x7F. I believe this has been broken since IE9.\n\nIf the string contains ASCII >0x7F, we avoid using the Boyer-Moore shift table and revert back to a brute force search. This search was refactored out incorrectly for edge cases.\n\ne.g. \"ÄÜÖABC\".lastIndexOf(\"ÄÜÖABC\", 0) returns -1 instead of 0.\n\nChanges:\n- Re-implemented the brute-force.\n- Fixed up a lot of the naming so it is more clear.\n- Switched back to wmemcmp.\n- Added a bunch of test cases.\n\nReally we should consider using Boyer-Moore for more than ASCII >0x7F, and possibly change it to TextbookBoyerMoore along with indexOf. There may be potential perf improvements here even for ASCII <0x7F which I will outline in another issue.","distinct":true,"url":"https://api.github.com/repos/pleath/ChakraCore/commits/5683cb500ca03f6278dbd0ec02a7f777e992bc40"},{"sha":"1ea9ef68fd712d9e5a815963e70701d8721f144a","author":{"name":"Paul Leathers","email":"686fb3a4213dbe75ec9b338ba94ccc131d480acf@microsoft.com"},"message":"Fix incorrect identification of non-local-references when parsing arrow function parameter lists. Since we can't identify such syntax on the initial scan and have to backtrack and re-parse, our stacks of identifier references enter an inconsistent state that causes us to bind non-existent references and treat them as closure-captured. This in turn leads to bad byte code generation. The problem is easy to solve in the case of a single arrow function parameter not enclosed in parentheses. To handle the harder case of a list enclosed in parens, advance the current block ID when we begin parsing a parenthetical expression. Identifier references will be created that are amenable to the arrow function case, and if we do wind up with an arrow function, we only need to correct the function ID's on the references we've already made.","distinct":false,"url":"https://api.github.com/repos/pleath/ChakraCore/commits/1ea9ef68fd712d9e5a815963e70701d8721f144a"},{"sha":"b09833cb43773c3088ffe8b3ea798b34446bdf99","author":{"name":"Paul Leathers","email":"686fb3a4213dbe75ec9b338ba94ccc131d480acf@microsoft.com"},"message":"[MERGE #1979 @pleath] Change to address CVE-2016-7207\n\nMerge pull request #1979 from pleath:release/1611.1.3\n\nFix incorrect identification of non-local-references when parsing arrow function parameter lists. Since we can't identify such syntax on the initial scan and have to backtrack and re-parse, our stacks of identifier references enter an inconsistent state that causes us to bind non-existent references and treat them as closure-captured. This in turn leads to bad byte code generation. The problem is easy to solve in the case of a single arrow function parameter not enclosed in parentheses. To handle the harder case of a list enclosed in parens, advance the current block ID when we begin parsing a parenthetical expression. Identifier references will be created that are amenable to the arrow function case, and if we do wind up with an arrow function, we only need to correct the function ID's on the references we've already made.","distinct":true,"url":"https://api.github.com/repos/pleath/ChakraCore/commits/b09833cb43773c3088ffe8b3ea798b34446bdf99"},{"sha":"eede17bb75ebe1f0616beb73d388a838cd79e741","author":{"name":"Tom Care","email":"3548c804262d72beed2e2fed9200fbd79bdda095@microsoft.com"},"message":"[MERGE #1910 @tcare] String.prototype.lastIndexOf behaves incorrectly when string contains high order ASCII characters\n\nMerge pull request #1910 from tcare:lastindexof\n\nFixes OS 9271625.\n\nOur implementation of String.prototype.lastIndexOf has been incorrect when the string contains ASCII values >0x7F. I believe this has been broken since IE9.\n\nIf the string contains ASCII >0x7F, we avoid using the Boyer-Moore shift table and revert back to a brute force search. This search was refactored out incorrectly for edge cases.\n\ne.g. \"ÄÜÖABC\".lastIndexOf(\"ÄÜÖABC\", 0) returns -1 instead of 0.\n\nChanges:\n- Re-implemented the brute-force.\n- Fixed up a lot of the naming so it is more clear.\n- Switched back to wmemcmp.\n- Added a bunch of test cases.\n\nReally we should consider using Boyer-Moore for more than ASCII >0x7F, and possibly change it to TextbookBoyerMoore along with indexOf. There may be potential perf improvements here even for ASCII <0x7F which I will outline in another issue.","distinct":true,"url":"https://api.github.com/repos/pleath/ChakraCore/commits/eede17bb75ebe1f0616beb73d388a838cd79e741"},{"sha":"90e11e6e385319d9576db6ce56b3962e96549082","author":{"name":"Paul Leathers","email":"686fb3a4213dbe75ec9b338ba94ccc131d480acf@microsoft.com"},"message":"[1.3>master] [MERGE #1979 @pleath] Change to address CVE-2016-7207\n\nMerge pull request #1979 from pleath:release/1611.1.3\n\nFix incorrect identification of non-local-references when parsing arrow function parameter lists. Since we can't identify such syntax on the initial scan and have to backtrack and re-parse, our stacks of identifier references enter an inconsistent state that causes us to bind non-existent references and treat them as closure-captured. This in turn leads to bad byte code generation. The problem is easy to solve in the case of a single arrow function parameter not enclosed in parentheses. To handle the harder case of a list enclosed in parens, advance the current block ID when we begin parsing a parenthetical expression. Identifier references will be created that are amenable to the arrow function case, and if we do wind up with an arrow function, we only need to correct the function ID's on the references we've already made.","distinct":true,"url":"https://api.github.com/repos/pleath/ChakraCore/commits/90e11e6e385319d9576db6ce56b3962e96549082"},{"sha":"b5b2104fbc6d21b0e546a62d01988a3b5c98a03c","author":{"name":"Paul Leathers","email":"686fb3a4213dbe75ec9b338ba94ccc131d480acf@microsoft.com"},"message":"Redefer function bodies that are not currently being executed and are\neligible for deferred parsing (e.g., not arrow functions, not\nfunctions-in-block). Define\na force mode in which all eligible functions are redeferred on GC, as well\nas a 'stress' mode in which all candidates are redeferred on each stack\nprobe.","distinct":true,"url":"https://api.github.com/repos/pleath/ChakraCore/commits/b5b2104fbc6d21b0e546a62d01988a3b5c98a03c"}]}
{"actor":{"display_login":"pleath"}}