- 11 Aug, 2016 2 commits
-
-
Kunshan Wang authored
-
Kunshan Wang authored
-
- 09 Aug, 2016 1 commit
-
-
Kunshan Wang authored
-
- 05 Aug, 2016 1 commit
-
-
Kunshan Wang authored
-
- 27 Jul, 2016 1 commit
-
-
Kunshan Wang authored
IRef refers to any memory location in any parts of the Mu memory, including both heap, stack and global. The common part about them is that Mu knows the types (at least the location of reference fields) of all of them. We use the term "conceptually boxed" and "conceptually unboxed" to describe the difference between the destination of "iref" and "uptr": irefs always refer into "conceptually boxed" things (boxed in the sense that Mu knows their field types (at least reference fields)). Heap objects are obviously boxed. We can consider each stack as a huge box, and the entire global space as a huge box. "iref" can only be obtained from the allocation operations in Mu. But uptrs may point outside the Mu memory, which can be literally anywhere. They can even be created by C functions, such as "malloc".
-
- 21 Jul, 2016 1 commit
-
-
Kunshan Wang authored
Given all arguments (including all type arguments, signature arguments and value arguments), the micro VM always knows how many results an instruction has.
-
- 20 Jul, 2016 1 commit
-
-
Kunshan Wang authored
-
- 08 Jul, 2016 3 commits
-
-
Kunshan Wang authored
The CCALL instruction's design allows not only untraced function pointers as the callee, but also allow system calls and so on. The separation of "callee type" and "callee signature" -- where the callee type is usually just `ufunctpr<sig>` -- may cause some confusion.
-
Kunshan Wang authored
Now I explicitly stated that the destination clause is used only for designating intra-function destinations, that is, cannot have basic blocks in other function versions as destinations. This does not change the semantics, but just make it explicit.
-
Kunshan Wang authored
-
- 30 Jun, 2016 3 commits
-
-
Kunshan Wang authored
-
Kunshan Wang authored
When it is a C NULL pointer, it behaves as if the initial threadlocal objref is a Mu NULL ref.
-
Kunshan Wang authored
These types have unspecified sizes and alignments, and are unaccessible to C programs.
-
- 24 Jun, 2016 1 commit
-
-
Kunshan Wang authored
-
- 23 Jun, 2016 2 commits
-
-
Kunshan Wang authored
Fixed a bug where the last param of new_thread_nor should be MuArraySize. Removed MuIRNodeRefValue to make MuIRNode unique. muapi.h also includes the common instruction names in the comment after the macro. Improved the API parser for this purpose.
-
Kunshan Wang authored
-
- 22 Jun, 2016 1 commit
-
-
Kunshan Wang authored
Now the IR Builder API is also available as common instructions. We keep muapi.h as the canonical definition, and the semantics of common instructions maps to that of the API functions.
-
- 21 Jun, 2016 1 commit
-
-
Kunshan Wang authored
-
- 20 Jun, 2016 1 commit
-
-
Kunshan Wang authored
As we migrated to GitLab, GitLab expects the .rst suffix instead of .rest which GitHub expects. I also renamed some files using this opportunity.
-
- 17 Jun, 2016 1 commit
-
-
Kunshan Wang authored
Non-top-level nodes are local to function definitions. p.s. This should be the last commit on GitHub. Migrating to https://gitlab.anu.edu.au/mu/mu-spec
-
- 16 Jun, 2016 1 commit
-
-
Kunshan Wang authored
-
- 14 Jun, 2016 2 commits
-
-
Kunshan Wang authored
-
Kunshan Wang authored
Improved the annotations in muapi.h so that it is easier to generate language bindings automatically. The muapiparser.py is copied from refimpl2 for convenience.
-
- 09 Jun, 2016 2 commits
-
-
Kunshan Wang authored
Cast constant macros to their respective types so that they will have proper sizes and signedness. MuAtomicRMWOp is renamed to MuAtomicRMWOptr, in order not to confuse "operator" and "operand".
-
Kunshan Wang authored
The new_thread API call is split into two functions, one continues normally and the other throws exception. This interface will be more C-style. It will be convenient if there is a program that parses the muapi.h and generates language bindings (for Python, Scala, etc.). Some annotations are added in the muapi.h file to make this process easier. For example, when passing an array, C functions usually take two parameters: a pointer and a size. The param:array:sz annotation tells the parser that the "param" parameter points to an array whose size is determined by the "sz" parameter. "param:bool" tells the parser that the "int param" parameter holds a boolean value (non-zero or zero). "param:optional" tells the parser that the "T* param" parameter may be NULL.
-
- 06 Jun, 2016 1 commit
-
-
Kunshan Wang authored
-
- 03 Jun, 2016 1 commit
-
-
Kunshan Wang authored
-
- 01 Jun, 2016 1 commit
-
-
Kunshan Wang authored
-
- 31 May, 2016 2 commits
-
-
Kunshan Wang authored
The 'irbuilderref' type is no longer used. 'irnoderef' is the only newly introduced Mu type. A bundle node now works as a namespace. All other nodes are children of the bundle node. After a bundle node is loaded into Mu (or aborted), Mu may de-allocate the bundle node and all of its children for space efficiency.
-
Kunshan Wang authored
irnoderef refers to Mu IR nodes when constructing IR using the API. Pointer types should have been scalar types. Anything that is not composite types nor "void" should be scalar.
-
- 30 May, 2016 1 commit
-
-
Kunshan Wang authored
-
- 26 May, 2016 1 commit
-
-
Kunshan Wang authored
As we discussed, the bundle loading interface between the client and the micro VM should be a functional interface. The binary form is still a parsed format. This commit removes the binary format in the type system and the instruction set.
-
- 02 May, 2016 1 commit
-
-
Kunshan Wang authored
Like the `new_thread` API call, the NEWTHREAD instruction needs to take a thread-local objref as a parameter, too. This clause is optional. If omitted, it defaults to `NULL`.
-
- 29 Apr, 2016 1 commit
-
-
Kunshan Wang authored
The thread-local object reference gives each thread a reference to an arbitrary object, which can hold thread-local states. New API functions and new (common) instructions are added. It is also a thread states and a GC root.
-
- 13 Apr, 2016 1 commit
-
-
Kunshan Wang authored
Added MuSeqValue and MuGenRefValue in the muapi.h. Although all MuValue subtypes are just aliases of void* in the C API, having some annotation makes the API more readable for the programmer as well as language binding makers.
-
- 05 Apr, 2016 1 commit
-
-
Kunshan Wang authored
-
- 24 Mar, 2016 1 commit
-
-
Kunshan Wang authored
-
- 12 Jan, 2016 1 commit
-
-
Kunshan Wang authored
-
- 05 Jan, 2016 1 commit
-
-
Kunshan Wang authored
Top-level definitions may refer to things defined later, or refer to each other recursively. It has always been allowed, but someone may think the following is forbidden: .typedef @longptr = uptr<@long> // @long is defined after this line .typedef @long = int<64>
-
- 14 Dec, 2015 1 commit
-
-
Kunshan Wang authored
-