Changeset 80367 in webkit


Ignore:
Timestamp:
Mar 4, 2011 11:17:28 AM (13 years ago)
Author:
steveblock@google.com
Message:

2011-03-04 Steve Block <steveblock@google.com>

Reviewed by Jeremy Orlow.

JSC and V8 versions of Java bridge should share JobjectWrapper
https://bugs.webkit.org/show_bug.cgi?id=55763

No new tests, refactoring only.

  • Android.jscbindings.mk:
  • Android.v8bindings.mk:
  • WebCore.gypi:
  • WebCore.order:
  • WebCore.xcodeproj/project.pbxproj:
  • bridge/jni/JobjectWrapper.cpp: (JobjectWrapper::JobjectWrapper): (JobjectWrapper::~JobjectWrapper):
  • bridge/jni/JobjectWrapper.h: (JSC::Bindings::JobjectWrapper::instance): (JSC::Bindings::JobjectWrapper::setInstance): (JSC::Bindings::JobjectWrapper::ref): (JSC::Bindings::JobjectWrapper::deref):
  • bridge/jni/jsc/JNIBridgeJSC.cpp: (JavaField::JavaField): (JavaArray::JavaArray):
  • bridge/jni/jsc/JNIBridgeJSC.h:
  • bridge/jni/jsc/JavaInstanceJSC.cpp: (JavaInstance::JavaInstance):
  • bridge/jni/jsc/JavaInstanceJSC.h:
