Bug 861925 - Do-nothing refactoring to make the following patch cleaner, r=luke

--HG--
extra : rebase_source : dfcfbcfa42eb8a22684ba2fa6ded126e10d3c605
This commit is contained in:
Steve Fink 2013-05-01 14:36:21 -07:00
parent b2fd62da92
commit 8b538c797a
2 changed files with 45 additions and 43 deletions

View File

@ -644,21 +644,22 @@ JSStructuredCloneWriter::parseTransferable()
return false; return false;
} }
RootedObject array(context(), &transferable.toObject()); JSContext *cx = context();
if (!JS_IsArrayObject(context(), array)) { RootedObject array(cx, &transferable.toObject());
if (!JS_IsArrayObject(cx, array)) {
reportErrorTransferable(); reportErrorTransferable();
return false; return false;
} }
uint32_t length; uint32_t length;
if (!JS_GetArrayLength(context(), array, &length)) { if (!JS_GetArrayLength(cx, array, &length)) {
return false; return false;
} }
RootedValue v(context()); RootedValue v(context());
for (uint32_t i = 0; i < length; ++i) { for (uint32_t i = 0; i < length; ++i) {
if (!JS_GetElement(context(), array, i, &v)) { if (!JS_GetElement(cx, array, i, &v)) {
return false; return false;
} }
@ -898,25 +899,26 @@ JSStructuredCloneWriter::startWrite(const Value &v)
bool bool
JSStructuredCloneWriter::writeTransferMap() JSStructuredCloneWriter::writeTransferMap()
{ {
if (!transferableObjects.empty()) { if (transferableObjects.empty())
if (!out.writePair(SCTAG_TRANSFER_MAP_HEADER, (uint32_t)SCTAG_TM_NOT_MARKED)) return true;
if (!out.writePair(SCTAG_TRANSFER_MAP_HEADER, (uint32_t)SCTAG_TM_NOT_MARKED))
return false;
for (HashSet<JSObject*>::Range r = transferableObjects.all();
!r.empty(); r.popFront()) {
JSObject *obj = r.front();
if (!memory.put(obj, memory.count()))
return false; return false;
for (HashSet<JSObject*>::Range r = transferableObjects.all(); void *content;
!r.empty(); r.popFront()) { uint8_t *data;
JSObject *obj = r.front(); if (!JS_StealArrayBufferContents(context(), obj, &content, &data))
return false;
if (!memory.put(obj, memory.count())) if (!out.writePair(SCTAG_TRANSFER_MAP, 0) || !out.writePtr(content))
return false; return false;
void *content;
uint8_t *data;
if (!JS_StealArrayBufferContents(context(), obj, &content, &data))
return false;
if (!out.writePair(SCTAG_TRANSFER_MAP, 0) || !out.writePtr(content))
return false;
}
} }
return true; return true;

View File

@ -332,42 +332,42 @@ GetViewListRef(ArrayBufferObject *obj)
void void
ArrayBufferObject::changeContents(JSContext *maybecx, ObjectElements *newHeader) ArrayBufferObject::changeContents(JSContext *maybecx, ObjectElements *newHeader)
{ {
// Grab out data before invalidating it. // Grab out data before invalidating it.
uint32_t byteLengthCopy = byteLength(); uint32_t byteLengthCopy = byteLength();
uintptr_t oldDataPointer = uintptr_t(dataPointer()); uintptr_t oldDataPointer = uintptr_t(dataPointer());
ArrayBufferViewObject *viewListHead = GetViewList(this); ArrayBufferViewObject *viewListHead = GetViewList(this);
// Update all views. // Update all views.
uintptr_t newDataPointer = uintptr_t(newHeader->elements()); uintptr_t newDataPointer = uintptr_t(newHeader->elements());
for (ArrayBufferViewObject *view = viewListHead; view; view = view->nextView()) { for (ArrayBufferViewObject *view = viewListHead; view; view = view->nextView()) {
uintptr_t newDataPtr = uintptr_t(view->getPrivate()) - oldDataPointer + newDataPointer; uintptr_t newDataPtr = uintptr_t(view->getPrivate()) - oldDataPointer + newDataPointer;
view->setPrivate(reinterpret_cast<uint8_t*>(newDataPtr)); view->setPrivate(reinterpret_cast<uint8_t*>(newDataPtr));
// Notify compiled jit code that the base pointer has moved. // Notify compiled jit code that the base pointer has moved.
if (maybecx) if (maybecx)
MarkObjectStateChange(maybecx, view); MarkObjectStateChange(maybecx, view);
} }
// Change to the new header (now, so we can use SetViewList). // Change to the new header (now, so we can use SetViewList).
elements = newHeader->elements(); elements = newHeader->elements();
// Initialize 'newHeader'. // Initialize 'newHeader'.
ArrayBufferObject::setElementsHeader(newHeader, byteLengthCopy); ArrayBufferObject::setElementsHeader(newHeader, byteLengthCopy);
SetViewList(this, viewListHead); SetViewList(this, viewListHead);
} }
bool bool
ArrayBufferObject::uninlineData(JSContext *maybecx) ArrayBufferObject::uninlineData(JSContext *maybecx)
{ {
if (hasDynamicElements()) if (hasDynamicElements())
return true; return true;
ObjectElements *newHeader = AllocateArrayBufferContents(maybecx, byteLength(), dataPointer()); ObjectElements *newHeader = AllocateArrayBufferContents(maybecx, byteLength(), dataPointer());
if (!newHeader) if (!newHeader)
return false; return false;
changeContents(maybecx, newHeader); changeContents(maybecx, newHeader);
return true; return true;
} }
#if defined(JS_ION) && defined(JS_CPU_X64) #if defined(JS_ION) && defined(JS_CPU_X64)
@ -4261,8 +4261,8 @@ JS_GetObjectAsArrayBufferView(JSObject *obj, uint32_t *length, uint8_t **data)
JS_FRIEND_API(JSObject *) JS_FRIEND_API(JSObject *)
JS_GetObjectAsArrayBuffer(JSObject *obj, uint32_t *length, uint8_t **data) JS_GetObjectAsArrayBuffer(JSObject *obj, uint32_t *length, uint8_t **data)
{ {
if (!(obj = CheckedUnwrap(obj))) if (!(obj = CheckedUnwrap(obj)))
return nullptr; return nullptr;
if (!obj->is<ArrayBufferObject>()) if (!obj->is<ArrayBufferObject>())
return nullptr; return nullptr;