2007-05-30 Luciano Montanaro <mikelima@cirulla.net>
authorbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 30 May 2007 12:19:36 +0000 (12:19 +0000)
committerbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 30 May 2007 12:19:36 +0000 (12:19 +0000)
        Reviewed by Maciej.

        - cross-port Harri Porten's commits 636099 and 636108 from KJS:
        "publish a class anyway public already" and "class is being used from
        outside for quite some time" in preparation for further syncronizations

        * kjs/context.h:
        * kjs/date_object.cpp:
        * kjs/date_object.h:
        * kjs/function.h:
        (KJS::):
        (KJS::InternalFunctionImp::classInfo):
        (KJS::InternalFunctionImp::functionName):
        * kjs/function_object.h:
        * kjs/internal.h:
        * kjs/lookup.h:
        (KJS::getStaticPropertySlot):
        (KJS::getStaticFunctionSlot):
        (KJS::getStaticValueSlot):
        * kjs/object_object.h:

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

JavaScriptCore/ChangeLog
JavaScriptCore/kjs/context.h
JavaScriptCore/kjs/date_object.cpp
JavaScriptCore/kjs/date_object.h
JavaScriptCore/kjs/function.h
JavaScriptCore/kjs/function_object.h
JavaScriptCore/kjs/internal.h
JavaScriptCore/kjs/lookup.h
JavaScriptCore/kjs/object_object.h

index cb622b7..bca54a9 100644 (file)
@@ -1,3 +1,26 @@
+2007-05-30  Luciano Montanaro  <mikelima@cirulla.net>
+
+        Reviewed by Maciej.
+
+        - cross-port Harri Porten's commits 636099 and 636108 from KJS: 
+        "publish a class anyway public already" and "class is being used from
+        outside for quite some time" in preparation for further syncronizations
+
+        * kjs/context.h:
+        * kjs/date_object.cpp:
+        * kjs/date_object.h:
+        * kjs/function.h:
+        (KJS::):
+        (KJS::InternalFunctionImp::classInfo):
+        (KJS::InternalFunctionImp::functionName):
+        * kjs/function_object.h:
+        * kjs/internal.h:
+        * kjs/lookup.h:
+        (KJS::getStaticPropertySlot):
+        (KJS::getStaticFunctionSlot):
+        (KJS::getStaticValueSlot):
+        * kjs/object_object.h:
+
 2007-05-29  Sam Weinig  <sam@webkit.org>
 
         Reviewed by Adam Roben.
index f76e17d..75ec3c2 100644 (file)
 #define KJS_Context_h
 
 #include "function.h"
