Mercurial > hg > truffle
comparison graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java @ 16779:e52ad0d3b7d6
put some security sensitive actions into a privileged action
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 12 Aug 2014 00:08:19 +0200 |
parents | 70f47dbbcabd |
children | 846c059e3ecf |
comparison
equal
deleted
inserted
replaced
16778:8a05a498ab76 | 16779:e52ad0d3b7d6 |
---|---|
25 package com.oracle.truffle.api.nodes; | 25 package com.oracle.truffle.api.nodes; |
26 | 26 |
27 import java.io.*; | 27 import java.io.*; |
28 import java.lang.annotation.*; | 28 import java.lang.annotation.*; |
29 import java.lang.reflect.*; | 29 import java.lang.reflect.*; |
30 import java.security.*; | |
30 import java.util.*; | 31 import java.util.*; |
31 | 32 |
32 import sun.misc.*; | 33 import sun.misc.*; |
33 | 34 |
34 import com.oracle.truffle.api.*; | 35 import com.oracle.truffle.api.*; |
158 */ | 159 */ |
159 public static final class NodeClass { | 160 public static final class NodeClass { |
160 private static final ClassValue<NodeClass> nodeClasses = new ClassValue<NodeClass>() { | 161 private static final ClassValue<NodeClass> nodeClasses = new ClassValue<NodeClass>() { |
161 @SuppressWarnings("unchecked") | 162 @SuppressWarnings("unchecked") |
162 @Override | 163 @Override |
163 protected NodeClass computeValue(Class<?> clazz) { | 164 protected NodeClass computeValue(final Class<?> clazz) { |
164 assert Node.class.isAssignableFrom(clazz); | 165 assert Node.class.isAssignableFrom(clazz); |
165 return new NodeClass((Class<? extends Node>) clazz, unsafeFieldOffsetProvider); | 166 return AccessController.doPrivileged(new PrivilegedAction<NodeClass>() { |
167 public NodeClass run() { | |
168 return new NodeClass((Class<? extends Node>) clazz, unsafeFieldOffsetProvider); | |
169 } | |
170 }); | |
166 } | 171 } |
167 }; | 172 }; |
168 | 173 |
169 // The comprehensive list of all fields. | 174 // The comprehensive list of all fields. |
170 private final NodeField[] fields; | 175 private final NodeField[] fields; |