• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2008 Apple Inc. All Rights Reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 
26 #include "config.h"
27 
28 #include "JSStaticScopeObject.h"
29 
30 namespace JSC {
31 
32 ASSERT_CLASS_FITS_IN_CELL(JSStaticScopeObject);
33 
mark()34 void JSStaticScopeObject::mark()
35 {
36     JSVariableObject::mark();
37 
38     if (!d()->registerStore.marked())
39         d()->registerStore.mark();
40 }
41 
toThisObject(ExecState * exec) const42 JSObject* JSStaticScopeObject::toThisObject(ExecState* exec) const
43 {
44     return exec->globalThisValue();
45 }
46 
put(ExecState *,const Identifier & propertyName,JSValuePtr value,PutPropertySlot &)47 void JSStaticScopeObject::put(ExecState*, const Identifier& propertyName, JSValuePtr value, PutPropertySlot&)
48 {
49     if (symbolTablePut(propertyName, value))
50         return;
51 
52     ASSERT_NOT_REACHED();
53 }
54 
putWithAttributes(ExecState *,const Identifier & propertyName,JSValuePtr value,unsigned attributes)55 void JSStaticScopeObject::putWithAttributes(ExecState*, const Identifier& propertyName, JSValuePtr value, unsigned attributes)
56 {
57     if (symbolTablePutWithAttributes(propertyName, value, attributes))
58         return;
59 
60     ASSERT_NOT_REACHED();
61 }
62 
isDynamicScope() const63 bool JSStaticScopeObject::isDynamicScope() const
64 {
65     return false;
66 }
67 
~JSStaticScopeObject()68 JSStaticScopeObject::~JSStaticScopeObject()
69 {
70     ASSERT(d());
71     delete d();
72 }
73 
getOwnPropertySlot(ExecState *,const Identifier & propertyName,PropertySlot & slot)74 inline bool JSStaticScopeObject::getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot& slot)
75 {
76     return symbolTableGet(propertyName, slot);
77 }
78 
getOwnPropertySlot(ExecState *,const Identifier & propertyName,PropertySlot & slot,bool & slotIsWriteable)79 inline bool JSStaticScopeObject::getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot& slot, bool& slotIsWriteable)
80 {
81     return symbolTableGet(propertyName, slot, slotIsWriteable);
82 }
83 
84 }
85