Commit Graph
54 Commits
Author SHA1 Message Date
Thorbjørn Lindeijer a8ea2a91a6 Use deferred execution for Sequence.map and Sequence.where
The methods Sequence.map and Sequence.where are now implemented using
deferred execution. They return an instance of a new Sequence-derived
class that performs the operation while iterating. This has three main
advantages:

* It can be computationally cheaper when not the whole sequence is
  iterated.

* It consumes less memory since it does not store the result in a newly
  allocated list.

* They can work on infinite sequences.

Some disadvantages are:

* Iterating the returned iterator will be slightly slower due to
  the added indirection.

* You should be aware that modifications made to the original sequence
  will affect the returned sequence.

* If you need the result in a list, you now need to call Sequence.list
  on the result.
2015-03-31 22:25:07 +02:00
Bob Nystrom a7fafce265 Pull out opcode definitions into an X-macro file. 2015-03-28 09:56:07 -07:00
Bob Nystrom 6254a2e15e Invert the return value for finishBloc().
Thanks, Michel!
2015-03-28 09:15:19 -07:00
Bob Nystrom 53ee453f0f Merge pull request #239 from bjorn/sequence_list
Added Sequence.list
2015-03-28 09:06:49 -07:00
Bob Nystrom 72c38a59ce More stuff for working with strings and bytes!
- "\x" escape sequence to put byte values in strings: "\x34"
- String.byteAt(index) gets value of byte in string.
- String.bytes returns a raw sequence of bytes for a string.
- String.codePointAt(index) gets the code point at an offset as a raw number.
2015-03-27 20:44:07 -07:00
Thorbjørn Lindeijer b409569b6f Added Sequence.list
This helper method turns any sequence into a List.
2015-03-27 22:59:58 +01:00
Bob Nystrom 7d45dda383 String.fromCodePoint(). Fix #219. 2015-03-27 07:43:36 -07:00
Bob Nystrom 322eea1af5 Generate a runtime error if a foreign method was not found. 2015-03-26 07:17:09 -07:00
Bob Nystrom 9c414b5da5 Get Meta working with foreign methods. 2015-03-25 20:20:26 -07:00
Bob Nystrom 8dcd336638 Merge branch 'master' into foreign-methods 2015-03-25 20:06:55 -07:00
Bob Nystrom c707135b9a Add wren_meta to XCode project. 2015-03-25 19:25:18 -07:00
Bob Nystrom d99a82e6d8 Merge branch 'meta-library' of git://github.com/gsmaverick/wren into gsmaverick-meta-library 2015-03-25 19:21:58 -07:00
Bob Nystrom e4a785a071 Remove oldSize from allocate API.
binary_trees - wren            .......... 0.29s 0.0048 107.79% relative to baseline
delta_blue - wren              .......... 0.12s 0.0017 106.95% relative to baseline
fib - wren                     .......... 0.30s 0.0042 119.95% relative to baseline
for - wren                     .......... 0.12s 0.0020 107.57% relative to baseline
method_call - wren             .......... 0.15s 0.0256 106.09% relative to baseline
map_numeric - wren             .......... 0.44s 0.0199 105.27% relative to baseline
map_string - wren              .......... 0.14s 0.0049 100.18% relative to baseline
string_equals - wren           .......... 0.30s 0.0032 100.57% relative to baseline

Thanks, Michel!
2015-03-25 07:45:29 -07:00
Gavin Schulz 31d2989565 Remove unnecessary headers. 2015-03-24 23:30:53 -07:00
Bob Nystrom 0bd19da392 Bind C methods to Wren using foreign declarations. 2015-03-24 07:58:15 -07:00
Bob Nystrom c9226256ff Merge pull request #220 from bjorn/count_predicate
Added Sequence.count(predicate)
2015-03-23 07:35:17 -07:00
Bob Nystrom d168eafeb6 Upvalue -> ObjUpvalue.
This is consistent with ObjModule which also is an Obj
even though it isn't first class in the language.
2015-03-22 22:31:03 -07:00
Bob Nystrom a4df577903 Get rid of some unused parameters. 2015-03-22 22:17:40 -07:00
Bob Nystrom efa6f32d25 Merge branch 'w-extra' of git://github.com/verpeteren/wren into verpeteren-w-extra 2015-03-22 21:49:31 -07:00
Gavin Schulz a937bd1cf9 Adds a Meta library with an eval function for interpreting code inline. 2015-03-22 14:17:02 -07:00
Bob Nystrom dd4691649a Convert Compiler and ObjList to both use ValueBuffer for their arrays. 2015-03-22 12:22:47 -07:00
Bob Nystrom 2dfec85506 Enable clang warning on suspicious implicit conversions. 2015-03-22 10:36:08 -07:00
Bob Nystrom 1e493c9061 Hoist instance testing out of the main interpreter loop.
Thanks, Michel!
2015-03-21 16:50:27 -07:00
Bob Nystrom f2c5c804a4 Refactor out a lot of boilerplate in core. 2015-03-21 14:57:43 -07:00
Bob Nystrom 1301410142 Merge branch 'num_methods' of git://github.com/bjorn/wren into bjorn-num_methods 2015-03-21 12:54:08 -07:00
Bob Nystrom b522f35b0a Ensure step is always initialized. 2015-03-21 12:32:31 -07:00
Bob Nystrom 3445c6a2cb Finish making code for working with lists use unsigned ints. 2015-03-21 12:22:04 -07:00
Bob Nystrom 98dbde5b1b Merge branch 'int-types' of git://github.com/verpeteren/wren into verpeteren-int-types 2015-03-21 08:46:01 -07:00
Bob Nystrom f6cf78c175 Assert instead of silently handling freed VM. 2015-03-20 08:00:52 -07:00
Bob Nystrom 1883ae81cd Merge branch 'free-vm' of git://github.com/verpeteren/wren into verpeteren-free-vm 2015-03-20 07:56:32 -07:00
Thorbjørn Lindeijer 07951bbeae Added Num.pi and some tests 2015-03-19 21:12:50 +01:00
Thorbjørn Lindeijer 94804fe1a0 Added Sequence.count(predicate)
Returns the number of elements in the sequence that pass the
`predicate`.

