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

Unified Diff: include/v8.h

Issue 1474543004: Implement Fast Accessor Builder (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Review feedback: Seperate types for value + label ids. Created 5 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
« no previous file with comments | « BUILD.gn ('k') | src/DEPS » ('j') | src/DEPS » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/v8.h
diff --git a/include/v8.h b/include/v8.h
index c5479c518ed374fbd6c58586cef6481b3182eeb0..bfc62e5e07fddf678d01857aa9b8c366d5bf9920 100644
--- a/include/v8.h
+++ b/include/v8.h
@@ -136,6 +136,10 @@ class CallHandlerHelper;
class EscapableHandleScope;
template<typename T> class ReturnValue;
+namespace experimental {
+class FastAccessorBuilder;
+} // namespace experimental
+
namespace internal {
class Arguments;
class Heap;
@@ -4416,6 +4420,16 @@ class V8_EXPORT FunctionTemplate : public Template {
* the callback cannot be null.
*/
static Local<FunctionTemplate> NewWithFastHandler(
+ Isolate* isolate, FunctionCallback callback,
+ experimental::FastAccessorBuilder* fast_handler = nullptr,
+ Local<Value> data = Local<Value>(),
+ Local<Signature> signature = Local<Signature>(), int length = 0);
+
+ /**
+ * Creates a function template with a fast handler. If a fast handler is set,
+ * the callback cannot be null.
+ */
+ static Local<FunctionTemplate> NewWithFastHandler(
Isolate* isolate, FunctionCallback callback, Local<Value> fast_handler,
Local<Value> data = Local<Value>(),
Local<Signature> signature = Local<Signature>(), int length = 0);
@@ -4430,9 +4444,9 @@ class V8_EXPORT FunctionTemplate : public Template {
* callback is called whenever the function created from this
* FunctionTemplate is called.
*/
- void SetCallHandler(FunctionCallback callback,
- Local<Value> data = Local<Value>(),
- Local<Value> fast_handler = Local<Value>());
+ void SetCallHandler(
+ FunctionCallback callback, Local<Value> data = Local<Value>(),
+ experimental::FastAccessorBuilder* fast_handler = nullptr);
/** Set the predefined length property for the FunctionTemplate. */
void SetLength(int length);
@@ -6965,6 +6979,41 @@ class V8_EXPORT Locker {
};
+namespace experimental {
jochen (gone - plz use gerrit) 2015/11/27 08:33:45 i wonder whether we should move this to a separate
Michael Starzinger 2015/11/27 09:15:52 +1
vogelheim 2015/11/30 13:41:54 Done. In a separate CL, I'll also move the api-*
+
+class V8_EXPORT FastAccessorBuilder {
+ public:
+ struct ValueId {
jochen (gone - plz use gerrit) 2015/11/27 08:33:45 why not using size_t = ValudId or typedef?
epertoso 2015/11/27 09:13:13 It was my suggestion. We don't want to pass ValueI
vogelheim 2015/11/27 16:24:50 ^^^ This. The original version used a single type
+ size_t value_id;
+ };
+ struct LabelId {
+ size_t label_id;
+ };
+
+ ~FastAccessorBuilder();
+ static FastAccessorBuilder* New(Isolate* isolate);
+
+ ValueId IntegerConstant(int int_constant);
+ ValueId GetCallTarget();
+ ValueId GetParameter(size_t parameter_no);
+ ValueId GetInternalField(ValueId value_id, int field_no);
+ ValueId LoadValue(ValueId value_id, int offset);
+ ValueId LoadObject(ValueId value_id, int offset);
+ void ReturnValue(ValueId value_id);
+ void CheckFlagSetOrReturnNull(ValueId value_id, int mask);
+ void CheckNotNullOrReturnNull(ValueId value_id);
+ ValueId SetLabel();
+ void CheckNotNullOrJump(ValueId value_id, ValueId label_id);
+
+ private:
+ FastAccessorBuilder();
+
+ void* impl_;
+};
jochen (gone - plz use gerrit) 2015/11/27 08:33:45 disallow copy/assign
vogelheim 2015/11/27 16:24:50 Done. v8.h can't include macros.h, so done manual
+
+} // namespace experimental
+
+
// --- Implementation ---
« no previous file with comments | « BUILD.gn ('k') | src/DEPS » ('j') | src/DEPS » ('J')

Powered by Google App Engine
This is Rietveld 408576698