mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 670003: Fix yarr on OS/2. r=dmandelin
This commit is contained in:
parent
01465f2d76
commit
705efe6018
@ -421,6 +421,7 @@ VPATH += $(srcdir)/assembler \
|
||||
|
||||
CPPSRCS += \
|
||||
Assertions.cpp \
|
||||
OSAllocatorOS2.cpp \
|
||||
OSAllocatorPosix.cpp \
|
||||
OSAllocatorWin.cpp \
|
||||
PageBlock.cpp \
|
||||
@ -450,6 +451,7 @@ CPPSRCS += Assertions.cpp \
|
||||
Logging.cpp \
|
||||
MacroAssemblerARM.cpp \
|
||||
MacroAssemblerX86Common.cpp \
|
||||
OSAllocatorOS2.cpp \
|
||||
OSAllocatorPosix.cpp \
|
||||
OSAllocatorWin.cpp \
|
||||
PageBlock.cpp \
|
||||
|
@ -478,6 +478,11 @@
|
||||
#define WTF_OS_UNIX 1
|
||||
#endif
|
||||
|
||||
/* WTF_OS_OS2 - OS/2 */
|
||||
#if defined (__OS2__)
|
||||
#define WTF_OS_OS2 1
|
||||
#endif
|
||||
|
||||
/* Operating environments */
|
||||
|
||||
/* FIXME: these are all mixes of OS, operating environment and policy choices. */
|
||||
@ -846,6 +851,18 @@
|
||||
#define HAVE_SYS_PARAM_H 1
|
||||
#define HAVE_SYS_TIME_H 1
|
||||
|
||||
#elif WTF_OS_OS2
|
||||
|
||||
#define USE_SYSTEM_MALLOC 1
|
||||
#define HAVE_ERRNO_H 1
|
||||
#define HAVE_LANGINFO_H 1
|
||||
#define HAVE_MMAP 0
|
||||
#define HAVE_POSIX_MEMALIGN 1
|
||||
#define HAVE_SBRK 1
|
||||
#define HAVE_SYS_PARAM_H 1
|
||||
#define HAVE_SYS_TIME_H 1
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
#else
|
||||
|
||||
/* FIXME: is this actually used or do other platforms generate their own config.h? */
|
||||
|
89
js/src/yarr/OSAllocatorOS2.cpp
Normal file
89
js/src/yarr/OSAllocatorOS2.cpp
Normal file
@ -0,0 +1,89 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
* vim: set ts=8 sw=4 et tw=99 ft=cpp:
|
||||
*
|
||||
* ***** BEGIN LICENSE BLOCK *****
|
||||
* Copyright (C) 2010 Apple 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 INC. AND ITS CONTRIBUTORS ``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 INC. OR ITS 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.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "assembler/wtf/Platform.h"
|
||||
|
||||
#if ENABLE_ASSEMBLER && WTF_OS_OS2
|
||||
|
||||
#define INCL_DOS
|
||||
#include <os2.h>
|
||||
|
||||
#include "wtf/Assertions.h"
|
||||
|
||||
#include "OSAllocator.h"
|
||||
|
||||
namespace WTF {
|
||||
|
||||
static inline ULONG protection(bool writable, bool executable)
|
||||
{
|
||||
return (PAG_READ | (writable ? PAG_WRITE : 0) | (executable ? PAG_EXECUTE : 0));
|
||||
}
|
||||
|
||||
void* OSAllocator::reserveUncommitted(size_t bytes, Usage, bool writable, bool executable)
|
||||
{
|
||||
void* result = NULL;
|
||||
if (DosAllocMem(&result, bytes, OBJ_ANY | protection(writable, executable)) &&
|
||||
DosAllocMem(&result, bytes, protection(writable, executable)))
|
||||
{ CRASH();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void* OSAllocator::reserveAndCommit(size_t bytes, Usage, bool writable, bool executable)
|
||||
{
|
||||
void* result = NULL;
|
||||
if (DosAllocMem(&result, bytes, OBJ_ANY | PAG_COMMIT | protection(writable, executable)) &&
|
||||
DosAllocMem(&result, bytes, PAG_COMMIT | protection(writable, executable)))
|
||||
{ CRASH();
|
||||
}
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
void OSAllocator::commit(void* address, size_t bytes, bool writable, bool executable)
|
||||
{
|
||||
if (DosSetMem(address, bytes, PAG_COMMIT | protection(writable, executable)))
|
||||
CRASH();
|
||||
}
|
||||
|
||||
void OSAllocator::decommit(void* address, size_t bytes)
|
||||
{
|
||||
if (DosSetMem(address, bytes, PAG_DECOMMIT))
|
||||
CRASH();
|
||||
}
|
||||
|
||||
void OSAllocator::releaseDecommitted(void* address, size_t bytes)
|
||||
{
|
||||
if (DosFreeMem(address))
|
||||
CRASH();
|
||||
}
|
||||
|
||||
} // namespace WTF
|
||||
|
||||
#endif
|
@ -44,11 +44,15 @@
|
||||
#include <e32std.h>
|
||||
#endif
|
||||
|
||||
#if WTF_OS_OS2
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
|
||||
namespace WTF {
|
||||
|
||||
static size_t s_pageSize;
|
||||
|
||||
#if WTF_OS_UNIX && !WTF_OS_SYMBIAN
|
||||
#if (WTF_OS_UNIX && !WTF_OS_SYMBIAN) || WTF_OS_OS2
|
||||
|
||||
inline size_t systemPageSize()
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user