+#include "internal.h"
 
 namespace KJS  {
 
   class ExecState;
   
-  /** 
+  /**
    * @short Execution context.
    *
    * Represents an execution context, as specified by section 10 of the ECMA
@@ -46,11 +47,11 @@ namespace KJS  {
    * Most inheritable functions in the KJS api take a ExecState pointer as
    * their first parameter. This can be used to obtain a handle to the current
    * execution context.
-   */    
+   */
   class Context {
   public:
-    Context(JSObject* global, Interpreter*, JSObject* thisV, 
-            FunctionBodyNode* currentBody, CodeType type = GlobalCode, 
+    Context(JSObject* global, Interpreter*, JSObject* thisV,
+            FunctionBodyNode* currentBody, CodeType type = GlobalCode,
             Context* callingContext = 0, FunctionImp* function = 0, const List* args = 0);
     ~Context();
 
@@ -98,7 +99,7 @@ namespace KJS  {
      * @return The calling execution context
      */
     Context* callingContext() { return m_callingContext; }
-    
+
     JSObject* activationObject() { return m_activation; }
     CodeType codeType() { return m_codeType; }
     FunctionBodyNode* currentBody() { return m_currentBody; }
@@ -112,11 +113,11 @@ namespace KJS  {
     void pushIteration() { m_iterationDepth++; }
     void popIteration() { m_iterationDepth--; }
     bool inIteration() const { return (m_iterationDepth > 0); }
-    
+
     void pushSwitch() { m_switchDepth++; }
     void popSwitch() { m_switchDepth--; }
     bool inSwitch() const { return (m_switchDepth > 0); }
-        
+
     void mark();
 
     void setExecState(ExecState* exec) { m_execState = exec; }
@@ -134,7 +135,7 @@ namespace KJS  {
     FunctionImp* m_function;
     const List* m_arguments;
     JSObject* m_activation;
-    
+
     ScopeChain scope;
     JSObject* m_variable;
     JSObject* m_thisVal;
index 6c4a914..5e35b89 100644 (file)
@@ -22,6 +22,7 @@
 #include "config.h"
 #include "date_object.h"
 #include "date_object.lut.h"
+#include "internal.h"
 
 #if HAVE(ERRNO_H)
 #include <errno.h>
index dcfba66..3880c38 100644 (file)
@@ -21,7 +21,7 @@
 #ifndef DATE_OBJECT_H
 #define DATE_OBJECT_H
 
-#include "internal.h"
+#include "function.h"
 #include "JSWrapperObject.h"
 
 namespace KJS {
@@ -67,9 +67,9 @@ namespace KJS {
     class DateProtoFunc : public InternalFunctionImp {
     public:
         DateProtoFunc(ExecState *, int i, int len, const Identifier& date);
-        
+
         virtual JSValue *callAsFunction(ExecState *, JSObject *thisObj, const List &args);
-        
+
         enum { ToString, ToDateString, ToTimeString, ToLocaleString,
             ToLocaleDateString, ToLocaleTimeString, ValueOf, GetTime,
             GetFullYear, GetMonth, GetDate, GetDay, GetHours, GetMinutes,
@@ -82,7 +82,7 @@ namespace KJS {
         int id;
         bool utc;
     };
-    
+
     /**
      * @internal
      *
index a578cfb..c84df7d 100644 (file)
@@ -24,7 +24,7 @@
 #ifndef KJS_FUNCTION_H
 #define KJS_FUNCTION_H
 
-#include "internal.h"
+#include "object.h"
 #include <wtf/OwnPtr.h>
 #include <wtf/Vector.h>
 
@@ -32,6 +32,44 @@ namespace KJS {
 
   class ActivationImp;
   class FunctionBodyNode;
+  class FunctionPrototype;
+
+  enum CodeType { GlobalCode,
+                  EvalCode,
+                  FunctionCode,
+                  AnonymousCode };
+
+  class InternalFunctionImp : public JSObject {
+  public:
+    InternalFunctionImp();
+    InternalFunctionImp(FunctionPrototype*);
+    InternalFunctionImp(FunctionPrototype*, const Identifier&);
+
+    virtual bool implementsCall() const;
+    virtual JSValue* callAsFunction(ExecState*, JSObject* thisObjec, const List& args) = 0;
+    virtual bool implementsHasInstance() const;
+
+    virtual const ClassInfo* classInfo() const { return &info; }
+    static const ClassInfo info;
+    const Identifier& functionName() const { return m_name; }
+
+  private:
+    Identifier m_name;
+  };
+
+  /**
+   * @internal
+   *
+   * The initial value of Function.prototype (and thus all objects created
+   * with the Function constructor)
+   */
+  class FunctionPrototype : public InternalFunctionImp {
+  public:
+    FunctionPrototype(ExecState *exec);
+    virtual ~FunctionPrototype();
+
+    virtual JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args);
+  };
 
   /**
    * @short Implementation class for internal Functions.
@@ -148,7 +186,7 @@ namespace KJS {
   private:
     static JSValue* mappedIndexGetter(ExecState*, JSObject*, const Identifier&, const PropertySlot& slot);
 
-    ActivationImp* _activationObject; 
+    ActivationImp* _activationObject;
     mutable IndexToNameMap indexToNameMap;
   };
 
@@ -162,7 +200,7 @@ namespace KJS {
 
     virtual const ClassInfo* classInfo() const { return &info; }
     static const ClassInfo info;
-    
+
     virtual void mark();
 
     bool isActivation() { return true; }
@@ -173,7 +211,7 @@ namespace KJS {
     static PropertySlot::GetValueFunc getArgumentsGetter();
     static JSValue* argumentsGetter(ExecState*, JSObject*, const Identifier&, const PropertySlot& slot);
     void createArgumentsObject(ExecState*);
-    
+
     FunctionImp* _function;
     List _arguments;
     mutable Arguments* _argumentsObject;
index 399cca8..909c290 100644 (file)
@@ -31,20 +31,6 @@ namespace KJS {
   /**
    * @internal
    *
-   * The initial value of Function.prototype (and thus all objects created
-   * with the Function constructor)
-   */
-  class FunctionPrototype : public InternalFunctionImp {
-  public:
-    FunctionPrototype(ExecState *exec);
-    virtual ~FunctionPrototype();
-
-    virtual JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args);
-  };
-
-  /**
-   * @internal
-   *
    * Class to implement all methods that are properties of the
    * Function.prototype object
    */
index 8e9c362..27cedac 100644 (file)
@@ -83,7 +83,7 @@ namespace KJS {
 
     double val;
   };
-  
+
 
   /**
    * @short The "label set" in Ecma-262 spec
@@ -109,7 +109,7 @@ namespace KJS {
      * Removes from the stack the last pushed id (what else?)
      */
     void pop();
-    
+
   private:
     struct StackElem {
       Identifier id;
@@ -124,11 +124,6 @@ namespace KJS {
   //                            Evaluation
   // ---------------------------------------------------------------------------
 
-  enum CodeType { GlobalCode,
-                  EvalCode,
-                  FunctionCode,
-                  AnonymousCode };
-
   struct AttachedInterpreter;
   class DebuggerImp {
   public:
@@ -145,24 +140,6 @@ namespace KJS {
     bool isAborted;
   };
 
-  class InternalFunctionImp : public JSObject {
-  public:
-    InternalFunctionImp();
-    InternalFunctionImp(FunctionPrototype*);
-    InternalFunctionImp(FunctionPrototype*, const Identifier&);
-
-    virtual bool implementsCall() const;
-    virtual JSValue* callAsFunction(ExecState*, JSObject* thisObjec, const List& args) = 0;
-    virtual bool implementsHasInstance() const;
-
-    virtual const ClassInfo* classInfo() const { return &info; }
-    static const ClassInfo info;
-    const Identifier& functionName() const { return m_name; }
-
-  private:
-    Identifier m_name;
-  };
-
   // helper function for toInteger, toInt32, toUInt32 and toUInt16
   double roundValue(ExecState *, JSValue *);
 
index 9b1aa35..47a69a2 100644 (file)
@@ -24,9 +24,7 @@
 #define _KJSLOOKUP_H_
 
 #include "interpreter.h"
-#include "internal.h"
 #include "identifier.h"
-#include "function_object.h"
 #include "object.h"
 #include <stdio.h>
 
@@ -180,7 +178,7 @@ namespace KJS {
 
     if (entry->attr & Function)
       slot.setStaticEntry(thisObj, entry, staticFunctionGetter<FuncImp>);
-    else 
+    else
       slot.setStaticEntry(thisObj, entry, staticValueGetter<ThisImp>);
 
     return true;
@@ -188,11 +186,11 @@ namespace KJS {
 
   /**
    * Simplified version of getStaticPropertySlot in case there are only functions.
-   * Using this instead of getStaticPropertySlot allows 'this' to avoid implementing 
+   * Using this instead of getStaticPropertySlot allows 'this' to avoid implementing
    * a dummy getValueProperty.
    */
   template <class FuncImp, class ParentImp>
-  inline bool getStaticFunctionSlot(ExecState* exec, const HashTable* table, 
+  inline bool getStaticFunctionSlot(ExecState* exec, const HashTable* table,
                                     JSObject* thisObj, const Identifier& propertyName, PropertySlot& slot)
   {
     const HashEntry* entry = Lookup::findEntry(table, propertyName);
@@ -211,7 +209,7 @@ namespace KJS {
    * Using this instead of getStaticPropertySlot removes the need for a FuncImp class.
    */
   template <class ThisImp, class ParentImp>
-  inline bool getStaticValueSlot(ExecState* exec, const HashTable* table, 
+  inline bool getStaticValueSlot(ExecState* exec, const HashTable* table,
                                  ThisImp* thisObj, const Identifier& propertyName, PropertySlot& slot)
   {
     const HashEntry* entry = Lookup::findEntry(table, propertyName);
index 7015045..d2587a9 100644 (file)
@@ -22,7 +22,7 @@
 #ifndef _OBJECT_OBJECT_H_
 #define _OBJECT_OBJECT_H_
 
-#include "internal.h"
+#include "function.h"
 
 namespace KJS {