Mercurial > pymonkey
changeset 135:9157e7c9cb81
Refactored a new function, PYM_findJSObject(), out of PYM_newJSObject().
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Sun, 23 Aug 2009 21:04:51 -0700 |
parents | 0c81cb18c935 |
children | b4e216d06e83 |
files | src/object.cpp src/object.h |
diffstat | 2 files changed, 23 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/object.cpp Sun Aug 23 19:19:51 2009 -0700 +++ b/src/object.cpp Sun Aug 23 21:04:51 2009 -0700 @@ -179,12 +179,10 @@ 0, /* tp_new */ }; -PYM_JSObject *PYM_newJSObject(PYM_JSContextObject *context, - JSObject *obj, - PYM_JSObject *subclass) { - PYM_JSRuntimeObject *runtime = context->runtime; +PYM_JSObject *PYM_findJSObject(PYM_JSContextObject *context, JSObject *obj) +{ PYM_HashEntry *cached = (PYM_HashEntry *) JS_DHashTableOperate( - &runtime->objects, + &context->runtime->objects, (void *) obj, JS_DHASH_LOOKUP ); @@ -194,6 +192,17 @@ return (PYM_JSObject *) cached->value; } + return NULL; +} + +PYM_JSObject *PYM_newJSObject(PYM_JSContextObject *context, + JSObject *obj, + PYM_JSObject *subclass) +{ + PYM_JSObject *cachedObject = PYM_findJSObject(context, obj); + if (cachedObject) + return cachedObject; + PYM_JSObject *object; if (subclass) @@ -214,9 +223,12 @@ object->runtime = NULL; object->obj = NULL; - cached = (PYM_HashEntry *) JS_DHashTableOperate(&runtime->objects, - (void *) obj, - JS_DHASH_ADD); + PYM_HashEntry *cached = (PYM_HashEntry *) JS_DHashTableOperate( + &context->runtime->objects, + (void *) obj, + JS_DHASH_ADD + ); + if (cached == NULL) { Py_DECREF(object); PyErr_SetString(PYM_error, "JS_DHashTableOperate() failed");
--- a/src/object.h Sun Aug 23 19:19:51 2009 -0700 +++ b/src/object.h Sun Aug 23 21:04:51 2009 -0700 @@ -62,6 +62,9 @@ extern PyTypeObject PYM_JSObjectType; extern PYM_JSObject * +PYM_findJSObject(PYM_JSContextObject *context, JSObject *obj); + +extern PYM_JSObject * PYM_newJSObject(PYM_JSContextObject *context, JSObject *obj, PYM_JSObject *subclass);