Reviewed by Beth.
authorggaren <ggaren@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 14 Jul 2006 17:41:10 +0000 (17:41 +0000)
committerggaren <ggaren@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 14 Jul 2006 17:41:10 +0000 (17:41 +0000)
        Moved JSCheckScriptSyntax, JSEvaluateScript, and JSGarbageCollect into
        JSBase.h/.cpp. They don't belong in the value-specific or context-specific
        files because they're not part of the value or context implementations.

        * API/JSBase.h:
        * API/JSContextRef.cpp:
        (JSContextGetGlobalObject):
        * API/JSContextRef.h:
        * API/JSValueRef.cpp:
        (JSValueUnprotect):
        * API/JSValueRef.h:
        * JavaScriptCore.xcodeproj/project.pbxproj:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@15428 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/API/JSBase.cpp [new file with mode: 0644]
JavaScriptCore/API/JSBase.h
JavaScriptCore/API/JSContextRef.cpp
JavaScriptCore/API/JSContextRef.h
JavaScriptCore/API/JSValueRef.cpp
JavaScriptCore/API/JSValueRef.h
JavaScriptCore/ChangeLog
JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

diff --git a/JavaScriptCore/API/JSBase.cpp b/JavaScriptCore/API/JSBase.cpp
new file mode 100644 (file)
index 0000000..290a4c3
--- /dev/null
@@ -0,0 +1,82 @@
+// -*- mode: c++; c-basic-offset: 4 -*-
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (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 "JSBase.h"
+
+#include "APICast.h"
+
+#include <kjs/ExecState.h>
+#include <kjs/Interpreter.h>
+#include <kjs/JSLock.h>
+#include <kjs/object.h>
+
+using namespace KJS;
+
+JSValueRef JSEvaluateScript(JSContextRef context, JSStringRef script, JSObjectRef thisObject, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception)
+{
+    JSLock lock;
+    ExecState* exec = toJS(context);
+    JSObject* jsThisObject = toJS(thisObject);
+    UString::Rep* scriptRep = toJS(script);
+    UString::Rep* sourceURLRep = toJS(sourceURL);
+    // Interpreter::evaluate sets "this" to the global object if it is NULL
+    Completion completion = exec->dynamicInterpreter()->evaluate(UString(sourceURLRep), startingLineNumber, UString(scriptRep), jsThisObject);
+
+    if (completion.complType() == Throw) {
+        if (exception)
+            *exception = toRef(completion.value());
+        return 0;
+    }
+    
+    if (completion.value())
+        return toRef(completion.value());
+    
+    // happens, for example, when the only statement is an empty (';') statement
+    return toRef(jsUndefined());
+}
+
+bool JSCheckScriptSyntax(JSContextRef context, JSStringRef script, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception)
+{
+    JSLock lock;
+
+    ExecState* exec = toJS(context);
+    UString::Rep* scriptRep = toJS(script);
+    UString::Rep* sourceURLRep = toJS(sourceURL);
+    Completion completion = exec->dynamicInterpreter()->checkSyntax(UString(sourceURLRep), startingLineNumber, UString(scriptRep));
+    if (completion.complType() == Throw) {
+        if (exception)
+            *exception = toRef(completion.value());
+        return false;
+    }
+    
+    return true;
+}
+
+void JSGarbageCollect()
+{
+    JSLock lock;
+    Collector::collect();
+}
index cc77384b925cefce4dc08611c419905f6ede8807..7b9ad57c527241cd29413644708afdc0dee0e59a 100644 (file)
@@ -27,6 +27,8 @@
 #ifndef JSBase_h
 #define JSBase_h
 
+#include <stdbool.h>
+
 /* JavaScript engine interface */
 
 /*! @typedef JSContextRef A JavaScript execution context. Holds the global object and other execution state. */
@@ -48,4 +50,51 @@ typedef const struct __JSValue* JSValueRef;
 /*! @typedef JSObjectRef A JavaScript object. A JSObject is a JSValue. */
 typedef struct __JSValue* JSObjectRef;
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Script Evaluation */
+
+/*!
+@function
+@abstract                 Evaluates a string of JavaScript.
+@param context            The execution context to use.
+@param script             A JSString containing the script to evaluate.
+@param thisObject         The object to use as "this," or NULL to use the global object as "this."
+@param sourceURL          A JSString containing a URL for the script's source file. This is only used when reporting exceptions. Pass NULL if you do not care to include source file information in exceptions.
+@param startingLineNumber An integer value specifying the script's starting line number in the file located at sourceURL. This is only used when reporting exceptions.
+@param exception          A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
+@result                   The JSValue that results from evaluating script, or NULL if an exception is thrown.
+*/
+JSValueRef JSEvaluateScript(JSContextRef context, JSStringRef script, JSObjectRef thisObject, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception);
+
+/*!
+@function JSCheckScriptSyntax
+@abstract                 Checks for syntax errors in a string of JavaScript.
+@param context            The execution context to use.
+@param script             A JSString containing the script to check for syntax errors.
+@param sourceURL          A JSString containing a URL for the script's source file. This is only used when reporting exceptions. Pass NULL if you do not care to include source file information in exceptions.
+@param startingLineNumber An integer value specifying the script's starting line number in the file located at sourceURL. This is only used when reporting exceptions.
+@param exception          A pointer to a JSValueRef in which to store a syntax error exception, if any. Pass NULL if you do not care to store a syntax error exception.
+@result                   true if the script is syntactically correct, otherwise false.
+*/
+bool JSCheckScriptSyntax(JSContextRef context, JSStringRef script, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception);
+
+/*!
+@function
+@abstract Performs a JavaScript garbage collection. 
+@discussion JavaScript values that are on the machine stack, in a register, 
+ protected by JSValueProtect, set as the global object of an execution context, 
+ or reachable from any such value will not be collected. 
+ You are not required to call this function; the JavaScript engine will garbage 
+ collect as needed.
+*/
+void JSGarbageCollect(void);
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif // JSBase_h
index 4c45462e4fcc76eb3df2121b15a00854c3a059e0..61431f662caea51b40b89c9a57783d48d131a9cf 100644 (file)
@@ -61,43 +61,3 @@ JSObjectRef JSContextGetGlobalObject(JSContextRef context)
     ExecState* exec = toJS(context);
     return toRef(exec->dynamicInterpreter()->globalObject());
 }
