Index: src/extensions/free-buffer-extension.cc |
diff --git a/src/default-platform.cc b/src/extensions/free-buffer-extension.cc |
similarity index 66% |
copy from src/default-platform.cc |
copy to src/extensions/free-buffer-extension.cc |
index ef3c4ebd450bbc63ae99b4534a22fa5bd67a2f39..4040c90bffe4b2ac6f7088c267758cb5b81ca677 100644 |
--- a/src/default-platform.cc |
+++ b/src/extensions/free-buffer-extension.cc |
@@ -25,32 +25,35 @@ |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+#include "free-buffer-extension.h" |
+#include "platform.h" |
#include "v8.h" |
-#include "default-platform.h" |
- |
namespace v8 { |
namespace internal { |
-DefaultPlatform::DefaultPlatform() {} |
- |
+v8::Handle<v8::FunctionTemplate> FreeBufferExtension::GetNativeFunction( |
+ v8::Handle<v8::String> str) { |
+ return v8::FunctionTemplate::New(FreeBufferExtension::FreeBuffer); |
+} |
-DefaultPlatform::~DefaultPlatform() {} |
-void DefaultPlatform::CallOnBackgroundThread(Task *task, |
- ExpectedRuntime expected_runtime) { |
- // TODO(jochen): implement. |
- task->Run(); |
- delete task; |
+void FreeBufferExtension::FreeBuffer( |
+ const v8::FunctionCallbackInfo<v8::Value>& args) { |
+ v8::Handle<v8::ArrayBuffer> arrayBuffer = args[0].As<v8::ArrayBuffer>(); |
+ v8::ArrayBuffer::Contents contents = arrayBuffer->Externalize(); |
+ V8::ArrayBufferAllocator()->Free(contents.Data(), contents.ByteLength()); |
} |
-void DefaultPlatform::CallOnForegroundThread(v8::Isolate* isolate, Task* task) { |
- // TODO(jochen): implement. |
- task->Run(); |
- delete task; |
-} |
+void FreeBufferExtension::Register() { |
+ static char buffer[100]; |
+ Vector<char> temp_vector(buffer, sizeof(buffer)); |
+ OS::SNPrintF(temp_vector, "native function freeBuffer();"); |
+ static FreeBufferExtension buffer_free_extension(buffer); |
+ static v8::DeclareExtension declaration(&buffer_free_extension); |
+} |
} } // namespace v8::internal |