Changeset 48067 in webkit for trunk/JavaScriptCore/jit


Ignore:
Timestamp:
Sep 4, 2009, 11:53:02 AM (16 years ago)
Author:
Darin Adler
Message:

JavaScriptCore: DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)
https://bugs.webkit.org/show_bug.cgi?id=28909

Patch by Darin Adler <Darin Adler> on 2009-09-04
Reviewed by Geoff Garen.

Part one.

Make some improvements to garbage collection code:

1) Fix the two classes that had the default mark bit set but

should not.

2) Remove checks of the mark bit outside the MarkStack::append

function; they are redundant.

3) Make more callers use the checked asCell and asObject

casting functions rather than unchecked casts.

4) Removed some GC-related functions because these operations are

no longer things that code other than the core GC code needs
to do directly. Fixed callers that were calling them.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::markAggregate): Removed unneeded check of the mark
bit before calling MarkStack::append.

  • interpreter/Register.h: Removed unneeded marked and markChildren

functions.

  • jit/JITStubs.cpp:

(op_eq): Removed unneeded assertions, instead using checked casting
functions such as asObject.

  • runtime/ArgList.h: Added now-needed forward declaration of MarkStack.
  • runtime/GetterSetter.cpp:

(JSC::GetterSetter::markChildren): Remmoved unneeded check of the mark bit.

  • runtime/GlobalEvalFunction.h:

(JSC::GlobalEvalFunction::createStructure): Added. Fixes a bug where the
HasDefaultMark bit was set.

  • runtime/JSCell.cpp:

(JSC::JSCell::getObject): Use asObject to avoid a direct static_cast.

  • runtime/JSObject.h:

(JSC::asObject): Added an overload for JSCell* and changed the JSValue
version to call it.
(JSC::JSValue::get): Use asObject to avoid a direct static_cast.

  • runtime/JSValue.h: Moved some stray includes that were outside the

header guard inside it. Not sure how that happened! Removed the
GC-related member functions markChildren, hasChildren, marked, and
markDirect.

  • runtime/JSWrapperObject.h: Made markChildren private.

(JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the
HasDefaultMark bit was set. Later we may want to optimize this for
wrapper types that never have cells in their internal values, but there
is no measured performance regression in SunSpider or V8 doing this
all the time.

  • runtime/MarkStack.cpp: Tweaked formatting.

JavaScriptGlue: * JSValueWrapper.cpp:
(JSValueWrapper::JSObjectMark): Removed a check of the mark
bit. It's OK to do more work in this case, and there is no
longer a public function to access the mark bit.

Reviewed by Geoff Garen.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/jit/JITStubs.cpp

    r47738 r48067  
    23592359        return src2.isCell() && asCell(src2)->structure()->typeInfo().masqueradesAsUndefined();
    23602360
    2361     ASSERT(src1.isCell());
    2362 
    23632361    JSCell* cell1 = asCell(src1);
    23642362
     
    23762374            return static_cast<JSString*>(cell1)->value().toDouble() == 0.0;
    23772375
    2378         ASSERT(src2.isCell());
    23792376        JSCell* cell2 = asCell(src2);
    23802377        if (cell2->isString())
    23812378            return static_cast<JSString*>(cell1)->value() == static_cast<JSString*>(cell2)->value();
    23822379
    2383         ASSERT(cell2->isObject());
    2384         src2 = static_cast<JSObject*>(cell2)->toPrimitive(stackFrame.callFrame);
     2380        src2 = asObject(cell2)->toPrimitive(stackFrame.callFrame);
    23852381        CHECK_FOR_EXCEPTION();
    23862382        goto start;
    23872383    }
    23882384
    2389     ASSERT(cell1->isObject());
    23902385    if (src2.isObject())
    2391         return static_cast<JSObject*>(cell1) == asObject(src2);
    2392     src1 = static_cast<JSObject*>(cell1)->toPrimitive(stackFrame.callFrame);
     2386        return asObject(cell1) == asObject(src2);
     2387    src1 = asObject(cell1)->toPrimitive(stackFrame.callFrame);
    23932388    CHECK_FOR_EXCEPTION();
    23942389    goto start;
Note: See TracChangeset for help on using the changeset viewer.