-
-JSValueRef JSEvaluateScript(JSContextRef context, JSStringRef script, JSObjectRef thisObject, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception)
-{
-    JSLock lock;
-    ExecState* exec = toJS(context);
-    JSObject* jsThisObject = toJS(thisObject);
-    UString::Rep* scriptRep = toJS(script);
-    UString::Rep* sourceURLRep = toJS(sourceURL);
-    // Interpreter::evaluate sets "this" to the global object if it is NULL
-    Completion completion = exec->dynamicInterpreter()->evaluate(UString(sourceURLRep), startingLineNumber, UString(scriptRep), jsThisObject);
-
-    if (completion.complType() == Throw) {
-        if (exception)
-            *exception = toRef(completion.value());
-        return 0;
-    }
-    
-    if (completion.value())
-        return toRef(completion.value());
-    
-    // happens, for example, when the only statement is an empty (';') statement
-    return toRef(jsUndefined());
-}
-
-bool JSCheckScriptSyntax(JSContextRef context, JSStringRef script, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception)
-{
-    JSLock lock;
-
-    ExecState* exec = toJS(context);
-    UString::Rep* scriptRep = toJS(script);
-    UString::Rep* sourceURLRep = toJS(sourceURL);
-    Completion completion = exec->dynamicInterpreter()->checkSyntax(UString(sourceURLRep), startingLineNumber, UString(scriptRep));
-    if (completion.complType() == Throw) {
-        if (exception)
-            *exception = toRef(completion.value());
-        return false;
-    }
-    
-    return true;
-}
index 6afcdd349fb28fb275112abe2a53b142e75cf170..eda584d92c634ffba880a575885f86f23d927d72 100644 (file)
@@ -62,32 +62,6 @@ void JSContextDestroy(JSContextRef context);
 */
 JSObjectRef JSContextGetGlobalObject(JSContextRef context);
 
-// Evaluation
-/*!
-@function
-@abstract                 Evaluates a string of JavaScript.
-@param context            The execution context to use.
-@param script             A JSString containing the script to evaluate.
-@param thisObject         The object to use as "this," or NULL to use the global object as "this."
-@param sourceURL          A JSString containing a URL for the script's source file. This is only used when reporting exceptions. Pass NULL if you do not care to include source file information in exceptions.
-@param startingLineNumber An integer value specifying the script's starting line number in the file located at sourceURL. This is only used when reporting exceptions.
-@param exception          A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
-@result                   The JSValue that results from evaluating script, or NULL if an exception is thrown.
-*/
-JSValueRef JSEvaluateScript(JSContextRef context, JSStringRef script, JSObjectRef thisObject, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception);
-
-/*!
-@function JSCheckScriptSyntax
-@abstract                 Checks for syntax errors in a string of JavaScript.
-@param context            The execution context to use.
-@param script             A JSString containing the script to check for syntax errors.
-@param sourceURL          A JSString containing a URL for the script's source file. This is only used when reporting exceptions. Pass NULL if you do not care to include source file information in exceptions.
-@param startingLineNumber An integer value specifying the script's starting line number in the file located at sourceURL. This is only used when reporting exceptions.
-@param exception          A pointer to a JSValueRef in which to store a syntax error exception, if any. Pass NULL if you do not care to store a syntax error exception.
-@result                   true if the script is syntactically correct, otherwise false.
-*/
-bool JSCheckScriptSyntax(JSContextRef context, JSStringRef script, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception);
-
 #ifdef __cplusplus
 }
 #endif
