Changeset 14062 for S60/trunk/JavaScriptCore
- Timestamp:
- 04/25/06 14:34:18 (3 years ago)
- Location:
- S60/trunk/JavaScriptCore
- Files:
-
- 33 added
- 22 removed
- 85 modified
-
BWINS (added)
-
BWINS/Distribution.Policy.S60 (added)
-
BWINS/KJSU.DEF (added)
-
Distribution.Policy.S60 (added)
-
JavaScriptCore.pbproj (deleted)
-
JavaScriptCorePrefix.h (deleted)
-
bindings/Distribution.Policy.S60 (added)
-
bindings/NP_jsobject.cpp (modified) (11 diffs)
-
bindings/NP_jsobject.h (modified) (1 diff)
-
bindings/c/Distribution.Policy.S60 (added)
-
bindings/c/c_instance.cpp (modified) (3 diffs)
-
bindings/c/c_instance.h (modified) (1 diff)
-
bindings/c/c_utility.cpp (modified) (2 diffs)
-
bindings/jni/Distribution.Policy.S60 (added)
-
bindings/jni/jni_instance.cpp (modified) (4 diffs)
-
bindings/jni/jni_instance.h (modified) (2 diffs)
-
bindings/jni/jni_jsobject.cpp (modified) (2 diffs)
-
bindings/jni/jni_objc.mm (deleted)
-
bindings/jni/jni_runtime.cpp (modified) (9 diffs)
-
bindings/jni/jni_utility.cpp (modified) (2 diffs)
-
bindings/npsap.h (added)
-
bindings/objc/Distribution.Policy.S60 (added)
-
bindings/objc/WebScriptObject.mm (deleted)
-
bindings/objc/WebScriptObjectPrivate.h (modified) (1 diff)
-
bindings/objc/objc_class.mm (deleted)
-
bindings/objc/objc_instance.h (modified) (3 diffs)
-
bindings/objc/objc_instance.mm (deleted)
-
bindings/objc/objc_jsobject.mm (deleted)
-
bindings/objc/objc_runtime.h (modified) (1 diff)
-
bindings/objc/objc_runtime.mm (deleted)
-
bindings/objc/objc_utility.h (modified) (2 diffs)
-
bindings/objc/objc_utility.mm (deleted)
-
bindings/runtime.cpp (modified) (3 diffs)
-
bindings/runtime.h (modified) (3 diffs)
-
bindings/runtime_array.h (modified) (1 diff)
-
bindings/runtime_method.cpp (modified) (1 diff)
-
bindings/runtime_object.cpp (modified) (8 diffs)
-
bindings/runtime_object.h (modified) (2 diffs)
-
bindings/runtime_root.cpp (modified) (1 diff)
-
bindings/runtime_root.h (modified) (2 diffs)
-
bindings/testbindings.mm (deleted)
-
group (added)
-
group/BMARM (added)
-
group/BMARM/Distribution.Policy.S60 (added)
-
group/Bwinscw (added)
-
group/Bwinscw/Distribution.Policy.S60 (added)
-
group/Bwinscw/JAVASCRIPTCOREU.DEF (added)
-
group/Distribution.Policy.S60 (added)
-
group/EABI (added)
-
group/EABI/Distribution.Policy.S60 (added)
-
group/EABI/JavascriptCoreU.def (added)
-
group/JavaScriptCore.mmp (added)
-
group/bld.inf (added)
-
group/defs.mmpi (added)
-
group/kjstest.mmp (added)
-
group/pcre.mmp (added)
-
group/pcretest.mmp (added)
-
kjs/.cvsignore (deleted)
-
kjs/DLLMain.cpp (added)
-
kjs/Distribution.Policy.S60 (added)
-
kjs/array_object.cpp (modified) (21 diffs)
-
kjs/collector.cpp (modified) (40 diffs)
-
kjs/collector.h (modified) (3 diffs)
-
kjs/completion.h (modified) (2 diffs)
-
kjs/config.h (modified) (1 diff)
-
kjs/context.h (modified) (2 diffs)
-
kjs/date_object.cpp (modified) (20 diffs)
-
kjs/dtoa.cpp (modified) (3 diffs)
-
kjs/dtoa.h (modified) (1 diff)
-
kjs/fast_malloc.cpp (deleted)
-
kjs/fast_malloc.h (deleted)
-
kjs/function.cpp (modified) (8 diffs)
-
kjs/grammar.cpp (modified) (13 diffs)
-
kjs/grammar.y (modified) (1 diff)
-
kjs/identifier.cpp (modified) (18 diffs)
-
kjs/identifier.h (modified) (6 diffs)
-
kjs/internal.cpp (modified) (24 diffs)
-
kjs/internal.h (modified) (12 diffs)
-
kjs/interpreter.cpp (modified) (13 diffs)
-
kjs/interpreter.h (modified) (14 diffs)
-
kjs/interpreter_map.cpp (modified) (11 diffs)
-
kjs/interpreter_map.h (modified) (4 diffs)
-
kjs/kjs-test (deleted)
-
kjs/kjs-test.chk (deleted)
-
kjs/lexer.cpp (modified) (5 diffs)
-
kjs/lexer.h (modified) (1 diff)
-
kjs/list.cpp (modified) (11 diffs)
-
kjs/list.h (modified) (6 diffs)
-
kjs/lookup.cpp (modified) (3 diffs)
-
kjs/lookup.h (modified) (4 diffs)
-
kjs/math_object.cpp (modified) (3 diffs)
-
kjs/nodes.cpp (modified) (42 diffs)
-
kjs/nodes.h (modified) (3 diffs)
-
kjs/nodes2string.cpp (modified) (1 diff)
-
kjs/number_object.cpp (modified) (1 diff)
-
kjs/object.cpp (modified) (27 diffs)
-
kjs/object.h (modified) (26 diffs)
-
kjs/object_object.cpp (modified) (1 diff)
-
kjs/object_object.h (modified) (1 diff)
-
kjs/operations.cpp (modified) (6 diffs)
-
kjs/operations.h (modified) (2 diffs)
-
kjs/pragmas.h (added)
-
kjs/property_map.cpp (modified) (32 diffs)
-
kjs/property_map.h (modified) (5 diffs)
-
kjs/protected_values.cpp (modified) (15 diffs)
-
kjs/protected_values.h (modified) (3 diffs)
-
kjs/reference.cpp (modified) (8 diffs)
-
kjs/reference.h (modified) (1 diff)
-
kjs/reference_list.h (modified) (2 diffs)
-
kjs/regexp.cpp (modified) (2 diffs)
-
kjs/regexp.h (modified) (1 diff)
-
kjs/scope_chain.cpp (modified) (5 diffs)
-
kjs/scope_chain.h (modified) (3 diffs)
-
kjs/simple_number.h (modified) (3 diffs)
-
kjs/stdint.h (added)
-
kjs/string_object.cpp (modified) (7 diffs)
-
kjs/testkjs.cpp (modified) (1 diff)
-
kjs/ustring.cpp (modified) (50 diffs)
-
kjs/ustring.h (modified) (23 diffs)
-
kjs/value.cpp (modified) (16 diffs)
-
kjs/value.h (modified) (15 diffs)
-
pcre/.cvsignore (deleted)
-
pcre/Distribution.Policy.S60 (added)
-
pcre/RunTest.in (deleted)
-
pcre/chartables_nokia.c (added)
-
pcre/dftables.c (modified) (5 diffs)
-
pcre/internal.h (modified) (2 diffs)
-
pcre/maketables.c (modified) (2 diffs)
-
pcre/mkinstalldirs (deleted)
-
pcre/pcre.c (modified) (43 diffs)
-
pcre/pcre.h (modified) (1 diff)
-
pcre/pcreposix.c (modified) (2 diffs)
-
pcre/pcretest.c (modified) (18 diffs)
-
pcre/perltest (deleted)
-
pcre/perltest8 (deleted)
-
pcre/stub.cpp (added)
-
pcre/stub.h (added)
-
pcre/study.c (modified) (9 diffs)
-
pcre/testdata (deleted)
-
tests/mozilla (deleted)
Legend:
- Unmodified
- Added
- Removed
-
S60/trunk/JavaScriptCore/bindings/NP_jsobject.cpp
r8384 r14062 86 86 } 87 87 88 static bool _isSafeScript(JavaScriptObject *obj) 89 { 90 if (obj->originExecutionContext) { 91 Interpreter *originInterpreter = obj->originExecutionContext->interpreter(); 92 if (originInterpreter) { 93 return originInterpreter->isSafeScript (obj->executionContext->interpreter()); 94 } 95 } 96 return true; 97 } 98 99 NPObject *_NPN_CreateScriptObject (NPP npp, KJS::ObjectImp *imp, const KJS::Bindings::RootObject *originExecutionContext, const KJS::Bindings::RootObject *executionContext) 88 NPObject *_NPN_CreateScriptObject (NPP npp, KJS::ObjectImp *imp, KJS::Bindings::RootObject *root) 100 89 { 101 90 JavaScriptObject *obj = (JavaScriptObject *)_NPN_CreateObject(npp, NPScriptObjectClass); 102 91 103 92 obj->imp = imp; 104 obj->originExecutionContext = originExecutionContext; 105 obj->executionContext = executionContext; 106 107 addNativeReference (executionContext, imp); 93 obj->root = root; 94 95 addNativeReference (root, imp); 108 96 109 97 return (NPObject *)obj; … … 130 118 JavaScriptObject *obj = (JavaScriptObject *)o; 131 119 132 if (!_isSafeScript(obj))133 return false;134 135 120 PrivateIdentifier *i = (PrivateIdentifier *)methodName; 136 121 if (!i->isString) 137 122 return false; 138 123 139 // Special case the "eval" method. 140 if (methodName == _NPN_GetStringIdentifier("eval")) { 141 if (argCount != 1) 142 return false; 143 if (args[0].type != NPVariantType_String) 144 return false; 145 146 return _NPN_Evaluate (npp, o, (NPString *)&args[0].value.stringValue, result); 147 } 148 else { 149 // Lookup the function object. 150 ExecState *exec = obj->executionContext->interpreter()->globalExec(); 151 Interpreter::lock(); 152 Value func = obj->imp->get (exec, identiferFromNPIdentifier(i->value.string)); 153 Interpreter::unlock(); 154 155 if (func.isNull()) { 156 NPN_InitializeVariantAsNull(result); 157 return false; 158 } 159 else if ( func.type() == UndefinedType) { 160 NPN_InitializeVariantAsUndefined(result); 161 return false; 162 } 163 else { 164 // Call the function object. 165 ObjectImp *funcImp = static_cast<ObjectImp*>(func.imp()); 166 Object thisObj = Object(const_cast<ObjectImp*>(obj->imp)); 167 List argList = listFromVariantArgs(exec, args, argCount); 168 Interpreter::lock(); 169 Value resultV = funcImp->call (exec, thisObj, argList); 170 Interpreter::unlock(); 171 172 // Convert and return the result of the function call. 173 convertValueToNPVariant(exec, resultV, result); 174 return true; 175 } 176 } 124 // Lookup the function object. 125 ExecState *exec = obj->root->interpreter()->globalExec(); 126 Interpreter::lock(); 127 Value func = obj->imp->get (exec, identiferFromNPIdentifier(i->value.string)); 128 Interpreter::unlock(); 129 130 if (func.isNull()) { 131 NPN_InitializeVariantAsNull(result); 132 return false; 133 } 134 else if ( func.type() == UndefinedType) { 135 NPN_InitializeVariantAsUndefined(result); 136 return false; 137 } 138 else { 139 // Call the function object. 140 ObjectImp *funcImp = static_cast<ObjectImp*>(func.imp()); 141 Object thisObj = Object(const_cast<ObjectImp*>(obj->imp)); 142 List argList = listFromVariantArgs(exec, args, argCount); 143 Interpreter::lock(); 144 Value resultV = funcImp->call (exec, thisObj, argList); 145 Interpreter::unlock(); 146 147 // Convert and return the result of the function call. 148 convertValueToNPVariant(exec, resultV, result); 149 return true; 150 } 177 151 } 178 152 else { … … 190 164 JavaScriptObject *obj = (JavaScriptObject *)o; 191 165 192 if (!_isSafeScript(obj)) 193 return false; 194 195 ExecState *exec = obj->executionContext->interpreter()->globalExec(); 166 ExecState *exec = obj->root->interpreter()->globalExec(); 196 167 Object thisObj = Object(const_cast<ObjectImp*>(obj->imp)); 197 168 Value result; … … 201 172 unsigned int UTF16Length; 202 173 convertNPStringToUTF16 (s, &scriptString, &UTF16Length); // requires free() of returned memory. 203 Completion completion = obj-> executionContext->interpreter()->evaluate(UString(), 0, UString((const UChar *)scriptString,UTF16Length));174 Completion completion = obj->root->interpreter()->evaluate(UString(), 0, UString((const UChar *)scriptString,UTF16Length)); 204 175 ComplType type = completion.complType(); 205 176 … … 228 199 if (o->_class == NPScriptObjectClass) { 229 200 JavaScriptObject *obj = (JavaScriptObject *)o; 230 231 if (!_isSafeScript(obj)) 232 return false; 233 234 ExecState *exec = obj->executionContext->interpreter()->globalExec(); 201 ExecState *exec = obj->root->interpreter()->globalExec(); 235 202 236 203 PrivateIdentifier *i = (PrivateIdentifier *)propertyName; … … 288 255 JavaScriptObject *obj = (JavaScriptObject *)o; 289 256 290 if (!_isSafeScript(obj)) 291 return false; 292 293 ExecState *exec = obj->executionContext->interpreter()->globalExec(); 257 ExecState *exec = obj->root->interpreter()->globalExec(); 294 258 Interpreter::lock(); 295 259 Value result; … … 315 279 if (o->_class == NPScriptObjectClass) { 316 280 JavaScriptObject *obj = (JavaScriptObject *)o; 317 318 if (!_isSafeScript(obj)) 319 return false; 320 321 ExecState *exec = obj->executionContext->interpreter()->globalExec(); 281 ExecState *exec = obj->root->interpreter()->globalExec(); 322 282 323 283 PrivateIdentifier *i = (PrivateIdentifier *)propertyName; … … 351 311 if (o->_class == NPScriptObjectClass) { 352 312 JavaScriptObject *obj = (JavaScriptObject *)o; 353 354 if (!_isSafeScript(obj)) 355 return false; 356 357 ExecState *exec = obj->executionContext->interpreter()->globalExec(); 313 ExecState *exec = obj->root->interpreter()->globalExec(); 358 314 359 315 PrivateIdentifier *i = (PrivateIdentifier *)propertyName; 360 316 // String identifier? 361 317 if (i->isString) { 362 ExecState *exec = obj-> executionContext->interpreter()->globalExec();318 ExecState *exec = obj->root->interpreter()->globalExec(); 363 319 Interpreter::lock(); 364 320 bool result = obj->imp->hasProperty (exec, identiferFromNPIdentifier(i->value.string)); … … 385 341 JavaScriptObject *obj = (JavaScriptObject *)o; 386 342 387 if (!_isSafeScript(obj))388 return false;389 390 343 PrivateIdentifier *i = (PrivateIdentifier *)methodName; 391 344 if (!i->isString) … … 393 346 394 347 // Lookup the function object. 395 ExecState *exec = obj-> executionContext->interpreter()->globalExec();348 ExecState *exec = obj->root->interpreter()->globalExec(); 396 349 Interpreter::lock(); 397 350 Value func = obj->imp->get (exec, identiferFromNPIdentifier(i->value.string)); … … 416 369 if (o->_class == NPScriptObjectClass) { 417 370 JavaScriptObject *obj = (JavaScriptObject *)o; 418 ExecState *exec = obj-> executionContext->interpreter()->globalExec();371 ExecState *exec = obj->root->interpreter()->globalExec(); 419 372 Interpreter::lock(); 420 373 char *msg = (char *)malloc (message->UTF8Length + 1); -
S60/trunk/JavaScriptCore/bindings/NP_jsobject.h
r8384 r14062 42 42 NPObject object; 43 43 KJS::ObjectImp *imp; 44 const KJS::Bindings::RootObject *originExecutionContext; 45 const KJS::Bindings::RootObject *executionContext; 44 KJS::Bindings::RootObject *root; 46 45 } JavaScriptObject; 47 46 48 NPObject *_NPN_CreateScriptObject (NPP npp, KJS::ObjectImp *imp, const KJS::Bindings::RootObject *originExecutionContext, const KJS::Bindings::RootObject *executionContext);47 NPObject *_NPN_CreateScriptObject (NPP npp, KJS::ObjectImp *imp, KJS::Bindings::RootObject *root); 49 48 50 49 #ifdef __cplusplus -
S60/trunk/JavaScriptCore/bindings/c/c_instance.cpp
r8384 r14062 47 47 _object = _NPN_RetainObject (o); 48 48 _class = 0; 49 setExecutionContext (0);50 49 }; 51 50 … … 61 60 _object = _NPN_RetainObject (other._object); 62 61 _class = 0; 63 setExecutionContext (other.executionContext());64 62 }; 65 63 … … 206 204 KJS::Value CInstance::stringValue() const 207 205 { 208 char buf[1024]; 209 snprintf (buf, 1024, "NPObject %p, NPClass %p", _object, _object->_class); 210 KJS::String v(buf); 206 // FIXME: Implement something sensible, like calling toString... 207 KJS::String v(""); 211 208 return v; 212 209 } -
S60/trunk/JavaScriptCore/bindings/c/c_instance.h
r8384 r14062 64 64 NPObject *getObject() const { return _object; } 65 65 66 void setExecutionContext (RootObject *r) { _root = r; } 67 const RootObject *executionContext() const { return _root; } 68 66 69 private: 67 70 mutable CClass *_class; 68 71 NPObject *_object; 72 RootObject *_root; 69 73 }; 70 74 -
S60/trunk/JavaScriptCore/bindings/c/c_utility.cpp
r8585 r14062 26 26 #include <c_utility.h> 27 27 #include <internal.h> 28 #include <npruntime_impl.h>29 28 #include <npruntime_priv.h> 30 29 #include <runtime.h> … … 96 95 else if (type == ObjectType) { 97 96 KJS::ObjectImp *objectImp = static_cast<KJS::ObjectImp*>(value.imp()); 98 if ( objectImp->classInfo() == &KJS::RuntimeObjectImp::info) {97 if (strcmp(objectImp->classInfo()->className, "RuntimeObject") == 0) { 99 98 KJS::RuntimeObjectImp *imp = static_cast<KJS::RuntimeObjectImp *>(value.imp()); 100 99 CInstance *instance = static_cast<CInstance*>(imp->getInternalInstance()); 101 100 NPN_InitializeVariantWithObject (result, instance->getObject()); 102 101 } 103 else {104 105 KJS::Interpreter *originInterpreter = exec->interpreter();106 const Bindings::RootObject *originExecutionContext = rootForInterpreter(originInterpreter);107 108 KJS::Interpreter *interpreter = 0;109 if (originInterpreter->isGlobalObject(value)) {110 interpreter = originInterpreter->interpreterForGlobalObject (value.imp());111 }112 113 if (!interpreter)114 interpreter = originInterpreter;115 116 const Bindings::RootObject *executionContext = rootForInterpreter(interpreter);117 if (!executionContext) {118 Bindings::RootObject *newExecutionContext = new KJS::Bindings::RootObject(0);119 newExecutionContext->setInterpreter (interpreter);120 executionContext = newExecutionContext;121 }122 123 NPObject *obj = (NPObject *)exec->interpreter()->createLanguageInstanceForValue (exec, Instance::CLanguage, value.toObject(exec), originExecutionContext, executionContext);124 NPN_InitializeVariantWithObject (result, obj);125 _NPN_ReleaseObject (obj);126 }127 102 } 128 103 else -
S60/trunk/JavaScriptCore/bindings/jni/jni_instance.cpp
r8585 r14062 46 46 _instance = new JObjectWrapper (instance); 47 47 _class = 0; 48 setExecutionContext (r);48 _root = r; 49 49 }; 50 50 … … 61 61 // Classes are kept around forever. 62 62 _class = other._class; 63 _root = other._root; 63 64 }; 64 65 … … 247 248 } 248 249 else { 249 resultValue = Instance::createRuntimeObject(Instance::JavaLanguage, result.l, executionContext());250 resultValue = Object(new RuntimeObjectImp(new JavaInstance (result.l, executionContext()))); 250 251 } 251 252 } … … 346 347 }; 347 348 349 void JavaInstance::setExecutionContext (RootObject *r) { _root = r; } 350 const RootObject *JavaInstance::executionContext() const { return _root; } 351 348 352 JObjectWrapper::JObjectWrapper(jobject instance) 349 353 { -
S60/trunk/JavaScriptCore/bindings/jni/jni_instance.h
r8384 r14062 97 97 virtual Value invokeDefaultMethod (ExecState *exec, const List &args); 98 98 99 virtual void setExecutionContext (RootObject *r); 100 virtual const RootObject *executionContext() const; 101 99 102 jobject javaInstance() const { return _instance->_instance; } 100 103 … … 106 109 JObjectWrapper *_instance; 107 110 mutable JavaClass *_class; 111 const RootObject *_root; 108 112 }; 109 113 -
S60/trunk/JavaScriptCore/bindings/jni/jni_jsobject.cpp
r8408 r14062 421 421 jobject classOfInstance = callJNIObjectMethod(theObject, "getClass", "()Ljava/lang/Class;"); 422 422 jstring className = (jstring)callJNIObjectMethod(classOfInstance, "getName", "()Ljava/lang/String;"); 423 423 424 JS_LOG ("converting instance of class %s\n", Bindings::JavaString(className).UTF8String()); 425 424 426 if (strcmp(Bindings::JavaString(className).UTF8String(), "netscape.javascript.JSObject") == 0) { 425 427 // Pull the nativeJSObject value from the Java instance. This is a … … 453 455 for (i = 0; i < numObjects; i++) { 454 456 jobject anObject = env->GetObjectArrayElement ((jobjectArray)jArray, i); 455 if (anObject) { 456 aList.append (convertJObjectToValue(anObject)); 457 env->DeleteLocalRef (anObject); 458 } 459 else { 460 env->ExceptionDescribe(); 461 env->ExceptionClear(); 462 } 457 aList.append (convertJObjectToValue(anObject)); 458 env->DeleteLocalRef (anObject); 463 459 } 464 460 return aList; -
S60/trunk/JavaScriptCore/bindings/jni/jni_runtime.cpp
r8622 r14062 34 34 #include <runtime_root.h> 35 35