Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(117)

Unified Diff: gin/per_isolate_data.cc

Issue 67763002: Add gin, a lightweight bindings system for V8 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Now with runner Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gin/per_isolate_data.cc
diff --git a/gin/per_isolate_data.cc b/gin/per_isolate_data.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3a98d4349a59aa8eb1638bc6a5137a0a4249694b
--- /dev/null
+++ b/gin/per_isolate_data.cc
@@ -0,0 +1,40 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "gin/per_isolate_data.h"
+
+using v8::Eternal;
+using v8::Handle;
+using v8::Isolate;
+using v8::Local;
+using v8::Object;
+using v8::ObjectTemplate;
+
+namespace gin {
+
+PerIsolateData::PerIsolateData(Isolate* isolate)
+ : isolate_(isolate) {
+ isolate_->SetData(this);
+}
+
+PerIsolateData::~PerIsolateData() {
+}
+
+PerIsolateData* PerIsolateData::From(Isolate* isolate) {
+ return static_cast<PerIsolateData*>(isolate->GetData());
+}
+
+void PerIsolateData::RegisterObjectTemplate(
+ WrapperInfo* info, Local<ObjectTemplate> object_template) {
+ object_templates_[info] = Eternal<ObjectTemplate>(isolate_, object_template);
+}
+
+Handle<Object> PerIsolateData::CreateObject(WrapperInfo* info) {
+ Handle<ObjectTemplate> templ = object_templates_[info].Get(isolate_);
+ Handle<Object> object = templ->NewInstance();
+ object->SetAlignedPointerInInternalField(kWrapperInfoIndex, info);
+ return object;
+}
+
+} // namespace gin

Powered by Google App Engine
This is Rietveld 408576698