index 779e2bb0a4ddbf06663b20ecb9c90082ef61bcfc..8c0ea8dd146a772765c6a6d468ea2fdaf0c0e9be 100644 (file)
@@ -248,9 +248,3 @@ void JSValueUnprotect(JSValueRef value)
     JSValue* jsValue = toJS(value);
     gcUnprotect(jsValue);
 }
-
-void JSGarbageCollect()
-{
-    JSLock lock;
-    Collector::collect();
-}
index 9050214cb32e893f03d1a44a756da2b6c62e80d4..f60e48e6f8ab2e9e7ced0eacc6a5de6c6f11a844 100644 (file)
@@ -258,18 +258,6 @@ void JSValueProtect(JSValueRef value);
 */
 void JSValueUnprotect(JSValueRef value);
 
-/*!
-@function
-@abstract Performs a JavaScript garbage collection. 
-@discussion JavaScript values that are on the machine stack, in a register, 
- protected by JSValueProtect, set as the global object of an execution context, 
- or reachable from any such value will not be collected. 
- You are not required to call this function; the JavaScript engine will garbage 
- collect as needed.
-*/
-void JSGarbageCollect(void);
-
 #ifdef __cplusplus
 }
 #endif
index e3392be80c598adbac16d91dc8cb92af58b6c119..33616a81220516881fbae66b1db466eb4f57f3ee 100644 (file)
@@ -1,3 +1,20 @@
+2006-07-14  Geoffrey Garen  <ggaren@apple.com>
+
+        Reviewed by Beth.
+        
+        Moved JSCheckScriptSyntax, JSEvaluateScript, and JSGarbageCollect into
+        JSBase.h/.cpp. They don't belong in the value-specific or context-specific 
+        files because they're not part of the value or context implementations.
+
+        * API/JSBase.h:
+        * API/JSContextRef.cpp:
+        (JSContextGetGlobalObject):
+        * API/JSContextRef.h:
+        * API/JSValueRef.cpp:
+        (JSValueUnprotect):
+        * API/JSValueRef.h:
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+
 2006-07-13  Timothy Hatcher  <timothy@apple.com>
 
         Reviewed by Maciej.
index 2fd59f02895900016b31d9cff87d0e2da5fe987a..25d57bc3010d89c04f51d33e2e5479f8ad9cdf93 100644 (file)
@@ -35,6 +35,7 @@
 /* Begin PBXBuildFile section */
                141211310A48794D00480255 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 932F5BD90822A1C700736975 /* JavaScriptCore.framework */; };
                141211340A48795800480255 /* minidom.c in Sources */ = {isa = PBXBuildFile; fileRef = 141211020A48780900480255 /* minidom.c */; };
+               1421359B0A677F4F00A8195E /* JSBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1421359A0A677F4F00A8195E /* JSBase.cpp */; };
                142711390A460BBB0080EEEA /* JSBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 142711380A460BBB0080EEEA /* JSBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
                143A97E60A4A06E200456B66 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6560A4CF04B3B3E7008AE952 /* CoreFoundation.framework */; };
                1440057F0A5335640005F061 /* JSNode.c in Sources */ = {isa = PBXBuildFile; fileRef = 1440F6420A4F8B6A0005F061 /* JSNode.c */; };
                141211020A48780900480255 /* minidom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = minidom.c; sourceTree = "<group>"; };
                1412110D0A48788700480255 /* minidom.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = minidom.js; sourceTree = "<group>"; };
                141211200A48793C00480255 /* minidom */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = minidom; sourceTree = BUILT_PRODUCTS_DIR; };
+               1421359A0A677F4F00A8195E /* JSBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSBase.cpp; sourceTree = "<group>"; };
                142711380A460BBB0080EEEA /* JSBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBase.h; sourceTree = "<group>"; };
                1440051F0A531D3B0005F061 /* Node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Node.h; sourceTree = "<group>"; };
                144005200A531D3B0005F061 /* Node.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Node.c; sourceTree = "<group>"; };
                        children = (
                                1482B78A0A4305AB00517CFC /* APICast.h */,
                                14BD5A2F0A3E91F600BAF59C /* JavaScriptCore.h */,
+                               1421359A0A677F4F00A8195E /* JSBase.cpp */,
                                142711380A460BBB0080EEEA /* JSBase.h */,
                                1440F8AD0A508D200005F061 /* JSCallbackConstructor.cpp */,
                                1440F8AC0A508D200005F061 /* JSCallbackConstructor.h */,
                                1440F8920A508B100005F061 /* JSCallbackFunction.cpp in Sources */,
                                1440F8AF0A508D200005F061 /* JSCallbackConstructor.cpp in Sources */,
                                1440FCE40A51E46B0005F061 /* JSClassRef.cpp in Sources */,
+                               1421359B0A677F4F00A8195E /* JSBase.cpp in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };