source: webkit/trunk/JavaScriptCore/kjs/internal.h@ 32807

Last change on this file since 32807 was 32807, checked in by [email protected], 17 years ago

Reviewed by Geoffrey Garen.

https://bugs.webkit.org/show_bug.cgi?id=18826
Make JavaScript heap per-thread

  • Property svn:eol-style set to native
File size: 3.6 KB
Line 
1// -*- c-basic-offset: 2 -*-
2/*
3 * Copyright (C) 1999-2001 Harri Porten ([email protected])
4 * Copyright (C) 2001 Peter Kelly ([email protected])
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details.
16 *
17 * You should have received a copy of the GNU Library General Public License
18 * along with this library; see the file COPYING.LIB. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02110-1301, USA.
21 *
22 */
23
24#ifndef INTERNAL_H
25#define INTERNAL_H
26
27#include "JSType.h"
28#include "object.h"
29#include "protect.h"
30#include "scope_chain.h"
31#include "types.h"
32#include "ustring.h"
33
34#include <wtf/Noncopyable.h>
35
36#define I18N_NOOP(s) s
37
38namespace KJS {
39
40 class FunctionPrototype;
41
42 // ---------------------------------------------------------------------------
43 // Primitive impls
44 // ---------------------------------------------------------------------------
45
46 class StringImp : public JSCell {
47 public:
48 StringImp(const UString& v) : val(v) { Heap::heap(this)->reportExtraMemoryCost(v.cost()); }
49 enum HasOtherOwnerType { HasOtherOwner };
50 StringImp(const UString& value, HasOtherOwnerType) : val(value) { }
51 const UString& value() const { return val; }
52
53 private:
54 virtual JSType type() const { return StringType; }
55
56 virtual JSValue* toPrimitive(ExecState*, JSType preferred = UnspecifiedType) const;
57 virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue*& value);
58 virtual bool toBoolean(ExecState *exec) const;
59 virtual double toNumber(ExecState *exec) const;
60 virtual JSObject *toObject(ExecState *exec) const;
61 virtual UString toString(ExecState*) const;
62
63 UString val;
64 };
65
66 class NumberImp : public JSCell {
67 friend class ConstantValues;
68 friend JSValue* jsNumberCell(ExecState*, double);
69 public:
70 double value() const { return val; }
71
72 virtual JSType type() const { return NumberType; }
73
74 virtual JSValue* toPrimitive(ExecState*, JSType preferred = UnspecifiedType) const;
75 virtual bool getPrimitiveNumber(ExecState*, double& number, JSValue*& value);
76 virtual bool toBoolean(ExecState *exec) const;
77 virtual double toNumber(ExecState *exec) const;
78 virtual UString toString(ExecState *exec) const;
79 virtual JSObject *toObject(ExecState *exec) const;
80
81 void* operator new(size_t size, ExecState* exec)
82 {
83 return exec->heap()->allocateNumber(size);
84 }
85
86 private:
87 NumberImp(double v) : val(v) { }
88
89 virtual bool getUInt32(uint32_t&) const;
90 virtual bool getTruncatedInt32(int32_t&) const;
91 virtual bool getTruncatedUInt32(uint32_t&) const;
92
93 double val;
94 };
95
96
97 // ---------------------------------------------------------------------------
98 // Evaluation
99 // ---------------------------------------------------------------------------
100
101 struct AttachedGlobalObject;
102 class DebuggerImp {
103 public:
104
105 DebuggerImp() {
106 globalObjects = 0;
107 }
108
109 AttachedGlobalObject* globalObjects;
110 };
111
112} // namespace
113
114#endif // INTERNAL_H
Note: See TracBrowser for help on using the repository browser.