Skip to content

Instantly share code, notes, and snippets.

@samcv
Created August 26, 2018 00:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save samcv/90fb70be9a536518d11b0dfd584d91ba to your computer and use it in GitHub Desktop.
Save samcv/90fb70be9a536518d11b0dfd584d91ba to your computer and use it in GitHub Desktop.
6model:
+ Fix race in setting the type debug name
+ Make neverrepossess on type apply to the type
+ Use #if, not #ifdef
+ Add repossession logging behind a #define
+ ensure returning NULL from these.
+ Fix alignment/mem issue of inlined CArrays
+ Speedup zero_slots by using memset...
+ Fix memory leak in CArray given P6 Strs
+ Enable gc_free of MVMContext
+ Correct error text to match the condition
+ Add extra diagnostic output to multi cache panic
+ Expose a symbol for Windows sake
+ Preserve enough data for accurate traversal
+ Fix an off-by-one
+ Make getlexrelcaller traverse the MVMContext
+ Update ctxcode to do context traversal
+ Update bind_key in MVMContext for traversal
+ Die more politely in MVMContext clone
+ Update forceouterctx to traverse
+ Update MVMContext at_key/exists_key to traverse
+ Move context creation to MVMContext.c
+ Stub in new fields for lazy context traversal
+ Mark functions used in Perl 6 extops MVM_PUBLIC
+ Optimize SCRef_gc_mark by using faster MVM_gc_worklist_add calls
+ Optimize VMArray_gc_mark to be a bit faster
+ Rename VMArray gc_mark to VMArray_gc_mark
+ Add some branch prediction hints to MVMHash.c
+ Fix Vim-o leading to wrong usage deletion
+ Make sure we don't try and return values from void functions
Core:
+ Correct first argument to MVM_panic
+ Fix uninitialized memory in extops info
+ Fix an uninitialized memory access
+ Add data on which ops are specializable
+ Make the callercode op inline-aware
+ Mark sp_speshresolve as :useshll
+ Have sp_fastcreate do a direct nursery allocation
+ Fix typo that prevented MVM_GC_DEBUGging bindlex
+ Fix protect handling in continuationcontrol
+ Ensure we never leak a real NULL to exit handler
+ Missing GC rooting during contextual resolution
+ Always preserve return value for exit handler
+ Switch to using MVMContext traversals
+ Update getlexreldyn for context traversal
+ Redo dynamic variable lookup using frame walker
+ Update lexprimspec to do context traversal
+ Mark invoke_v as :logged
+ Fix typo, ven++
+ Add a maycausedeopt annotation
+ Turn on used of logged stats for decont
+ Mark native ref ops as :useshll
+ Don't leak a real NULL from getcodeobj
+ Make coerce_is/us 2x faster
+ Remove useless conditional
+ Make the abs_i op more readable in interp.c
+ Mark speshresolve as :noinline
+ Remove some unneeded closures from the interp.c switch
+ Add expr JIT template for unbox_s
Documentation:
+ Remove incorrect byte sum
+ Add CONST_PTR indirection
+ Document the conditional dependency check
+ Fix typo
+ A few small updates and corrections
+ [Docs] Add JIT documentation describing how to add a tile
+ Clean outdated mention of Parrot
GC:
+ Add branch hint macros to nursery allocation
+ Fix MVM_GC_DEBUG worklist check for NULL STable
+ Fix a crash caused by the previous commit
+ Speed up hash garbage collection a lot (gc_mark); add new macros
IO:
+ Use the pointer dereference instead of the pointer.
+ fix botched up commit
+ asyncsocket_listen shall expose listen host&port
+ Expose file descriptors of IO::Socket::INET instances
JIT:
+ Add getrusage/threadlockcount, bit{and,or,xor}_s, getlex{outer,caller}, socket, can_s, *findmeth*, print, get*hllsym, {isbig,bool,base}_I, expmod_I, {pow,gcd,lcm}_I, {add,sub,mul,div,mod}_I, param_rp_i, setdispatcherfor, getppid, {en,de}code*conf, getport_sk, getlex_n{i,n,s}, asynclisten, async*, isrwcont, isinvokable, execname, isnonnull, iscompunit, setdispatcher, multicache*, *capture, backtracestrings, getex*, bindex*, composetype, newtype, exception, hllizefor, settypehll*, isfalse_s, istrue_s, decode, encode, radix, nfarunalt, nfarunproto, nfafromstatelist, findnotcclass, findcclass, iscclass, setbuffersize_fh, iscoderef, getcodeobj, escape, chars, iscont, boot*, knowhow exprjit ops
+ Use reference counting for maintaining multiple code copies
+ Unbreak build on architectures where we don't support JIT compilation
+ Fix segfaults in GC caused by sharing of jitcode in NativeCall repr
+ Fix JIT compiled getarg_* reading the wrong register
+ up to double-devirt assign_[ins] and decont_[ins]
+ JIT strfromname in the legacy JIT
+ Please Travis
+ Eliminate MVMJitExprOpInfo
+ Inline the info node into the tree
+ Visit template nodes only once during preprocessing
+ Store num_links / num_args in info structure
+ Wrap access to expression attributes
+ Remove MVMJitExprNode and rename MVMJitExprNodeInfo
+ General cleanups in expression trees
+ Remove cast information from expr ops table
+ Mark tree nodes in template precompiler
+ Assign a size to CONST_LARGE and CONST_PTR
+ Parse oplist as a module
+ Remove 'value type' enum
+ Move label assignment to tiler
+ Remove op_info pointer
+ Adhoc template application
+ Remove captureposarg_n
+ Implement JIT templates for 10 ops
+ Revert "Implement JIT templates for 10 ops"
+ more consistently \n in exprjit log output
+ Move exprjit templates to the proper location
+ Fix return type for abs_I and neg_I templates
+ JIT neg_I and abs_I
+ Add tell_fh and *stat exprjit templates
+ Add nullptr macro
+ Add *_I bitwise op exprjit templates
+ Add isprime_I and rand_I exprjit templates
+ Add *_I comparison op exprjit templates
+ Fix unicmp_s arg
+ Add fc, encoderep, istty_fh exprjit templates
+ Rm 'unsafe' templates already in core_templates
+ Update JIT of ctxcallerskipthunks
+ Remove unsafe template invalidated by recent work
+ Add sizes to ARG5/ARG6 memory definitions
+ Add add_I expr JIT template and sort expr templates
+ Use '^addrf' macro for setf, getf
+ Revert "Revert "Implement JIT template for ctxcallerskipthunks""
+ Implement JIT templates for 10 ops
+ Revert "Implement JIT templates for 10 ops"
+ Fix ARG6 for windows better
+ Make minor alterations to some exprjit templates
+ Revert "Implement JIT template for ctxcallerskipthunks"
+ Double derference in assembly is not a thing
+ Fix bindexpayload comment; old one misleading
+ Change isnull ops back to non-branching versions
+ Incorporate review feedback for templates; bdw++
+ Re-add getlex_no exprjit template
+ Change ^getf to load in getlexstatic_o template
+ Re-add getlexstatic_o exprjit template with minor changes
+ Add some IO exprjit templates
+ Add sha1 and *sc exprjit templates
+ Add hlllist and hllhash exprjit templates
+ Add exprjit macro to determine if vmnull
+ Add exprjit macro to retrieve fields from instance
+ JIT bug fixes
+ Implement expr JIT template for setwho
+ Implement JIT template for ctxcallerskipthunks
+ Implement JIT templates for 10 ops
+ Add expr jit template for rand_i
+ Define ARG5 and ARG6 on windows
+ JIT-compile sp_speshresolve
+ Add expr jit templates for atkey_i/n/s/u coerce_iu/ui decont_u
+ Reorder expr jit ops to be the same as interp order
+ Expr templates for iscont_i, iscont_n, iscont_s, flip, rindexfrom, atpos_n, atpos_s
+ Add a bunch more expr jit templates for string ops and some others
+ Add more expr JIT ops
+ JIT the object non-match guard
+ Move lexprimspec to proper emitter
Math:
+ Use correct parameter name in function prototypes
+ Fix some typos in comments
+ Use platform/stdint.h instead of making own int const macros
+ Use a macro for unsigned long long on MSVC
+ Get rid of some malloc's in MVM_bigint_to_str
+ Get rid of lots of mallocs in coerce_sI
Ops:
+ Start splitting SSA versions at guards
+ Rename getstrfromname to strfromname
+ Add sp_speshresolve, rewrite to it in spesh
+ Add a negated object literal spesh plugin guard
Other:
+ Remove unshallow as it causes error on full repo
+ Workaround version failure on Travis CI (MacOS)
+ Get Travis working again by making sure clang is located right
+ Use the llvm 5.0 toolchain deb line
+ Use the trusty not the precise llvm repos
+ Add expression template to .editorconfig (use 2 spaces)
Profiler:
+ add a few missing allocating ops to profiler
Spesh:
+ Change MVM_VECTOR to alloca
+ Only mark stolen deopt ann used if it is
+ Fix inlining of things with multiple `return`s
+ silence compiler warning
+ discover facts about a bunch of sp_guard ops
+ output name&cuuid in spesh slots for code objects
+ Don't add base index when looking for lexical type
+ Harden BB deletion annotation motion
+ Copy facts when splitting SSA versions
+ Update the test register in plugins
+ Missing call to MVMVECTOR_INIT
+ Update spesh plugin guard insertion
+ Allow getting a new version of an in-use temp
+ Implement SSA split; restore speculative args opt
+ Account for inlines that may cause deopts
+ Do dead instruction elim pass after usage setup
+ Make inline logging available through an env var
+ Don't do worthless type specializations
+ Log return type in return from JIT to unspesh'd
+ Log return value types under the caller's log ID
+ Make spesh thread more GC-responsive
+ :(
+ messily revert the last
+ root when allocating
+ rechase lexreg each time through the loop
+ Fix wrong comment
+ Mark "shameful hotfix" as TODO
+ shameful hotfix for gigantic profiler output files
+ Use correct types in find_deopt_target_and_index
+ Add parens to expressions to silence clang warning
+ Add pragma to switch to silence clang warning
+ remove superfluous line spotted by MasterDuke17++
+ skip to before the prepargs instruction
+ be extra careful about prev
+ Make sure output of spesh resolve gets optimized, too
+ Fix outer traversal regression in getlexcaller
+ Fix delete motion of INLINE_END annotations
+ Improve deopt logging
+ Missing rooting of test object in evaluate_guards
+ Fix bind_key to use correct frame in write barrier
+ Tidy up and correct MVMROOT in get_lexicals_hash
+ Don't miss frames that we traversed too
+ Use JIT inline mechanism over deopt indexes
+ Fix thinko in caller skip thunks traversal
+ Make getlexrel traverse the MVMContext
+ Update MVMContext elems for traversal
+ Correct inline handling thinko in move to outer
+ Fix typos in comments
+ Update context iterator to traverse
+ Fix initialization of frame walker
+ Sketch out lazy context traversal handling
+ Teach frame walker to understand inlines
+ Factor deopt index finding out of deopt all
+ Extract frame walking logic from getlexcaller
+ learn facts from a couple of sp_ ops
+ Move speshresolve handling into optimize phase
+ Don't repeatedly calcuate if preds are seen
+ Remove leftover debugging code
+ Fix handling of added deopt points
+ Value written by deopt instruction also needed
+ Switch over to using the new deopt use method
+ Add unseen read handling to new deopt algorithm
+ Sketch out more precise deopt algorithm
+ Move OSR point backwards on instruction insertion
+ Delete void return instruction when inlining
+ Turn off DU chain checks by default
+ fix minor typos
+ Implement box/unbox elimination
+ Liberalize set elimination somewhat
+ allow hllboxtype_* across hll in inlines
+ A new algorithm for removing unrequired `set`s
+ Factor out inc/dec op check
+ Decrease instructions kept for potential deopt
+ Add a couple of missing use_facts calls
+ Fix dec_u/dec_i handling in BB deletion
+ Add DU chain checks after second stage opts too
+ Mark throwcat result as dead writier when goto'd
+ Remove outdated comment
+ Correct handling of inc/dec usage
+ Detect accidentally deleted writers
+ Do DU chain setup for inserted decont guard
+ Delete operand in eliminated reprid lookup
+ Don't manipulate usages in spesh args opts
+ Correct handling of inc/dec ops in usage checker
+ Correct usage update in inline return boxing
+ Another optimize_iffy correction
+ Delete usage when simplifying a PHI node
+ Delete use of eliminated isnull check operand
+ Delete use of late-bound lexical lookup string
+ Remove duplicate deletion
+ Fix various missing operand use deletions
+ Add detection of missing usage deletions
+ Instruction deletion should delete usage, not add
+ Set writers on spesh plugin getattr code-gen
+ Check usages one after main opts
+ Fix spesh arg box writer/usage handling
+ Don't do the usage validation so often
+ Correct various missing usage bumps
+ Ensure a big PHI can't cause an overflow
+ Add check that all readers in DU chain are present
+ Fix optimization of isfalse to set writer
+ Correct writer setting in coercing via elems
+ missing writer setting in inlining (return val boxing)
+ Stop cheating on SSA form in optimize_call
+ Correct writer when optimizing object conditional
+ Missing writer setting in resolvecode insertion
+ Missing writer setting in inline handling
+ First steps to a DU-chain checker
+ Correct a wrong instruction in usage delete
+ Switch usage handling to new use chain model
+ Mark deopt use of the write of a deopt instruction
+ Sketch out a new set of usage-handling functions
+ Correctly update OSR deopt index upon inlining
+ Store deopt usage separate from normal usage
+ More precise handling of reads of deopt-marked ins
+ Inline limit with original bytecode size too
+ When inlining unspecialized, set arg type facts
+ Better document MAX_ARGS_FOR_OPT
+ Fix dump of inlined spesh line/file annotations
+ Don't try to inline with a flattening callsite
+ Cope with inlinees with empty first basic block
+ Attempt inlining so-far unspecialized callees
+ Make sure deopt code ref reg is never eliminated
+ Update deopt logging, which bitrotted
+ Do spesh log of inlines in log_inline
+ Fact discovery determines usage counts
+ Factor out spesh graph inlinability checks
+ Factor out static frame inlinability checks
+ Refactor inline logging; detect missed inlines
+ Correct a mis-placed `break` statement
+ Add facts to attributes in spesh plugin guards
+ Fix guard evaluator attribute handling
+ Elide object non-match guard in a bunch of ways
+ Lessen the number of spesh threshold levels
Strings:
+ Add an MVM_UNLIKELY to encoding name init cond
+ Avoid some code duplication
+ Fix a regression with Regional Indicator Unicode Graph Seg.
+ Document why we're bumping buffer by 1
+ Increase the result buffer size.
+ Get the number of bytes to be processed from the current buffer and not from the header.
+ Fix compiler warning from last commit
+ Save 3 instructions per 64bits in siphash24() function
+ Add "standard" siphash tests using siphashadd64bits + large time test
+ Fix a bug in the SipHash tests causing them to fail on Big Endian
+ Run all siphash tests even if we get some failures
+ Separate SipHash tests into separate tests
+ Add some more SipHash comments and update copyright message
+ Use better solution to SipHash fix for GCC 4
+ Don't use 32-bit unaligned reads in SipHash implementation
+ Remove a line that shouldn't have been added in the last commit
+ Use sized types for uthash (instead of using unsigned everywhere)
+ Fix indentation of code in uthash.h
+ Check if bucket is correct in HASH_FSCK
+ Optimize uthash ptr delete code
+ Make sure declarations happen before code
+ In SCRef gc_free search hash for pointer manually to delete (fix SEGV)
+ Implement SipHash, use as our hashing function w/ 64bit hashvals
+ Remove previous hash handle pointers in hash implementation
+ Set MVM_string_substrings_equal_nocheck to static
+ Fix asan errors by assigning before assigning hh_next
+ Make a faster HASH_ITER macro and make other hash optimizations
+ Fix the 32 bit build
+ Hash: randomize insertion order and bucket iteration order
+ Make parse_simple_number impossible to reach end without returning
+ Factor out our hashing function and speed up hashing flat strings
+ Used fixed size allocator for hashes. Nice speedup for table expansion
+ In MVM_string_ascii_encode_substr only free if non-null
+ Fix the grammar of a comment in uthash.h
+ Use Fibonacci hashing to determine which bucket to put hashv's into
Tooling/Build:
+ Unbreak update-changelog.p6 and use new Git::Log module
+ Don't store owner or group in our release's tar archive
+ Make release.sh more clear as to which we want written to MANIFEST
+ Add missing .h suffix to build/Makefile.in
+ Add +x and shebangs for scripts.
+ Make compare-oplist-interp-order.sh more POSIX compliant
+ Add uthash_types.h to Makefile.in
+ Add a tool to dump sizes of REPR structures
+ Fix Configure.pl version detection
+ Add script to generate html documentation from docs folder
+ Fix tools/compare-oplist-interp-order.sh on *BSD
+ Use clang with OpenBSD since their ancient gcc creates a moar which can't generate NQP anymore.
docs:
+ NQP does not support parrot any more
src/mast/compiler.c:
+ Use larger integer time to iterate strings heap
src/moar.c:
+ Mix in the instance pointer into the first hash secret
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment