diff --git a/benchmark/binary_trees.wren b/benchmark/binary_trees.wren index d880850b..0100e522 100644 --- a/benchmark/binary_trees.wren +++ b/benchmark/binary_trees.wren @@ -24,7 +24,7 @@ var minDepth = 4 var maxDepth = 12 var stretchDepth = maxDepth + 1 -var start = OS.clock +var start = IO.clock IO.print("stretch tree of depth " + stretchDepth.toString + " check: " + new Tree(0, stretchDepth).check.toString) @@ -53,4 +53,4 @@ while (depth < stretchDepth) { IO.print("long lived tree of depth " + maxDepth.toString + " check: " + longLivedTree.check.toString) -IO.print("elapsed: " + (OS.clock - start).toString) +IO.print("elapsed: " + (IO.clock - start).toString) diff --git a/benchmark/fib.wren b/benchmark/fib.wren index 637dfe99..3df1eea2 100644 --- a/benchmark/fib.wren +++ b/benchmark/fib.wren @@ -3,8 +3,8 @@ var fib = fn(n) { return fib.call(n - 1) + fib.call(n - 2) } -var start = OS.clock +var start = IO.clock for (i in 1..5) { IO.print(fib.call(28)) } -IO.print("elapsed: " + (OS.clock - start).toString) +IO.print("elapsed: " + (IO.clock - start).toString) diff --git a/benchmark/for.wren b/benchmark/for.wren index 0195e347..c5c59a47 100644 --- a/benchmark/for.wren +++ b/benchmark/for.wren @@ -1,10 +1,10 @@ var list = [] -var start = OS.clock +var start = IO.clock for (i in 0...1000000) list.add(i) var sum = 0 for (i in list) sum = sum + i IO.print(sum) -IO.print("elapsed: " + (OS.clock - start).toString) +IO.print("elapsed: " + (IO.clock - start).toString) diff --git a/benchmark/method_call.wren b/benchmark/method_call.wren index b686ba2a..8f377e04 100644 --- a/benchmark/method_call.wren +++ b/benchmark/method_call.wren @@ -28,7 +28,7 @@ class NthToggle is Toggle { } } -var start = OS.clock +var start = IO.clock var n = 100000 var val = true var toggle = new Toggle(val) @@ -66,4 +66,4 @@ for (i in 0...n) { IO.print(ntoggle.value) -IO.print("elapsed: " + (OS.clock - start).toString) +IO.print("elapsed: " + (IO.clock - start).toString) diff --git a/src/wren_core.c b/src/wren_core.c index 4afaa867..1ff439ef 100644 --- a/src/wren_core.c +++ b/src/wren_core.c @@ -2,7 +2,6 @@ #include #include #include -#include #include "wren_core.h" #include "wren_value.h" @@ -731,12 +730,6 @@ DEF_NATIVE(string_subscript) RETURN_VAL(value); } -DEF_NATIVE(os_clock) -{ - double time = (double)clock() / CLOCKS_PER_SEC; - RETURN_NUM(time); -} - static ObjClass* defineSingleClass(WrenVM* vm, const char* name) { size_t length = strlen(name); @@ -899,9 +892,6 @@ void wrenInitializeCore(WrenVM* vm) NATIVE(vm->stringClass, "!= ", string_bangeq); NATIVE(vm->stringClass, "[ ]", string_subscript); - ObjClass* osClass = defineClass(vm, "OS"); - NATIVE(osClass->metaclass, "clock", os_clock); - wrenInterpret(vm, "Wren core library", libSource); vm->listClass = AS_CLASS(findGlobal(vm, "List")); diff --git a/src/wren_io.c b/src/wren_io.c index e570d0e8..b57292d8 100644 --- a/src/wren_io.c +++ b/src/wren_io.c @@ -1,4 +1,5 @@ #include +#include #include "wren_io.h" @@ -17,15 +18,21 @@ static const char* libSource = " }\n" "}\n"; -static void writeString(WrenVM* vm) +static void ioWriteString(WrenVM* vm) { const char* s = wrenGetArgumentString(vm, 1); // TODO: Check for null. printf("%s", s); } +static void ioClock(WrenVM* vm) +{ + wrenReturnDouble(vm, (double)clock() / CLOCKS_PER_SEC); +} + void wrenLoadIOLibrary(WrenVM* vm) { wrenInterpret(vm, "Wren IO library", libSource); - wrenDefineStaticMethod(vm, "IO", "writeString_", 1, writeString); + wrenDefineStaticMethod(vm, "IO", "writeString_", 1, ioWriteString); + wrenDefineStaticMethod(vm, "IO", "clock", 0, ioClock); }