It could also have been implemented as:

  count(f) { reduce(0) {|a, b| f.call(b) ? a + 1 : a } }

But I considered the simple version more readable.

Also documented Sequence.count.
2015-03-19 21:10:05 +01:00
Bob Nystrom 5e1ddb7db5 Hash entire string. 2015-03-19 07:38:05 -07:00
Bob Nystrom 30367fcdd2 Merge branch 'master' of https://github.com/munificent/wren 2015-03-19 07:29:07 -07:00
Bob Nystrom 1b6a2684e2 Do a little clean-up/reorganization on wren_value.h. 2015-03-19 07:28:53 -07:00
Bob Nystrom a3abf31da0 Merge pull request #222 from bjorn/sequence_contains
Moved List.contains to Sequence.contains, added tests and docs
2015-03-18 07:54:55 -07:00
Bob Nystrom be11d09bd8 Store hash code in strings.
Makes string equality and string map keys much faster.
Also did some other general string clean-up.
2015-03-18 07:09:03 -07:00
Bob Nystrom b80ba29b0e Merge branch 'master' of https://github.com/munificent/wren 2015-03-17 07:01:09 -07:00
Bob Nystrom b4fa4acce1 Handle empty string map keys. 2015-03-17 07:00:54 -07:00
Peter Reijnders bc52292b6d Changed int-fields in ObjList to match the uint32_t-types in ObjMap
Both ObjList and ObjMap have the same fields (capacity and count). Therefor it makes sense to make them the same type.
2015-03-17 07:29:19 +01:00
Peter Reijnders 9f32de7047 Added -Wextra to compile flags
-Wextra does several extra checks during the compiling. Unfortunately one of the extra check is for unused parameters.
Several functions have unused parameters (mostly the WrenVM* vm).
2015-03-17 07:29:09 +01:00
Peter Reijnders 26586bfa11 Added a check for allready freed in wrenFreeVm.
If wrenFreeVm was called twice, this would lead to an error, because the memory was allready freed.
The used check is rather naive, suggesting that a valid vm does have at least one methodName set.
2015-03-17 07:28:50 +01:00
Bob Nystrom b9f034b398 Merge pull request #224 from bjorn/list_insert_args
Reverse the argument order of List.insert
2015-03-16 09:18:59 -07:00
Bob Nystrom 09f266c23f Fix typo in wrenDumpObject().
Thanks, Michel!
2015-03-16 07:05:40 -07:00
Bob Nystrom cd0a0da36f Add some missing arguments. 2015-03-15 23:17:08 -07:00
Bob Nystrom 9764b165b4 Try different expansion for CONST_STRING macro. 2015-03-15 23:07:20 -07:00
Bob Nystrom 034ab3c2af Clean up code for creating strings in the VM. 2015-03-15 22:32:20 -07:00
Thorbjørn Lindeijer d7a91117ac Reverse the argument order of List.insert
The previous order, insert(element, index), was counter-intuitive.
I'm not aware of any list API that uses this order. I've checked:

* Ruby Array.insert(index, obj...)
* JavaScript array.splice(start, deleteCount[, item1[, item2[, ...]]])
* C++ / QList::insert(int i, const T & value)
* C++ / std::vector::insert
* Lua table.insert (list, [pos,] value)
* C# List<T>.Insert(int index, T item)
* Java Interface List<E>.add(int index, E element)
* Python list.insert(i, x)

So it seemed to me more like an oversight in Wren.
2015-03-15 22:51:24 +01:00
Bob Nystrom 287c611260 Clean up debug dump code. 2015-03-15 10:09:43 -07:00
Thorbjørn Lindeijer 1099c75c77 Added Num.atan(x)
Maps to the C function atan2.
2015-03-15 16:43:02 +01:00