Location:
trunk/Source/WebCore
Files:
10 edited
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/Android.jscbindings.mk

    r79223 r80367  
    201201        bridge/jni/JNIBridge.cpp \
    202202        bridge/jni/JNIUtility.cpp \
     203        bridge/jni/JobjectWrapper.cpp \
    203204        bridge/jni/jsc/JNIBridgeJSC.cpp \
    204205        bridge/jni/jsc/JNIUtilityPrivate.cpp \
  • trunk/Source/WebCore/Android.v8bindings.mk

    r80103 r80367  
    175175        bridge/jni/JNIBridge.cpp \
    176176        bridge/jni/JNIUtility.cpp \
     177        bridge/jni/JobjectWrapper.cpp \
    177178        bridge/jni/v8/JNIBridgeV8.cpp \
    178179        bridge/jni/v8/JNIUtilityPrivate.cpp \
  • trunk/Source/WebCore/ChangeLog

    r80362 r80367  
     12011-03-04  Steve Block  <steveblock@google.com>
     2
     3        Reviewed by Jeremy Orlow.
     4
     5        JSC and V8 versions of Java bridge should share JobjectWrapper
     6        https://bugs.webkit.org/show_bug.cgi?id=55763
     7
     8        No new tests, refactoring only.
     9
     10        * Android.jscbindings.mk:
     11        * Android.v8bindings.mk:
     12        * WebCore.gypi:
     13        * WebCore.order:
     14        * WebCore.xcodeproj/project.pbxproj:
     15        * bridge/jni/JobjectWrapper.cpp:
     16        (JobjectWrapper::JobjectWrapper):
     17        (JobjectWrapper::~JobjectWrapper):
     18        * bridge/jni/JobjectWrapper.h:
     19        (JSC::Bindings::JobjectWrapper::instance):
     20        (JSC::Bindings::JobjectWrapper::setInstance):
     21        (JSC::Bindings::JobjectWrapper::ref):
     22        (JSC::Bindings::JobjectWrapper::deref):
     23        * bridge/jni/jsc/JNIBridgeJSC.cpp:
     24        (JavaField::JavaField):
     25        (JavaArray::JavaArray):
     26        * bridge/jni/jsc/JNIBridgeJSC.h:
     27        * bridge/jni/jsc/JavaInstanceJSC.cpp:
     28        (JavaInstance::JavaInstance):
     29        * bridge/jni/jsc/JavaInstanceJSC.h:
     30
    1312011-03-04  Patrick Gansterer  <paroga@webkit.org>
    232
  • trunk/Source/WebCore/WebCore.gypi

    r80336 r80367  
    10121012            'bridge/jni/JNIUtility.cpp',
    10131013            'bridge/jni/JNIUtility.h',
     1014            'bridge/jni/JobjectWrapper.cpp',
     1015            'bridge/jni/JobjectWrapper.h',
    10141016            'bridge/jni/v8/JNIBridgeV8.cpp',
    10151017            'bridge/jni/v8/JNIBridgeV8.h',
     
    10231025            'bridge/jni/v8/JavaNPObjectV8.h',
    10241026            'bridge/jni/v8/JavaStringV8.h',
    1025             'bridge/jni/v8/JobjectWrapper.cpp',
    1026             'bridge/jni/v8/JobjectWrapper.h',
    10271027            'css/CSSBorderImageValue.cpp',
    10281028            'css/CSSBorderImageValue.h',
  • trunk/Source/WebCore/WebCore.order

    r79825 r80367  
    1154011540__ZN3JSC8Bindings12JavaInstanceC1EP8_jobjectN3WTF10PassRefPtrINS0_10RootObjectEEE
    1154111541__ZN3JSC8Bindings12JavaInstanceC2EP8_jobjectN3WTF10PassRefPtrINS0_10RootObjectEEE
    11542 __ZN3JSC8Bindings14JObjectWrapperC1EP8_jobject
    11543 __ZN3JSC8Bindings14JObjectWrapperC2EP8_jobject
     11542__ZN3JSC8Bindings14JobjectWrapperC1EP8_jobject
     11543__ZN3JSC8Bindings14JobjectWrapperC2EP8_jobject
    1154411544__ZN3JSC8Bindings9getJNIEnvEv
    1154511545__ZN3JSC8Bindings9getJavaVMEv
     
    1158911589__ZN3WTF20deleteAllPairSecondsIPN3JSC8Bindings5FieldEKNS_7HashMapINS_6RefPtrIN7WebCore10StringImplEEES4_NS7_10StringHashENS_10H
    1159011590__ZN3JSC8Bindings9JavaFieldD0Ev
    11591 __ZN3JSC8Bindings14JObjectWrapperD1Ev
    11592 __ZN3JSC8Bindings14JObjectWrapperD2Ev
     11591__ZN3JSC8Bindings14JobjectWrapperD1Ev
     11592__ZN3JSC8Bindings14JobjectWrapperD2Ev
    1159311593__ZN3WTF15deleteAllValuesIPN3JSC8Bindings6MethodELm0EEEvRKNS_6VectorIT_XT0_EEE
    1159411594__ZN3JSC8Bindings10JavaMethodD0Ev
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r80328 r80367  
    13821382                596229781133EFD700DC4CBB /* GeolocationPositionCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 596229771133EFD700DC4CBB /* GeolocationPositionCache.cpp */; };
    13831383                5962297A1133EFE200DC4CBB /* GeolocationPositionCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 596229791133EFE200DC4CBB /* GeolocationPositionCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1384                596950821321059900C3ED18 /* JobjectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 596950811321059900C3ED18 /* JobjectWrapper.h */; };
     1385                59695084132105A500C3ED18 /* JobjectWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59695083132105A500C3ED18 /* JobjectWrapper.cpp */; };
    13841386                599E759011055A1F00D904FA /* Bridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 599E758F11055A1F00D904FA /* Bridge.h */; settings = {ATTRIBUTES = (Private, ); }; };
    13851387                59A85EA2119D68D900DEF1EF /* DeviceOrientationEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59A85EA1119D68D900DEF1EF /* DeviceOrientationEvent.cpp */; };
     
    78457847                596229771133EFD700DC4CBB /* GeolocationPositionCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeolocationPositionCache.cpp; sourceTree = "<group>"; };
    78467848                596229791133EFE200DC4CBB /* GeolocationPositionCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeolocationPositionCache.h; sourceTree = "<group>"; };
     7849                596950811321059900C3ED18 /* JobjectWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JobjectWrapper.h; sourceTree = "<group>"; };
     7850                59695083132105A500C3ED18 /* JobjectWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JobjectWrapper.cpp; sourceTree = "<group>"; };
    78477851                5980B03312EF3D8400DF5F85 /* XMLViewer.xsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = XMLViewer.xsl; sourceTree = "<group>"; };
    78487852                599E758F11055A1F00D904FA /* Bridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Bridge.h; path = bridge/Bridge.h; sourceTree = "<group>"; };
     
    1273212736                        isa = PBXGroup;
    1273312737                        children = (
     12738                                59695083132105A500C3ED18 /* JobjectWrapper.cpp */,
     12739                                596950811321059900C3ED18 /* JobjectWrapper.h */,
    1273412740                                1A569CD40D7E2B82007C3983 /* jni_jsobject.h */,
    1273512741                                1A569CD30D7E2B82007C3983 /* jni_jsobject.mm */,
     
    2252022526                                339B5B63131DAA3200F48D02 /* CookiesStrategy.h in Headers */,
    2252122527                                33D0212D131DB37B004091A8 /* CookieStorage.h in Headers */,
     22528                                596950821321059900C3ED18 /* JobjectWrapper.h in Headers */,
    2252222529                        );
    2252322530                        runOnlyForDeploymentPostprocessing = 0;
     
    2516925176                                5A574F24131DB93900471B88 /* RenderQuote.cpp in Sources */,
    2517025177                                5A574F28131DB96D00471B88 /* QuotesData.cpp in Sources */,
     25178                                59695084132105A500C3ED18 /* JobjectWrapper.cpp in Sources */,
    2517125179                        );
    2517225180                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/Source/WebCore/bridge/jni/JobjectWrapper.cpp

    r80366 r80367  
    11/*
     2 * Copyright (C) 2003, 2008, 2010 Apple Inc. All rights reserved.
    23 * Copyright 2011, The Android Open Source Project
    34 *
     
    4546
    4647    if (!m_instance)
    47         fprintf(stderr, "%s:  could not get GlobalRef for %p\n", __PRETTY_FUNCTION__, instance);
     48        LOG_ERROR("Could not get GlobalRef for %p", instance);
    4849}
    4950
  • trunk/Source/WebCore/bridge/jni/JobjectWrapper.h

    r80366 r80367  
    11/*
     2 * Copyright (C) 2003 Apple Computer, Inc.  All rights reserved.
    23 * Copyright 2011, The Android Open Source Project
    34 *
     
    3637
    3738class JobjectWrapper {
     39friend class JavaArray;
    3840friend class JavaField;
    3941friend class JavaInstance;
     
    4648    void deref()
    4749    {
    48         if (!(--m_refCount))
     50        if (!--m_refCount)
    4951            delete this;
    5052    }
     
    6668
    6769#endif // ENABLE(JAVA_BRIDGE)
     70
    6871#endif // JobjectWrapper_h
  • trunk/Source/WebCore/bridge/jni/jsc/JNIBridgeJSC.cpp

    r80222 r80367  
    3131
    3232#include "JNIUtilityPrivate.h"
     33#include "JobjectWrapper.h"
    3334#include "Logging.h"
    3435#include "runtime_array.h"
     
    5859    m_name = JavaString(env, fieldName);
    5960
    60     m_field = new JObjectWrapper(aField);
     61    m_field = new JobjectWrapper(aField);
    6162}
    6263
     
    252253    : Array(rootObject)
    253254{
    254     m_array = new JObjectWrapper(array);
     255    m_array = new JobjectWrapper(array);
    255256    // Java array are fixed length, so we can cache length.
    256257    JNIEnv* env = getJNIEnv();
  • trunk/Source/WebCore/bridge/jni/jsc/JNIBridgeJSC.h

    r79988 r80367  
    3333#include "JNIBridge.h"
    3434#include "JNIUtility.h"
     35#include "JobjectWrapper.h"
    3536
    3637namespace JSC {
     
    5758    JavaString m_type;
    5859    JNIType m_JNIType;
    59     RefPtr<JObjectWrapper> m_field;
     60    RefPtr<JobjectWrapper> m_field;
    6061};
    6162
     
    7677
    7778private:
    78     RefPtr<JObjectWrapper> m_array;
     79    RefPtr<JobjectWrapper> m_array;
    7980    unsigned int m_length;
    8081    const char* m_type;
  • trunk/Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.cpp

    r80222 r80367  
    5252    : Instance(rootObject)
    5353{
    54     m_instance = new JObjectWrapper(instance);
     54    m_instance = new JobjectWrapper(instance);
    5555    m_class = 0;
    5656}
     
    367367}
    368368
    369 JObjectWrapper::JObjectWrapper(jobject instance)
    370     : m_refCount(0)
    371 {
    372     ASSERT(instance);
    373 
    374     // Cache the JNIEnv used to get the global ref for this java instance.
    375     // It'll be used to delete the reference.
    376     m_env = getJNIEnv();
    377 
    378     m_instance = m_env->NewGlobalRef(instance);
    379 
    380     LOG(LiveConnect, "JObjectWrapper ctor new global ref %p for %p", m_instance, instance);
    381 
    382     if (!m_instance)
    383         LOG_ERROR("Could not get GlobalRef for %p", instance);
    384 }
    385 
    386 JObjectWrapper::~JObjectWrapper()
    387 {
    388     LOG(LiveConnect, "JObjectWrapper dtor deleting global ref %p", m_instance);
    389     m_env->DeleteGlobalRef(m_instance);
    390 }
    391 
    392369#endif // ENABLE(JAVA_BRIDGE)
  • trunk/Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.h

    r79988 r80367  
    3131#include "BridgeJSC.h"
    3232#include "JNIUtility.h"
     33#include "JobjectWrapper.h"
    3334#include "runtime_root.h"
    3435
     
    3839
    3940class JavaClass;
    40 
    41 class JObjectWrapper {
    42 friend class RefPtr<JObjectWrapper>;
    43 friend class JavaArray;
    44 friend class JavaField;
    45 friend class JavaInstance;
    46 friend class JavaMethod;
    47 
    48 public:
    49     jobject instance() const { return m_instance; }
    50     void setInstance(jobject instance) { m_instance = instance; }
    51 
    52     void ref() { m_refCount++; }
    53     void deref()
    54     {
    55         if (!(--m_refCount))
    56             delete this;
    57     }
    58 
    59 protected:
    60     JObjectWrapper(jobject instance);
    61     ~JObjectWrapper();
    62 
    63     jobject m_instance;
    64 
    65 private:
    66     JNIEnv* m_env;
    67     unsigned int m_refCount;
    68 };
    6941
    7042class JavaInstance : public Instance {
     
    9971    virtual void virtualEnd();
    10072
    101     RefPtr<JObjectWrapper> m_instance;
     73    RefPtr<JobjectWrapper> m_instance;
    10274    mutable JavaClass* m_class;
    10375};
Note: See TracChangeset for help on using the changeset viewer.